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
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 }
15 define void @test_fcmp_true_s32() #0 { ret void }
16 define void @test_fcmp_false_s32() #0 { ret void }
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 }
31 define void @test_fcmp_one_s32() #0 { ret void }
32 define void @test_fcmp_ueq_s32() #0 { ret void }
34 define void @test_fcmp_true_s64() #0 { ret void }
35 define void @test_fcmp_false_s64() #0 { ret void }
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 }
50 define void @test_fcmp_one_s64() #0 { ret void }
51 define void @test_fcmp_ueq_s64() #0 { ret void }
53 attributes #0 = { "target-features"="+vfp2" }
56 name: test_icmp_eq_s32
61 - { id: 0, class: gprb }
62 - { id: 1, class: gprb }
63 - { id: 2, class: gprb }
64 - { id: 3, class: gprb }
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 /* CC::al */, $noreg, $noreg
73 ; CHECK: CMPrr [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit-def $cpsr
74 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 0 /* CC::eq */, $cpsr
75 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14 /* CC::al */, $noreg, $noreg
76 ; CHECK: $r0 = COPY [[ANDri]]
77 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0
80 %2(s1) = G_ICMP intpred(eq), %0(s32), %1
81 %3(s32) = G_ZEXT %2(s1)
83 BX_RET 14, $noreg, implicit $r0
86 name: test_icmp_ne_s32
91 - { id: 0, class: gprb }
92 - { id: 1, class: gprb }
93 - { id: 2, class: gprb }
94 - { id: 3, class: gprb }
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 /* CC::al */, $noreg, $noreg
103 ; CHECK: CMPrr [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit-def $cpsr
104 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 1 /* CC::ne */, $cpsr
105 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14 /* CC::al */, $noreg, $noreg
106 ; CHECK: $r0 = COPY [[ANDri]]
107 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0
110 %2(s1) = G_ICMP intpred(ne), %0(s32), %1
111 %3(s32) = G_ZEXT %2(s1)
113 BX_RET 14, $noreg, implicit $r0
116 name: test_icmp_ugt_s32
118 regBankSelected: true
121 - { id: 0, class: gprb }
122 - { id: 1, class: gprb }
123 - { id: 2, class: gprb }
124 - { id: 3, class: gprb }
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 /* CC::al */, $noreg, $noreg
133 ; CHECK: CMPrr [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit-def $cpsr
134 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 8 /* CC::hi */, $cpsr
135 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14 /* CC::al */, $noreg, $noreg
136 ; CHECK: $r0 = COPY [[ANDri]]
137 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0
140 %2(s1) = G_ICMP intpred(ugt), %0(s32), %1
141 %3(s32) = G_ZEXT %2(s1)
143 BX_RET 14, $noreg, implicit $r0
146 name: test_icmp_uge_s32
148 regBankSelected: true
151 - { id: 0, class: gprb }
152 - { id: 1, class: gprb }
153 - { id: 2, class: gprb }
154 - { id: 3, class: gprb }
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 /* CC::al */, $noreg, $noreg
163 ; CHECK: CMPrr [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit-def $cpsr
164 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 2 /* CC::hs */, $cpsr
165 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14 /* CC::al */, $noreg, $noreg
166 ; CHECK: $r0 = COPY [[ANDri]]
167 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0
170 %2(s1) = G_ICMP intpred(uge), %0(s32), %1
171 %3(s32) = G_ZEXT %2(s1)
173 BX_RET 14, $noreg, implicit $r0
176 name: test_icmp_ult_s32
178 regBankSelected: true
181 - { id: 0, class: gprb }
182 - { id: 1, class: gprb }
183 - { id: 2, class: gprb }
184 - { id: 3, class: gprb }
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 /* CC::al */, $noreg, $noreg
193 ; CHECK: CMPrr [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit-def $cpsr
194 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 3 /* CC::lo */, $cpsr
195 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14 /* CC::al */, $noreg, $noreg
196 ; CHECK: $r0 = COPY [[ANDri]]
197 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0
200 %2(s1) = G_ICMP intpred(ult), %0(s32), %1
201 %3(s32) = G_ZEXT %2(s1)
203 BX_RET 14, $noreg, implicit $r0
206 name: test_icmp_ule_s32
208 regBankSelected: true
211 - { id: 0, class: gprb }
212 - { id: 1, class: gprb }
213 - { id: 2, class: gprb }
214 - { id: 3, class: gprb }
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 /* CC::al */, $noreg, $noreg
223 ; CHECK: CMPrr [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit-def $cpsr
224 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 9 /* CC::ls */, $cpsr
225 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14 /* CC::al */, $noreg, $noreg
226 ; CHECK: $r0 = COPY [[ANDri]]
227 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0
230 %2(s1) = G_ICMP intpred(ule), %0(s32), %1
231 %3(s32) = G_ZEXT %2(s1)
233 BX_RET 14, $noreg, implicit $r0
236 name: test_icmp_sgt_s32
238 regBankSelected: true
241 - { id: 0, class: gprb }
242 - { id: 1, class: gprb }
243 - { id: 2, class: gprb }
244 - { id: 3, class: gprb }
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 /* CC::al */, $noreg, $noreg
253 ; CHECK: CMPrr [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit-def $cpsr
254 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 12 /* CC::gt */, $cpsr
255 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14 /* CC::al */, $noreg, $noreg
256 ; CHECK: $r0 = COPY [[ANDri]]
257 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0
260 %2(s1) = G_ICMP intpred(sgt), %0(s32), %1
261 %3(s32) = G_ZEXT %2(s1)
263 BX_RET 14, $noreg, implicit $r0
266 name: test_icmp_sge_s32
268 regBankSelected: true
271 - { id: 0, class: gprb }
272 - { id: 1, class: gprb }
273 - { id: 2, class: gprb }
274 - { id: 3, class: gprb }
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 /* CC::al */, $noreg, $noreg
283 ; CHECK: CMPrr [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit-def $cpsr
284 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 10 /* CC::ge */, $cpsr
285 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14 /* CC::al */, $noreg, $noreg
286 ; CHECK: $r0 = COPY [[ANDri]]
287 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0
290 %2(s1) = G_ICMP intpred(sge), %0(s32), %1
291 %3(s32) = G_ZEXT %2(s1)
293 BX_RET 14, $noreg, implicit $r0
296 name: test_icmp_slt_s32
298 regBankSelected: true
301 - { id: 0, class: gprb }
302 - { id: 1, class: gprb }
303 - { id: 2, class: gprb }
304 - { id: 3, class: gprb }
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 /* CC::al */, $noreg, $noreg
313 ; CHECK: CMPrr [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit-def $cpsr
314 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 11 /* CC::lt */, $cpsr
315 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14 /* CC::al */, $noreg, $noreg
316 ; CHECK: $r0 = COPY [[ANDri]]
317 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0
320 %2(s1) = G_ICMP intpred(slt), %0(s32), %1
321 %3(s32) = G_ZEXT %2(s1)
323 BX_RET 14, $noreg, implicit $r0
326 name: test_icmp_sle_s32
328 regBankSelected: true
331 - { id: 0, class: gprb }
332 - { id: 1, class: gprb }
333 - { id: 2, class: gprb }
334 - { id: 3, class: gprb }
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 /* CC::al */, $noreg, $noreg
343 ; CHECK: CMPrr [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit-def $cpsr
344 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 13 /* CC::le */, $cpsr
345 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14 /* CC::al */, $noreg, $noreg
346 ; CHECK: $r0 = COPY [[ANDri]]
347 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0
350 %2(s1) = G_ICMP intpred(sle), %0(s32), %1
351 %3(s32) = G_ZEXT %2(s1)
353 BX_RET 14, $noreg, implicit $r0
356 name: test_fcmp_true_s32
358 regBankSelected: true
361 - { id: 0, class: fprb }
362 - { id: 1, class: fprb }
363 - { id: 2, class: gprb }
364 - { id: 3, class: gprb }
369 ; CHECK-LABEL: name: test_fcmp_true_s32
370 ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 1, 14 /* CC::al */, $noreg, $noreg
371 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVi]], 1, 14 /* CC::al */, $noreg, $noreg
372 ; CHECK: $r0 = COPY [[ANDri]]
373 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0
376 %2(s1) = G_FCMP floatpred(true), %0(s32), %1
377 %3(s32) = G_ZEXT %2(s1)
379 BX_RET 14, $noreg, implicit $r0
382 name: test_fcmp_false_s32
384 regBankSelected: true
387 - { id: 0, class: fprb }
388 - { id: 1, class: fprb }
389 - { id: 2, class: gprb }
390 - { id: 3, class: gprb }
395 ; CHECK-LABEL: name: test_fcmp_false_s32
396 ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14 /* CC::al */, $noreg, $noreg
397 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVi]], 1, 14 /* CC::al */, $noreg, $noreg
398 ; CHECK: $r0 = COPY [[ANDri]]
399 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0
402 %2(s1) = G_FCMP floatpred(false), %0(s32), %1
403 %3(s32) = G_ZEXT %2(s1)
405 BX_RET 14, $noreg, implicit $r0
408 name: test_fcmp_oeq_s32
410 regBankSelected: true
413 - { id: 0, class: fprb }
414 - { id: 1, class: fprb }
415 - { id: 2, class: gprb }
416 - { id: 3, class: gprb }
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 /* CC::al */, $noreg, $noreg
425 ; CHECK: VCMPS [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit-def $fpscr_nzcv
426 ; CHECK: FMSTAT 14 /* CC::al */, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
427 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 0 /* CC::eq */, $cpsr
428 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14 /* CC::al */, $noreg, $noreg
429 ; CHECK: $r0 = COPY [[ANDri]]
430 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0
433 %2(s1) = G_FCMP floatpred(oeq), %0(s32), %1
434 %3(s32) = G_ZEXT %2(s1)
436 BX_RET 14, $noreg, implicit $r0
439 name: test_fcmp_ogt_s32
441 regBankSelected: true
444 - { id: 0, class: fprb }
445 - { id: 1, class: fprb }
446 - { id: 2, class: gprb }
447 - { id: 3, class: gprb }
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 /* CC::al */, $noreg, $noreg
456 ; CHECK: VCMPS [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit-def $fpscr_nzcv
457 ; CHECK: FMSTAT 14 /* CC::al */, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
458 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 12 /* CC::gt */, $cpsr
459 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14 /* CC::al */, $noreg, $noreg
460 ; CHECK: $r0 = COPY [[ANDri]]
461 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0
464 %2(s1) = G_FCMP floatpred(ogt), %0(s32), %1
465 %3(s32) = G_ZEXT %2(s1)
467 BX_RET 14, $noreg, implicit $r0
470 name: test_fcmp_oge_s32
472 regBankSelected: true
475 - { id: 0, class: fprb }
476 - { id: 1, class: fprb }
477 - { id: 2, class: gprb }
478 - { id: 3, class: gprb }
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 /* CC::al */, $noreg, $noreg
487 ; CHECK: VCMPS [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit-def $fpscr_nzcv
488 ; CHECK: FMSTAT 14 /* CC::al */, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
489 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 10 /* CC::ge */, $cpsr
490 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14 /* CC::al */, $noreg, $noreg
491 ; CHECK: $r0 = COPY [[ANDri]]
492 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0
495 %2(s1) = G_FCMP floatpred(oge), %0(s32), %1
496 %3(s32) = G_ZEXT %2(s1)
498 BX_RET 14, $noreg, implicit $r0
501 name: test_fcmp_olt_s32
503 regBankSelected: true
506 - { id: 0, class: fprb }
507 - { id: 1, class: fprb }
508 - { id: 2, class: gprb }
509 - { id: 3, class: gprb }
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 /* CC::al */, $noreg, $noreg
518 ; CHECK: VCMPS [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit-def $fpscr_nzcv
519 ; CHECK: FMSTAT 14 /* CC::al */, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
520 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 4 /* CC::mi */, $cpsr
521 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14 /* CC::al */, $noreg, $noreg
522 ; CHECK: $r0 = COPY [[ANDri]]
523 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0
526 %2(s1) = G_FCMP floatpred(olt), %0(s32), %1
527 %3(s32) = G_ZEXT %2(s1)
529 BX_RET 14, $noreg, implicit $r0
532 name: test_fcmp_ole_s32
534 regBankSelected: true
537 - { id: 0, class: fprb }
538 - { id: 1, class: fprb }
539 - { id: 2, class: gprb }
540 - { id: 3, class: gprb }
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 /* CC::al */, $noreg, $noreg
549 ; CHECK: VCMPS [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit-def $fpscr_nzcv
550 ; CHECK: FMSTAT 14 /* CC::al */, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
551 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 9 /* CC::ls */, $cpsr
552 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14 /* CC::al */, $noreg, $noreg
553 ; CHECK: $r0 = COPY [[ANDri]]
554 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0
557 %2(s1) = G_FCMP floatpred(ole), %0(s32), %1
558 %3(s32) = G_ZEXT %2(s1)
560 BX_RET 14, $noreg, implicit $r0
563 name: test_fcmp_ord_s32
565 regBankSelected: true
568 - { id: 0, class: fprb }
569 - { id: 1, class: fprb }
570 - { id: 2, class: gprb }
571 - { id: 3, class: gprb }
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 /* CC::al */, $noreg, $noreg
580 ; CHECK: VCMPS [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit-def $fpscr_nzcv
581 ; CHECK: FMSTAT 14 /* CC::al */, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
582 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 7 /* CC::vc */, $cpsr
583 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14 /* CC::al */, $noreg, $noreg
584 ; CHECK: $r0 = COPY [[ANDri]]
585 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0
588 %2(s1) = G_FCMP floatpred(ord), %0(s32), %1
589 %3(s32) = G_ZEXT %2(s1)
591 BX_RET 14, $noreg, implicit $r0
594 name: test_fcmp_ugt_s32
596 regBankSelected: true
599 - { id: 0, class: fprb }
600 - { id: 1, class: fprb }
601 - { id: 2, class: gprb }
602 - { id: 3, class: gprb }
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 /* CC::al */, $noreg, $noreg
611 ; CHECK: VCMPS [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit-def $fpscr_nzcv
612 ; CHECK: FMSTAT 14 /* CC::al */, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
613 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 8 /* CC::hi */, $cpsr
614 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14 /* CC::al */, $noreg, $noreg
615 ; CHECK: $r0 = COPY [[ANDri]]
616 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0
619 %2(s1) = G_FCMP floatpred(ugt), %0(s32), %1
620 %3(s32) = G_ZEXT %2(s1)
622 BX_RET 14, $noreg, implicit $r0
625 name: test_fcmp_uge_s32
627 regBankSelected: true
630 - { id: 0, class: fprb }
631 - { id: 1, class: fprb }
632 - { id: 2, class: gprb }
633 - { id: 3, class: gprb }
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 /* CC::al */, $noreg, $noreg
642 ; CHECK: VCMPS [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit-def $fpscr_nzcv
643 ; CHECK: FMSTAT 14 /* CC::al */, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
644 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 5 /* CC::pl */, $cpsr
645 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14 /* CC::al */, $noreg, $noreg
646 ; CHECK: $r0 = COPY [[ANDri]]
647 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0
650 %2(s1) = G_FCMP floatpred(uge), %0(s32), %1
651 %3(s32) = G_ZEXT %2(s1)
653 BX_RET 14, $noreg, implicit $r0
656 name: test_fcmp_ult_s32
658 regBankSelected: true
661 - { id: 0, class: fprb }
662 - { id: 1, class: fprb }
663 - { id: 2, class: gprb }
664 - { id: 3, class: gprb }
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 /* CC::al */, $noreg, $noreg
673 ; CHECK: VCMPS [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit-def $fpscr_nzcv
674 ; CHECK: FMSTAT 14 /* CC::al */, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
675 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 11 /* CC::lt */, $cpsr
676 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14 /* CC::al */, $noreg, $noreg
677 ; CHECK: $r0 = COPY [[ANDri]]
678 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0
681 %2(s1) = G_FCMP floatpred(ult), %0(s32), %1
682 %3(s32) = G_ZEXT %2(s1)
684 BX_RET 14, $noreg, implicit $r0
687 name: test_fcmp_ule_s32
689 regBankSelected: true
692 - { id: 0, class: fprb }
693 - { id: 1, class: fprb }
694 - { id: 2, class: gprb }
695 - { id: 3, class: gprb }
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 /* CC::al */, $noreg, $noreg
704 ; CHECK: VCMPS [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit-def $fpscr_nzcv
705 ; CHECK: FMSTAT 14 /* CC::al */, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
706 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 13 /* CC::le */, $cpsr
707 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14 /* CC::al */, $noreg, $noreg
708 ; CHECK: $r0 = COPY [[ANDri]]
709 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0
712 %2(s1) = G_FCMP floatpred(ule), %0(s32), %1
713 %3(s32) = G_ZEXT %2(s1)
715 BX_RET 14, $noreg, implicit $r0
718 name: test_fcmp_une_s32
720 regBankSelected: true
723 - { id: 0, class: fprb }
724 - { id: 1, class: fprb }
725 - { id: 2, class: gprb }
726 - { id: 3, class: gprb }
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 /* CC::al */, $noreg, $noreg
735 ; CHECK: VCMPS [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit-def $fpscr_nzcv
736 ; CHECK: FMSTAT 14 /* CC::al */, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
737 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 1 /* CC::ne */, $cpsr
738 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14 /* CC::al */, $noreg, $noreg
739 ; CHECK: $r0 = COPY [[ANDri]]
740 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0
743 %2(s1) = G_FCMP floatpred(une), %0(s32), %1
744 %3(s32) = G_ZEXT %2(s1)
746 BX_RET 14, $noreg, implicit $r0
749 name: test_fcmp_uno_s32
751 regBankSelected: true
754 - { id: 0, class: fprb }
755 - { id: 1, class: fprb }
756 - { id: 2, class: gprb }
757 - { id: 3, class: gprb }
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 /* CC::al */, $noreg, $noreg
766 ; CHECK: VCMPS [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit-def $fpscr_nzcv
767 ; CHECK: FMSTAT 14 /* CC::al */, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
768 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 6 /* CC::vs */, $cpsr
769 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14 /* CC::al */, $noreg, $noreg
770 ; CHECK: $r0 = COPY [[ANDri]]
771 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0
774 %2(s1) = G_FCMP floatpred(uno), %0(s32), %1
775 %3(s32) = G_ZEXT %2(s1)
777 BX_RET 14, $noreg, implicit $r0
780 name: test_fcmp_one_s32
782 regBankSelected: true
785 - { id: 0, class: fprb }
786 - { id: 1, class: fprb }
787 - { id: 2, class: gprb }
788 - { id: 3, class: gprb }
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 /* CC::al */, $noreg, $noreg
797 ; CHECK: VCMPS [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit-def $fpscr_nzcv
798 ; CHECK: FMSTAT 14 /* CC::al */, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
799 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 12 /* CC::gt */, $cpsr
800 ; CHECK: VCMPS [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit-def $fpscr_nzcv
801 ; CHECK: FMSTAT 14 /* CC::al */, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
802 ; CHECK: [[MOVCCi1:%[0-9]+]]:gpr = MOVCCi [[MOVCCi]], 1, 4 /* CC::mi */, $cpsr
803 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi1]], 1, 14 /* CC::al */, $noreg, $noreg
804 ; CHECK: $r0 = COPY [[ANDri]]
805 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0
808 %2(s1) = G_FCMP floatpred(one), %0(s32), %1
809 %3(s32) = G_ZEXT %2(s1)
811 BX_RET 14, $noreg, implicit $r0
814 name: test_fcmp_ueq_s32
816 regBankSelected: true
819 - { id: 0, class: fprb }
820 - { id: 1, class: fprb }
821 - { id: 2, class: gprb }
822 - { id: 3, class: gprb }
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 /* CC::al */, $noreg, $noreg
831 ; CHECK: VCMPS [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit-def $fpscr_nzcv
832 ; CHECK: FMSTAT 14 /* CC::al */, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
833 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 0 /* CC::eq */, $cpsr
834 ; CHECK: VCMPS [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit-def $fpscr_nzcv
835 ; CHECK: FMSTAT 14 /* CC::al */, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
836 ; CHECK: [[MOVCCi1:%[0-9]+]]:gpr = MOVCCi [[MOVCCi]], 1, 6 /* CC::vs */, $cpsr
837 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi1]], 1, 14 /* CC::al */, $noreg, $noreg
838 ; CHECK: $r0 = COPY [[ANDri]]
839 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0
842 %2(s1) = G_FCMP floatpred(ueq), %0(s32), %1
843 %3(s32) = G_ZEXT %2(s1)
845 BX_RET 14, $noreg, implicit $r0
848 name: test_fcmp_true_s64
850 regBankSelected: true
853 - { id: 0, class: fprb }
854 - { id: 1, class: fprb }
855 - { id: 2, class: gprb }
856 - { id: 3, class: gprb }
861 ; CHECK-LABEL: name: test_fcmp_true_s64
862 ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 1, 14 /* CC::al */, $noreg, $noreg
863 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVi]], 1, 14 /* CC::al */, $noreg, $noreg
864 ; CHECK: $r0 = COPY [[ANDri]]
865 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0
868 %2(s1) = G_FCMP floatpred(true), %0(s64), %1
869 %3(s32) = G_ZEXT %2(s1)
871 BX_RET 14, $noreg, implicit $r0
874 name: test_fcmp_false_s64
876 regBankSelected: true
879 - { id: 0, class: fprb }
880 - { id: 1, class: fprb }
881 - { id: 2, class: gprb }
882 - { id: 3, class: gprb }
887 ; CHECK-LABEL: name: test_fcmp_false_s64
888 ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14 /* CC::al */, $noreg, $noreg
889 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVi]], 1, 14 /* CC::al */, $noreg, $noreg
890 ; CHECK: $r0 = COPY [[ANDri]]
891 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0
894 %2(s1) = G_FCMP floatpred(false), %0(s64), %1
895 %3(s32) = G_ZEXT %2(s1)
897 BX_RET 14, $noreg, implicit $r0
900 name: test_fcmp_oeq_s64
902 regBankSelected: true
905 - { id: 0, class: fprb }
906 - { id: 1, class: fprb }
907 - { id: 2, class: gprb }
908 - { id: 3, class: gprb }
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 /* CC::al */, $noreg, $noreg
917 ; CHECK: VCMPD [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit-def $fpscr_nzcv
918 ; CHECK: FMSTAT 14 /* CC::al */, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
919 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 0 /* CC::eq */, $cpsr
920 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14 /* CC::al */, $noreg, $noreg
921 ; CHECK: $r0 = COPY [[ANDri]]
922 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0
925 %2(s1) = G_FCMP floatpred(oeq), %0(s64), %1
926 %3(s32) = G_ZEXT %2(s1)
928 BX_RET 14, $noreg, implicit $r0
931 name: test_fcmp_ogt_s64
933 regBankSelected: true
936 - { id: 0, class: fprb }
937 - { id: 1, class: fprb }
938 - { id: 2, class: gprb }
939 - { id: 3, class: gprb }
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 /* CC::al */, $noreg, $noreg
948 ; CHECK: VCMPD [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit-def $fpscr_nzcv
949 ; CHECK: FMSTAT 14 /* CC::al */, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
950 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 12 /* CC::gt */, $cpsr
951 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14 /* CC::al */, $noreg, $noreg
952 ; CHECK: $r0 = COPY [[ANDri]]
953 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0
956 %2(s1) = G_FCMP floatpred(ogt), %0(s64), %1
957 %3(s32) = G_ZEXT %2(s1)
959 BX_RET 14, $noreg, implicit $r0
962 name: test_fcmp_oge_s64
964 regBankSelected: true
967 - { id: 0, class: fprb }
968 - { id: 1, class: fprb }
969 - { id: 2, class: gprb }
970 - { id: 3, class: gprb }
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 /* CC::al */, $noreg, $noreg
979 ; CHECK: VCMPD [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit-def $fpscr_nzcv
980 ; CHECK: FMSTAT 14 /* CC::al */, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
981 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 10 /* CC::ge */, $cpsr
982 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14 /* CC::al */, $noreg, $noreg
983 ; CHECK: $r0 = COPY [[ANDri]]
984 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0
987 %2(s1) = G_FCMP floatpred(oge), %0(s64), %1
988 %3(s32) = G_ZEXT %2(s1)
990 BX_RET 14, $noreg, implicit $r0
993 name: test_fcmp_olt_s64
995 regBankSelected: true
998 - { id: 0, class: fprb }
999 - { id: 1, class: fprb }
1000 - { id: 2, class: gprb }
1001 - { id: 3, class: gprb }
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 /* CC::al */, $noreg, $noreg
1010 ; CHECK: VCMPD [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit-def $fpscr_nzcv
1011 ; CHECK: FMSTAT 14 /* CC::al */, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
1012 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 4 /* CC::mi */, $cpsr
1013 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14 /* CC::al */, $noreg, $noreg
1014 ; CHECK: $r0 = COPY [[ANDri]]
1015 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0
1018 %2(s1) = G_FCMP floatpred(olt), %0(s64), %1
1019 %3(s32) = G_ZEXT %2(s1)
1021 BX_RET 14, $noreg, implicit $r0
1024 name: test_fcmp_ole_s64
1026 regBankSelected: true
1029 - { id: 0, class: fprb }
1030 - { id: 1, class: fprb }
1031 - { id: 2, class: gprb }
1032 - { id: 3, class: gprb }
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 /* CC::al */, $noreg, $noreg
1041 ; CHECK: VCMPD [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit-def $fpscr_nzcv
1042 ; CHECK: FMSTAT 14 /* CC::al */, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
1043 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 9 /* CC::ls */, $cpsr
1044 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14 /* CC::al */, $noreg, $noreg
1045 ; CHECK: $r0 = COPY [[ANDri]]
1046 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0
1049 %2(s1) = G_FCMP floatpred(ole), %0(s64), %1
1050 %3(s32) = G_ZEXT %2(s1)
1052 BX_RET 14, $noreg, implicit $r0
1055 name: test_fcmp_ord_s64
1057 regBankSelected: true
1060 - { id: 0, class: fprb }
1061 - { id: 1, class: fprb }
1062 - { id: 2, class: gprb }
1063 - { id: 3, class: gprb }
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 /* CC::al */, $noreg, $noreg
1072 ; CHECK: VCMPD [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit-def $fpscr_nzcv
1073 ; CHECK: FMSTAT 14 /* CC::al */, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
1074 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 7 /* CC::vc */, $cpsr
1075 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14 /* CC::al */, $noreg, $noreg
1076 ; CHECK: $r0 = COPY [[ANDri]]
1077 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0
1080 %2(s1) = G_FCMP floatpred(ord), %0(s64), %1
1081 %3(s32) = G_ZEXT %2(s1)
1083 BX_RET 14, $noreg, implicit $r0
1086 name: test_fcmp_ugt_s64
1088 regBankSelected: true
1091 - { id: 0, class: fprb }
1092 - { id: 1, class: fprb }
1093 - { id: 2, class: gprb }
1094 - { id: 3, class: gprb }
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 /* CC::al */, $noreg, $noreg
1103 ; CHECK: VCMPD [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit-def $fpscr_nzcv
1104 ; CHECK: FMSTAT 14 /* CC::al */, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
1105 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 8 /* CC::hi */, $cpsr
1106 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14 /* CC::al */, $noreg, $noreg
1107 ; CHECK: $r0 = COPY [[ANDri]]
1108 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0
1111 %2(s1) = G_FCMP floatpred(ugt), %0(s64), %1
1112 %3(s32) = G_ZEXT %2(s1)
1114 BX_RET 14, $noreg, implicit $r0
1117 name: test_fcmp_uge_s64
1119 regBankSelected: true
1122 - { id: 0, class: fprb }
1123 - { id: 1, class: fprb }
1124 - { id: 2, class: gprb }
1125 - { id: 3, class: gprb }
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 /* CC::al */, $noreg, $noreg
1134 ; CHECK: VCMPD [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit-def $fpscr_nzcv
1135 ; CHECK: FMSTAT 14 /* CC::al */, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
1136 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 5 /* CC::pl */, $cpsr
1137 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14 /* CC::al */, $noreg, $noreg
1138 ; CHECK: $r0 = COPY [[ANDri]]
1139 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0
1142 %2(s1) = G_FCMP floatpred(uge), %0(s64), %1
1143 %3(s32) = G_ZEXT %2(s1)
1145 BX_RET 14, $noreg, implicit $r0
1148 name: test_fcmp_ult_s64
1150 regBankSelected: true
1153 - { id: 0, class: fprb }
1154 - { id: 1, class: fprb }
1155 - { id: 2, class: gprb }
1156 - { id: 3, class: gprb }
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 /* CC::al */, $noreg, $noreg
1165 ; CHECK: VCMPD [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit-def $fpscr_nzcv
1166 ; CHECK: FMSTAT 14 /* CC::al */, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
1167 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 11 /* CC::lt */, $cpsr
1168 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14 /* CC::al */, $noreg, $noreg
1169 ; CHECK: $r0 = COPY [[ANDri]]
1170 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0
1173 %2(s1) = G_FCMP floatpred(ult), %0(s64), %1
1174 %3(s32) = G_ZEXT %2(s1)
1176 BX_RET 14, $noreg, implicit $r0
1179 name: test_fcmp_ule_s64
1181 regBankSelected: true
1184 - { id: 0, class: fprb }
1185 - { id: 1, class: fprb }
1186 - { id: 2, class: gprb }
1187 - { id: 3, class: gprb }
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 /* CC::al */, $noreg, $noreg
1196 ; CHECK: VCMPD [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit-def $fpscr_nzcv
1197 ; CHECK: FMSTAT 14 /* CC::al */, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
1198 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 13 /* CC::le */, $cpsr
1199 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14 /* CC::al */, $noreg, $noreg
1200 ; CHECK: $r0 = COPY [[ANDri]]
1201 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0
1204 %2(s1) = G_FCMP floatpred(ule), %0(s64), %1
1205 %3(s32) = G_ZEXT %2(s1)
1207 BX_RET 14, $noreg, implicit $r0
1210 name: test_fcmp_une_s64
1212 regBankSelected: true
1215 - { id: 0, class: fprb }
1216 - { id: 1, class: fprb }
1217 - { id: 2, class: gprb }
1218 - { id: 3, class: gprb }
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 /* CC::al */, $noreg, $noreg
1227 ; CHECK: VCMPD [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit-def $fpscr_nzcv
1228 ; CHECK: FMSTAT 14 /* CC::al */, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
1229 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 1 /* CC::ne */, $cpsr
1230 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14 /* CC::al */, $noreg, $noreg
1231 ; CHECK: $r0 = COPY [[ANDri]]
1232 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0
1235 %2(s1) = G_FCMP floatpred(une), %0(s64), %1
1236 %3(s32) = G_ZEXT %2(s1)
1238 BX_RET 14, $noreg, implicit $r0
1241 name: test_fcmp_uno_s64
1243 regBankSelected: true
1246 - { id: 0, class: fprb }
1247 - { id: 1, class: fprb }
1248 - { id: 2, class: gprb }
1249 - { id: 3, class: gprb }
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 /* CC::al */, $noreg, $noreg
1258 ; CHECK: VCMPD [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit-def $fpscr_nzcv
1259 ; CHECK: FMSTAT 14 /* CC::al */, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
1260 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 6 /* CC::vs */, $cpsr
1261 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14 /* CC::al */, $noreg, $noreg
1262 ; CHECK: $r0 = COPY [[ANDri]]
1263 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0
1266 %2(s1) = G_FCMP floatpred(uno), %0(s64), %1
1267 %3(s32) = G_ZEXT %2(s1)
1269 BX_RET 14, $noreg, implicit $r0
1272 name: test_fcmp_one_s64
1274 regBankSelected: true
1277 - { id: 0, class: fprb }
1278 - { id: 1, class: fprb }
1279 - { id: 2, class: gprb }
1280 - { id: 3, class: gprb }
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 /* CC::al */, $noreg, $noreg
1289 ; CHECK: VCMPD [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit-def $fpscr_nzcv
1290 ; CHECK: FMSTAT 14 /* CC::al */, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
1291 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 12 /* CC::gt */, $cpsr
1292 ; CHECK: VCMPD [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit-def $fpscr_nzcv
1293 ; CHECK: FMSTAT 14 /* CC::al */, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
1294 ; CHECK: [[MOVCCi1:%[0-9]+]]:gpr = MOVCCi [[MOVCCi]], 1, 4 /* CC::mi */, $cpsr
1295 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi1]], 1, 14 /* CC::al */, $noreg, $noreg
1296 ; CHECK: $r0 = COPY [[ANDri]]
1297 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0
1300 %2(s1) = G_FCMP floatpred(one), %0(s64), %1
1301 %3(s32) = G_ZEXT %2(s1)
1303 BX_RET 14, $noreg, implicit $r0
1306 name: test_fcmp_ueq_s64
1308 regBankSelected: true
1311 - { id: 0, class: fprb }
1312 - { id: 1, class: fprb }
1313 - { id: 2, class: gprb }
1314 - { id: 3, class: gprb }
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 /* CC::al */, $noreg, $noreg
1323 ; CHECK: VCMPD [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit-def $fpscr_nzcv
1324 ; CHECK: FMSTAT 14 /* CC::al */, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
1325 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 0 /* CC::eq */, $cpsr
1326 ; CHECK: VCMPD [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit-def $fpscr_nzcv
1327 ; CHECK: FMSTAT 14 /* CC::al */, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv
1328 ; CHECK: [[MOVCCi1:%[0-9]+]]:gpr = MOVCCi [[MOVCCi]], 1, 6 /* CC::vs */, $cpsr
1329 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi1]], 1, 14 /* CC::al */, $noreg, $noreg
1330 ; CHECK: $r0 = COPY [[ANDri]]
1331 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0
1334 %2(s1) = G_FCMP floatpred(ueq), %0(s64), %1
1335 %3(s32) = G_ZEXT %2(s1)
1337 BX_RET 14, $noreg, implicit $r0