xref: /llvm-project/llvm/test/CodeGen/AMDGPU/GlobalISel/inst-select-fcmp.mir (revision 9e9907f1cfa424366fba58d9520f9305b537cec9)
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
5
6---
7name: fcmp_false_s32_vv
8legalized: true
9regBankSelected: true
10
11body: |
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...
33
34---
35name: fcmp_oeq_s32_vv
36legalized: true
37regBankSelected: true
38
39body: |
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...
61
62---
63name: fcmp_ogt_s32_vv
64legalized: true
65regBankSelected: true
66
67body: |
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...
89
90---
91name: fcmp_oge_s32_vv
92legalized: true
93regBankSelected: true
94
95body: |
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
116...
117
118---
119name: fcmp_olt_s32_vv
120legalized: true
121regBankSelected: true
122
123body: |
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
144...
145
146---
147name: fcmp_ole_s32_vv
148legalized: true
149regBankSelected: true
150
151body: |
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
172...
173
174---
175name: fcmp_one_s32_vv
176legalized: true
177regBankSelected: true
178
179body: |
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
200...
201
202---
203name: fcmp_ord_s32_vv
204legalized: true
205regBankSelected: true
206
207body: |
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
228...
229
230---
231name: fcmp_uno_s32_vv
232legalized: true
233regBankSelected: true
234
235body: |
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
256...
257
258---
259name: fcmp_ueq_s32_vv
260legalized: true
261regBankSelected: true
262
263body: |
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
284...
285
286---
287name: fcmp_ugt_s32_vv
288legalized: true
289regBankSelected: true
290
291body: |
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
312...
313
314---
315name: fcmp_uge_s32_vv
316legalized: true
317regBankSelected: true
318
319body: |
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
340...
341
342---
343name: fcmp_ult_s32_vv
344legalized: true
345regBankSelected: true
346
347body: |
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
368...
369
370---
371name: fcmp_ule_s32_vv
372legalized: true
373regBankSelected: true
374
375body: |
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
396...
397
398---
399name: fcmp_une_s32_vv
400legalized: true
401regBankSelected: true
402
403body: |
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
424...
425
426---
427name: fcmp_true_s32_vv
428legalized: true
429regBankSelected: true
430
431body: |
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
452...
453
454---
455name: fcmp_false_s64_vv
456legalized: true
457regBankSelected: true
458
459body: |
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
480...
481
482---
483name: fcmp_oeq_s64_vv
484legalized: true
485regBankSelected: true
486
487body: |
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
508...
509
510---
511name: fcmp_ogt_s64_vv
512legalized: true
513regBankSelected: true
514
515body: |
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
536...
537
538---
539name: fcmp_oge_s64_vv
540legalized: true
541regBankSelected: true
542
543body: |
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
564...
565
566---
567name: fcmp_olt_s64_vv
568legalized: true
569regBankSelected: true
570
571body: |
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
592...
593
594---
595name: fcmp_ole_s64_vv
596legalized: true
597regBankSelected: true
598
599body: |
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
620...
621
622---
623name: fcmp_one_s64_vv
624legalized: true
625regBankSelected: true
626
627body: |
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
648...
649
650---
651name: fcmp_ord_s64_vv
652legalized: true
653regBankSelected: true
654
655body: |
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
676...
677
678---
679name: fcmp_uno_s64_vv
680legalized: true
681regBankSelected: true
682
683body: |
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
704...
705
706---
707name: fcmp_ueq_s64_vv
708legalized: true
709regBankSelected: true
710
711body: |
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
732...
733
734---
735name: fcmp_ugt_s64_vv
736legalized: true
737regBankSelected: true
738
739body: |
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
760...
761
762---
763name: fcmp_uge_s64_vv
764legalized: true
765regBankSelected: true
766
767body: |
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
788...
789
790---
791name: fcmp_ult_s64_vv
792legalized: true
793regBankSelected: true
794
795body: |
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
816...
817
818---
819name: fcmp_ule_s64_vv
820legalized: true
821regBankSelected: true
822
823body: |
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
844...
845
846---
847name: fcmp_une_s64_vv
848legalized: true
849regBankSelected: true
850
851body: |
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
872...
873
874---
875name: fcmp_true_s64_vv
876legalized: true
877regBankSelected: true
878
879body: |
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
900...
901
902---
903name: fcmp_oeq_s32_vv_select_user
904legalized: true
905regBankSelected: true
906
907body: |
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
931...
932