Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / GlobalISel / inst-select-scalar-float-sopc.mir
blob3ef974135d2f15643ae5afa35b2249d3c1543b78
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -march=amdgcn -mcpu=gfx1150 -run-pass=instruction-select -verify-machineinstrs -o - %s | FileCheck -check-prefix=GFX1150 %s
4 ---
5 name:            f32_olt
6 legalized:       true
7 regBankSelected: true
8 body:             |
9   bb.1.entry:
10     liveins: $sgpr0, $sgpr1
12     ; GFX1150-LABEL: name: f32_olt
13     ; GFX1150: liveins: $sgpr0, $sgpr1
14     ; GFX1150-NEXT: {{  $}}
15     ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
16     ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1
17     ; GFX1150-NEXT: S_CMP_LT_F32 [[COPY]], [[COPY1]], implicit-def $scc, implicit $mode
18     ; GFX1150-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $scc
19     ; GFX1150-NEXT: $sgpr0 = COPY [[COPY2]]
20     %0:sgpr(s32) = COPY $sgpr0
21     %1:sgpr(s32) = COPY $sgpr1
22     %2:sgpr(s32) = G_FCMP floatpred(olt), %0(s32), %1
23     $sgpr0 = COPY %2(s32)
25 ...
26 ---
27 name:            f32_oeq
28 legalized:       true
29 regBankSelected: true
30 body:             |
31   bb.1.entry:
32     liveins: $sgpr0, $sgpr1
34     ; GFX1150-LABEL: name: f32_oeq
35     ; GFX1150: liveins: $sgpr0, $sgpr1
36     ; GFX1150-NEXT: {{  $}}
37     ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
38     ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1
39     ; GFX1150-NEXT: S_CMP_EQ_F32 [[COPY]], [[COPY1]], implicit-def $scc, implicit $mode
40     ; GFX1150-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $scc
41     ; GFX1150-NEXT: $sgpr0 = COPY [[COPY2]]
42     %0:sgpr(s32) = COPY $sgpr0
43     %1:sgpr(s32) = COPY $sgpr1
44     %2:sgpr(s32) = G_FCMP floatpred(oeq), %0(s32), %1
45     $sgpr0 = COPY %2(s32)
47 ...
48 ---
49 name:            f32_ole
50 legalized:       true
51 regBankSelected: true
52 body:             |
53   bb.1.entry:
54     liveins: $sgpr0, $sgpr1
56     ; GFX1150-LABEL: name: f32_ole
57     ; GFX1150: liveins: $sgpr0, $sgpr1
58     ; GFX1150-NEXT: {{  $}}
59     ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
60     ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1
61     ; GFX1150-NEXT: S_CMP_LE_F32 [[COPY]], [[COPY1]], implicit-def $scc, implicit $mode
62     ; GFX1150-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $scc
63     ; GFX1150-NEXT: $sgpr0 = COPY [[COPY2]]
64     %0:sgpr(s32) = COPY $sgpr0
65     %1:sgpr(s32) = COPY $sgpr1
66     %2:sgpr(s32) = G_FCMP floatpred(ole), %0(s32), %1
67     $sgpr0 = COPY %2(s32)
69 ...
70 ---
71 name:            f32_ogt
72 legalized:       true
73 regBankSelected: true
74 body:             |
75   bb.1.entry:
76     liveins: $sgpr0, $sgpr1
78     ; GFX1150-LABEL: name: f32_ogt
79     ; GFX1150: liveins: $sgpr0, $sgpr1
80     ; GFX1150-NEXT: {{  $}}
81     ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
82     ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1
83     ; GFX1150-NEXT: S_CMP_GT_F32 [[COPY]], [[COPY1]], implicit-def $scc, implicit $mode
84     ; GFX1150-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $scc
85     ; GFX1150-NEXT: $sgpr0 = COPY [[COPY2]]
86     %0:sgpr(s32) = COPY $sgpr0
87     %1:sgpr(s32) = COPY $sgpr1
88     %2:sgpr(s32) = G_FCMP floatpred(ogt), %0(s32), %1
89     $sgpr0 = COPY %2(s32)
91 ...
92 ---
93 name:            f32_one
94 legalized:       true
95 regBankSelected: true
96 body:             |
97   bb.1.entry:
98     liveins: $sgpr0, $sgpr1
100     ; GFX1150-LABEL: name: f32_one
101     ; GFX1150: liveins: $sgpr0, $sgpr1
102     ; GFX1150-NEXT: {{  $}}
103     ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
104     ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1
105     ; GFX1150-NEXT: S_CMP_LG_F32 [[COPY]], [[COPY1]], implicit-def $scc, implicit $mode
106     ; GFX1150-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $scc
107     ; GFX1150-NEXT: $sgpr0 = COPY [[COPY2]]
108     %0:sgpr(s32) = COPY $sgpr0
109     %1:sgpr(s32) = COPY $sgpr1
110     %2:sgpr(s32) = G_FCMP floatpred(one), %0(s32), %1
111     $sgpr0 = COPY %2(s32)
115 name:            f32_oge
116 legalized:       true
117 regBankSelected: true
118 body:             |
119   bb.1.entry:
120     liveins: $sgpr0, $sgpr1
122     ; GFX1150-LABEL: name: f32_oge
123     ; GFX1150: liveins: $sgpr0, $sgpr1
124     ; GFX1150-NEXT: {{  $}}
125     ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
126     ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1
127     ; GFX1150-NEXT: S_CMP_GE_F32 [[COPY]], [[COPY1]], implicit-def $scc, implicit $mode
128     ; GFX1150-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $scc
129     ; GFX1150-NEXT: $sgpr0 = COPY [[COPY2]]
130     %0:sgpr(s32) = COPY $sgpr0
131     %1:sgpr(s32) = COPY $sgpr1
132     %2:sgpr(s32) = G_FCMP floatpred(oge), %0(s32), %1
133     $sgpr0 = COPY %2(s32)
137 name:            f32_ord
138 legalized:       true
139 regBankSelected: true
140 body:             |
141   bb.1.entry:
142     liveins: $sgpr0, $sgpr1
144     ; GFX1150-LABEL: name: f32_ord
145     ; GFX1150: liveins: $sgpr0, $sgpr1
146     ; GFX1150-NEXT: {{  $}}
147     ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
148     ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1
149     ; GFX1150-NEXT: S_CMP_O_F32 [[COPY]], [[COPY1]], implicit-def $scc, implicit $mode
150     ; GFX1150-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $scc
151     ; GFX1150-NEXT: $sgpr0 = COPY [[COPY2]]
152     %0:sgpr(s32) = COPY $sgpr0
153     %1:sgpr(s32) = COPY $sgpr1
154     %2:sgpr(s32) = G_FCMP floatpred(ord), %0(s32), %1
155     $sgpr0 = COPY %2(s32)
159 name:            f32_uno
160 legalized:       true
161 regBankSelected: true
162 body:             |
163   bb.1.entry:
164     liveins: $sgpr0, $sgpr1
166     ; GFX1150-LABEL: name: f32_uno
167     ; GFX1150: liveins: $sgpr0, $sgpr1
168     ; GFX1150-NEXT: {{  $}}
169     ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
170     ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1
171     ; GFX1150-NEXT: S_CMP_U_F32 [[COPY]], [[COPY1]], implicit-def $scc, implicit $mode
172     ; GFX1150-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $scc
173     ; GFX1150-NEXT: $sgpr0 = COPY [[COPY2]]
174     %0:sgpr(s32) = COPY $sgpr0
175     %1:sgpr(s32) = COPY $sgpr1
176     %2:sgpr(s32) = G_FCMP floatpred(uno), %0(s32), %1
177     $sgpr0 = COPY %2(s32)
181 name:            f32_ult
182 legalized:       true
183 regBankSelected: true
184 body:             |
185   bb.1.entry:
186     liveins: $sgpr0, $sgpr1
188     ; GFX1150-LABEL: name: f32_ult
189     ; GFX1150: liveins: $sgpr0, $sgpr1
190     ; GFX1150-NEXT: {{  $}}
191     ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
192     ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1
193     ; GFX1150-NEXT: S_CMP_NGE_F32 [[COPY]], [[COPY1]], implicit-def $scc, implicit $mode
194     ; GFX1150-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $scc
195     ; GFX1150-NEXT: $sgpr0 = COPY [[COPY2]]
196     %0:sgpr(s32) = COPY $sgpr0
197     %1:sgpr(s32) = COPY $sgpr1
198     %2:sgpr(s32) = G_FCMP floatpred(ult), %0(s32), %1
199     $sgpr0 = COPY %2(s32)
203 name:            f32_ueq
204 legalized:       true
205 regBankSelected: true
206 body:             |
207   bb.1.entry:
208     liveins: $sgpr0, $sgpr1
210     ; GFX1150-LABEL: name: f32_ueq
211     ; GFX1150: liveins: $sgpr0, $sgpr1
212     ; GFX1150-NEXT: {{  $}}
213     ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
214     ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1
215     ; GFX1150-NEXT: S_CMP_NLG_F32 [[COPY]], [[COPY1]], implicit-def $scc, implicit $mode
216     ; GFX1150-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $scc
217     ; GFX1150-NEXT: $sgpr0 = COPY [[COPY2]]
218     %0:sgpr(s32) = COPY $sgpr0
219     %1:sgpr(s32) = COPY $sgpr1
220     %2:sgpr(s32) = G_FCMP floatpred(ueq), %0(s32), %1
221     $sgpr0 = COPY %2(s32)
225 name:            f32_ule
226 legalized:       true
227 regBankSelected: true
228 body:             |
229   bb.1.entry:
230     liveins: $sgpr0, $sgpr1
232     ; GFX1150-LABEL: name: f32_ule
233     ; GFX1150: liveins: $sgpr0, $sgpr1
234     ; GFX1150-NEXT: {{  $}}
235     ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
236     ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1
237     ; GFX1150-NEXT: S_CMP_NGT_F32 [[COPY]], [[COPY1]], implicit-def $scc, implicit $mode
238     ; GFX1150-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $scc
239     ; GFX1150-NEXT: $sgpr0 = COPY [[COPY2]]
240     %0:sgpr(s32) = COPY $sgpr0
241     %1:sgpr(s32) = COPY $sgpr1
242     %2:sgpr(s32) = G_FCMP floatpred(ule), %0(s32), %1
243     $sgpr0 = COPY %2(s32)
247 name:            f32_ugt
248 legalized:       true
249 regBankSelected: true
250 body:             |
251   bb.1.entry:
252     liveins: $sgpr0, $sgpr1
254     ; GFX1150-LABEL: name: f32_ugt
255     ; GFX1150: liveins: $sgpr0, $sgpr1
256     ; GFX1150-NEXT: {{  $}}
257     ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
258     ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1
259     ; GFX1150-NEXT: S_CMP_NLE_F32 [[COPY]], [[COPY1]], implicit-def $scc, implicit $mode
260     ; GFX1150-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $scc
261     ; GFX1150-NEXT: $sgpr0 = COPY [[COPY2]]
262     %0:sgpr(s32) = COPY $sgpr0
263     %1:sgpr(s32) = COPY $sgpr1
264     %2:sgpr(s32) = G_FCMP floatpred(ugt), %0(s32), %1
265     $sgpr0 = COPY %2(s32)
269 name:            f32_une
270 legalized:       true
271 regBankSelected: true
272 body:             |
273   bb.1.entry:
274     liveins: $sgpr0, $sgpr1
276     ; GFX1150-LABEL: name: f32_une
277     ; GFX1150: liveins: $sgpr0, $sgpr1
278     ; GFX1150-NEXT: {{  $}}
279     ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
280     ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1
281     ; GFX1150-NEXT: S_CMP_NEQ_F32 [[COPY]], [[COPY1]], implicit-def $scc, implicit $mode
282     ; GFX1150-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $scc
283     ; GFX1150-NEXT: $sgpr0 = COPY [[COPY2]]
284     %0:sgpr(s32) = COPY $sgpr0
285     %1:sgpr(s32) = COPY $sgpr1
286     %2:sgpr(s32) = G_FCMP floatpred(une), %0(s32), %1
287     $sgpr0 = COPY %2(s32)
291 name:            f32_uge
292 legalized:       true
293 regBankSelected: true
294 body:             |
295   bb.1.entry:
296     liveins: $sgpr0, $sgpr1
298     ; GFX1150-LABEL: name: f32_uge
299     ; GFX1150: liveins: $sgpr0, $sgpr1
300     ; GFX1150-NEXT: {{  $}}
301     ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
302     ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1
303     ; GFX1150-NEXT: S_CMP_NLT_F32 [[COPY]], [[COPY1]], implicit-def $scc, implicit $mode
304     ; GFX1150-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $scc
305     ; GFX1150-NEXT: $sgpr0 = COPY [[COPY2]]
306     %0:sgpr(s32) = COPY $sgpr0
307     %1:sgpr(s32) = COPY $sgpr1
308     %2:sgpr(s32) = G_FCMP floatpred(uge), %0(s32), %1
309     $sgpr0 = COPY %2(s32)
313 name:            f16_olt
314 legalized:       true
315 regBankSelected: true
316 body:             |
317   bb.1.entry:
318     liveins: $sgpr0, $sgpr1
320     ; GFX1150-LABEL: name: f16_olt
321     ; GFX1150: liveins: $sgpr0, $sgpr1
322     ; GFX1150-NEXT: {{  $}}
323     ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
324     ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1
325     ; GFX1150-NEXT: S_CMP_LT_F16 [[COPY]], [[COPY1]], implicit-def $scc, implicit $mode
326     ; GFX1150-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $scc
327     ; GFX1150-NEXT: $sgpr0 = COPY [[COPY2]]
328     %0:sgpr(s32) = COPY $sgpr0
329     %1:sgpr(s16) = G_TRUNC %0(s32)
330     %2:sgpr(s32) = COPY $sgpr1
331     %3:sgpr(s16) = G_TRUNC %2(s32)
332     %4:sgpr(s32) = G_FCMP floatpred(olt), %1(s16), %3
333     $sgpr0 = COPY %4(s32)
337 name:            f16_oeq
338 legalized:       true
339 regBankSelected: true
340 body:             |
341   bb.1.entry:
342     liveins: $sgpr0, $sgpr1
344     ; GFX1150-LABEL: name: f16_oeq
345     ; GFX1150: liveins: $sgpr0, $sgpr1
346     ; GFX1150-NEXT: {{  $}}
347     ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
348     ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1
349     ; GFX1150-NEXT: S_CMP_EQ_F16 [[COPY]], [[COPY1]], implicit-def $scc, implicit $mode
350     ; GFX1150-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $scc
351     ; GFX1150-NEXT: $sgpr0 = COPY [[COPY2]]
352     %0:sgpr(s32) = COPY $sgpr0
353     %1:sgpr(s16) = G_TRUNC %0(s32)
354     %2:sgpr(s32) = COPY $sgpr1
355     %3:sgpr(s16) = G_TRUNC %2(s32)
356     %4:sgpr(s32) = G_FCMP floatpred(oeq), %1(s16), %3
357     $sgpr0 = COPY %4(s32)
361 name:            f16_ole
362 legalized:       true
363 regBankSelected: true
364 body:             |
365   bb.1.entry:
366     liveins: $sgpr0, $sgpr1
368     ; GFX1150-LABEL: name: f16_ole
369     ; GFX1150: liveins: $sgpr0, $sgpr1
370     ; GFX1150-NEXT: {{  $}}
371     ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
372     ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1
373     ; GFX1150-NEXT: S_CMP_LE_F16 [[COPY]], [[COPY1]], implicit-def $scc, implicit $mode
374     ; GFX1150-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $scc
375     ; GFX1150-NEXT: $sgpr0 = COPY [[COPY2]]
376     %0:sgpr(s32) = COPY $sgpr0
377     %1:sgpr(s16) = G_TRUNC %0(s32)
378     %2:sgpr(s32) = COPY $sgpr1
379     %3:sgpr(s16) = G_TRUNC %2(s32)
380     %4:sgpr(s32) = G_FCMP floatpred(ole), %1(s16), %3
381     $sgpr0 = COPY %4(s32)
385 name:            f16_ogt
386 legalized:       true
387 regBankSelected: true
388 body:             |
389   bb.1.entry:
390     liveins: $sgpr0, $sgpr1
392     ; GFX1150-LABEL: name: f16_ogt
393     ; GFX1150: liveins: $sgpr0, $sgpr1
394     ; GFX1150-NEXT: {{  $}}
395     ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
396     ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1
397     ; GFX1150-NEXT: S_CMP_GT_F16 [[COPY]], [[COPY1]], implicit-def $scc, implicit $mode
398     ; GFX1150-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $scc
399     ; GFX1150-NEXT: $sgpr0 = COPY [[COPY2]]
400     %0:sgpr(s32) = COPY $sgpr0
401     %1:sgpr(s16) = G_TRUNC %0(s32)
402     %2:sgpr(s32) = COPY $sgpr1
403     %3:sgpr(s16) = G_TRUNC %2(s32)
404     %4:sgpr(s32) = G_FCMP floatpred(ogt), %1(s16), %3
405     $sgpr0 = COPY %4(s32)
409 name:            f16_one
410 legalized:       true
411 regBankSelected: true
412 body:             |
413   bb.1.entry:
414     liveins: $sgpr0, $sgpr1
416     ; GFX1150-LABEL: name: f16_one
417     ; GFX1150: liveins: $sgpr0, $sgpr1
418     ; GFX1150-NEXT: {{  $}}
419     ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
420     ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1
421     ; GFX1150-NEXT: S_CMP_LG_F16 [[COPY]], [[COPY1]], implicit-def $scc, implicit $mode
422     ; GFX1150-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $scc
423     ; GFX1150-NEXT: $sgpr0 = COPY [[COPY2]]
424     %0:sgpr(s32) = COPY $sgpr0
425     %1:sgpr(s16) = G_TRUNC %0(s32)
426     %2:sgpr(s32) = COPY $sgpr1
427     %3:sgpr(s16) = G_TRUNC %2(s32)
428     %4:sgpr(s32) = G_FCMP floatpred(one), %1(s16), %3
429     $sgpr0 = COPY %4(s32)
433 name:            f16_oge
434 legalized:       true
435 regBankSelected: true
436 body:             |
437   bb.1.entry:
438     liveins: $sgpr0, $sgpr1
440     ; GFX1150-LABEL: name: f16_oge
441     ; GFX1150: liveins: $sgpr0, $sgpr1
442     ; GFX1150-NEXT: {{  $}}
443     ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
444     ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1
445     ; GFX1150-NEXT: S_CMP_GE_F16 [[COPY]], [[COPY1]], implicit-def $scc, implicit $mode
446     ; GFX1150-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $scc
447     ; GFX1150-NEXT: $sgpr0 = COPY [[COPY2]]
448     %0:sgpr(s32) = COPY $sgpr0
449     %1:sgpr(s16) = G_TRUNC %0(s32)
450     %2:sgpr(s32) = COPY $sgpr1
451     %3:sgpr(s16) = G_TRUNC %2(s32)
452     %4:sgpr(s32) = G_FCMP floatpred(oge), %1(s16), %3
453     $sgpr0 = COPY %4(s32)
457 name:            f16_ord
458 legalized:       true
459 regBankSelected: true
460 body:             |
461   bb.1.entry:
462     liveins: $sgpr0, $sgpr1
464     ; GFX1150-LABEL: name: f16_ord
465     ; GFX1150: liveins: $sgpr0, $sgpr1
466     ; GFX1150-NEXT: {{  $}}
467     ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
468     ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1
469     ; GFX1150-NEXT: S_CMP_O_F16 [[COPY]], [[COPY1]], implicit-def $scc, implicit $mode
470     ; GFX1150-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $scc
471     ; GFX1150-NEXT: $sgpr0 = COPY [[COPY2]]
472     %0:sgpr(s32) = COPY $sgpr0
473     %1:sgpr(s16) = G_TRUNC %0(s32)
474     %2:sgpr(s32) = COPY $sgpr1
475     %3:sgpr(s16) = G_TRUNC %2(s32)
476     %4:sgpr(s32) = G_FCMP floatpred(ord), %1(s16), %3
477     $sgpr0 = COPY %4(s32)
481 name:            f16_uno
482 legalized:       true
483 regBankSelected: true
484 body:             |
485   bb.1.entry:
486     liveins: $sgpr0, $sgpr1
488     ; GFX1150-LABEL: name: f16_uno
489     ; GFX1150: liveins: $sgpr0, $sgpr1
490     ; GFX1150-NEXT: {{  $}}
491     ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
492     ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1
493     ; GFX1150-NEXT: S_CMP_U_F16 [[COPY]], [[COPY1]], implicit-def $scc, implicit $mode
494     ; GFX1150-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $scc
495     ; GFX1150-NEXT: $sgpr0 = COPY [[COPY2]]
496     %0:sgpr(s32) = COPY $sgpr0
497     %1:sgpr(s16) = G_TRUNC %0(s32)
498     %2:sgpr(s32) = COPY $sgpr1
499     %3:sgpr(s16) = G_TRUNC %2(s32)
500     %4:sgpr(s32) = G_FCMP floatpred(uno), %1(s16), %3
501     $sgpr0 = COPY %4(s32)
505 name:            f16_ult
506 legalized:       true
507 regBankSelected: true
508 body:             |
509   bb.1.entry:
510     liveins: $sgpr0, $sgpr1
512     ; GFX1150-LABEL: name: f16_ult
513     ; GFX1150: liveins: $sgpr0, $sgpr1
514     ; GFX1150-NEXT: {{  $}}
515     ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
516     ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1
517     ; GFX1150-NEXT: S_CMP_NGE_F16 [[COPY]], [[COPY1]], implicit-def $scc, implicit $mode
518     ; GFX1150-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $scc
519     ; GFX1150-NEXT: $sgpr0 = COPY [[COPY2]]
520     %0:sgpr(s32) = COPY $sgpr0
521     %1:sgpr(s16) = G_TRUNC %0(s32)
522     %2:sgpr(s32) = COPY $sgpr1
523     %3:sgpr(s16) = G_TRUNC %2(s32)
524     %4:sgpr(s32) = G_FCMP floatpred(ult), %1(s16), %3
525     $sgpr0 = COPY %4(s32)
529 name:            f16_ueq
530 legalized:       true
531 regBankSelected: true
532 body:             |
533   bb.1.entry:
534     liveins: $sgpr0, $sgpr1
536     ; GFX1150-LABEL: name: f16_ueq
537     ; GFX1150: liveins: $sgpr0, $sgpr1
538     ; GFX1150-NEXT: {{  $}}
539     ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
540     ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1
541     ; GFX1150-NEXT: S_CMP_NLG_F16 [[COPY]], [[COPY1]], implicit-def $scc, implicit $mode
542     ; GFX1150-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $scc
543     ; GFX1150-NEXT: $sgpr0 = COPY [[COPY2]]
544     %0:sgpr(s32) = COPY $sgpr0
545     %1:sgpr(s16) = G_TRUNC %0(s32)
546     %2:sgpr(s32) = COPY $sgpr1
547     %3:sgpr(s16) = G_TRUNC %2(s32)
548     %4:sgpr(s32) = G_FCMP floatpred(ueq), %1(s16), %3
549     $sgpr0 = COPY %4(s32)
553 name:            f16_ule
554 legalized:       true
555 regBankSelected: true
556 body:             |
557   bb.1.entry:
558     liveins: $sgpr0, $sgpr1
560     ; GFX1150-LABEL: name: f16_ule
561     ; GFX1150: liveins: $sgpr0, $sgpr1
562     ; GFX1150-NEXT: {{  $}}
563     ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
564     ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1
565     ; GFX1150-NEXT: S_CMP_NGT_F16 [[COPY]], [[COPY1]], implicit-def $scc, implicit $mode
566     ; GFX1150-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $scc
567     ; GFX1150-NEXT: $sgpr0 = COPY [[COPY2]]
568     %0:sgpr(s32) = COPY $sgpr0
569     %1:sgpr(s16) = G_TRUNC %0(s32)
570     %2:sgpr(s32) = COPY $sgpr1
571     %3:sgpr(s16) = G_TRUNC %2(s32)
572     %4:sgpr(s32) = G_FCMP floatpred(ule), %1(s16), %3
573     $sgpr0 = COPY %4(s32)
577 name:            f16_ugt
578 legalized:       true
579 regBankSelected: true
580 body:             |
581   bb.1.entry:
582     liveins: $sgpr0, $sgpr1
584     ; GFX1150-LABEL: name: f16_ugt
585     ; GFX1150: liveins: $sgpr0, $sgpr1
586     ; GFX1150-NEXT: {{  $}}
587     ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
588     ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1
589     ; GFX1150-NEXT: S_CMP_NLE_F16 [[COPY]], [[COPY1]], implicit-def $scc, implicit $mode
590     ; GFX1150-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $scc
591     ; GFX1150-NEXT: $sgpr0 = COPY [[COPY2]]
592     %0:sgpr(s32) = COPY $sgpr0
593     %1:sgpr(s16) = G_TRUNC %0(s32)
594     %2:sgpr(s32) = COPY $sgpr1
595     %3:sgpr(s16) = G_TRUNC %2(s32)
596     %4:sgpr(s32) = G_FCMP floatpred(ugt), %1(s16), %3
597     $sgpr0 = COPY %4(s32)
601 name:            f16_une
602 legalized:       true
603 regBankSelected: true
604 body:             |
605   bb.1.entry:
606     liveins: $sgpr0, $sgpr1
608     ; GFX1150-LABEL: name: f16_une
609     ; GFX1150: liveins: $sgpr0, $sgpr1
610     ; GFX1150-NEXT: {{  $}}
611     ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
612     ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1
613     ; GFX1150-NEXT: S_CMP_NEQ_F16 [[COPY]], [[COPY1]], implicit-def $scc, implicit $mode
614     ; GFX1150-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $scc
615     ; GFX1150-NEXT: $sgpr0 = COPY [[COPY2]]
616     %0:sgpr(s32) = COPY $sgpr0
617     %1:sgpr(s16) = G_TRUNC %0(s32)
618     %2:sgpr(s32) = COPY $sgpr1
619     %3:sgpr(s16) = G_TRUNC %2(s32)
620     %4:sgpr(s32) = G_FCMP floatpred(une), %1(s16), %3
621     $sgpr0 = COPY %4(s32)
625 name:            f16_uge
626 legalized:       true
627 regBankSelected: true
628 body:             |
629   bb.1.entry:
630     liveins: $sgpr0, $sgpr1
632     ; GFX1150-LABEL: name: f16_uge
633     ; GFX1150: liveins: $sgpr0, $sgpr1
634     ; GFX1150-NEXT: {{  $}}
635     ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
636     ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1
637     ; GFX1150-NEXT: S_CMP_NLT_F16 [[COPY]], [[COPY1]], implicit-def $scc, implicit $mode
638     ; GFX1150-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $scc
639     ; GFX1150-NEXT: $sgpr0 = COPY [[COPY2]]
640     %0:sgpr(s32) = COPY $sgpr0
641     %1:sgpr(s16) = G_TRUNC %0(s32)
642     %2:sgpr(s32) = COPY $sgpr1
643     %3:sgpr(s16) = G_TRUNC %2(s32)
644     %4:sgpr(s32) = G_FCMP floatpred(uge), %1(s16), %3
645     $sgpr0 = COPY %4(s32)