xref: /llvm-project/llvm/test/CodeGen/AArch64/GlobalISel/fold-brcond-fcmp.mir (revision 02769f2b3fdebb5066d7a973b171d2873a804560)
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
3#
4# Test that we don't have to emit a CSINC when emitting a G_FCMP being used by
5# a G_BRCOND.
6#
7# Condition codes which require more than one instruction should have two Bccs.
8
9...
10---
11name:            oeq
12legalized:       true
13regBankSelected: true
14tracksRegLiveness: true
15body:             |
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
37
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
49
50...
51---
52name:            ogt
53legalized:       true
54regBankSelected: true
55tracksRegLiveness: true
56body:             |
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
78
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
90
91...
92---
93name:            oge
94legalized:       true
95regBankSelected: true
96tracksRegLiveness: true
97body:             |
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
119
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
131
132...
133---
134name:            olt
135legalized:       true
136regBankSelected: true
137tracksRegLiveness: true
138body:             |
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
160
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
172
173...
174---
175name:            ole
176legalized:       true
177regBankSelected: true
178tracksRegLiveness: true
179body:             |
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
201
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
213
214...
215---
216name:            one
217legalized:       true
218regBankSelected: true
219tracksRegLiveness: true
220body:             |
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
243
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
255
256...
257---
258name:            ord
259legalized:       true
260regBankSelected: true
261tracksRegLiveness: true
262body:             |
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
284
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
296
297...
298---
299name:            uno
300legalized:       true
301regBankSelected: true
302tracksRegLiveness: true
303body:             |
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
325
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
337
338...
339---
340name:            ueq
341legalized:       true
342regBankSelected: true
343tracksRegLiveness: true
344body:             |
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
367
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
379
380...
381---
382name:            ugt
383legalized:       true
384regBankSelected: true
385tracksRegLiveness: true
386body:             |
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
408
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
420
421...
422---
423name:            uge
424legalized:       true
425regBankSelected: true
426tracksRegLiveness: true
427body:             |
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
449
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
461
462...
463---
464name:            ult
465legalized:       true
466regBankSelected: true
467tracksRegLiveness: true
468body:             |
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
490
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
502
503...
504---
505name:            ule
506legalized:       true
507regBankSelected: true
508tracksRegLiveness: true
509body:             |
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
531
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
543
544...
545---
546name:            une
547legalized:       true
548regBankSelected: true
549tracksRegLiveness: true
550body:             |
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
572
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
584