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