[llvm-objdump] - Remove one overload of reportError. NFCI.
[llvm-complete.git] / test / CodeGen / AMDGPU / GlobalISel / legalize-frint.mir
blob5ca81b17b5c9150c65b0315af247aee9a1209ce1
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=tahiti -run-pass=legalizer -o - %s | FileCheck -check-prefix=SI %s
3 # RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=hawaii -run-pass=legalizer -o - %s | FileCheck -check-prefix=CI %s
5 ---
6 name: test_frint_s16
7 body: |
8   bb.0:
9     liveins: $vgpr0
11     ; SI-LABEL: name: test_frint_s16
12     ; SI: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
13     ; SI: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)
14     ; SI: [[FPEXT:%[0-9]+]]:_(s32) = G_FPEXT [[TRUNC]](s16)
15     ; SI: [[FRINT:%[0-9]+]]:_(s32) = G_FRINT [[FPEXT]]
16     ; SI: [[FPTRUNC:%[0-9]+]]:_(s16) = G_FPTRUNC [[FRINT]](s32)
17     ; SI: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[FPTRUNC]](s16)
18     ; SI: $vgpr0 = COPY [[ANYEXT]](s32)
19     ; CI-LABEL: name: test_frint_s16
20     ; CI: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
21     ; CI: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)
22     ; CI: [[FPEXT:%[0-9]+]]:_(s32) = G_FPEXT [[TRUNC]](s16)
23     ; CI: [[FRINT:%[0-9]+]]:_(s32) = G_FRINT [[FPEXT]]
24     ; CI: [[FPTRUNC:%[0-9]+]]:_(s16) = G_FPTRUNC [[FRINT]](s32)
25     ; CI: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[FPTRUNC]](s16)
26     ; CI: $vgpr0 = COPY [[ANYEXT]](s32)
27     %0:_(s32) = COPY $vgpr0
28     %1:_(s16) = G_TRUNC %0
29     %2:_(s16) = G_FRINT %1
30     %3:_(s32) = G_ANYEXT %2
31     $vgpr0 = COPY %3
32 ...
34 ---
35 name: test_frint_s32
36 body: |
37   bb.0:
38     liveins: $vgpr0
40     ; SI-LABEL: name: test_frint_s32
41     ; SI: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
42     ; SI: $vgpr0 = COPY [[COPY]](s32)
43     ; CI-LABEL: name: test_frint_s32
44     ; CI: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
45     ; CI: $vgpr0 = COPY [[COPY]](s32)
46     %0:_(s32) = COPY $vgpr0
47     %1:_(s32) = G_FRINT %0
48     $vgpr0 = COPY %0
49 ...
51 ---
52 name: test_frint_s64
53 body: |
54   bb.0:
55     liveins: $vgpr0_vgpr1
57     ; SI-LABEL: name: test_frint_s64
58     ; SI: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1
59     ; SI: [[C:%[0-9]+]]:_(s64) = G_FCONSTANT double 0x4330000000000000
60     ; SI: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 -9223372036854775808
61     ; SI: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 9223372036854775807
62     ; SI: [[AND:%[0-9]+]]:_(s64) = G_AND [[C]], [[C2]]
63     ; SI: [[AND1:%[0-9]+]]:_(s64) = G_AND [[C]], [[C1]]
64     ; SI: [[OR:%[0-9]+]]:_(s64) = G_OR [[AND]], [[AND1]]
65     ; SI: [[FADD:%[0-9]+]]:_(s64) = G_FADD [[COPY]], [[OR]]
66     ; SI: [[FNEG:%[0-9]+]]:_(s64) = G_FNEG [[OR]]
67     ; SI: [[FADD1:%[0-9]+]]:_(s64) = G_FADD [[FADD]], [[FNEG]]
68     ; SI: [[C3:%[0-9]+]]:_(s64) = G_FCONSTANT double 0x432FFFFFFFFFFFFF
69     ; SI: [[FABS:%[0-9]+]]:_(s64) = G_FABS [[COPY]]
70     ; SI: [[FCMP:%[0-9]+]]:_(s1) = G_FCMP floatpred(ogt), [[FABS]](s64), [[C3]]
71     ; SI: [[SELECT:%[0-9]+]]:_(s64) = G_SELECT [[FCMP]](s1), [[COPY]], [[FADD1]]
72     ; SI: [[FRINT:%[0-9]+]]:_(s64) = G_FRINT [[COPY]]
73     ; SI: $vgpr0_vgpr1 = COPY [[FRINT]](s64)
74     ; CI-LABEL: name: test_frint_s64
75     ; CI: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1
76     ; CI: [[FRINT:%[0-9]+]]:_(s64) = G_FRINT [[COPY]]
77     ; CI: $vgpr0_vgpr1 = COPY [[FRINT]](s64)
78     %0:_(s64) = COPY $vgpr0_vgpr1
79     %1:_(s64) = G_FRINT %0
80     $vgpr0_vgpr1 = COPY %1
81 ...
83 ---
84 name: test_frint_v2s16
85 body: |
86   bb.0:
87     liveins: $vgpr0
89     ; SI-LABEL: name: test_frint_v2s16
90     ; SI: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0
91     ; SI: $vgpr0 = COPY [[COPY]](<2 x s16>)
92     ; CI-LABEL: name: test_frint_v2s16
93     ; CI: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0
94     ; CI: $vgpr0 = COPY [[COPY]](<2 x s16>)
95     %0:_(<2 x s16>) = COPY $vgpr0
96     %1:_(<2 x s16>) = G_FRINT %0
97     $vgpr0 = COPY %0
98 ...
101 name: test_frint_v2s32
102 body: |
103   bb.0:
104     liveins: $vgpr0_vgpr1
106     ; SI-LABEL: name: test_frint_v2s32
107     ; SI: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1
108     ; SI: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)
109     ; SI: [[FRINT:%[0-9]+]]:_(s32) = G_FRINT [[UV]]
110     ; SI: [[FRINT1:%[0-9]+]]:_(s32) = G_FRINT [[UV1]]
111     ; SI: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[FRINT]](s32), [[FRINT1]](s32)
112     ; SI: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>)
113     ; CI-LABEL: name: test_frint_v2s32
114     ; CI: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1
115     ; CI: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)
116     ; CI: [[FRINT:%[0-9]+]]:_(s32) = G_FRINT [[UV]]
117     ; CI: [[FRINT1:%[0-9]+]]:_(s32) = G_FRINT [[UV1]]
118     ; CI: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[FRINT]](s32), [[FRINT1]](s32)
119     ; CI: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>)
120     %0:_(<2 x s32>) = COPY $vgpr0_vgpr1
121     %1:_(<2 x s32>) = G_FRINT %0
122     $vgpr0_vgpr1 = COPY %1
126 name: test_frint_v2s64
127 body: |
128   bb.0:
129     liveins: $vgpr0_vgpr1_vgpr2_vgpr3
131     ; SI-LABEL: name: test_frint_v2s64
132     ; SI: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
133     ; SI: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY]](<2 x s64>)
134     ; SI: [[C:%[0-9]+]]:_(s64) = G_FCONSTANT double 0x4330000000000000
135     ; SI: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 -9223372036854775808
136     ; SI: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 9223372036854775807
137     ; SI: [[AND:%[0-9]+]]:_(s64) = G_AND [[C]], [[C2]]
138     ; SI: [[AND1:%[0-9]+]]:_(s64) = G_AND [[C]], [[C1]]
139     ; SI: [[OR:%[0-9]+]]:_(s64) = G_OR [[AND]], [[AND1]]
140     ; SI: [[COPY1:%[0-9]+]]:_(s64) = COPY [[OR]](s64)
141     ; SI: [[FADD:%[0-9]+]]:_(s64) = G_FADD [[UV]], [[COPY1]]
142     ; SI: [[FNEG:%[0-9]+]]:_(s64) = G_FNEG [[COPY1]]
143     ; SI: [[FADD1:%[0-9]+]]:_(s64) = G_FADD [[FADD]], [[FNEG]]
144     ; SI: [[C3:%[0-9]+]]:_(s64) = G_FCONSTANT double 0x432FFFFFFFFFFFFF
145     ; SI: [[FABS:%[0-9]+]]:_(s64) = G_FABS [[UV]]
146     ; SI: [[FCMP:%[0-9]+]]:_(s1) = G_FCMP floatpred(ogt), [[FABS]](s64), [[C3]]
147     ; SI: [[SELECT:%[0-9]+]]:_(s64) = G_SELECT [[FCMP]](s1), [[UV]], [[FADD1]]
148     ; SI: [[FRINT:%[0-9]+]]:_(s64) = G_FRINT [[UV]]
149     ; SI: [[FADD2:%[0-9]+]]:_(s64) = G_FADD [[UV1]], [[OR]]
150     ; SI: [[FNEG1:%[0-9]+]]:_(s64) = G_FNEG [[OR]]
151     ; SI: [[FADD3:%[0-9]+]]:_(s64) = G_FADD [[FADD2]], [[FNEG1]]
152     ; SI: [[FABS1:%[0-9]+]]:_(s64) = G_FABS [[UV1]]
153     ; SI: [[FCMP1:%[0-9]+]]:_(s1) = G_FCMP floatpred(ogt), [[FABS1]](s64), [[C3]]
154     ; SI: [[SELECT:%[0-9]+]]:_(s64) = G_SELECT [[FCMP1]](s1), [[UV1]], [[FADD3]]
155     ; SI: [[FRINT1:%[0-9]+]]:_(s64) = G_FRINT [[UV1]]
156     ; SI: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[FRINT]](s64), [[FRINT1]](s64)
157     ; SI: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x s64>)
158     ; CI-LABEL: name: test_frint_v2s64
159     ; CI: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
160     ; CI: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY]](<2 x s64>)
161     ; CI: [[FRINT:%[0-9]+]]:_(s64) = G_FRINT [[UV]]
162     ; CI: [[FRINT1:%[0-9]+]]:_(s64) = G_FRINT [[UV1]]
163     ; CI: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[FRINT]](s64), [[FRINT1]](s64)
164     ; CI: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x s64>)
165     %0:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
166     %1:_(<2 x s64>) = G_FRINT %0
167     $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1