[NFC][RemoveDIs] Prefer iterators over inst-pointers in InstCombine
[llvm-project.git] / llvm / test / CodeGen / AArch64 / GlobalISel / fold-brcond-fcmp.mir
blobcf80828151f497dcd0f111d3648e77fff8e25386
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=aarch64 -run-pass=instruction-select -global-isel-abort=1 -verify-machineinstrs %s -o - | FileCheck %s
4 # Test that we don't have to emit a CSINC when emitting a G_FCMP being used by
5 # a G_BRCOND.
7 # Condition codes which require more than one instruction should have two Bccs.
9 ...
10 ---
11 name:            oeq
12 legalized:       true
13 regBankSelected: true
14 tracksRegLiveness: true
15 body:             |
16   ; CHECK-LABEL: name: oeq
17   ; CHECK: bb.0:
18   ; CHECK-NEXT:   successors: %bb.1(0x50000000), %bb.2(0x30000000)
19   ; CHECK-NEXT:   liveins: $s0, $s1, $w0, $w1
20   ; CHECK-NEXT: {{  $}}
21   ; CHECK-NEXT:   %cmp_lhs:fpr32 = COPY $s0
22   ; CHECK-NEXT:   %cmp_rhs:fpr32 = COPY $s1
23   ; CHECK-NEXT:   nofpexcept FCMPSrr %cmp_lhs, %cmp_rhs, implicit-def $nzcv
24   ; CHECK-NEXT:   Bcc 0, %bb.2, implicit $nzcv
25   ; CHECK-NEXT:   B %bb.1
26   ; CHECK-NEXT: {{  $}}
27   ; CHECK-NEXT: bb.1:
28   ; CHECK-NEXT:   $s0 = COPY %cmp_lhs
29   ; CHECK-NEXT:   RET_ReallyLR implicit $s0
30   ; CHECK-NEXT: {{  $}}
31   ; CHECK-NEXT: bb.2:
32   ; CHECK-NEXT:   $s1 = COPY %cmp_rhs
33   ; CHECK-NEXT:   RET_ReallyLR implicit $s1
34   bb.0:
35     successors: %bb.1(0x50000000), %bb.2(0x30000000)
36     liveins: $s0, $s1, $w0, $w1
38     %cmp_lhs:fpr(s32) = COPY $s0
39     %cmp_rhs:fpr(s32) = COPY $s1
40     %fcmp:gpr(s32) = G_FCMP floatpred(oeq), %cmp_lhs(s32), %cmp_rhs
41     G_BRCOND %fcmp, %bb.2
42     G_BR %bb.1
43   bb.1:
44     $s0 = COPY %cmp_lhs
45     RET_ReallyLR implicit $s0
46   bb.2:
47     $s1 = COPY %cmp_rhs
48     RET_ReallyLR implicit $s1
50 ...
51 ---
52 name:            ogt
53 legalized:       true
54 regBankSelected: true
55 tracksRegLiveness: true
56 body:             |
57   ; CHECK-LABEL: name: ogt
58   ; CHECK: bb.0:
59   ; CHECK-NEXT:   successors: %bb.1(0x50000000), %bb.2(0x30000000)
60   ; CHECK-NEXT:   liveins: $s0, $s1, $w0, $w1
61   ; CHECK-NEXT: {{  $}}
62   ; CHECK-NEXT:   %cmp_lhs:fpr32 = COPY $s0
63   ; CHECK-NEXT:   %cmp_rhs:fpr32 = COPY $s1
64   ; CHECK-NEXT:   nofpexcept FCMPSrr %cmp_lhs, %cmp_rhs, implicit-def $nzcv
65   ; CHECK-NEXT:   Bcc 12, %bb.2, implicit $nzcv
66   ; CHECK-NEXT:   B %bb.1
67   ; CHECK-NEXT: {{  $}}
68   ; CHECK-NEXT: bb.1:
69   ; CHECK-NEXT:   $s0 = COPY %cmp_lhs
70   ; CHECK-NEXT:   RET_ReallyLR implicit $s0
71   ; CHECK-NEXT: {{  $}}
72   ; CHECK-NEXT: bb.2:
73   ; CHECK-NEXT:   $s1 = COPY %cmp_rhs
74   ; CHECK-NEXT:   RET_ReallyLR implicit $s1
75   bb.0:
76     successors: %bb.1(0x50000000), %bb.2(0x30000000)
77     liveins: $s0, $s1, $w0, $w1
79     %cmp_lhs:fpr(s32) = COPY $s0
80     %cmp_rhs:fpr(s32) = COPY $s1
81     %fcmp:gpr(s32) = G_FCMP floatpred(ogt), %cmp_lhs(s32), %cmp_rhs
82     G_BRCOND %fcmp, %bb.2
83     G_BR %bb.1
84   bb.1:
85     $s0 = COPY %cmp_lhs
86     RET_ReallyLR implicit $s0
87   bb.2:
88     $s1 = COPY %cmp_rhs
89     RET_ReallyLR implicit $s1
91 ...
92 ---
93 name:            oge
94 legalized:       true
95 regBankSelected: true
96 tracksRegLiveness: true
97 body:             |
98   ; CHECK-LABEL: name: oge
99   ; CHECK: bb.0:
100   ; CHECK-NEXT:   successors: %bb.1(0x50000000), %bb.2(0x30000000)
101   ; CHECK-NEXT:   liveins: $s0, $s1, $w0, $w1
102   ; CHECK-NEXT: {{  $}}
103   ; CHECK-NEXT:   %cmp_lhs:fpr32 = COPY $s0
104   ; CHECK-NEXT:   %cmp_rhs:fpr32 = COPY $s1
105   ; CHECK-NEXT:   nofpexcept FCMPSrr %cmp_lhs, %cmp_rhs, implicit-def $nzcv
106   ; CHECK-NEXT:   Bcc 10, %bb.2, implicit $nzcv
107   ; CHECK-NEXT:   B %bb.1
108   ; CHECK-NEXT: {{  $}}
109   ; CHECK-NEXT: bb.1:
110   ; CHECK-NEXT:   $s0 = COPY %cmp_lhs
111   ; CHECK-NEXT:   RET_ReallyLR implicit $s0
112   ; CHECK-NEXT: {{  $}}
113   ; CHECK-NEXT: bb.2:
114   ; CHECK-NEXT:   $s1 = COPY %cmp_rhs
115   ; CHECK-NEXT:   RET_ReallyLR implicit $s1
116   bb.0:
117     successors: %bb.1(0x50000000), %bb.2(0x30000000)
118     liveins: $s0, $s1, $w0, $w1
120     %cmp_lhs:fpr(s32) = COPY $s0
121     %cmp_rhs:fpr(s32) = COPY $s1
122     %fcmp:gpr(s32) = G_FCMP floatpred(oge), %cmp_lhs(s32), %cmp_rhs
123     G_BRCOND %fcmp, %bb.2
124     G_BR %bb.1
125   bb.1:
126     $s0 = COPY %cmp_lhs
127     RET_ReallyLR implicit $s0
128   bb.2:
129     $s1 = COPY %cmp_rhs
130     RET_ReallyLR implicit $s1
134 name:            olt
135 legalized:       true
136 regBankSelected: true
137 tracksRegLiveness: true
138 body:             |
139   ; CHECK-LABEL: name: olt
140   ; CHECK: bb.0:
141   ; CHECK-NEXT:   successors: %bb.1(0x50000000), %bb.2(0x30000000)
142   ; CHECK-NEXT:   liveins: $s0, $s1, $w0, $w1
143   ; CHECK-NEXT: {{  $}}
144   ; CHECK-NEXT:   %cmp_lhs:fpr32 = COPY $s0
145   ; CHECK-NEXT:   %cmp_rhs:fpr32 = COPY $s1
146   ; CHECK-NEXT:   nofpexcept FCMPSrr %cmp_lhs, %cmp_rhs, implicit-def $nzcv
147   ; CHECK-NEXT:   Bcc 4, %bb.2, implicit $nzcv
148   ; CHECK-NEXT:   B %bb.1
149   ; CHECK-NEXT: {{  $}}
150   ; CHECK-NEXT: bb.1:
151   ; CHECK-NEXT:   $s0 = COPY %cmp_lhs
152   ; CHECK-NEXT:   RET_ReallyLR implicit $s0
153   ; CHECK-NEXT: {{  $}}
154   ; CHECK-NEXT: bb.2:
155   ; CHECK-NEXT:   $s1 = COPY %cmp_rhs
156   ; CHECK-NEXT:   RET_ReallyLR implicit $s1
157   bb.0:
158     successors: %bb.1(0x50000000), %bb.2(0x30000000)
159     liveins: $s0, $s1, $w0, $w1
161     %cmp_lhs:fpr(s32) = COPY $s0
162     %cmp_rhs:fpr(s32) = COPY $s1
163     %fcmp:gpr(s32) = G_FCMP floatpred(olt), %cmp_lhs(s32), %cmp_rhs
164     G_BRCOND %fcmp, %bb.2
165     G_BR %bb.1
166   bb.1:
167     $s0 = COPY %cmp_lhs
168     RET_ReallyLR implicit $s0
169   bb.2:
170     $s1 = COPY %cmp_rhs
171     RET_ReallyLR implicit $s1
175 name:            ole
176 legalized:       true
177 regBankSelected: true
178 tracksRegLiveness: true
179 body:             |
180   ; CHECK-LABEL: name: ole
181   ; CHECK: bb.0:
182   ; CHECK-NEXT:   successors: %bb.1(0x50000000), %bb.2(0x30000000)
183   ; CHECK-NEXT:   liveins: $s0, $s1, $w0, $w1
184   ; CHECK-NEXT: {{  $}}
185   ; CHECK-NEXT:   %cmp_lhs:fpr32 = COPY $s0
186   ; CHECK-NEXT:   %cmp_rhs:fpr32 = COPY $s1
187   ; CHECK-NEXT:   nofpexcept FCMPSrr %cmp_lhs, %cmp_rhs, implicit-def $nzcv
188   ; CHECK-NEXT:   Bcc 9, %bb.2, implicit $nzcv
189   ; CHECK-NEXT:   B %bb.1
190   ; CHECK-NEXT: {{  $}}
191   ; CHECK-NEXT: bb.1:
192   ; CHECK-NEXT:   $s0 = COPY %cmp_lhs
193   ; CHECK-NEXT:   RET_ReallyLR implicit $s0
194   ; CHECK-NEXT: {{  $}}
195   ; CHECK-NEXT: bb.2:
196   ; CHECK-NEXT:   $s1 = COPY %cmp_rhs
197   ; CHECK-NEXT:   RET_ReallyLR implicit $s1
198   bb.0:
199     successors: %bb.1(0x50000000), %bb.2(0x30000000)
200     liveins: $s0, $s1, $w0, $w1
202     %cmp_lhs:fpr(s32) = COPY $s0
203     %cmp_rhs:fpr(s32) = COPY $s1
204     %fcmp:gpr(s32) = G_FCMP floatpred(ole), %cmp_lhs(s32), %cmp_rhs
205     G_BRCOND %fcmp, %bb.2
206     G_BR %bb.1
207   bb.1:
208     $s0 = COPY %cmp_lhs
209     RET_ReallyLR implicit $s0
210   bb.2:
211     $s1 = COPY %cmp_rhs
212     RET_ReallyLR implicit $s1
216 name:            one
217 legalized:       true
218 regBankSelected: true
219 tracksRegLiveness: true
220 body:             |
221   ; CHECK-LABEL: name: one
222   ; CHECK: bb.0:
223   ; CHECK-NEXT:   successors: %bb.1(0x50000000), %bb.2(0x30000000)
224   ; CHECK-NEXT:   liveins: $s0, $s1, $w0, $w1
225   ; CHECK-NEXT: {{  $}}
226   ; CHECK-NEXT:   %cmp_lhs:fpr32 = COPY $s0
227   ; CHECK-NEXT:   %cmp_rhs:fpr32 = COPY $s1
228   ; CHECK-NEXT:   nofpexcept FCMPSrr %cmp_lhs, %cmp_rhs, implicit-def $nzcv
229   ; CHECK-NEXT:   Bcc 4, %bb.2, implicit $nzcv
230   ; CHECK-NEXT:   Bcc 12, %bb.2, implicit $nzcv
231   ; CHECK-NEXT:   B %bb.1
232   ; CHECK-NEXT: {{  $}}
233   ; CHECK-NEXT: bb.1:
234   ; CHECK-NEXT:   $s0 = COPY %cmp_lhs
235   ; CHECK-NEXT:   RET_ReallyLR implicit $s0
236   ; CHECK-NEXT: {{  $}}
237   ; CHECK-NEXT: bb.2:
238   ; CHECK-NEXT:   $s1 = COPY %cmp_rhs
239   ; CHECK-NEXT:   RET_ReallyLR implicit $s1
240   bb.0:
241     successors: %bb.1(0x50000000), %bb.2(0x30000000)
242     liveins: $s0, $s1, $w0, $w1
244     %cmp_lhs:fpr(s32) = COPY $s0
245     %cmp_rhs:fpr(s32) = COPY $s1
246     %fcmp:gpr(s32) = G_FCMP floatpred(one), %cmp_lhs(s32), %cmp_rhs
247     G_BRCOND %fcmp, %bb.2
248     G_BR %bb.1
249   bb.1:
250     $s0 = COPY %cmp_lhs
251     RET_ReallyLR implicit $s0
252   bb.2:
253     $s1 = COPY %cmp_rhs
254     RET_ReallyLR implicit $s1
258 name:            ord
259 legalized:       true
260 regBankSelected: true
261 tracksRegLiveness: true
262 body:             |
263   ; CHECK-LABEL: name: ord
264   ; CHECK: bb.0:
265   ; CHECK-NEXT:   successors: %bb.1(0x50000000), %bb.2(0x30000000)
266   ; CHECK-NEXT:   liveins: $s0, $s1, $w0, $w1
267   ; CHECK-NEXT: {{  $}}
268   ; CHECK-NEXT:   %cmp_lhs:fpr32 = COPY $s0
269   ; CHECK-NEXT:   %cmp_rhs:fpr32 = COPY $s1
270   ; CHECK-NEXT:   nofpexcept FCMPSrr %cmp_lhs, %cmp_rhs, implicit-def $nzcv
271   ; CHECK-NEXT:   Bcc 7, %bb.2, implicit $nzcv
272   ; CHECK-NEXT:   B %bb.1
273   ; CHECK-NEXT: {{  $}}
274   ; CHECK-NEXT: bb.1:
275   ; CHECK-NEXT:   $s0 = COPY %cmp_lhs
276   ; CHECK-NEXT:   RET_ReallyLR implicit $s0
277   ; CHECK-NEXT: {{  $}}
278   ; CHECK-NEXT: bb.2:
279   ; CHECK-NEXT:   $s1 = COPY %cmp_rhs
280   ; CHECK-NEXT:   RET_ReallyLR implicit $s1
281   bb.0:
282     successors: %bb.1(0x50000000), %bb.2(0x30000000)
283     liveins: $s0, $s1, $w0, $w1
285     %cmp_lhs:fpr(s32) = COPY $s0
286     %cmp_rhs:fpr(s32) = COPY $s1
287     %fcmp:gpr(s32) = G_FCMP floatpred(ord), %cmp_lhs(s32), %cmp_rhs
288     G_BRCOND %fcmp, %bb.2
289     G_BR %bb.1
290   bb.1:
291     $s0 = COPY %cmp_lhs
292     RET_ReallyLR implicit $s0
293   bb.2:
294     $s1 = COPY %cmp_rhs
295     RET_ReallyLR implicit $s1
299 name:            uno
300 legalized:       true
301 regBankSelected: true
302 tracksRegLiveness: true
303 body:             |
304   ; CHECK-LABEL: name: uno
305   ; CHECK: bb.0:
306   ; CHECK-NEXT:   successors: %bb.1(0x50000000), %bb.2(0x30000000)
307   ; CHECK-NEXT:   liveins: $s0, $s1, $w0, $w1
308   ; CHECK-NEXT: {{  $}}
309   ; CHECK-NEXT:   %cmp_lhs:fpr32 = COPY $s0
310   ; CHECK-NEXT:   %cmp_rhs:fpr32 = COPY $s1
311   ; CHECK-NEXT:   nofpexcept FCMPSrr %cmp_lhs, %cmp_rhs, implicit-def $nzcv
312   ; CHECK-NEXT:   Bcc 6, %bb.2, implicit $nzcv
313   ; CHECK-NEXT:   B %bb.1
314   ; CHECK-NEXT: {{  $}}
315   ; CHECK-NEXT: bb.1:
316   ; CHECK-NEXT:   $s0 = COPY %cmp_lhs
317   ; CHECK-NEXT:   RET_ReallyLR implicit $s0
318   ; CHECK-NEXT: {{  $}}
319   ; CHECK-NEXT: bb.2:
320   ; CHECK-NEXT:   $s1 = COPY %cmp_rhs
321   ; CHECK-NEXT:   RET_ReallyLR implicit $s1
322   bb.0:
323     successors: %bb.1(0x50000000), %bb.2(0x30000000)
324     liveins: $s0, $s1, $w0, $w1
326     %cmp_lhs:fpr(s32) = COPY $s0
327     %cmp_rhs:fpr(s32) = COPY $s1
328     %fcmp:gpr(s32) = G_FCMP floatpred(uno), %cmp_lhs(s32), %cmp_rhs
329     G_BRCOND %fcmp, %bb.2
330     G_BR %bb.1
331   bb.1:
332     $s0 = COPY %cmp_lhs
333     RET_ReallyLR implicit $s0
334   bb.2:
335     $s1 = COPY %cmp_rhs
336     RET_ReallyLR implicit $s1
340 name:            ueq
341 legalized:       true
342 regBankSelected: true
343 tracksRegLiveness: true
344 body:             |
345   ; CHECK-LABEL: name: ueq
346   ; CHECK: bb.0:
347   ; CHECK-NEXT:   successors: %bb.1(0x50000000), %bb.2(0x30000000)
348   ; CHECK-NEXT:   liveins: $s0, $s1, $w0, $w1
349   ; CHECK-NEXT: {{  $}}
350   ; CHECK-NEXT:   %cmp_lhs:fpr32 = COPY $s0
351   ; CHECK-NEXT:   %cmp_rhs:fpr32 = COPY $s1
352   ; CHECK-NEXT:   nofpexcept FCMPSrr %cmp_lhs, %cmp_rhs, implicit-def $nzcv
353   ; CHECK-NEXT:   Bcc 0, %bb.2, implicit $nzcv
354   ; CHECK-NEXT:   Bcc 6, %bb.2, implicit $nzcv
355   ; CHECK-NEXT:   B %bb.1
356   ; CHECK-NEXT: {{  $}}
357   ; CHECK-NEXT: bb.1:
358   ; CHECK-NEXT:   $s0 = COPY %cmp_lhs
359   ; CHECK-NEXT:   RET_ReallyLR implicit $s0
360   ; CHECK-NEXT: {{  $}}
361   ; CHECK-NEXT: bb.2:
362   ; CHECK-NEXT:   $s1 = COPY %cmp_rhs
363   ; CHECK-NEXT:   RET_ReallyLR implicit $s1
364   bb.0:
365     successors: %bb.1(0x50000000), %bb.2(0x30000000)
366     liveins: $s0, $s1, $w0, $w1
368     %cmp_lhs:fpr(s32) = COPY $s0
369     %cmp_rhs:fpr(s32) = COPY $s1
370     %fcmp:gpr(s32) = G_FCMP floatpred(ueq), %cmp_lhs(s32), %cmp_rhs
371     G_BRCOND %fcmp, %bb.2
372     G_BR %bb.1
373   bb.1:
374     $s0 = COPY %cmp_lhs
375     RET_ReallyLR implicit $s0
376   bb.2:
377     $s1 = COPY %cmp_rhs
378     RET_ReallyLR implicit $s1
382 name:            ugt
383 legalized:       true
384 regBankSelected: true
385 tracksRegLiveness: true
386 body:             |
387   ; CHECK-LABEL: name: ugt
388   ; CHECK: bb.0:
389   ; CHECK-NEXT:   successors: %bb.1(0x50000000), %bb.2(0x30000000)
390   ; CHECK-NEXT:   liveins: $s0, $s1, $w0, $w1
391   ; CHECK-NEXT: {{  $}}
392   ; CHECK-NEXT:   %cmp_lhs:fpr32 = COPY $s0
393   ; CHECK-NEXT:   %cmp_rhs:fpr32 = COPY $s1
394   ; CHECK-NEXT:   nofpexcept FCMPSrr %cmp_lhs, %cmp_rhs, implicit-def $nzcv
395   ; CHECK-NEXT:   Bcc 8, %bb.2, implicit $nzcv
396   ; CHECK-NEXT:   B %bb.1
397   ; CHECK-NEXT: {{  $}}
398   ; CHECK-NEXT: bb.1:
399   ; CHECK-NEXT:   $s0 = COPY %cmp_lhs
400   ; CHECK-NEXT:   RET_ReallyLR implicit $s0
401   ; CHECK-NEXT: {{  $}}
402   ; CHECK-NEXT: bb.2:
403   ; CHECK-NEXT:   $s1 = COPY %cmp_rhs
404   ; CHECK-NEXT:   RET_ReallyLR implicit $s1
405   bb.0:
406     successors: %bb.1(0x50000000), %bb.2(0x30000000)
407     liveins: $s0, $s1, $w0, $w1
409     %cmp_lhs:fpr(s32) = COPY $s0
410     %cmp_rhs:fpr(s32) = COPY $s1
411     %fcmp:gpr(s32) = G_FCMP floatpred(ugt), %cmp_lhs(s32), %cmp_rhs
412     G_BRCOND %fcmp, %bb.2
413     G_BR %bb.1
414   bb.1:
415     $s0 = COPY %cmp_lhs
416     RET_ReallyLR implicit $s0
417   bb.2:
418     $s1 = COPY %cmp_rhs
419     RET_ReallyLR implicit $s1
423 name:            uge
424 legalized:       true
425 regBankSelected: true
426 tracksRegLiveness: true
427 body:             |
428   ; CHECK-LABEL: name: uge
429   ; CHECK: bb.0:
430   ; CHECK-NEXT:   successors: %bb.1(0x50000000), %bb.2(0x30000000)
431   ; CHECK-NEXT:   liveins: $s0, $s1, $w0, $w1
432   ; CHECK-NEXT: {{  $}}
433   ; CHECK-NEXT:   %cmp_lhs:fpr32 = COPY $s0
434   ; CHECK-NEXT:   %cmp_rhs:fpr32 = COPY $s1
435   ; CHECK-NEXT:   nofpexcept FCMPSrr %cmp_lhs, %cmp_rhs, implicit-def $nzcv
436   ; CHECK-NEXT:   Bcc 5, %bb.2, implicit $nzcv
437   ; CHECK-NEXT:   B %bb.1
438   ; CHECK-NEXT: {{  $}}
439   ; CHECK-NEXT: bb.1:
440   ; CHECK-NEXT:   $s0 = COPY %cmp_lhs
441   ; CHECK-NEXT:   RET_ReallyLR implicit $s0
442   ; CHECK-NEXT: {{  $}}
443   ; CHECK-NEXT: bb.2:
444   ; CHECK-NEXT:   $s1 = COPY %cmp_rhs
445   ; CHECK-NEXT:   RET_ReallyLR implicit $s1
446   bb.0:
447     successors: %bb.1(0x50000000), %bb.2(0x30000000)
448     liveins: $s0, $s1, $w0, $w1
450     %cmp_lhs:fpr(s32) = COPY $s0
451     %cmp_rhs:fpr(s32) = COPY $s1
452     %fcmp:gpr(s32) = G_FCMP floatpred(uge), %cmp_lhs(s32), %cmp_rhs
453     G_BRCOND %fcmp, %bb.2
454     G_BR %bb.1
455   bb.1:
456     $s0 = COPY %cmp_lhs
457     RET_ReallyLR implicit $s0
458   bb.2:
459     $s1 = COPY %cmp_rhs
460     RET_ReallyLR implicit $s1
464 name:            ult
465 legalized:       true
466 regBankSelected: true
467 tracksRegLiveness: true
468 body:             |
469   ; CHECK-LABEL: name: ult
470   ; CHECK: bb.0:
471   ; CHECK-NEXT:   successors: %bb.1(0x50000000), %bb.2(0x30000000)
472   ; CHECK-NEXT:   liveins: $s0, $s1, $w0, $w1
473   ; CHECK-NEXT: {{  $}}
474   ; CHECK-NEXT:   %cmp_lhs:fpr32 = COPY $s0
475   ; CHECK-NEXT:   %cmp_rhs:fpr32 = COPY $s1
476   ; CHECK-NEXT:   nofpexcept FCMPSrr %cmp_lhs, %cmp_rhs, implicit-def $nzcv
477   ; CHECK-NEXT:   Bcc 11, %bb.2, implicit $nzcv
478   ; CHECK-NEXT:   B %bb.1
479   ; CHECK-NEXT: {{  $}}
480   ; CHECK-NEXT: bb.1:
481   ; CHECK-NEXT:   $s0 = COPY %cmp_lhs
482   ; CHECK-NEXT:   RET_ReallyLR implicit $s0
483   ; CHECK-NEXT: {{  $}}
484   ; CHECK-NEXT: bb.2:
485   ; CHECK-NEXT:   $s1 = COPY %cmp_rhs
486   ; CHECK-NEXT:   RET_ReallyLR implicit $s1
487   bb.0:
488     successors: %bb.1(0x50000000), %bb.2(0x30000000)
489     liveins: $s0, $s1, $w0, $w1
491     %cmp_lhs:fpr(s32) = COPY $s0
492     %cmp_rhs:fpr(s32) = COPY $s1
493     %fcmp:gpr(s32) = G_FCMP floatpred(ult), %cmp_lhs(s32), %cmp_rhs
494     G_BRCOND %fcmp, %bb.2
495     G_BR %bb.1
496   bb.1:
497     $s0 = COPY %cmp_lhs
498     RET_ReallyLR implicit $s0
499   bb.2:
500     $s1 = COPY %cmp_rhs
501     RET_ReallyLR implicit $s1
505 name:            ule
506 legalized:       true
507 regBankSelected: true
508 tracksRegLiveness: true
509 body:             |
510   ; CHECK-LABEL: name: ule
511   ; CHECK: bb.0:
512   ; CHECK-NEXT:   successors: %bb.1(0x50000000), %bb.2(0x30000000)
513   ; CHECK-NEXT:   liveins: $s0, $s1, $w0, $w1
514   ; CHECK-NEXT: {{  $}}
515   ; CHECK-NEXT:   %cmp_lhs:fpr32 = COPY $s0
516   ; CHECK-NEXT:   %cmp_rhs:fpr32 = COPY $s1
517   ; CHECK-NEXT:   nofpexcept FCMPSrr %cmp_lhs, %cmp_rhs, implicit-def $nzcv
518   ; CHECK-NEXT:   Bcc 13, %bb.2, implicit $nzcv
519   ; CHECK-NEXT:   B %bb.1
520   ; CHECK-NEXT: {{  $}}
521   ; CHECK-NEXT: bb.1:
522   ; CHECK-NEXT:   $s0 = COPY %cmp_lhs
523   ; CHECK-NEXT:   RET_ReallyLR implicit $s0
524   ; CHECK-NEXT: {{  $}}
525   ; CHECK-NEXT: bb.2:
526   ; CHECK-NEXT:   $s1 = COPY %cmp_rhs
527   ; CHECK-NEXT:   RET_ReallyLR implicit $s1
528   bb.0:
529     successors: %bb.1(0x50000000), %bb.2(0x30000000)
530     liveins: $s0, $s1, $w0, $w1
532     %cmp_lhs:fpr(s32) = COPY $s0
533     %cmp_rhs:fpr(s32) = COPY $s1
534     %fcmp:gpr(s32) = G_FCMP floatpred(ule), %cmp_lhs(s32), %cmp_rhs
535     G_BRCOND %fcmp, %bb.2
536     G_BR %bb.1
537   bb.1:
538     $s0 = COPY %cmp_lhs
539     RET_ReallyLR implicit $s0
540   bb.2:
541     $s1 = COPY %cmp_rhs
542     RET_ReallyLR implicit $s1
546 name:            une
547 legalized:       true
548 regBankSelected: true
549 tracksRegLiveness: true
550 body:             |
551   ; CHECK-LABEL: name: une
552   ; CHECK: bb.0:
553   ; CHECK-NEXT:   successors: %bb.1(0x50000000), %bb.2(0x30000000)
554   ; CHECK-NEXT:   liveins: $s0, $s1, $w0, $w1
555   ; CHECK-NEXT: {{  $}}
556   ; CHECK-NEXT:   %cmp_lhs:fpr32 = COPY $s0
557   ; CHECK-NEXT:   %cmp_rhs:fpr32 = COPY $s1
558   ; CHECK-NEXT:   nofpexcept FCMPSrr %cmp_lhs, %cmp_rhs, implicit-def $nzcv
559   ; CHECK-NEXT:   Bcc 1, %bb.2, implicit $nzcv
560   ; CHECK-NEXT:   B %bb.1
561   ; CHECK-NEXT: {{  $}}
562   ; CHECK-NEXT: bb.1:
563   ; CHECK-NEXT:   $s0 = COPY %cmp_lhs
564   ; CHECK-NEXT:   RET_ReallyLR implicit $s0
565   ; CHECK-NEXT: {{  $}}
566   ; CHECK-NEXT: bb.2:
567   ; CHECK-NEXT:   $s1 = COPY %cmp_rhs
568   ; CHECK-NEXT:   RET_ReallyLR implicit $s1
569   bb.0:
570     successors: %bb.1(0x50000000), %bb.2(0x30000000)
571     liveins: $s0, $s1, $w0, $w1
573     %cmp_lhs:fpr(s32) = COPY $s0
574     %cmp_rhs:fpr(s32) = COPY $s1
575     %fcmp:gpr(s32) = G_FCMP floatpred(une), %cmp_lhs(s32), %cmp_rhs
576     G_BRCOND %fcmp, %bb.2
577     G_BR %bb.1
578   bb.1:
579     $s0 = COPY %cmp_lhs
580     RET_ReallyLR implicit $s0
581   bb.2:
582     $s1 = COPY %cmp_rhs
583     RET_ReallyLR implicit $s1