• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2# RUN: llc -O0 -mtriple arm-- -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s
3--- |
4  define void @test_icmp_eq_s32() { ret void }
5  define void @test_icmp_ne_s32() { ret void }
6  define void @test_icmp_ugt_s32() { ret void }
7  define void @test_icmp_uge_s32() { ret void }
8  define void @test_icmp_ult_s32() { ret void }
9  define void @test_icmp_ule_s32() { ret void }
10  define void @test_icmp_sgt_s32() { ret void }
11  define void @test_icmp_sge_s32() { ret void }
12  define void @test_icmp_slt_s32() { ret void }
13  define void @test_icmp_sle_s32() { ret void }
14
15  define void @test_fcmp_true_s32() #0 { ret void }
16  define void @test_fcmp_false_s32() #0 { ret void }
17
18  define void @test_fcmp_oeq_s32() #0 { ret void }
19  define void @test_fcmp_ogt_s32() #0 { ret void }
20  define void @test_fcmp_oge_s32() #0 { ret void }
21  define void @test_fcmp_olt_s32() #0 { ret void }
22  define void @test_fcmp_ole_s32() #0 { ret void }
23  define void @test_fcmp_ord_s32() #0 { ret void }
24  define void @test_fcmp_ugt_s32() #0 { ret void }
25  define void @test_fcmp_uge_s32() #0 { ret void }
26  define void @test_fcmp_ult_s32() #0 { ret void }
27  define void @test_fcmp_ule_s32() #0 { ret void }
28  define void @test_fcmp_une_s32() #0 { ret void }
29  define void @test_fcmp_uno_s32() #0 { ret void }
30
31  define void @test_fcmp_one_s32() #0 { ret void }
32  define void @test_fcmp_ueq_s32() #0 { ret void }
33
34  define void @test_fcmp_true_s64() #0 { ret void }
35  define void @test_fcmp_false_s64() #0 { ret void }
36
37  define void @test_fcmp_oeq_s64() #0 { ret void }
38  define void @test_fcmp_ogt_s64() #0 { ret void }
39  define void @test_fcmp_oge_s64() #0 { ret void }
40  define void @test_fcmp_olt_s64() #0 { ret void }
41  define void @test_fcmp_ole_s64() #0 { ret void }
42  define void @test_fcmp_ord_s64() #0 { ret void }
43  define void @test_fcmp_ugt_s64() #0 { ret void }
44  define void @test_fcmp_uge_s64() #0 { ret void }
45  define void @test_fcmp_ult_s64() #0 { ret void }
46  define void @test_fcmp_ule_s64() #0 { ret void }
47  define void @test_fcmp_une_s64() #0 { ret void }
48  define void @test_fcmp_uno_s64() #0 { ret void }
49
50  define void @test_fcmp_one_s64() #0 { ret void }
51  define void @test_fcmp_ueq_s64() #0 { ret void }
52
53  attributes #0 = { "target-features"="+vfp2" }
54...
55---
56name:            test_icmp_eq_s32
57legalized:       true
58regBankSelected: true
59selected:        false
60registers:
61  - { id: 0, class: gprb }
62  - { id: 1, class: gprb }
63  - { id: 2, class: gprb }
64  - { id: 3, class: gprb }
65body:             |
66  bb.0:
67    liveins: $r0, $r1
68
69    ; CHECK-LABEL: name: test_icmp_eq_s32
70    ; CHECK: [[COPY:%[0-9]+]]:gpr = COPY $r0
71    ; CHECK: [[COPY1:%[0-9]+]]:gpr = COPY $r1
72    ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg
73    ; CHECK: CMPrr [[COPY]], [[COPY1]], 14, $noreg, implicit-def $cpsr
74    ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 0, $cpsr
75    ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg
76    ; CHECK: $r0 = COPY [[ANDri]]
77    ; CHECK: BX_RET 14, $noreg, implicit $r0
78    %0(s32) = COPY $r0
79    %1(s32) = COPY $r1
80    %2(s1) = G_ICMP intpred(eq),  %0(s32), %1
81    %3(s32) = G_ZEXT %2(s1)
82    $r0 = COPY %3(s32)
83    BX_RET 14, $noreg, implicit $r0
84...
85---
86name:            test_icmp_ne_s32
87legalized:       true
88regBankSelected: true
89selected:        false
90registers:
91  - { id: 0, class: gprb }
92  - { id: 1, class: gprb }
93  - { id: 2, class: gprb }
94  - { id: 3, class: gprb }
95body:             |
96  bb.0:
97    liveins: $r0, $r1
98
99    ; CHECK-LABEL: name: test_icmp_ne_s32
100    ; CHECK: [[COPY:%[0-9]+]]:gpr = COPY $r0
101    ; CHECK: [[COPY1:%[0-9]+]]:gpr = COPY $r1
102    ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg
103    ; CHECK: CMPrr [[COPY]], [[COPY1]], 14, $noreg, implicit-def $cpsr
104    ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 1, $cpsr
105    ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg
106    ; CHECK: $r0 = COPY [[ANDri]]
107    ; CHECK: BX_RET 14, $noreg, implicit $r0
108    %0(s32) = COPY $r0
109    %1(s32) = COPY $r1
110    %2(s1) = G_ICMP intpred(ne),  %0(s32), %1
111    %3(s32) = G_ZEXT %2(s1)
112    $r0 = COPY %3(s32)
113    BX_RET 14, $noreg, implicit $r0
114...
115---
116name:            test_icmp_ugt_s32
117legalized:       true
118regBankSelected: true
119selected:        false
120registers:
121  - { id: 0, class: gprb }
122  - { id: 1, class: gprb }
123  - { id: 2, class: gprb }
124  - { id: 3, class: gprb }
125body:             |
126  bb.0:
127    liveins: $r0, $r1
128
129    ; CHECK-LABEL: name: test_icmp_ugt_s32
130    ; CHECK: [[COPY:%[0-9]+]]:gpr = COPY $r0
131    ; CHECK: [[COPY1:%[0-9]+]]:gpr = COPY $r1
132    ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg
133    ; CHECK: CMPrr [[COPY]], [[COPY1]], 14, $noreg, implicit-def $cpsr
134    ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 8, $cpsr
135    ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg
136    ; CHECK: $r0 = COPY [[ANDri]]
137    ; CHECK: BX_RET 14, $noreg, implicit $r0
138    %0(s32) = COPY $r0
139    %1(s32) = COPY $r1
140    %2(s1) = G_ICMP intpred(ugt),  %0(s32), %1
141    %3(s32) = G_ZEXT %2(s1)
142    $r0 = COPY %3(s32)
143    BX_RET 14, $noreg, implicit $r0
144...
145---
146name:            test_icmp_uge_s32
147legalized:       true
148regBankSelected: true
149selected:        false
150registers:
151  - { id: 0, class: gprb }
152  - { id: 1, class: gprb }
153  - { id: 2, class: gprb }
154  - { id: 3, class: gprb }
155body:             |
156  bb.0:
157    liveins: $r0, $r1
158
159    ; CHECK-LABEL: name: test_icmp_uge_s32
160    ; CHECK: [[COPY:%[0-9]+]]:gpr = COPY $r0
161    ; CHECK: [[COPY1:%[0-9]+]]:gpr = COPY $r1
162    ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg
163    ; CHECK: CMPrr [[COPY]], [[COPY1]], 14, $noreg, implicit-def $cpsr
164    ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 2, $cpsr
165    ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg
166    ; CHECK: $r0 = COPY [[ANDri]]
167    ; CHECK: BX_RET 14, $noreg, implicit $r0
168    %0(s32) = COPY $r0
169    %1(s32) = COPY $r1
170    %2(s1) = G_ICMP intpred(uge),  %0(s32), %1
171    %3(s32) = G_ZEXT %2(s1)
172    $r0 = COPY %3(s32)
173    BX_RET 14, $noreg, implicit $r0
174...
175---
176name:            test_icmp_ult_s32
177legalized:       true
178regBankSelected: true
179selected:        false
180registers:
181  - { id: 0, class: gprb }
182  - { id: 1, class: gprb }
183  - { id: 2, class: gprb }
184  - { id: 3, class: gprb }
185body:             |
186  bb.0:
187    liveins: $r0, $r1
188
189    ; CHECK-LABEL: name: test_icmp_ult_s32
190    ; CHECK: [[COPY:%[0-9]+]]:gpr = COPY $r0
191    ; CHECK: [[COPY1:%[0-9]+]]:gpr = COPY $r1
192    ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg
193    ; CHECK: CMPrr [[COPY]], [[COPY1]], 14, $noreg, implicit-def $cpsr
194    ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 3, $cpsr
195    ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg
196    ; CHECK: $r0 = COPY [[ANDri]]
197    ; CHECK: BX_RET 14, $noreg, implicit $r0
198    %0(s32) = COPY $r0
199    %1(s32) = COPY $r1
200    %2(s1) = G_ICMP intpred(ult),  %0(s32), %1
201    %3(s32) = G_ZEXT %2(s1)
202    $r0 = COPY %3(s32)
203    BX_RET 14, $noreg, implicit $r0
204...
205---
206name:            test_icmp_ule_s32
207legalized:       true
208regBankSelected: true
209selected:        false
210registers:
211  - { id: 0, class: gprb }
212  - { id: 1, class: gprb }
213  - { id: 2, class: gprb }
214  - { id: 3, class: gprb }
215body:             |
216  bb.0:
217    liveins: $r0, $r1
218
219    ; CHECK-LABEL: name: test_icmp_ule_s32
220    ; CHECK: [[COPY:%[0-9]+]]:gpr = COPY $r0
221    ; CHECK: [[COPY1:%[0-9]+]]:gpr = COPY $r1
222    ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg
223    ; CHECK: CMPrr [[COPY]], [[COPY1]], 14, $noreg, implicit-def $cpsr
224    ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 9, $cpsr
225    ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg
226    ; CHECK: $r0 = COPY [[ANDri]]
227    ; CHECK: BX_RET 14, $noreg, implicit $r0
228    %0(s32) = COPY $r0
229    %1(s32) = COPY $r1
230    %2(s1) = G_ICMP intpred(ule),  %0(s32), %1
231    %3(s32) = G_ZEXT %2(s1)
232    $r0 = COPY %3(s32)
233    BX_RET 14, $noreg, implicit $r0
234...
235---
236name:            test_icmp_sgt_s32
237legalized:       true
238regBankSelected: true
239selected:        false
240registers:
241  - { id: 0, class: gprb }
242  - { id: 1, class: gprb }
243  - { id: 2, class: gprb }
244  - { id: 3, class: gprb }
245body:             |
246  bb.0:
247    liveins: $r0, $r1
248
249    ; CHECK-LABEL: name: test_icmp_sgt_s32
250    ; CHECK: [[COPY:%[0-9]+]]:gpr = COPY $r0
251    ; CHECK: [[COPY1:%[0-9]+]]:gpr = COPY $r1
252    ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg
253    ; CHECK: CMPrr [[COPY]], [[COPY1]], 14, $noreg, implicit-def $cpsr
254    ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 12, $cpsr
255    ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg
256    ; CHECK: $r0 = COPY [[ANDri]]
257    ; CHECK: BX_RET 14, $noreg, implicit $r0
258    %0(s32) = COPY $r0
259    %1(s32) = COPY $r1
260    %2(s1) = G_ICMP intpred(sgt),  %0(s32), %1
261    %3(s32) = G_ZEXT %2(s1)
262    $r0 = COPY %3(s32)
263    BX_RET 14, $noreg, implicit $r0
264...
265---
266name:            test_icmp_sge_s32
267legalized:       true
268regBankSelected: true
269selected:        false
270registers:
271  - { id: 0, class: gprb }
272  - { id: 1, class: gprb }
273  - { id: 2, class: gprb }
274  - { id: 3, class: gprb }
275body:             |
276  bb.0:
277    liveins: $r0, $r1
278
279    ; CHECK-LABEL: name: test_icmp_sge_s32
280    ; CHECK: [[COPY:%[0-9]+]]:gpr = COPY $r0
281    ; CHECK: [[COPY1:%[0-9]+]]:gpr = COPY $r1
282    ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg
283    ; CHECK: CMPrr [[COPY]], [[COPY1]], 14, $noreg, implicit-def $cpsr
284    ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 10, $cpsr
285    ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg
286    ; CHECK: $r0 = COPY [[ANDri]]
287    ; CHECK: BX_RET 14, $noreg, implicit $r0
288    %0(s32) = COPY $r0
289    %1(s32) = COPY $r1
290    %2(s1) = G_ICMP intpred(sge),  %0(s32), %1
291    %3(s32) = G_ZEXT %2(s1)
292    $r0 = COPY %3(s32)
293    BX_RET 14, $noreg, implicit $r0
294...
295---
296name:            test_icmp_slt_s32
297legalized:       true
298regBankSelected: true
299selected:        false
300registers:
301  - { id: 0, class: gprb }
302  - { id: 1, class: gprb }
303  - { id: 2, class: gprb }
304  - { id: 3, class: gprb }
305body:             |
306  bb.0:
307    liveins: $r0, $r1
308
309    ; CHECK-LABEL: name: test_icmp_slt_s32
310    ; CHECK: [[COPY:%[0-9]+]]:gpr = COPY $r0
311    ; CHECK: [[COPY1:%[0-9]+]]:gpr = COPY $r1
312    ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg
313    ; CHECK: CMPrr [[COPY]], [[COPY1]], 14, $noreg, implicit-def $cpsr
314    ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 11, $cpsr
315    ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg
316    ; CHECK: $r0 = COPY [[ANDri]]
317    ; CHECK: BX_RET 14, $noreg, implicit $r0
318    %0(s32) = COPY $r0
319    %1(s32) = COPY $r1
320    %2(s1) = G_ICMP intpred(slt),  %0(s32), %1
321    %3(s32) = G_ZEXT %2(s1)
322    $r0 = COPY %3(s32)
323    BX_RET 14, $noreg, implicit $r0
324...
325---
326name:            test_icmp_sle_s32
327legalized:       true
328regBankSelected: true
329selected:        false
330registers:
331  - { id: 0, class: gprb }
332  - { id: 1, class: gprb }
333  - { id: 2, class: gprb }
334  - { id: 3, class: gprb }
335body:             |
336  bb.0:
337    liveins: $r0, $r1
338
339    ; CHECK-LABEL: name: test_icmp_sle_s32
340    ; CHECK: [[COPY:%[0-9]+]]:gpr = COPY $r0
341    ; CHECK: [[COPY1:%[0-9]+]]:gpr = COPY $r1
342    ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg
343    ; CHECK: CMPrr [[COPY]], [[COPY1]], 14, $noreg, implicit-def $cpsr
344    ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 13, $cpsr
345    ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg
346    ; CHECK: $r0 = COPY [[ANDri]]
347    ; CHECK: BX_RET 14, $noreg, implicit $r0
348    %0(s32) = COPY $r0
349    %1(s32) = COPY $r1
350    %2(s1) = G_ICMP intpred(sle),  %0(s32), %1
351    %3(s32) = G_ZEXT %2(s1)
352    $r0 = COPY %3(s32)
353    BX_RET 14, $noreg, implicit $r0
354...
355---
356name:            test_fcmp_true_s32
357legalized:       true
358regBankSelected: true
359selected:        false
360registers:
361  - { id: 0, class: fprb }
362  - { id: 1, class: fprb }
363  - { id: 2, class: gprb }
364  - { id: 3, class: gprb }
365body:             |
366  bb.0:
367    liveins: $s0, $s1
368
369    ; CHECK-LABEL: name: test_fcmp_true_s32
370    ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 1, 14, $noreg, $noreg
371    ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVi]], 1, 14, $noreg, $noreg
372    ; CHECK: $r0 = COPY [[ANDri]]
373    ; CHECK: BX_RET 14, $noreg, implicit $r0
374    %0(s32) = COPY $s0
375    %1(s32) = COPY $s1
376    %2(s1) = G_FCMP floatpred(true),  %0(s32), %1
377    %3(s32) = G_ZEXT %2(s1)
378    $r0 = COPY %3(s32)
379    BX_RET 14, $noreg, implicit $r0
380...
381---
382name:            test_fcmp_false_s32
383legalized:       true
384regBankSelected: true
385selected:        false
386registers:
387  - { id: 0, class: fprb }
388  - { id: 1, class: fprb }
389  - { id: 2, class: gprb }
390  - { id: 3, class: gprb }
391body:             |
392  bb.0:
393    liveins: $s0, $s1
394
395    ; CHECK-LABEL: name: test_fcmp_false_s32
396    ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg
397    ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVi]], 1, 14, $noreg, $noreg
398    ; CHECK: $r0 = COPY [[ANDri]]
399    ; CHECK: BX_RET 14, $noreg, implicit $r0
400    %0(s32) = COPY $s0
401    %1(s32) = COPY $s1
402    %2(s1) = G_FCMP floatpred(false),  %0(s32), %1
403    %3(s32) = G_ZEXT %2(s1)
404    $r0 = COPY %3(s32)
405    BX_RET 14, $noreg, implicit $r0
406...
407---
408name:            test_fcmp_oeq_s32
409legalized:       true
410regBankSelected: true
411selected:        false
412registers:
413  - { id: 0, class: fprb }
414  - { id: 1, class: fprb }
415  - { id: 2, class: gprb }
416  - { id: 3, class: gprb }
417body:             |
418  bb.0:
419    liveins: $s0, $s1
420
421    ; CHECK-LABEL: name: test_fcmp_oeq_s32
422    ; CHECK: [[COPY:%[0-9]+]]:spr = COPY $s0
423    ; CHECK: [[COPY1:%[0-9]+]]:spr = COPY $s1
424    ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg
425    ; CHECK: VCMPS [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv
426    ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
427    ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 0, $cpsr
428    ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg
429    ; CHECK: $r0 = COPY [[ANDri]]
430    ; CHECK: BX_RET 14, $noreg, implicit $r0
431    %0(s32) = COPY $s0
432    %1(s32) = COPY $s1
433    %2(s1) = G_FCMP floatpred(oeq),  %0(s32), %1
434    %3(s32) = G_ZEXT %2(s1)
435    $r0 = COPY %3(s32)
436    BX_RET 14, $noreg, implicit $r0
437...
438---
439name:            test_fcmp_ogt_s32
440legalized:       true
441regBankSelected: true
442selected:        false
443registers:
444  - { id: 0, class: fprb }
445  - { id: 1, class: fprb }
446  - { id: 2, class: gprb }
447  - { id: 3, class: gprb }
448body:             |
449  bb.0:
450    liveins: $s0, $s1
451
452    ; CHECK-LABEL: name: test_fcmp_ogt_s32
453    ; CHECK: [[COPY:%[0-9]+]]:spr = COPY $s0
454    ; CHECK: [[COPY1:%[0-9]+]]:spr = COPY $s1
455    ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg
456    ; CHECK: VCMPS [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv
457    ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
458    ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 12, $cpsr
459    ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg
460    ; CHECK: $r0 = COPY [[ANDri]]
461    ; CHECK: BX_RET 14, $noreg, implicit $r0
462    %0(s32) = COPY $s0
463    %1(s32) = COPY $s1
464    %2(s1) = G_FCMP floatpred(ogt),  %0(s32), %1
465    %3(s32) = G_ZEXT %2(s1)
466    $r0 = COPY %3(s32)
467    BX_RET 14, $noreg, implicit $r0
468...
469---
470name:            test_fcmp_oge_s32
471legalized:       true
472regBankSelected: true
473selected:        false
474registers:
475  - { id: 0, class: fprb }
476  - { id: 1, class: fprb }
477  - { id: 2, class: gprb }
478  - { id: 3, class: gprb }
479body:             |
480  bb.0:
481    liveins: $s0, $s1
482
483    ; CHECK-LABEL: name: test_fcmp_oge_s32
484    ; CHECK: [[COPY:%[0-9]+]]:spr = COPY $s0
485    ; CHECK: [[COPY1:%[0-9]+]]:spr = COPY $s1
486    ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg
487    ; CHECK: VCMPS [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv
488    ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
489    ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 10, $cpsr
490    ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg
491    ; CHECK: $r0 = COPY [[ANDri]]
492    ; CHECK: BX_RET 14, $noreg, implicit $r0
493    %0(s32) = COPY $s0
494    %1(s32) = COPY $s1
495    %2(s1) = G_FCMP floatpred(oge),  %0(s32), %1
496    %3(s32) = G_ZEXT %2(s1)
497    $r0 = COPY %3(s32)
498    BX_RET 14, $noreg, implicit $r0
499...
500---
501name:            test_fcmp_olt_s32
502legalized:       true
503regBankSelected: true
504selected:        false
505registers:
506  - { id: 0, class: fprb }
507  - { id: 1, class: fprb }
508  - { id: 2, class: gprb }
509  - { id: 3, class: gprb }
510body:             |
511  bb.0:
512    liveins: $s0, $s1
513
514    ; CHECK-LABEL: name: test_fcmp_olt_s32
515    ; CHECK: [[COPY:%[0-9]+]]:spr = COPY $s0
516    ; CHECK: [[COPY1:%[0-9]+]]:spr = COPY $s1
517    ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg
518    ; CHECK: VCMPS [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv
519    ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
520    ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 4, $cpsr
521    ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg
522    ; CHECK: $r0 = COPY [[ANDri]]
523    ; CHECK: BX_RET 14, $noreg, implicit $r0
524    %0(s32) = COPY $s0
525    %1(s32) = COPY $s1
526    %2(s1) = G_FCMP floatpred(olt),  %0(s32), %1
527    %3(s32) = G_ZEXT %2(s1)
528    $r0 = COPY %3(s32)
529    BX_RET 14, $noreg, implicit $r0
530...
531---
532name:            test_fcmp_ole_s32
533legalized:       true
534regBankSelected: true
535selected:        false
536registers:
537  - { id: 0, class: fprb }
538  - { id: 1, class: fprb }
539  - { id: 2, class: gprb }
540  - { id: 3, class: gprb }
541body:             |
542  bb.0:
543    liveins: $s0, $s1
544
545    ; CHECK-LABEL: name: test_fcmp_ole_s32
546    ; CHECK: [[COPY:%[0-9]+]]:spr = COPY $s0
547    ; CHECK: [[COPY1:%[0-9]+]]:spr = COPY $s1
548    ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg
549    ; CHECK: VCMPS [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv
550    ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
551    ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 9, $cpsr
552    ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg
553    ; CHECK: $r0 = COPY [[ANDri]]
554    ; CHECK: BX_RET 14, $noreg, implicit $r0
555    %0(s32) = COPY $s0
556    %1(s32) = COPY $s1
557    %2(s1) = G_FCMP floatpred(ole),  %0(s32), %1
558    %3(s32) = G_ZEXT %2(s1)
559    $r0 = COPY %3(s32)
560    BX_RET 14, $noreg, implicit $r0
561...
562---
563name:            test_fcmp_ord_s32
564legalized:       true
565regBankSelected: true
566selected:        false
567registers:
568  - { id: 0, class: fprb }
569  - { id: 1, class: fprb }
570  - { id: 2, class: gprb }
571  - { id: 3, class: gprb }
572body:             |
573  bb.0:
574    liveins: $s0, $s1
575
576    ; CHECK-LABEL: name: test_fcmp_ord_s32
577    ; CHECK: [[COPY:%[0-9]+]]:spr = COPY $s0
578    ; CHECK: [[COPY1:%[0-9]+]]:spr = COPY $s1
579    ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg
580    ; CHECK: VCMPS [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv
581    ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
582    ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 7, $cpsr
583    ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg
584    ; CHECK: $r0 = COPY [[ANDri]]
585    ; CHECK: BX_RET 14, $noreg, implicit $r0
586    %0(s32) = COPY $s0
587    %1(s32) = COPY $s1
588    %2(s1) = G_FCMP floatpred(ord),  %0(s32), %1
589    %3(s32) = G_ZEXT %2(s1)
590    $r0 = COPY %3(s32)
591    BX_RET 14, $noreg, implicit $r0
592...
593---
594name:            test_fcmp_ugt_s32
595legalized:       true
596regBankSelected: true
597selected:        false
598registers:
599  - { id: 0, class: fprb }
600  - { id: 1, class: fprb }
601  - { id: 2, class: gprb }
602  - { id: 3, class: gprb }
603body:             |
604  bb.0:
605    liveins: $s0, $s1
606
607    ; CHECK-LABEL: name: test_fcmp_ugt_s32
608    ; CHECK: [[COPY:%[0-9]+]]:spr = COPY $s0
609    ; CHECK: [[COPY1:%[0-9]+]]:spr = COPY $s1
610    ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg
611    ; CHECK: VCMPS [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv
612    ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
613    ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 8, $cpsr
614    ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg
615    ; CHECK: $r0 = COPY [[ANDri]]
616    ; CHECK: BX_RET 14, $noreg, implicit $r0
617    %0(s32) = COPY $s0
618    %1(s32) = COPY $s1
619    %2(s1) = G_FCMP floatpred(ugt),  %0(s32), %1
620    %3(s32) = G_ZEXT %2(s1)
621    $r0 = COPY %3(s32)
622    BX_RET 14, $noreg, implicit $r0
623...
624---
625name:            test_fcmp_uge_s32
626legalized:       true
627regBankSelected: true
628selected:        false
629registers:
630  - { id: 0, class: fprb }
631  - { id: 1, class: fprb }
632  - { id: 2, class: gprb }
633  - { id: 3, class: gprb }
634body:             |
635  bb.0:
636    liveins: $s0, $s1
637
638    ; CHECK-LABEL: name: test_fcmp_uge_s32
639    ; CHECK: [[COPY:%[0-9]+]]:spr = COPY $s0
640    ; CHECK: [[COPY1:%[0-9]+]]:spr = COPY $s1
641    ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg
642    ; CHECK: VCMPS [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv
643    ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
644    ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 5, $cpsr
645    ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg
646    ; CHECK: $r0 = COPY [[ANDri]]
647    ; CHECK: BX_RET 14, $noreg, implicit $r0
648    %0(s32) = COPY $s0
649    %1(s32) = COPY $s1
650    %2(s1) = G_FCMP floatpred(uge),  %0(s32), %1
651    %3(s32) = G_ZEXT %2(s1)
652    $r0 = COPY %3(s32)
653    BX_RET 14, $noreg, implicit $r0
654...
655---
656name:            test_fcmp_ult_s32
657legalized:       true
658regBankSelected: true
659selected:        false
660registers:
661  - { id: 0, class: fprb }
662  - { id: 1, class: fprb }
663  - { id: 2, class: gprb }
664  - { id: 3, class: gprb }
665body:             |
666  bb.0:
667    liveins: $s0, $s1
668
669    ; CHECK-LABEL: name: test_fcmp_ult_s32
670    ; CHECK: [[COPY:%[0-9]+]]:spr = COPY $s0
671    ; CHECK: [[COPY1:%[0-9]+]]:spr = COPY $s1
672    ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg
673    ; CHECK: VCMPS [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv
674    ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
675    ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 11, $cpsr
676    ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg
677    ; CHECK: $r0 = COPY [[ANDri]]
678    ; CHECK: BX_RET 14, $noreg, implicit $r0
679    %0(s32) = COPY $s0
680    %1(s32) = COPY $s1
681    %2(s1) = G_FCMP floatpred(ult),  %0(s32), %1
682    %3(s32) = G_ZEXT %2(s1)
683    $r0 = COPY %3(s32)
684    BX_RET 14, $noreg, implicit $r0
685...
686---
687name:            test_fcmp_ule_s32
688legalized:       true
689regBankSelected: true
690selected:        false
691registers:
692  - { id: 0, class: fprb }
693  - { id: 1, class: fprb }
694  - { id: 2, class: gprb }
695  - { id: 3, class: gprb }
696body:             |
697  bb.0:
698    liveins: $s0, $s1
699
700    ; CHECK-LABEL: name: test_fcmp_ule_s32
701    ; CHECK: [[COPY:%[0-9]+]]:spr = COPY $s0
702    ; CHECK: [[COPY1:%[0-9]+]]:spr = COPY $s1
703    ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg
704    ; CHECK: VCMPS [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv
705    ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
706    ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 13, $cpsr
707    ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg
708    ; CHECK: $r0 = COPY [[ANDri]]
709    ; CHECK: BX_RET 14, $noreg, implicit $r0
710    %0(s32) = COPY $s0
711    %1(s32) = COPY $s1
712    %2(s1) = G_FCMP floatpred(ule),  %0(s32), %1
713    %3(s32) = G_ZEXT %2(s1)
714    $r0 = COPY %3(s32)
715    BX_RET 14, $noreg, implicit $r0
716...
717---
718name:            test_fcmp_une_s32
719legalized:       true
720regBankSelected: true
721selected:        false
722registers:
723  - { id: 0, class: fprb }
724  - { id: 1, class: fprb }
725  - { id: 2, class: gprb }
726  - { id: 3, class: gprb }
727body:             |
728  bb.0:
729    liveins: $s0, $s1
730
731    ; CHECK-LABEL: name: test_fcmp_une_s32
732    ; CHECK: [[COPY:%[0-9]+]]:spr = COPY $s0
733    ; CHECK: [[COPY1:%[0-9]+]]:spr = COPY $s1
734    ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg
735    ; CHECK: VCMPS [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv
736    ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
737    ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 1, $cpsr
738    ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg
739    ; CHECK: $r0 = COPY [[ANDri]]
740    ; CHECK: BX_RET 14, $noreg, implicit $r0
741    %0(s32) = COPY $s0
742    %1(s32) = COPY $s1
743    %2(s1) = G_FCMP floatpred(une),  %0(s32), %1
744    %3(s32) = G_ZEXT %2(s1)
745    $r0 = COPY %3(s32)
746    BX_RET 14, $noreg, implicit $r0
747...
748---
749name:            test_fcmp_uno_s32
750legalized:       true
751regBankSelected: true
752selected:        false
753registers:
754  - { id: 0, class: fprb }
755  - { id: 1, class: fprb }
756  - { id: 2, class: gprb }
757  - { id: 3, class: gprb }
758body:             |
759  bb.0:
760    liveins: $s0, $s1
761
762    ; CHECK-LABEL: name: test_fcmp_uno_s32
763    ; CHECK: [[COPY:%[0-9]+]]:spr = COPY $s0
764    ; CHECK: [[COPY1:%[0-9]+]]:spr = COPY $s1
765    ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg
766    ; CHECK: VCMPS [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv
767    ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
768    ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 6, $cpsr
769    ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg
770    ; CHECK: $r0 = COPY [[ANDri]]
771    ; CHECK: BX_RET 14, $noreg, implicit $r0
772    %0(s32) = COPY $s0
773    %1(s32) = COPY $s1
774    %2(s1) = G_FCMP floatpred(uno),  %0(s32), %1
775    %3(s32) = G_ZEXT %2(s1)
776    $r0 = COPY %3(s32)
777    BX_RET 14, $noreg, implicit $r0
778...
779---
780name:            test_fcmp_one_s32
781legalized:       true
782regBankSelected: true
783selected:        false
784registers:
785  - { id: 0, class: fprb }
786  - { id: 1, class: fprb }
787  - { id: 2, class: gprb }
788  - { id: 3, class: gprb }
789body:             |
790  bb.0:
791    liveins: $s0, $s1
792
793    ; CHECK-LABEL: name: test_fcmp_one_s32
794    ; CHECK: [[COPY:%[0-9]+]]:spr = COPY $s0
795    ; CHECK: [[COPY1:%[0-9]+]]:spr = COPY $s1
796    ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg
797    ; CHECK: VCMPS [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv
798    ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
799    ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 12, $cpsr
800    ; CHECK: VCMPS [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv
801    ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
802    ; CHECK: [[MOVCCi1:%[0-9]+]]:gpr = MOVCCi [[MOVCCi]], 1, 4, $cpsr
803    ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi1]], 1, 14, $noreg, $noreg
804    ; CHECK: $r0 = COPY [[ANDri]]
805    ; CHECK: BX_RET 14, $noreg, implicit $r0
806    %0(s32) = COPY $s0
807    %1(s32) = COPY $s1
808    %2(s1) = G_FCMP floatpred(one),  %0(s32), %1
809    %3(s32) = G_ZEXT %2(s1)
810    $r0 = COPY %3(s32)
811    BX_RET 14, $noreg, implicit $r0
812...
813---
814name:            test_fcmp_ueq_s32
815legalized:       true
816regBankSelected: true
817selected:        false
818registers:
819  - { id: 0, class: fprb }
820  - { id: 1, class: fprb }
821  - { id: 2, class: gprb }
822  - { id: 3, class: gprb }
823body:             |
824  bb.0:
825    liveins: $s0, $s1
826
827    ; CHECK-LABEL: name: test_fcmp_ueq_s32
828    ; CHECK: [[COPY:%[0-9]+]]:spr = COPY $s0
829    ; CHECK: [[COPY1:%[0-9]+]]:spr = COPY $s1
830    ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg
831    ; CHECK: VCMPS [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv
832    ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
833    ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 0, $cpsr
834    ; CHECK: VCMPS [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv
835    ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
836    ; CHECK: [[MOVCCi1:%[0-9]+]]:gpr = MOVCCi [[MOVCCi]], 1, 6, $cpsr
837    ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi1]], 1, 14, $noreg, $noreg
838    ; CHECK: $r0 = COPY [[ANDri]]
839    ; CHECK: BX_RET 14, $noreg, implicit $r0
840    %0(s32) = COPY $s0
841    %1(s32) = COPY $s1
842    %2(s1) = G_FCMP floatpred(ueq),  %0(s32), %1
843    %3(s32) = G_ZEXT %2(s1)
844    $r0 = COPY %3(s32)
845    BX_RET 14, $noreg, implicit $r0
846...
847---
848name:            test_fcmp_true_s64
849legalized:       true
850regBankSelected: true
851selected:        false
852registers:
853  - { id: 0, class: fprb }
854  - { id: 1, class: fprb }
855  - { id: 2, class: gprb }
856  - { id: 3, class: gprb }
857body:             |
858  bb.0:
859    liveins: $d0, $d1
860
861    ; CHECK-LABEL: name: test_fcmp_true_s64
862    ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 1, 14, $noreg, $noreg
863    ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVi]], 1, 14, $noreg, $noreg
864    ; CHECK: $r0 = COPY [[ANDri]]
865    ; CHECK: BX_RET 14, $noreg, implicit $r0
866    %0(s64) = COPY $d0
867    %1(s64) = COPY $d1
868    %2(s1) = G_FCMP floatpred(true),  %0(s64), %1
869    %3(s32) = G_ZEXT %2(s1)
870    $r0 = COPY %3(s32)
871    BX_RET 14, $noreg, implicit $r0
872...
873---
874name:            test_fcmp_false_s64
875legalized:       true
876regBankSelected: true
877selected:        false
878registers:
879  - { id: 0, class: fprb }
880  - { id: 1, class: fprb }
881  - { id: 2, class: gprb }
882  - { id: 3, class: gprb }
883body:             |
884  bb.0:
885    liveins: $d0, $d1
886
887    ; CHECK-LABEL: name: test_fcmp_false_s64
888    ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg
889    ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVi]], 1, 14, $noreg, $noreg
890    ; CHECK: $r0 = COPY [[ANDri]]
891    ; CHECK: BX_RET 14, $noreg, implicit $r0
892    %0(s64) = COPY $d0
893    %1(s64) = COPY $d1
894    %2(s1) = G_FCMP floatpred(false),  %0(s64), %1
895    %3(s32) = G_ZEXT %2(s1)
896    $r0 = COPY %3(s32)
897    BX_RET 14, $noreg, implicit $r0
898...
899---
900name:            test_fcmp_oeq_s64
901legalized:       true
902regBankSelected: true
903selected:        false
904registers:
905  - { id: 0, class: fprb }
906  - { id: 1, class: fprb }
907  - { id: 2, class: gprb }
908  - { id: 3, class: gprb }
909body:             |
910  bb.0:
911    liveins: $d0, $d1
912
913    ; CHECK-LABEL: name: test_fcmp_oeq_s64
914    ; CHECK: [[COPY:%[0-9]+]]:dpr = COPY $d0
915    ; CHECK: [[COPY1:%[0-9]+]]:dpr = COPY $d1
916    ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg
917    ; CHECK: VCMPD [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv
918    ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
919    ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 0, $cpsr
920    ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg
921    ; CHECK: $r0 = COPY [[ANDri]]
922    ; CHECK: BX_RET 14, $noreg, implicit $r0
923    %0(s64) = COPY $d0
924    %1(s64) = COPY $d1
925    %2(s1) = G_FCMP floatpred(oeq),  %0(s64), %1
926    %3(s32) = G_ZEXT %2(s1)
927    $r0 = COPY %3(s32)
928    BX_RET 14, $noreg, implicit $r0
929...
930---
931name:            test_fcmp_ogt_s64
932legalized:       true
933regBankSelected: true
934selected:        false
935registers:
936  - { id: 0, class: fprb }
937  - { id: 1, class: fprb }
938  - { id: 2, class: gprb }
939  - { id: 3, class: gprb }
940body:             |
941  bb.0:
942    liveins: $d0, $d1
943
944    ; CHECK-LABEL: name: test_fcmp_ogt_s64
945    ; CHECK: [[COPY:%[0-9]+]]:dpr = COPY $d0
946    ; CHECK: [[COPY1:%[0-9]+]]:dpr = COPY $d1
947    ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg
948    ; CHECK: VCMPD [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv
949    ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
950    ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 12, $cpsr
951    ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg
952    ; CHECK: $r0 = COPY [[ANDri]]
953    ; CHECK: BX_RET 14, $noreg, implicit $r0
954    %0(s64) = COPY $d0
955    %1(s64) = COPY $d1
956    %2(s1) = G_FCMP floatpred(ogt),  %0(s64), %1
957    %3(s32) = G_ZEXT %2(s1)
958    $r0 = COPY %3(s32)
959    BX_RET 14, $noreg, implicit $r0
960...
961---
962name:            test_fcmp_oge_s64
963legalized:       true
964regBankSelected: true
965selected:        false
966registers:
967  - { id: 0, class: fprb }
968  - { id: 1, class: fprb }
969  - { id: 2, class: gprb }
970  - { id: 3, class: gprb }
971body:             |
972  bb.0:
973    liveins: $d0, $d1
974
975    ; CHECK-LABEL: name: test_fcmp_oge_s64
976    ; CHECK: [[COPY:%[0-9]+]]:dpr = COPY $d0
977    ; CHECK: [[COPY1:%[0-9]+]]:dpr = COPY $d1
978    ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg
979    ; CHECK: VCMPD [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv
980    ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
981    ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 10, $cpsr
982    ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg
983    ; CHECK: $r0 = COPY [[ANDri]]
984    ; CHECK: BX_RET 14, $noreg, implicit $r0
985    %0(s64) = COPY $d0
986    %1(s64) = COPY $d1
987    %2(s1) = G_FCMP floatpred(oge),  %0(s64), %1
988    %3(s32) = G_ZEXT %2(s1)
989    $r0 = COPY %3(s32)
990    BX_RET 14, $noreg, implicit $r0
991...
992---
993name:            test_fcmp_olt_s64
994legalized:       true
995regBankSelected: true
996selected:        false
997registers:
998  - { id: 0, class: fprb }
999  - { id: 1, class: fprb }
1000  - { id: 2, class: gprb }
1001  - { id: 3, class: gprb }
1002body:             |
1003  bb.0:
1004    liveins: $d0, $d1
1005
1006    ; CHECK-LABEL: name: test_fcmp_olt_s64
1007    ; CHECK: [[COPY:%[0-9]+]]:dpr = COPY $d0
1008    ; CHECK: [[COPY1:%[0-9]+]]:dpr = COPY $d1
1009    ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg
1010    ; CHECK: VCMPD [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv
1011    ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
1012    ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 4, $cpsr
1013    ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg
1014    ; CHECK: $r0 = COPY [[ANDri]]
1015    ; CHECK: BX_RET 14, $noreg, implicit $r0
1016    %0(s64) = COPY $d0
1017    %1(s64) = COPY $d1
1018    %2(s1) = G_FCMP floatpred(olt),  %0(s64), %1
1019    %3(s32) = G_ZEXT %2(s1)
1020    $r0 = COPY %3(s32)
1021    BX_RET 14, $noreg, implicit $r0
1022...
1023---
1024name:            test_fcmp_ole_s64
1025legalized:       true
1026regBankSelected: true
1027selected:        false
1028registers:
1029  - { id: 0, class: fprb }
1030  - { id: 1, class: fprb }
1031  - { id: 2, class: gprb }
1032  - { id: 3, class: gprb }
1033body:             |
1034  bb.0:
1035    liveins: $d0, $d1
1036
1037    ; CHECK-LABEL: name: test_fcmp_ole_s64
1038    ; CHECK: [[COPY:%[0-9]+]]:dpr = COPY $d0
1039    ; CHECK: [[COPY1:%[0-9]+]]:dpr = COPY $d1
1040    ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg
1041    ; CHECK: VCMPD [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv
1042    ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
1043    ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 9, $cpsr
1044    ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg
1045    ; CHECK: $r0 = COPY [[ANDri]]
1046    ; CHECK: BX_RET 14, $noreg, implicit $r0
1047    %0(s64) = COPY $d0
1048    %1(s64) = COPY $d1
1049    %2(s1) = G_FCMP floatpred(ole),  %0(s64), %1
1050    %3(s32) = G_ZEXT %2(s1)
1051    $r0 = COPY %3(s32)
1052    BX_RET 14, $noreg, implicit $r0
1053...
1054---
1055name:            test_fcmp_ord_s64
1056legalized:       true
1057regBankSelected: true
1058selected:        false
1059registers:
1060  - { id: 0, class: fprb }
1061  - { id: 1, class: fprb }
1062  - { id: 2, class: gprb }
1063  - { id: 3, class: gprb }
1064body:             |
1065  bb.0:
1066    liveins: $d0, $d1
1067
1068    ; CHECK-LABEL: name: test_fcmp_ord_s64
1069    ; CHECK: [[COPY:%[0-9]+]]:dpr = COPY $d0
1070    ; CHECK: [[COPY1:%[0-9]+]]:dpr = COPY $d1
1071    ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg
1072    ; CHECK: VCMPD [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv
1073    ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
1074    ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 7, $cpsr
1075    ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg
1076    ; CHECK: $r0 = COPY [[ANDri]]
1077    ; CHECK: BX_RET 14, $noreg, implicit $r0
1078    %0(s64) = COPY $d0
1079    %1(s64) = COPY $d1
1080    %2(s1) = G_FCMP floatpred(ord),  %0(s64), %1
1081    %3(s32) = G_ZEXT %2(s1)
1082    $r0 = COPY %3(s32)
1083    BX_RET 14, $noreg, implicit $r0
1084...
1085---
1086name:            test_fcmp_ugt_s64
1087legalized:       true
1088regBankSelected: true
1089selected:        false
1090registers:
1091  - { id: 0, class: fprb }
1092  - { id: 1, class: fprb }
1093  - { id: 2, class: gprb }
1094  - { id: 3, class: gprb }
1095body:             |
1096  bb.0:
1097    liveins: $d0, $d1
1098
1099    ; CHECK-LABEL: name: test_fcmp_ugt_s64
1100    ; CHECK: [[COPY:%[0-9]+]]:dpr = COPY $d0
1101    ; CHECK: [[COPY1:%[0-9]+]]:dpr = COPY $d1
1102    ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg
1103    ; CHECK: VCMPD [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv
1104    ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
1105    ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 8, $cpsr
1106    ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg
1107    ; CHECK: $r0 = COPY [[ANDri]]
1108    ; CHECK: BX_RET 14, $noreg, implicit $r0
1109    %0(s64) = COPY $d0
1110    %1(s64) = COPY $d1
1111    %2(s1) = G_FCMP floatpred(ugt),  %0(s64), %1
1112    %3(s32) = G_ZEXT %2(s1)
1113    $r0 = COPY %3(s32)
1114    BX_RET 14, $noreg, implicit $r0
1115...
1116---
1117name:            test_fcmp_uge_s64
1118legalized:       true
1119regBankSelected: true
1120selected:        false
1121registers:
1122  - { id: 0, class: fprb }
1123  - { id: 1, class: fprb }
1124  - { id: 2, class: gprb }
1125  - { id: 3, class: gprb }
1126body:             |
1127  bb.0:
1128    liveins: $d0, $d1
1129
1130    ; CHECK-LABEL: name: test_fcmp_uge_s64
1131    ; CHECK: [[COPY:%[0-9]+]]:dpr = COPY $d0
1132    ; CHECK: [[COPY1:%[0-9]+]]:dpr = COPY $d1
1133    ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg
1134    ; CHECK: VCMPD [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv
1135    ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
1136    ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 5, $cpsr
1137    ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg
1138    ; CHECK: $r0 = COPY [[ANDri]]
1139    ; CHECK: BX_RET 14, $noreg, implicit $r0
1140    %0(s64) = COPY $d0
1141    %1(s64) = COPY $d1
1142    %2(s1) = G_FCMP floatpred(uge),  %0(s64), %1
1143    %3(s32) = G_ZEXT %2(s1)
1144    $r0 = COPY %3(s32)
1145    BX_RET 14, $noreg, implicit $r0
1146...
1147---
1148name:            test_fcmp_ult_s64
1149legalized:       true
1150regBankSelected: true
1151selected:        false
1152registers:
1153  - { id: 0, class: fprb }
1154  - { id: 1, class: fprb }
1155  - { id: 2, class: gprb }
1156  - { id: 3, class: gprb }
1157body:             |
1158  bb.0:
1159    liveins: $d0, $d1
1160
1161    ; CHECK-LABEL: name: test_fcmp_ult_s64
1162    ; CHECK: [[COPY:%[0-9]+]]:dpr = COPY $d0
1163    ; CHECK: [[COPY1:%[0-9]+]]:dpr = COPY $d1
1164    ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg
1165    ; CHECK: VCMPD [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv
1166    ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
1167    ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 11, $cpsr
1168    ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg
1169    ; CHECK: $r0 = COPY [[ANDri]]
1170    ; CHECK: BX_RET 14, $noreg, implicit $r0
1171    %0(s64) = COPY $d0
1172    %1(s64) = COPY $d1
1173    %2(s1) = G_FCMP floatpred(ult),  %0(s64), %1
1174    %3(s32) = G_ZEXT %2(s1)
1175    $r0 = COPY %3(s32)
1176    BX_RET 14, $noreg, implicit $r0
1177...
1178---
1179name:            test_fcmp_ule_s64
1180legalized:       true
1181regBankSelected: true
1182selected:        false
1183registers:
1184  - { id: 0, class: fprb }
1185  - { id: 1, class: fprb }
1186  - { id: 2, class: gprb }
1187  - { id: 3, class: gprb }
1188body:             |
1189  bb.0:
1190    liveins: $d0, $d1
1191
1192    ; CHECK-LABEL: name: test_fcmp_ule_s64
1193    ; CHECK: [[COPY:%[0-9]+]]:dpr = COPY $d0
1194    ; CHECK: [[COPY1:%[0-9]+]]:dpr = COPY $d1
1195    ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg
1196    ; CHECK: VCMPD [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv
1197    ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
1198    ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 13, $cpsr
1199    ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg
1200    ; CHECK: $r0 = COPY [[ANDri]]
1201    ; CHECK: BX_RET 14, $noreg, implicit $r0
1202    %0(s64) = COPY $d0
1203    %1(s64) = COPY $d1
1204    %2(s1) = G_FCMP floatpred(ule),  %0(s64), %1
1205    %3(s32) = G_ZEXT %2(s1)
1206    $r0 = COPY %3(s32)
1207    BX_RET 14, $noreg, implicit $r0
1208...
1209---
1210name:            test_fcmp_une_s64
1211legalized:       true
1212regBankSelected: true
1213selected:        false
1214registers:
1215  - { id: 0, class: fprb }
1216  - { id: 1, class: fprb }
1217  - { id: 2, class: gprb }
1218  - { id: 3, class: gprb }
1219body:             |
1220  bb.0:
1221    liveins: $d0, $d1
1222
1223    ; CHECK-LABEL: name: test_fcmp_une_s64
1224    ; CHECK: [[COPY:%[0-9]+]]:dpr = COPY $d0
1225    ; CHECK: [[COPY1:%[0-9]+]]:dpr = COPY $d1
1226    ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg
1227    ; CHECK: VCMPD [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv
1228    ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
1229    ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 1, $cpsr
1230    ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg
1231    ; CHECK: $r0 = COPY [[ANDri]]
1232    ; CHECK: BX_RET 14, $noreg, implicit $r0
1233    %0(s64) = COPY $d0
1234    %1(s64) = COPY $d1
1235    %2(s1) = G_FCMP floatpred(une),  %0(s64), %1
1236    %3(s32) = G_ZEXT %2(s1)
1237    $r0 = COPY %3(s32)
1238    BX_RET 14, $noreg, implicit $r0
1239...
1240---
1241name:            test_fcmp_uno_s64
1242legalized:       true
1243regBankSelected: true
1244selected:        false
1245registers:
1246  - { id: 0, class: fprb }
1247  - { id: 1, class: fprb }
1248  - { id: 2, class: gprb }
1249  - { id: 3, class: gprb }
1250body:             |
1251  bb.0:
1252    liveins: $d0, $d1
1253
1254    ; CHECK-LABEL: name: test_fcmp_uno_s64
1255    ; CHECK: [[COPY:%[0-9]+]]:dpr = COPY $d0
1256    ; CHECK: [[COPY1:%[0-9]+]]:dpr = COPY $d1
1257    ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg
1258    ; CHECK: VCMPD [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv
1259    ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
1260    ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 6, $cpsr
1261    ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg
1262    ; CHECK: $r0 = COPY [[ANDri]]
1263    ; CHECK: BX_RET 14, $noreg, implicit $r0
1264    %0(s64) = COPY $d0
1265    %1(s64) = COPY $d1
1266    %2(s1) = G_FCMP floatpred(uno),  %0(s64), %1
1267    %3(s32) = G_ZEXT %2(s1)
1268    $r0 = COPY %3(s32)
1269    BX_RET 14, $noreg, implicit $r0
1270...
1271---
1272name:            test_fcmp_one_s64
1273legalized:       true
1274regBankSelected: true
1275selected:        false
1276registers:
1277  - { id: 0, class: fprb }
1278  - { id: 1, class: fprb }
1279  - { id: 2, class: gprb }
1280  - { id: 3, class: gprb }
1281body:             |
1282  bb.0:
1283    liveins: $d0, $d1
1284
1285    ; CHECK-LABEL: name: test_fcmp_one_s64
1286    ; CHECK: [[COPY:%[0-9]+]]:dpr = COPY $d0
1287    ; CHECK: [[COPY1:%[0-9]+]]:dpr = COPY $d1
1288    ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg
1289    ; CHECK: VCMPD [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv
1290    ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
1291    ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 12, $cpsr
1292    ; CHECK: VCMPD [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv
1293    ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
1294    ; CHECK: [[MOVCCi1:%[0-9]+]]:gpr = MOVCCi [[MOVCCi]], 1, 4, $cpsr
1295    ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi1]], 1, 14, $noreg, $noreg
1296    ; CHECK: $r0 = COPY [[ANDri]]
1297    ; CHECK: BX_RET 14, $noreg, implicit $r0
1298    %0(s64) = COPY $d0
1299    %1(s64) = COPY $d1
1300    %2(s1) = G_FCMP floatpred(one),  %0(s64), %1
1301    %3(s32) = G_ZEXT %2(s1)
1302    $r0 = COPY %3(s32)
1303    BX_RET 14, $noreg, implicit $r0
1304...
1305---
1306name:            test_fcmp_ueq_s64
1307legalized:       true
1308regBankSelected: true
1309selected:        false
1310registers:
1311  - { id: 0, class: fprb }
1312  - { id: 1, class: fprb }
1313  - { id: 2, class: gprb }
1314  - { id: 3, class: gprb }
1315body:             |
1316  bb.0:
1317    liveins: $d0, $d1
1318
1319    ; CHECK-LABEL: name: test_fcmp_ueq_s64
1320    ; CHECK: [[COPY:%[0-9]+]]:dpr = COPY $d0
1321    ; CHECK: [[COPY1:%[0-9]+]]:dpr = COPY $d1
1322    ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg
1323    ; CHECK: VCMPD [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv
1324    ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
1325    ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 0, $cpsr
1326    ; CHECK: VCMPD [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv
1327    ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
1328    ; CHECK: [[MOVCCi1:%[0-9]+]]:gpr = MOVCCi [[MOVCCi]], 1, 6, $cpsr
1329    ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi1]], 1, 14, $noreg, $noreg
1330    ; CHECK: $r0 = COPY [[ANDri]]
1331    ; CHECK: BX_RET 14, $noreg, implicit $r0
1332    %0(s64) = COPY $d0
1333    %1(s64) = COPY $d1
1334    %2(s1) = G_FCMP floatpred(ueq),  %0(s64), %1
1335    %3(s32) = G_ZEXT %2(s1)
1336    $r0 = COPY %3(s32)
1337    BX_RET 14, $noreg, implicit $r0
1338...
1339