Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / GlobalISel / inst-select-fcmp.mir
blob15f7a2202b71e00a777e97a5020fa9282a0513e0
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=amdgcn -mcpu=tahiti -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=WAVE64 %s
3 # RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=WAVE32 %s
4 # RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=WAVE32 %s
6 ---
7 name: fcmp_false_s32_vv
8 legalized: true
9 regBankSelected: true
11 body: |
12   bb.0:
13     liveins: $vgpr0, $vgpr1
14     ; WAVE64-LABEL: name: fcmp_false_s32_vv
15     ; WAVE64: liveins: $vgpr0, $vgpr1
16     ; WAVE64-NEXT: {{  $}}
17     ; WAVE64-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
18     ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
19     ; WAVE64-NEXT: [[FCMP:%[0-9]+]]:vcc(s1) = G_FCMP floatpred(false), [[COPY]](s32), [[COPY1]]
20     ; WAVE64-NEXT: S_ENDPGM 0, implicit [[FCMP]](s1)
21     ; WAVE32-LABEL: name: fcmp_false_s32_vv
22     ; WAVE32: liveins: $vgpr0, $vgpr1
23     ; WAVE32-NEXT: {{  $}}
24     ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
25     ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
26     ; WAVE32-NEXT: [[FCMP:%[0-9]+]]:vcc(s1) = G_FCMP floatpred(false), [[COPY]](s32), [[COPY1]]
27     ; WAVE32-NEXT: S_ENDPGM 0, implicit [[FCMP]](s1)
28     %0:vgpr(s32) = COPY $vgpr0
29     %1:vgpr(s32) = COPY $vgpr1
30     %2:vcc(s1) = G_FCMP floatpred(false), %0, %1
31     S_ENDPGM 0, implicit %2
32 ...
34 ---
35 name: fcmp_oeq_s32_vv
36 legalized: true
37 regBankSelected: true
39 body: |
40   bb.0:
41     liveins: $vgpr0, $vgpr1
42     ; WAVE64-LABEL: name: fcmp_oeq_s32_vv
43     ; WAVE64: liveins: $vgpr0, $vgpr1
44     ; WAVE64-NEXT: {{  $}}
45     ; WAVE64-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
46     ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
47     ; WAVE64-NEXT: %2:sreg_64_xexec = nofpexcept V_CMP_EQ_F32_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
48     ; WAVE64-NEXT: S_ENDPGM 0, implicit %2
49     ; WAVE32-LABEL: name: fcmp_oeq_s32_vv
50     ; WAVE32: liveins: $vgpr0, $vgpr1
51     ; WAVE32-NEXT: {{  $}}
52     ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
53     ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
54     ; WAVE32-NEXT: %2:sreg_32_xm0_xexec = nofpexcept V_CMP_EQ_F32_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
55     ; WAVE32-NEXT: S_ENDPGM 0, implicit %2
56     %0:vgpr(s32) = COPY $vgpr0
57     %1:vgpr(s32) = COPY $vgpr1
58     %2:vcc(s1) = G_FCMP floatpred(oeq), %0, %1
59     S_ENDPGM 0, implicit %2
60 ...
62 ---
63 name: fcmp_ogt_s32_vv
64 legalized: true
65 regBankSelected: true
67 body: |
68   bb.0:
69     liveins: $vgpr0, $vgpr1
70     ; WAVE64-LABEL: name: fcmp_ogt_s32_vv
71     ; WAVE64: liveins: $vgpr0, $vgpr1
72     ; WAVE64-NEXT: {{  $}}
73     ; WAVE64-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
74     ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
75     ; WAVE64-NEXT: %2:sreg_64_xexec = nofpexcept V_CMP_GT_F32_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
76     ; WAVE64-NEXT: S_ENDPGM 0, implicit %2
77     ; WAVE32-LABEL: name: fcmp_ogt_s32_vv
78     ; WAVE32: liveins: $vgpr0, $vgpr1
79     ; WAVE32-NEXT: {{  $}}
80     ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
81     ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
82     ; WAVE32-NEXT: %2:sreg_32_xm0_xexec = nofpexcept V_CMP_GT_F32_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
83     ; WAVE32-NEXT: S_ENDPGM 0, implicit %2
84     %0:vgpr(s32) = COPY $vgpr0
85     %1:vgpr(s32) = COPY $vgpr1
86     %2:vcc(s1) = G_FCMP floatpred(ogt), %0, %1
87     S_ENDPGM 0, implicit %2
88 ...
90 ---
91 name: fcmp_oge_s32_vv
92 legalized: true
93 regBankSelected: true
95 body: |
96   bb.0:
97     liveins: $vgpr0, $vgpr1
98     ; WAVE64-LABEL: name: fcmp_oge_s32_vv
99     ; WAVE64: liveins: $vgpr0, $vgpr1
100     ; WAVE64-NEXT: {{  $}}
101     ; WAVE64-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
102     ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
103     ; WAVE64-NEXT: %2:sreg_64_xexec = nofpexcept V_CMP_GE_F32_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
104     ; WAVE64-NEXT: S_ENDPGM 0, implicit %2
105     ; WAVE32-LABEL: name: fcmp_oge_s32_vv
106     ; WAVE32: liveins: $vgpr0, $vgpr1
107     ; WAVE32-NEXT: {{  $}}
108     ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
109     ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
110     ; WAVE32-NEXT: %2:sreg_32_xm0_xexec = nofpexcept V_CMP_GE_F32_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
111     ; WAVE32-NEXT: S_ENDPGM 0, implicit %2
112     %0:vgpr(s32) = COPY $vgpr0
113     %1:vgpr(s32) = COPY $vgpr1
114     %2:vcc(s1) = G_FCMP floatpred(oge), %0, %1
115     S_ENDPGM 0, implicit %2
119 name: fcmp_olt_s32_vv
120 legalized: true
121 regBankSelected: true
123 body: |
124   bb.0:
125     liveins: $vgpr0, $vgpr1
126     ; WAVE64-LABEL: name: fcmp_olt_s32_vv
127     ; WAVE64: liveins: $vgpr0, $vgpr1
128     ; WAVE64-NEXT: {{  $}}
129     ; WAVE64-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
130     ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
131     ; WAVE64-NEXT: %2:sreg_64_xexec = nofpexcept V_CMP_LT_F32_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
132     ; WAVE64-NEXT: S_ENDPGM 0, implicit %2
133     ; WAVE32-LABEL: name: fcmp_olt_s32_vv
134     ; WAVE32: liveins: $vgpr0, $vgpr1
135     ; WAVE32-NEXT: {{  $}}
136     ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
137     ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
138     ; WAVE32-NEXT: %2:sreg_32_xm0_xexec = nofpexcept V_CMP_LT_F32_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
139     ; WAVE32-NEXT: S_ENDPGM 0, implicit %2
140     %0:vgpr(s32) = COPY $vgpr0
141     %1:vgpr(s32) = COPY $vgpr1
142     %2:vcc(s1) = G_FCMP floatpred(olt), %0, %1
143     S_ENDPGM 0, implicit %2
147 name: fcmp_ole_s32_vv
148 legalized: true
149 regBankSelected: true
151 body: |
152   bb.0:
153     liveins: $vgpr0, $vgpr1
154     ; WAVE64-LABEL: name: fcmp_ole_s32_vv
155     ; WAVE64: liveins: $vgpr0, $vgpr1
156     ; WAVE64-NEXT: {{  $}}
157     ; WAVE64-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
158     ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
159     ; WAVE64-NEXT: %2:sreg_64_xexec = nofpexcept V_CMP_LE_F32_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
160     ; WAVE64-NEXT: S_ENDPGM 0, implicit %2
161     ; WAVE32-LABEL: name: fcmp_ole_s32_vv
162     ; WAVE32: liveins: $vgpr0, $vgpr1
163     ; WAVE32-NEXT: {{  $}}
164     ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
165     ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
166     ; WAVE32-NEXT: %2:sreg_32_xm0_xexec = nofpexcept V_CMP_LE_F32_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
167     ; WAVE32-NEXT: S_ENDPGM 0, implicit %2
168     %0:vgpr(s32) = COPY $vgpr0
169     %1:vgpr(s32) = COPY $vgpr1
170     %2:vcc(s1) = G_FCMP floatpred(ole), %0, %1
171     S_ENDPGM 0, implicit %2
175 name: fcmp_one_s32_vv
176 legalized: true
177 regBankSelected: true
179 body: |
180   bb.0:
181     liveins: $vgpr0, $vgpr1
182     ; WAVE64-LABEL: name: fcmp_one_s32_vv
183     ; WAVE64: liveins: $vgpr0, $vgpr1
184     ; WAVE64-NEXT: {{  $}}
185     ; WAVE64-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
186     ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
187     ; WAVE64-NEXT: %2:sreg_64_xexec = nofpexcept V_CMP_LG_F32_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
188     ; WAVE64-NEXT: S_ENDPGM 0, implicit %2
189     ; WAVE32-LABEL: name: fcmp_one_s32_vv
190     ; WAVE32: liveins: $vgpr0, $vgpr1
191     ; WAVE32-NEXT: {{  $}}
192     ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
193     ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
194     ; WAVE32-NEXT: %2:sreg_32_xm0_xexec = nofpexcept V_CMP_LG_F32_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
195     ; WAVE32-NEXT: S_ENDPGM 0, implicit %2
196     %0:vgpr(s32) = COPY $vgpr0
197     %1:vgpr(s32) = COPY $vgpr1
198     %2:vcc(s1) = G_FCMP floatpred(one), %0, %1
199     S_ENDPGM 0, implicit %2
203 name: fcmp_ord_s32_vv
204 legalized: true
205 regBankSelected: true
207 body: |
208   bb.0:
209     liveins: $vgpr0, $vgpr1
210     ; WAVE64-LABEL: name: fcmp_ord_s32_vv
211     ; WAVE64: liveins: $vgpr0, $vgpr1
212     ; WAVE64-NEXT: {{  $}}
213     ; WAVE64-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
214     ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
215     ; WAVE64-NEXT: %2:sreg_64_xexec = nofpexcept V_CMP_O_F32_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
216     ; WAVE64-NEXT: S_ENDPGM 0, implicit %2
217     ; WAVE32-LABEL: name: fcmp_ord_s32_vv
218     ; WAVE32: liveins: $vgpr0, $vgpr1
219     ; WAVE32-NEXT: {{  $}}
220     ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
221     ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
222     ; WAVE32-NEXT: %2:sreg_32_xm0_xexec = nofpexcept V_CMP_O_F32_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
223     ; WAVE32-NEXT: S_ENDPGM 0, implicit %2
224     %0:vgpr(s32) = COPY $vgpr0
225     %1:vgpr(s32) = COPY $vgpr1
226     %2:vcc(s1) = G_FCMP floatpred(ord), %0, %1
227     S_ENDPGM 0, implicit %2
231 name: fcmp_uno_s32_vv
232 legalized: true
233 regBankSelected: true
235 body: |
236   bb.0:
237     liveins: $vgpr0, $vgpr1
238     ; WAVE64-LABEL: name: fcmp_uno_s32_vv
239     ; WAVE64: liveins: $vgpr0, $vgpr1
240     ; WAVE64-NEXT: {{  $}}
241     ; WAVE64-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
242     ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
243     ; WAVE64-NEXT: %2:sreg_64_xexec = nofpexcept V_CMP_U_F32_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
244     ; WAVE64-NEXT: S_ENDPGM 0, implicit %2
245     ; WAVE32-LABEL: name: fcmp_uno_s32_vv
246     ; WAVE32: liveins: $vgpr0, $vgpr1
247     ; WAVE32-NEXT: {{  $}}
248     ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
249     ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
250     ; WAVE32-NEXT: %2:sreg_32_xm0_xexec = nofpexcept V_CMP_U_F32_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
251     ; WAVE32-NEXT: S_ENDPGM 0, implicit %2
252     %0:vgpr(s32) = COPY $vgpr0
253     %1:vgpr(s32) = COPY $vgpr1
254     %2:vcc(s1) = G_FCMP floatpred(uno), %0, %1
255     S_ENDPGM 0, implicit %2
259 name: fcmp_ueq_s32_vv
260 legalized: true
261 regBankSelected: true
263 body: |
264   bb.0:
265     liveins: $vgpr0, $vgpr1
266     ; WAVE64-LABEL: name: fcmp_ueq_s32_vv
267     ; WAVE64: liveins: $vgpr0, $vgpr1
268     ; WAVE64-NEXT: {{  $}}
269     ; WAVE64-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
270     ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
271     ; WAVE64-NEXT: %2:sreg_64_xexec = nofpexcept V_CMP_NLG_F32_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
272     ; WAVE64-NEXT: S_ENDPGM 0, implicit %2
273     ; WAVE32-LABEL: name: fcmp_ueq_s32_vv
274     ; WAVE32: liveins: $vgpr0, $vgpr1
275     ; WAVE32-NEXT: {{  $}}
276     ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
277     ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
278     ; WAVE32-NEXT: %2:sreg_32_xm0_xexec = nofpexcept V_CMP_NLG_F32_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
279     ; WAVE32-NEXT: S_ENDPGM 0, implicit %2
280     %0:vgpr(s32) = COPY $vgpr0
281     %1:vgpr(s32) = COPY $vgpr1
282     %2:vcc(s1) = G_FCMP floatpred(ueq), %0, %1
283     S_ENDPGM 0, implicit %2
287 name: fcmp_ugt_s32_vv
288 legalized: true
289 regBankSelected: true
291 body: |
292   bb.0:
293     liveins: $vgpr0, $vgpr1
294     ; WAVE64-LABEL: name: fcmp_ugt_s32_vv
295     ; WAVE64: liveins: $vgpr0, $vgpr1
296     ; WAVE64-NEXT: {{  $}}
297     ; WAVE64-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
298     ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
299     ; WAVE64-NEXT: %2:sreg_64_xexec = nofpexcept V_CMP_NLE_F32_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
300     ; WAVE64-NEXT: S_ENDPGM 0, implicit %2
301     ; WAVE32-LABEL: name: fcmp_ugt_s32_vv
302     ; WAVE32: liveins: $vgpr0, $vgpr1
303     ; WAVE32-NEXT: {{  $}}
304     ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
305     ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
306     ; WAVE32-NEXT: %2:sreg_32_xm0_xexec = nofpexcept V_CMP_NLE_F32_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
307     ; WAVE32-NEXT: S_ENDPGM 0, implicit %2
308     %0:vgpr(s32) = COPY $vgpr0
309     %1:vgpr(s32) = COPY $vgpr1
310     %2:vcc(s1) = G_FCMP floatpred(ugt), %0, %1
311     S_ENDPGM 0, implicit %2
315 name: fcmp_uge_s32_vv
316 legalized: true
317 regBankSelected: true
319 body: |
320   bb.0:
321     liveins: $vgpr0, $vgpr1
322     ; WAVE64-LABEL: name: fcmp_uge_s32_vv
323     ; WAVE64: liveins: $vgpr0, $vgpr1
324     ; WAVE64-NEXT: {{  $}}
325     ; WAVE64-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
326     ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
327     ; WAVE64-NEXT: %2:sreg_64_xexec = nofpexcept V_CMP_NLT_F32_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
328     ; WAVE64-NEXT: S_ENDPGM 0, implicit %2
329     ; WAVE32-LABEL: name: fcmp_uge_s32_vv
330     ; WAVE32: liveins: $vgpr0, $vgpr1
331     ; WAVE32-NEXT: {{  $}}
332     ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
333     ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
334     ; WAVE32-NEXT: %2:sreg_32_xm0_xexec = nofpexcept V_CMP_NLT_F32_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
335     ; WAVE32-NEXT: S_ENDPGM 0, implicit %2
336     %0:vgpr(s32) = COPY $vgpr0
337     %1:vgpr(s32) = COPY $vgpr1
338     %2:vcc(s1) = G_FCMP floatpred(uge), %0, %1
339     S_ENDPGM 0, implicit %2
343 name: fcmp_ult_s32_vv
344 legalized: true
345 regBankSelected: true
347 body: |
348   bb.0:
349     liveins: $vgpr0, $vgpr1
350     ; WAVE64-LABEL: name: fcmp_ult_s32_vv
351     ; WAVE64: liveins: $vgpr0, $vgpr1
352     ; WAVE64-NEXT: {{  $}}
353     ; WAVE64-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
354     ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
355     ; WAVE64-NEXT: %2:sreg_64_xexec = nofpexcept V_CMP_NGE_F32_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
356     ; WAVE64-NEXT: S_ENDPGM 0, implicit %2
357     ; WAVE32-LABEL: name: fcmp_ult_s32_vv
358     ; WAVE32: liveins: $vgpr0, $vgpr1
359     ; WAVE32-NEXT: {{  $}}
360     ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
361     ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
362     ; WAVE32-NEXT: %2:sreg_32_xm0_xexec = nofpexcept V_CMP_NGE_F32_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
363     ; WAVE32-NEXT: S_ENDPGM 0, implicit %2
364     %0:vgpr(s32) = COPY $vgpr0
365     %1:vgpr(s32) = COPY $vgpr1
366     %2:vcc(s1) = G_FCMP floatpred(ult), %0, %1
367     S_ENDPGM 0, implicit %2
371 name: fcmp_ule_s32_vv
372 legalized: true
373 regBankSelected: true
375 body: |
376   bb.0:
377     liveins: $vgpr0, $vgpr1
378     ; WAVE64-LABEL: name: fcmp_ule_s32_vv
379     ; WAVE64: liveins: $vgpr0, $vgpr1
380     ; WAVE64-NEXT: {{  $}}
381     ; WAVE64-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
382     ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
383     ; WAVE64-NEXT: %2:sreg_64_xexec = nofpexcept V_CMP_NGT_F32_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
384     ; WAVE64-NEXT: S_ENDPGM 0, implicit %2
385     ; WAVE32-LABEL: name: fcmp_ule_s32_vv
386     ; WAVE32: liveins: $vgpr0, $vgpr1
387     ; WAVE32-NEXT: {{  $}}
388     ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
389     ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
390     ; WAVE32-NEXT: %2:sreg_32_xm0_xexec = nofpexcept V_CMP_NGT_F32_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
391     ; WAVE32-NEXT: S_ENDPGM 0, implicit %2
392     %0:vgpr(s32) = COPY $vgpr0
393     %1:vgpr(s32) = COPY $vgpr1
394     %2:vcc(s1) = G_FCMP floatpred(ule), %0, %1
395     S_ENDPGM 0, implicit %2
399 name: fcmp_une_s32_vv
400 legalized: true
401 regBankSelected: true
403 body: |
404   bb.0:
405     liveins: $vgpr0, $vgpr1
406     ; WAVE64-LABEL: name: fcmp_une_s32_vv
407     ; WAVE64: liveins: $vgpr0, $vgpr1
408     ; WAVE64-NEXT: {{  $}}
409     ; WAVE64-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
410     ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
411     ; WAVE64-NEXT: %2:sreg_64_xexec = nofpexcept V_CMP_NEQ_F32_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
412     ; WAVE64-NEXT: S_ENDPGM 0, implicit %2
413     ; WAVE32-LABEL: name: fcmp_une_s32_vv
414     ; WAVE32: liveins: $vgpr0, $vgpr1
415     ; WAVE32-NEXT: {{  $}}
416     ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
417     ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
418     ; WAVE32-NEXT: %2:sreg_32_xm0_xexec = nofpexcept V_CMP_NEQ_F32_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
419     ; WAVE32-NEXT: S_ENDPGM 0, implicit %2
420     %0:vgpr(s32) = COPY $vgpr0
421     %1:vgpr(s32) = COPY $vgpr1
422     %2:vcc(s1) = G_FCMP floatpred(une), %0, %1
423     S_ENDPGM 0, implicit %2
427 name: fcmp_true_s32_vv
428 legalized: true
429 regBankSelected: true
431 body: |
432   bb.0:
433     liveins: $vgpr0, $vgpr1
434     ; WAVE64-LABEL: name: fcmp_true_s32_vv
435     ; WAVE64: liveins: $vgpr0, $vgpr1
436     ; WAVE64-NEXT: {{  $}}
437     ; WAVE64-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
438     ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
439     ; WAVE64-NEXT: [[FCMP:%[0-9]+]]:vcc(s1) = G_FCMP floatpred(true), [[COPY]](s32), [[COPY1]]
440     ; WAVE64-NEXT: S_ENDPGM 0, implicit [[FCMP]](s1)
441     ; WAVE32-LABEL: name: fcmp_true_s32_vv
442     ; WAVE32: liveins: $vgpr0, $vgpr1
443     ; WAVE32-NEXT: {{  $}}
444     ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
445     ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
446     ; WAVE32-NEXT: [[FCMP:%[0-9]+]]:vcc(s1) = G_FCMP floatpred(true), [[COPY]](s32), [[COPY1]]
447     ; WAVE32-NEXT: S_ENDPGM 0, implicit [[FCMP]](s1)
448     %0:vgpr(s32) = COPY $vgpr0
449     %1:vgpr(s32) = COPY $vgpr1
450     %2:vcc(s1) = G_FCMP floatpred(true), %0, %1
451     S_ENDPGM 0, implicit %2
455 name: fcmp_false_s64_vv
456 legalized: true
457 regBankSelected: true
459 body: |
460   bb.0:
461     liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
462     ; WAVE64-LABEL: name: fcmp_false_s64_vv
463     ; WAVE64: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
464     ; WAVE64-NEXT: {{  $}}
465     ; WAVE64-NEXT: [[COPY:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1
466     ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr2_vgpr3
467     ; WAVE64-NEXT: [[FCMP:%[0-9]+]]:vcc(s1) = G_FCMP floatpred(false), [[COPY]](s64), [[COPY1]]
468     ; WAVE64-NEXT: S_ENDPGM 0, implicit [[FCMP]](s1)
469     ; WAVE32-LABEL: name: fcmp_false_s64_vv
470     ; WAVE32: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
471     ; WAVE32-NEXT: {{  $}}
472     ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1
473     ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr2_vgpr3
474     ; WAVE32-NEXT: [[FCMP:%[0-9]+]]:vcc(s1) = G_FCMP floatpred(false), [[COPY]](s64), [[COPY1]]
475     ; WAVE32-NEXT: S_ENDPGM 0, implicit [[FCMP]](s1)
476     %0:vgpr(s64) = COPY $vgpr0_vgpr1
477     %1:vgpr(s64) = COPY $vgpr2_vgpr3
478     %2:vcc(s1) = G_FCMP floatpred(false), %0, %1
479     S_ENDPGM 0, implicit %2
483 name: fcmp_oeq_s64_vv
484 legalized: true
485 regBankSelected: true
487 body: |
488   bb.0:
489     liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
490     ; WAVE64-LABEL: name: fcmp_oeq_s64_vv
491     ; WAVE64: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
492     ; WAVE64-NEXT: {{  $}}
493     ; WAVE64-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
494     ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
495     ; WAVE64-NEXT: %2:sreg_64_xexec = nofpexcept V_CMP_EQ_F64_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
496     ; WAVE64-NEXT: S_ENDPGM 0, implicit %2
497     ; WAVE32-LABEL: name: fcmp_oeq_s64_vv
498     ; WAVE32: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
499     ; WAVE32-NEXT: {{  $}}
500     ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
501     ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
502     ; WAVE32-NEXT: %2:sreg_32_xm0_xexec = nofpexcept V_CMP_EQ_F64_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
503     ; WAVE32-NEXT: S_ENDPGM 0, implicit %2
504     %0:vgpr(s64) = COPY $vgpr0_vgpr1
505     %1:vgpr(s64) = COPY $vgpr2_vgpr3
506     %2:vcc(s1) = G_FCMP floatpred(oeq), %0, %1
507     S_ENDPGM 0, implicit %2
511 name: fcmp_ogt_s64_vv
512 legalized: true
513 regBankSelected: true
515 body: |
516   bb.0:
517     liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
518     ; WAVE64-LABEL: name: fcmp_ogt_s64_vv
519     ; WAVE64: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
520     ; WAVE64-NEXT: {{  $}}
521     ; WAVE64-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
522     ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
523     ; WAVE64-NEXT: %2:sreg_64_xexec = nofpexcept V_CMP_GT_F64_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
524     ; WAVE64-NEXT: S_ENDPGM 0, implicit %2
525     ; WAVE32-LABEL: name: fcmp_ogt_s64_vv
526     ; WAVE32: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
527     ; WAVE32-NEXT: {{  $}}
528     ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
529     ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
530     ; WAVE32-NEXT: %2:sreg_32_xm0_xexec = nofpexcept V_CMP_GT_F64_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
531     ; WAVE32-NEXT: S_ENDPGM 0, implicit %2
532     %0:vgpr(s64) = COPY $vgpr0_vgpr1
533     %1:vgpr(s64) = COPY $vgpr2_vgpr3
534     %2:vcc(s1) = G_FCMP floatpred(ogt), %0, %1
535     S_ENDPGM 0, implicit %2
539 name: fcmp_oge_s64_vv
540 legalized: true
541 regBankSelected: true
543 body: |
544   bb.0:
545     liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
546     ; WAVE64-LABEL: name: fcmp_oge_s64_vv
547     ; WAVE64: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
548     ; WAVE64-NEXT: {{  $}}
549     ; WAVE64-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
550     ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
551     ; WAVE64-NEXT: %2:sreg_64_xexec = nofpexcept V_CMP_GE_F64_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
552     ; WAVE64-NEXT: S_ENDPGM 0, implicit %2
553     ; WAVE32-LABEL: name: fcmp_oge_s64_vv
554     ; WAVE32: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
555     ; WAVE32-NEXT: {{  $}}
556     ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
557     ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
558     ; WAVE32-NEXT: %2:sreg_32_xm0_xexec = nofpexcept V_CMP_GE_F64_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
559     ; WAVE32-NEXT: S_ENDPGM 0, implicit %2
560     %0:vgpr(s64) = COPY $vgpr0_vgpr1
561     %1:vgpr(s64) = COPY $vgpr2_vgpr3
562     %2:vcc(s1) = G_FCMP floatpred(oge), %0, %1
563     S_ENDPGM 0, implicit %2
567 name: fcmp_olt_s64_vv
568 legalized: true
569 regBankSelected: true
571 body: |
572   bb.0:
573     liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
574     ; WAVE64-LABEL: name: fcmp_olt_s64_vv
575     ; WAVE64: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
576     ; WAVE64-NEXT: {{  $}}
577     ; WAVE64-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
578     ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
579     ; WAVE64-NEXT: %2:sreg_64_xexec = nofpexcept V_CMP_LT_F64_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
580     ; WAVE64-NEXT: S_ENDPGM 0, implicit %2
581     ; WAVE32-LABEL: name: fcmp_olt_s64_vv
582     ; WAVE32: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
583     ; WAVE32-NEXT: {{  $}}
584     ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
585     ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
586     ; WAVE32-NEXT: %2:sreg_32_xm0_xexec = nofpexcept V_CMP_LT_F64_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
587     ; WAVE32-NEXT: S_ENDPGM 0, implicit %2
588     %0:vgpr(s64) = COPY $vgpr0_vgpr1
589     %1:vgpr(s64) = COPY $vgpr2_vgpr3
590     %2:vcc(s1) = G_FCMP floatpred(olt), %0, %1
591     S_ENDPGM 0, implicit %2
595 name: fcmp_ole_s64_vv
596 legalized: true
597 regBankSelected: true
599 body: |
600   bb.0:
601     liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
602     ; WAVE64-LABEL: name: fcmp_ole_s64_vv
603     ; WAVE64: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
604     ; WAVE64-NEXT: {{  $}}
605     ; WAVE64-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
606     ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
607     ; WAVE64-NEXT: %2:sreg_64_xexec = nofpexcept V_CMP_LE_F64_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
608     ; WAVE64-NEXT: S_ENDPGM 0, implicit %2
609     ; WAVE32-LABEL: name: fcmp_ole_s64_vv
610     ; WAVE32: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
611     ; WAVE32-NEXT: {{  $}}
612     ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
613     ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
614     ; WAVE32-NEXT: %2:sreg_32_xm0_xexec = nofpexcept V_CMP_LE_F64_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
615     ; WAVE32-NEXT: S_ENDPGM 0, implicit %2
616     %0:vgpr(s64) = COPY $vgpr0_vgpr1
617     %1:vgpr(s64) = COPY $vgpr2_vgpr3
618     %2:vcc(s1) = G_FCMP floatpred(ole), %0, %1
619     S_ENDPGM 0, implicit %2
623 name: fcmp_one_s64_vv
624 legalized: true
625 regBankSelected: true
627 body: |
628   bb.0:
629     liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
630     ; WAVE64-LABEL: name: fcmp_one_s64_vv
631     ; WAVE64: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
632     ; WAVE64-NEXT: {{  $}}
633     ; WAVE64-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
634     ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
635     ; WAVE64-NEXT: %2:sreg_64_xexec = nofpexcept V_CMP_LG_F64_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
636     ; WAVE64-NEXT: S_ENDPGM 0, implicit %2
637     ; WAVE32-LABEL: name: fcmp_one_s64_vv
638     ; WAVE32: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
639     ; WAVE32-NEXT: {{  $}}
640     ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
641     ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
642     ; WAVE32-NEXT: %2:sreg_32_xm0_xexec = nofpexcept V_CMP_LG_F64_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
643     ; WAVE32-NEXT: S_ENDPGM 0, implicit %2
644     %0:vgpr(s64) = COPY $vgpr0_vgpr1
645     %1:vgpr(s64) = COPY $vgpr2_vgpr3
646     %2:vcc(s1) = G_FCMP floatpred(one), %0, %1
647     S_ENDPGM 0, implicit %2
651 name: fcmp_ord_s64_vv
652 legalized: true
653 regBankSelected: true
655 body: |
656   bb.0:
657     liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
658     ; WAVE64-LABEL: name: fcmp_ord_s64_vv
659     ; WAVE64: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
660     ; WAVE64-NEXT: {{  $}}
661     ; WAVE64-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
662     ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
663     ; WAVE64-NEXT: %2:sreg_64_xexec = nofpexcept V_CMP_O_F64_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
664     ; WAVE64-NEXT: S_ENDPGM 0, implicit %2
665     ; WAVE32-LABEL: name: fcmp_ord_s64_vv
666     ; WAVE32: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
667     ; WAVE32-NEXT: {{  $}}
668     ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
669     ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
670     ; WAVE32-NEXT: %2:sreg_32_xm0_xexec = nofpexcept V_CMP_O_F64_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
671     ; WAVE32-NEXT: S_ENDPGM 0, implicit %2
672     %0:vgpr(s64) = COPY $vgpr0_vgpr1
673     %1:vgpr(s64) = COPY $vgpr2_vgpr3
674     %2:vcc(s1) = G_FCMP floatpred(ord), %0, %1
675     S_ENDPGM 0, implicit %2
679 name: fcmp_uno_s64_vv
680 legalized: true
681 regBankSelected: true
683 body: |
684   bb.0:
685     liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
686     ; WAVE64-LABEL: name: fcmp_uno_s64_vv
687     ; WAVE64: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
688     ; WAVE64-NEXT: {{  $}}
689     ; WAVE64-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
690     ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
691     ; WAVE64-NEXT: %2:sreg_64_xexec = nofpexcept V_CMP_U_F64_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
692     ; WAVE64-NEXT: S_ENDPGM 0, implicit %2
693     ; WAVE32-LABEL: name: fcmp_uno_s64_vv
694     ; WAVE32: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
695     ; WAVE32-NEXT: {{  $}}
696     ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
697     ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
698     ; WAVE32-NEXT: %2:sreg_32_xm0_xexec = nofpexcept V_CMP_U_F64_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
699     ; WAVE32-NEXT: S_ENDPGM 0, implicit %2
700     %0:vgpr(s64) = COPY $vgpr0_vgpr1
701     %1:vgpr(s64) = COPY $vgpr2_vgpr3
702     %2:vcc(s1) = G_FCMP floatpred(uno), %0, %1
703     S_ENDPGM 0, implicit %2
707 name: fcmp_ueq_s64_vv
708 legalized: true
709 regBankSelected: true
711 body: |
712   bb.0:
713     liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
714     ; WAVE64-LABEL: name: fcmp_ueq_s64_vv
715     ; WAVE64: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
716     ; WAVE64-NEXT: {{  $}}
717     ; WAVE64-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
718     ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
719     ; WAVE64-NEXT: %2:sreg_64_xexec = nofpexcept V_CMP_NLG_F64_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
720     ; WAVE64-NEXT: S_ENDPGM 0, implicit %2
721     ; WAVE32-LABEL: name: fcmp_ueq_s64_vv
722     ; WAVE32: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
723     ; WAVE32-NEXT: {{  $}}
724     ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
725     ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
726     ; WAVE32-NEXT: %2:sreg_32_xm0_xexec = nofpexcept V_CMP_NLG_F64_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
727     ; WAVE32-NEXT: S_ENDPGM 0, implicit %2
728     %0:vgpr(s64) = COPY $vgpr0_vgpr1
729     %1:vgpr(s64) = COPY $vgpr2_vgpr3
730     %2:vcc(s1) = G_FCMP floatpred(ueq), %0, %1
731     S_ENDPGM 0, implicit %2
735 name: fcmp_ugt_s64_vv
736 legalized: true
737 regBankSelected: true
739 body: |
740   bb.0:
741     liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
742     ; WAVE64-LABEL: name: fcmp_ugt_s64_vv
743     ; WAVE64: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
744     ; WAVE64-NEXT: {{  $}}
745     ; WAVE64-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
746     ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
747     ; WAVE64-NEXT: %2:sreg_64_xexec = nofpexcept V_CMP_NLE_F64_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
748     ; WAVE64-NEXT: S_ENDPGM 0, implicit %2
749     ; WAVE32-LABEL: name: fcmp_ugt_s64_vv
750     ; WAVE32: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
751     ; WAVE32-NEXT: {{  $}}
752     ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
753     ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
754     ; WAVE32-NEXT: %2:sreg_32_xm0_xexec = nofpexcept V_CMP_NLE_F64_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
755     ; WAVE32-NEXT: S_ENDPGM 0, implicit %2
756     %0:vgpr(s64) = COPY $vgpr0_vgpr1
757     %1:vgpr(s64) = COPY $vgpr2_vgpr3
758     %2:vcc(s1) = G_FCMP floatpred(ugt), %0, %1
759     S_ENDPGM 0, implicit %2
763 name: fcmp_uge_s64_vv
764 legalized: true
765 regBankSelected: true
767 body: |
768   bb.0:
769     liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
770     ; WAVE64-LABEL: name: fcmp_uge_s64_vv
771     ; WAVE64: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
772     ; WAVE64-NEXT: {{  $}}
773     ; WAVE64-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
774     ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
775     ; WAVE64-NEXT: %2:sreg_64_xexec = nofpexcept V_CMP_NLT_F64_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
776     ; WAVE64-NEXT: S_ENDPGM 0, implicit %2
777     ; WAVE32-LABEL: name: fcmp_uge_s64_vv
778     ; WAVE32: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
779     ; WAVE32-NEXT: {{  $}}
780     ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
781     ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
782     ; WAVE32-NEXT: %2:sreg_32_xm0_xexec = nofpexcept V_CMP_NLT_F64_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
783     ; WAVE32-NEXT: S_ENDPGM 0, implicit %2
784     %0:vgpr(s64) = COPY $vgpr0_vgpr1
785     %1:vgpr(s64) = COPY $vgpr2_vgpr3
786     %2:vcc(s1) = G_FCMP floatpred(uge), %0, %1
787     S_ENDPGM 0, implicit %2
791 name: fcmp_ult_s64_vv
792 legalized: true
793 regBankSelected: true
795 body: |
796   bb.0:
797     liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
798     ; WAVE64-LABEL: name: fcmp_ult_s64_vv
799     ; WAVE64: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
800     ; WAVE64-NEXT: {{  $}}
801     ; WAVE64-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
802     ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
803     ; WAVE64-NEXT: %2:sreg_64_xexec = nofpexcept V_CMP_NGE_F64_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
804     ; WAVE64-NEXT: S_ENDPGM 0, implicit %2
805     ; WAVE32-LABEL: name: fcmp_ult_s64_vv
806     ; WAVE32: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
807     ; WAVE32-NEXT: {{  $}}
808     ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
809     ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
810     ; WAVE32-NEXT: %2:sreg_32_xm0_xexec = nofpexcept V_CMP_NGE_F64_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
811     ; WAVE32-NEXT: S_ENDPGM 0, implicit %2
812     %0:vgpr(s64) = COPY $vgpr0_vgpr1
813     %1:vgpr(s64) = COPY $vgpr2_vgpr3
814     %2:vcc(s1) = G_FCMP floatpred(ult), %0, %1
815     S_ENDPGM 0, implicit %2
819 name: fcmp_ule_s64_vv
820 legalized: true
821 regBankSelected: true
823 body: |
824   bb.0:
825     liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
826     ; WAVE64-LABEL: name: fcmp_ule_s64_vv
827     ; WAVE64: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
828     ; WAVE64-NEXT: {{  $}}
829     ; WAVE64-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
830     ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
831     ; WAVE64-NEXT: %2:sreg_64_xexec = nofpexcept V_CMP_NGT_F64_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
832     ; WAVE64-NEXT: S_ENDPGM 0, implicit %2
833     ; WAVE32-LABEL: name: fcmp_ule_s64_vv
834     ; WAVE32: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
835     ; WAVE32-NEXT: {{  $}}
836     ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
837     ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
838     ; WAVE32-NEXT: %2:sreg_32_xm0_xexec = nofpexcept V_CMP_NGT_F64_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
839     ; WAVE32-NEXT: S_ENDPGM 0, implicit %2
840     %0:vgpr(s64) = COPY $vgpr0_vgpr1
841     %1:vgpr(s64) = COPY $vgpr2_vgpr3
842     %2:vcc(s1) = G_FCMP floatpred(ule), %0, %1
843     S_ENDPGM 0, implicit %2
847 name: fcmp_une_s64_vv
848 legalized: true
849 regBankSelected: true
851 body: |
852   bb.0:
853     liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
854     ; WAVE64-LABEL: name: fcmp_une_s64_vv
855     ; WAVE64: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
856     ; WAVE64-NEXT: {{  $}}
857     ; WAVE64-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
858     ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
859     ; WAVE64-NEXT: %2:sreg_64_xexec = nofpexcept V_CMP_NEQ_F64_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
860     ; WAVE64-NEXT: S_ENDPGM 0, implicit %2
861     ; WAVE32-LABEL: name: fcmp_une_s64_vv
862     ; WAVE32: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
863     ; WAVE32-NEXT: {{  $}}
864     ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
865     ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
866     ; WAVE32-NEXT: %2:sreg_32_xm0_xexec = nofpexcept V_CMP_NEQ_F64_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
867     ; WAVE32-NEXT: S_ENDPGM 0, implicit %2
868     %0:vgpr(s64) = COPY $vgpr0_vgpr1
869     %1:vgpr(s64) = COPY $vgpr2_vgpr3
870     %2:vcc(s1) = G_FCMP floatpred(une), %0, %1
871     S_ENDPGM 0, implicit %2
875 name: fcmp_true_s64_vv
876 legalized: true
877 regBankSelected: true
879 body: |
880   bb.0:
881     liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
882     ; WAVE64-LABEL: name: fcmp_true_s64_vv
883     ; WAVE64: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
884     ; WAVE64-NEXT: {{  $}}
885     ; WAVE64-NEXT: [[COPY:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1
886     ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr2_vgpr3
887     ; WAVE64-NEXT: [[FCMP:%[0-9]+]]:vcc(s1) = G_FCMP floatpred(true), [[COPY]](s64), [[COPY1]]
888     ; WAVE64-NEXT: S_ENDPGM 0, implicit [[FCMP]](s1)
889     ; WAVE32-LABEL: name: fcmp_true_s64_vv
890     ; WAVE32: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
891     ; WAVE32-NEXT: {{  $}}
892     ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1
893     ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr2_vgpr3
894     ; WAVE32-NEXT: [[FCMP:%[0-9]+]]:vcc(s1) = G_FCMP floatpred(true), [[COPY]](s64), [[COPY1]]
895     ; WAVE32-NEXT: S_ENDPGM 0, implicit [[FCMP]](s1)
896     %0:vgpr(s64) = COPY $vgpr0_vgpr1
897     %1:vgpr(s64) = COPY $vgpr2_vgpr3
898     %2:vcc(s1) = G_FCMP floatpred(true), %0, %1
899     S_ENDPGM 0, implicit %2
903 name: fcmp_oeq_s32_vv_select_user
904 legalized: true
905 regBankSelected: true
907 body: |
908   bb.0:
909     liveins: $vgpr0, $vgpr1
910     ; WAVE64-LABEL: name: fcmp_oeq_s32_vv_select_user
911     ; WAVE64: liveins: $vgpr0, $vgpr1
912     ; WAVE64-NEXT: {{  $}}
913     ; WAVE64-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
914     ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
915     ; WAVE64-NEXT: %2:sreg_64_xexec = nofpexcept V_CMP_EQ_F32_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
916     ; WAVE64-NEXT: [[V_CNDMASK_B32_e64_:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, [[COPY1]], 0, [[COPY]], %2, implicit $exec
917     ; WAVE64-NEXT: S_ENDPGM 0, implicit [[V_CNDMASK_B32_e64_]]
918     ; WAVE32-LABEL: name: fcmp_oeq_s32_vv_select_user
919     ; WAVE32: liveins: $vgpr0, $vgpr1
920     ; WAVE32-NEXT: {{  $}}
921     ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
922     ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
923     ; WAVE32-NEXT: %2:sreg_32_xm0_xexec = nofpexcept V_CMP_EQ_F32_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec
924     ; WAVE32-NEXT: [[V_CNDMASK_B32_e64_:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, [[COPY1]], 0, [[COPY]], %2, implicit $exec
925     ; WAVE32-NEXT: S_ENDPGM 0, implicit [[V_CNDMASK_B32_e64_]]
926     %0:vgpr(s32) = COPY $vgpr0
927     %1:vgpr(s32) = COPY $vgpr1
928     %2:vcc(s1) = G_FCMP floatpred(oeq), %0, %1
929     %3:vgpr(s32) = G_SELECT %2, %0, %1
930     S_ENDPGM 0, implicit %3