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
7 name: fcmp_false_s32_vv
13 liveins: $vgpr0, $vgpr1
14 ; WAVE64-LABEL: name: fcmp_false_s32_vv
15 ; WAVE64: liveins: $vgpr0, $vgpr1
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
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
41 liveins: $vgpr0, $vgpr1
42 ; WAVE64-LABEL: name: fcmp_oeq_s32_vv
43 ; WAVE64: liveins: $vgpr0, $vgpr1
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
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
69 liveins: $vgpr0, $vgpr1
70 ; WAVE64-LABEL: name: fcmp_ogt_s32_vv
71 ; WAVE64: liveins: $vgpr0, $vgpr1
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
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
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
121 regBankSelected: true
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
149 regBankSelected: true
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
177 regBankSelected: true
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
205 regBankSelected: true
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
233 regBankSelected: true
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
261 regBankSelected: true
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
289 regBankSelected: true
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
317 regBankSelected: true
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
345 regBankSelected: true
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
373 regBankSelected: true
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
401 regBankSelected: true
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
429 regBankSelected: true
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
457 regBankSelected: true
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
485 regBankSelected: true
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
513 regBankSelected: true
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
541 regBankSelected: true
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
569 regBankSelected: true
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
597 regBankSelected: true
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
625 regBankSelected: true
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
653 regBankSelected: true
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
681 regBankSelected: true
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
709 regBankSelected: true
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
737 regBankSelected: true
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
765 regBankSelected: true
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
793 regBankSelected: true
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
821 regBankSelected: true
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
849 regBankSelected: true
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
877 regBankSelected: true
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
905 regBankSelected: true
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