Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / llvm / test / CodeGen / ARM / GlobalISel / arm-regbankselect.mir
blob44e17025032021b7adc48c66b07a655274a62015
1 # RUN: llc -debugify-and-strip-all-safe=0 -mtriple arm-- -run-pass=regbankselect %s -o - | FileCheck %s
2 # RUN: llc -debugify-and-strip-all-safe=0 -mtriple thumbv7-- -run-pass=regbankselect %s -o - | FileCheck %s
3 --- |
4   define void @test_add_s32() { ret void }
5   define void @test_sub_s32() { ret void }
6   define void @test_mul_s32() { ret void }
8   define void @test_sdiv_s32() #1 { ret void }
9   define void @test_udiv_s32() #1 { ret void }
11   define void @test_and_s32() { ret void}
12   define void @test_or_s32() { ret void}
13   define void @test_xor_s32() { ret void}
15   define void @test_lshr_s32() { ret void }
16   define void @test_ashr_s32() { ret void }
17   define void @test_shl_s32() { ret void }
19   define void @test_loads() #0 { ret void }
20   define void @test_stores() #0 { ret void }
22   define void @test_stack() { ret void }
24   define void @test_gep() { ret void }
26   define void @test_constants() { ret void }
28   define void @test_inttoptr_s32() { ret void }
29   define void @test_ptrtoint_s32() { ret void }
31   define void @test_ctlz_s32() #3 { ret void }
33   @a_global = global float 1.0
34   define void @test_globals() { ret void }
36   define void @test_anyext_s8_32() { ret void }
37   define void @test_anyext_s16_32() { ret void }
39   define void @test_trunc_s32_16() { ret void }
40   define void @test_trunc_s64_32() #0 { ret void }
42   define void @test_icmp_eq_s32() { ret void }
43   define void @test_fcmp_one_s32() #0 { ret void }
44   define void @test_fcmp_ugt_s64() #0 { ret void }
46   define void @test_select_s32() { ret void }
48   define void @test_br() { ret void }
50   define void @test_phi_s32() { ret void }
51   define void @test_phi_s64() #0 { ret void }
53   define void @test_fadd_s32() #0 { ret void }
54   define void @test_fadd_s64() #0 { ret void }
56   define void @test_fsub_s32() #0 { ret void }
57   define void @test_fsub_s64() #0 { ret void }
59   define void @test_fmul_s32() #0 { ret void }
60   define void @test_fmul_s64() #0 { ret void }
62   define void @test_fdiv_s32() #0 { ret void }
63   define void @test_fdiv_s64() #0 { ret void }
65   define void @test_fneg_s32() #0 { ret void }
66   define void @test_fneg_s64() #0 { ret void }
68   define void @test_fma_s32() #2 { ret void }
69   define void @test_fma_s64() #2 { ret void }
71   define void @test_fpext_s32_to_s64() #0 { ret void }
72   define void @test_fptrunc_s64_to_s32() #0 { ret void }
74   define void @test_fpconst_s32() #0 { ret void }
75   define void @test_fpconst_s64() #0 { ret void }
77   define void @test_fptosi_s32() #0 { ret void }
78   define void @test_fptosi_s64() #0 { ret void }
79   define void @test_fptoui_s32() #0 { ret void }
80   define void @test_fptoui_s64() #0 { ret void }
82   define void @test_sitofp_s32() #0 { ret void }
83   define void @test_sitofp_s64() #0 { ret void }
84   define void @test_uitofp_s32() #0 { ret void }
85   define void @test_uitofp_s64() #0 { ret void }
87   define void @test_soft_fp_s64() #0 { ret void }
89   define void @test_dbg_value() #0 { ret void }
91   attributes #0 = { "target-features"="+vfp2"}
92   attributes #1 = { "target-features"="+hwdiv-arm,+hwdiv" }
93   attributes #2 = { "target-features"="+vfp4"}
94   attributes #3 = { "target-features"="+v5t"}
96   !0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "llvm", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !2)
97   !1 = !DIFile(filename: "dbg.ll", directory: "/tmp")
98   !2 = !{}
99   !5 = distinct !DISubprogram(name: "test_dbg_value", scope: !1, file: !1, line: 1, type: !6, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: false, unit: !0, retainedNodes: !2)
100   !6 = !DISubroutineType(types: !2)
101   !7 = !DILocalVariable(name: "x", arg: 1, scope: !5, file: !1, line: 1, type: !8)
102   !8 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
103   !9 = !DILocation(line: 1, column: 1, scope: !5)
106 name:            test_add_s32
107 # CHECK-LABEL: name: test_add_s32
108 legalized:       true
109 regBankSelected: false
110 selected:        false
111 # CHECK: registers:
112 # CHECK: - { id: 0, class: gprb, preferred-register: '' }
113 # CHECK: - { id: 1, class: gprb, preferred-register: '' }
114 # CHECK: - { id: 2, class: gprb, preferred-register: '' }
116 registers:
117   - { id: 0, class: _ }
118   - { id: 1, class: _ }
119   - { id: 2, class: _ }
120 body:             |
121   bb.0:
122     liveins: $r0, $r1
124     %0(s32) = COPY $r0
125     %1(s32) = COPY $r1
126     %2(s32) = G_ADD %0, %1
127     $r0 = COPY %2(s32)
128     BX_RET 14, $noreg, implicit $r0
132 name:            test_sub_s32
133 # CHECK-LABEL: name: test_sub_s32
134 legalized:       true
135 regBankSelected: false
136 selected:        false
137 # CHECK: registers:
138 # CHECK: - { id: 0, class: gprb, preferred-register: '' }
139 # CHECK: - { id: 1, class: gprb, preferred-register: '' }
140 # CHECK: - { id: 2, class: gprb, preferred-register: '' }
142 registers:
143   - { id: 0, class: _ }
144   - { id: 1, class: _ }
145   - { id: 2, class: _ }
146 body:             |
147   bb.0:
148     liveins: $r0, $r1
150     %0(s32) = COPY $r0
151     %1(s32) = COPY $r1
152     %2(s32) = G_SUB %0, %1
153     $r0 = COPY %2(s32)
154     BX_RET 14, $noreg, implicit $r0
158 name:            test_mul_s32
159 # CHECK-LABEL: name: test_mul_s32
160 legalized:       true
161 regBankSelected: false
162 selected:        false
163 # CHECK: registers:
164 # CHECK: - { id: 0, class: gprb, preferred-register: '' }
165 # CHECK: - { id: 1, class: gprb, preferred-register: '' }
166 # CHECK: - { id: 2, class: gprb, preferred-register: '' }
168 registers:
169   - { id: 0, class: _ }
170   - { id: 1, class: _ }
171   - { id: 2, class: _ }
172 body:             |
173   bb.0:
174     liveins: $r0, $r1
176     %0(s32) = COPY $r0
177     %1(s32) = COPY $r1
178     %2(s32) = G_MUL %0, %1
179     $r0 = COPY %2(s32)
180     BX_RET 14, $noreg, implicit $r0
184 name:            test_sdiv_s32
185 # CHECK-LABEL: name: test_sdiv_s32
186 legalized:       true
187 regBankSelected: false
188 selected:        false
189 # CHECK: registers:
190 # CHECK: - { id: 0, class: gprb, preferred-register: '' }
191 # CHECK: - { id: 1, class: gprb, preferred-register: '' }
192 # CHECK: - { id: 2, class: gprb, preferred-register: '' }
194 registers:
195   - { id: 0, class: _ }
196   - { id: 1, class: _ }
197   - { id: 2, class: _ }
198 body:             |
199   bb.0:
200     liveins: $r0, $r1
202     %0(s32) = COPY $r0
203     %1(s32) = COPY $r1
204     %2(s32) = G_SDIV %0, %1
205     $r0 = COPY %2(s32)
206     BX_RET 14, $noreg, implicit $r0
210 name:            test_udiv_s32
211 # CHECK-LABEL: name: test_udiv_s32
212 legalized:       true
213 regBankSelected: false
214 selected:        false
215 # CHECK: registers:
216 # CHECK: - { id: 0, class: gprb, preferred-register: '' }
217 # CHECK: - { id: 1, class: gprb, preferred-register: '' }
218 # CHECK: - { id: 2, class: gprb, preferred-register: '' }
220 registers:
221   - { id: 0, class: _ }
222   - { id: 1, class: _ }
223   - { id: 2, class: _ }
224 body:             |
225   bb.0:
226     liveins: $r0, $r1
228     %0(s32) = COPY $r0
229     %1(s32) = COPY $r1
230     %2(s32) = G_UDIV %0, %1
231     $r0 = COPY %2(s32)
232     BX_RET 14, $noreg, implicit $r0
236 name:            test_and_s32
237 # CHECK-LABEL: name: test_and_s32
238 legalized:       true
239 regBankSelected: false
240 selected:        false
241 # CHECK: registers:
242 # CHECK: - { id: 0, class: gprb, preferred-register: '' }
243 # CHECK: - { id: 1, class: gprb, preferred-register: '' }
244 # CHECK: - { id: 2, class: gprb, preferred-register: '' }
246 registers:
247   - { id: 0, class: _ }
248   - { id: 1, class: _ }
249   - { id: 2, class: _ }
250 body:             |
251   bb.0:
252     liveins: $r0, $r1
254     %0(s32) = COPY $r0
255     %1(s32) = COPY $r1
256     %2(s32) = G_AND %0, %1
257     $r0 = COPY %2(s32)
258     BX_RET 14, $noreg, implicit $r0
262 name:            test_or_s32
263 # CHECK-LABEL: name: test_or_s32
264 legalized:       true
265 regBankSelected: false
266 selected:        false
267 # CHECK: registers:
268 # CHECK: - { id: 0, class: gprb, preferred-register: '' }
269 # CHECK: - { id: 1, class: gprb, preferred-register: '' }
270 # CHECK: - { id: 2, class: gprb, preferred-register: '' }
272 registers:
273   - { id: 0, class: _ }
274   - { id: 1, class: _ }
275   - { id: 2, class: _ }
276 body:             |
277   bb.0:
278     liveins: $r0, $r1
280     %0(s32) = COPY $r0
281     %1(s32) = COPY $r1
282     %2(s32) = G_OR %0, %1
283     $r0 = COPY %2(s32)
284     BX_RET 14, $noreg, implicit $r0
288 name:            test_xor_s32
289 # CHECK-LABEL: name: test_xor_s32
290 legalized:       true
291 regBankSelected: false
292 selected:        false
293 # CHECK: registers:
294 # CHECK: - { id: 0, class: gprb, preferred-register: '' }
295 # CHECK: - { id: 1, class: gprb, preferred-register: '' }
296 # CHECK: - { id: 2, class: gprb, preferred-register: '' }
298 registers:
299   - { id: 0, class: _ }
300   - { id: 1, class: _ }
301   - { id: 2, class: _ }
302 body:             |
303   bb.0:
304     liveins: $r0, $r1
306     %0(s32) = COPY $r0
307     %1(s32) = COPY $r1
308     %2(s32) = G_XOR %0, %1
309     $r0 = COPY %2(s32)
310     BX_RET 14, $noreg, implicit $r0
314 name:            test_lshr_s32
315 # CHECK-LABEL: name: test_lshr_s32
316 legalized:       true
317 regBankSelected: false
318 selected:        false
319 # CHECK: registers:
320 # CHECK: - { id: 0, class: gprb, preferred-register: '' }
321 # CHECK: - { id: 1, class: gprb, preferred-register: '' }
322 # CHECK: - { id: 2, class: gprb, preferred-register: '' }
324 registers:
325   - { id: 0, class: _ }
326   - { id: 1, class: _ }
327   - { id: 2, class: _ }
328 body:             |
329   bb.0:
330     liveins: $r0, $r1
332     %0(s32) = COPY $r0
333     %1(s32) = COPY $r1
334     %2(s32) = G_LSHR %0, %1
335     $r0 = COPY %2(s32)
336     BX_RET 14, $noreg, implicit $r0
340 name:            test_ashr_s32
341 # CHECK-LABEL: name: test_ashr_s32
342 legalized:       true
343 regBankSelected: false
344 selected:        false
345 # CHECK: registers:
346 # CHECK: - { id: 0, class: gprb, preferred-register: '' }
347 # CHECK: - { id: 1, class: gprb, preferred-register: '' }
348 # CHECK: - { id: 2, class: gprb, preferred-register: '' }
350 registers:
351   - { id: 0, class: _ }
352   - { id: 1, class: _ }
353   - { id: 2, class: _ }
354 body:             |
355   bb.0:
356     liveins: $r0, $r1
358     %0(s32) = COPY $r0
359     %1(s32) = COPY $r1
360     %2(s32) = G_ASHR %0, %1
361     $r0 = COPY %2(s32)
362     BX_RET 14, $noreg, implicit $r0
366 name:            test_shl_s32
367 # CHECK-LABEL: name: test_shl_s32
368 legalized:       true
369 regBankSelected: false
370 selected:        false
371 # CHECK: registers:
372 # CHECK: - { id: 0, class: gprb, preferred-register: '' }
373 # CHECK: - { id: 1, class: gprb, preferred-register: '' }
374 # CHECK: - { id: 2, class: gprb, preferred-register: '' }
376 registers:
377   - { id: 0, class: _ }
378   - { id: 1, class: _ }
379   - { id: 2, class: _ }
380 body:             |
381   bb.0:
382     liveins: $r0, $r1
384     %0(s32) = COPY $r0
385     %1(s32) = COPY $r1
386     %2(s32) = G_SHL %0, %1
387     $r0 = COPY %2(s32)
388     BX_RET 14, $noreg, implicit $r0
392 name:            test_loads
393 # CHECK-LABEL: name: test_loads
394 legalized:       true
395 regBankSelected: false
396 selected:        false
397 # CHECK: registers:
398 # CHECK: - { id: 0, class: gprb, preferred-register: '' }
399 # CHECK: - { id: 1, class: gprb, preferred-register: '' }
400 # CHECK: - { id: 2, class: gprb, preferred-register: '' }
401 # CHECK: - { id: 3, class: gprb, preferred-register: '' }
402 # CHECK: - { id: 4, class: gprb, preferred-register: '' }
403 # CHECK: - { id: 5, class: fprb, preferred-register: '' }
405 registers:
406   - { id: 0, class: _ }
407   - { id: 1, class: _ }
408   - { id: 2, class: _ }
409   - { id: 3, class: _ }
410   - { id: 4, class: _ }
411   - { id: 5, class: _ }
412   - { id: 6, class: _ }
413 body:             |
414   bb.0:
415     liveins: $r0
416     %0(p0) = COPY $r0
417     %5(s64) = G_LOAD %0 :: (load (s64))
418     %1(s32) = G_LOAD %0 :: (load (s32))
419     %2(s16) = G_LOAD %0 :: (load (s16))
420     %3(s8)  = G_LOAD %0 :: (load (s8))
421     %4(p0)  = G_LOAD %0 :: (load (p0))
422     BX_RET 14, $noreg, implicit $r0
426 name:            test_stores
427 # CHECK-LABEL: name: test_stores
428 legalized:       true
429 regBankSelected: false
430 selected:        false
431 # CHECK: registers:
432 # CHECK: - { id: 0, class: gprb, preferred-register: '' }
433 # CHECK: - { id: 1, class: gprb, preferred-register: '' }
434 # CHECK: - { id: 2, class: gprb, preferred-register: '' }
435 # CHECK: - { id: 3, class: gprb, preferred-register: '' }
436 # CHECK: - { id: 4, class: fprb, preferred-register: '' }
437 registers:
438   - { id: 0, class: _ }
439   - { id: 1, class: _ }
440   - { id: 2, class: _ }
441   - { id: 3, class: _ }
442   - { id: 4, class: _ }
443   - { id: 5, class: _ }
444   - { id: 6, class: _ }
445 body:             |
446   bb.0:
447     liveins: $r0, $r1, $r5, $d6
448     %0(p0) = COPY $r0
449     %1(s32) = COPY $r1
450     G_STORE %1(s32), %0 :: (store (s32))
451     %2(s16) = G_TRUNC %1(s32)
452     G_STORE %2(s16), %0 :: (store (s16))
453     %3(s8) = G_TRUNC %1(s32)
454     G_STORE %3(s8), %0 :: (store (s8))
455     %4(s64) = COPY $d6
456     G_STORE %4(s64), %0 :: (store (s64))
457     BX_RET 14, $noreg, implicit $r0
461 name:            test_stack
462 # CHECK-LABEL: name: test_stack
463 legalized:       true
464 regBankSelected: false
465 selected:        false
466 # CHECK: registers:
467 # CHECK: - { id: 0, class: gprb, preferred-register: '' }
468 # CHECK: - { id: 1, class: gprb, preferred-register: '' }
469 # CHECK: - { id: 2, class: gprb, preferred-register: '' }
470 # CHECK: - { id: 3, class: gprb, preferred-register: '' }
471 # CHECK: - { id: 4, class: gprb, preferred-register: '' }
472 registers:
473   - { id: 0, class: _ }
474   - { id: 1, class: _ }
475   - { id: 2, class: _ }
476   - { id: 3, class: _ }
477   - { id: 4, class: _ }
478 fixedStack:
479   - { id: 0, offset: 0, size: 4, alignment: 4, isImmutable: true, isAliased: false }
480 body:             |
481   bb.0:
482     %0(p0) = G_FRAME_INDEX %fixed-stack.0
483     %1(s32) = G_LOAD %0(p0) :: (load (s32) from %fixed-stack.0, align 4)
485     %2(p0) = COPY $sp
486     %3(s32) = G_CONSTANT i32 8
487     %4(p0) = G_PTR_ADD %2, %3(s32)
488     G_STORE %1(s32), %4(p0) :: (store (s32))
490     BX_RET 14, $noreg
494 name:            test_gep
495 # CHECK-LABEL: name: test_gep
496 legalized:       true
497 regBankSelected: false
498 selected:        false
499 # CHECK: registers:
500 # CHECK: - { id: 0, class: gprb, preferred-register: '' }
501 # CHECK: - { id: 1, class: gprb, preferred-register: '' }
502 # CHECK: - { id: 2, class: gprb, preferred-register: '' }
504 registers:
505   - { id: 0, class: _ }
506   - { id: 1, class: _ }
507   - { id: 2, class: _ }
508 body:             |
509   bb.0:
510     liveins: $r0, $r1
512     %0(p0) = COPY $r0
513     %1(s32) = COPY $r1
514     %2(p0) = G_PTR_ADD %0, %1(s32)
515     $r0 = COPY %2(p0)
516     BX_RET 14, $noreg, implicit $r0
519 name:            test_constants
520 # CHECK-LABEL: name: test_constants
521 legalized:       true
522 regBankSelected: false
523 selected:        false
524 # CHECK: registers:
525 # CHECK: - { id: 0, class: gprb, preferred-register: '' }
526 registers:
527   - { id: 0, class: _ }
528 body:             |
529   bb.0:
530     %0(s32) = G_CONSTANT i32 42
531     $r0 = COPY %0(s32)
532     BX_RET 14, $noreg, implicit $r0
535 name:            test_inttoptr_s32
536 # CHECK-LABEL: name: test_inttoptr_s32
537 legalized:       true
538 regBankSelected: false
539 selected:        false
540 # CHECK: registers:
541 # CHECK: - { id: 0, class: gprb, preferred-register: '' }
542 # CHECK: - { id: 1, class: gprb, preferred-register: '' }
543 registers:
544   - { id: 0, class: _ }
545   - { id: 1, class: _ }
546 body:             |
547   bb.0:
548     %0(s32) = COPY $r0
549     %1(p0) = G_INTTOPTR %0(s32)
550     $r0 = COPY %1(p0)
551     BX_RET 14, $noreg, implicit $r0
554 name:            test_ptrtoint_s32
555 # CHECK-LABEL: name: test_ptrtoint_s32
556 legalized:       true
557 regBankSelected: false
558 selected:        false
559 # CHECK: registers:
560 # CHECK: - { id: 0, class: gprb, preferred-register: '' }
561 # CHECK: - { id: 1, class: gprb, preferred-register: '' }
562 registers:
563   - { id: 0, class: _ }
564   - { id: 1, class: _ }
565 body:             |
566   bb.0:
567     %0(p0) = COPY $r0
568     %1(s32) = G_PTRTOINT %0(p0)
569     $r0 = COPY %1(s32)
570     BX_RET 14, $noreg, implicit $r0
573 name:            test_ctlz_s32
574 # CHECK-LABEL: name: test_ctlz_s32
575 legalized:       true
576 regBankSelected: false
577 selected:        false
578 # CHECK: registers:
579 # CHECK: - { id: 0, class: gprb, preferred-register: '' }
580 # CHECK: - { id: 1, class: gprb, preferred-register: '' }
581 registers:
582   - { id: 0, class: _ }
583   - { id: 1, class: _ }
584 body:             |
585   bb.0:
586     %0(s32) = COPY $r0
587     %1(s32) = G_CTLZ %0(s32)
588     $r0 = COPY %1(s32)
589     BX_RET 14, $noreg, implicit $r0
592 name:            test_globals
593 # CHECK-LABEL: name: test_globals
594 legalized:       true
595 regBankSelected: false
596 selected:        false
597 # CHECK: registers:
598 # CHECK: - { id: 0, class: gprb, preferred-register: '' }
599 registers:
600   - { id: 0, class: _ }
601 body:             |
602   bb.0:
603     %0(p0) = G_GLOBAL_VALUE @a_global
604     $r0 = COPY %0(p0)
605     BX_RET 14, $noreg, implicit $r0
608 name:            test_anyext_s8_32
609 # CHECK-LABEL: name: test_anyext_s8_32
610 legalized:       true
611 regBankSelected: false
612 selected:        false
613 # CHECK: registers:
614 # CHECK: - { id: 0, class: gprb, preferred-register: '' }
615 # CHECK: - { id: 1, class: gprb, preferred-register: '' }
616 # CHECK: - { id: 2, class: gprb, preferred-register: '' }
617 registers:
618   - { id: 0, class: _ }
619   - { id: 1, class: _ }
620   - { id: 2, class: _ }
621 body:             |
622   bb.0:
623     liveins: $r0
625     %0(s32) = COPY $r0
626     %1(s8) = G_TRUNC %0(s32)
627     %2(s32) = G_ANYEXT %1(s8)
628     $r0 = COPY %2(s32)
629     BX_RET 14, $noreg, implicit $r0
632 name:            test_anyext_s16_32
633 # CHECK-LABEL: name: test_anyext_s16_32
634 legalized:       true
635 regBankSelected: false
636 selected:        false
637 # CHECK: registers:
638 # CHECK: - { id: 0, class: gprb, preferred-register: '' }
639 # CHECK: - { id: 1, class: gprb, preferred-register: '' }
640 # CHECK: - { id: 2, class: gprb, preferred-register: '' }
641 registers:
642   - { id: 0, class: _ }
643   - { id: 1, class: _ }
644   - { id: 2, class: _ }
645 body:             |
646   bb.0:
647     liveins: $r0
649     %0(s32) = COPY $r0
650     %1(s16) = G_TRUNC %0(s32)
651     %2(s32) = G_ANYEXT %1(s16)
652     $r0 = COPY %2(s32)
653     BX_RET 14, $noreg, implicit $r0
656 name:            test_trunc_s32_16
657 # CHECK-LABEL: name: test_trunc_s32_16
658 legalized:       true
659 regBankSelected: false
660 selected:        false
661 # CHECK: registers:
662 # CHECK: - { id: 0, class: gprb, preferred-register: '' }
663 # CHECK: - { id: 1, class: gprb, preferred-register: '' }
664 # CHECK: - { id: 2, class: gprb, preferred-register: '' }
665 registers:
666   - { id: 0, class: _ }
667   - { id: 1, class: _ }
668   - { id: 2, class: _ }
669 body:             |
670   bb.0:
671     liveins: $r0, $r1
673     %0(s32) = COPY $r0
674     %2(p0) = COPY $r1
675     %1(s16) = G_TRUNC %0(s32)
676     G_STORE %1(s16), %2 :: (store (s16))
677     BX_RET 14, $noreg
680 name:            test_trunc_s64_32
681 # CHECK-LABEL: name: test_trunc_s64_32
682 legalized:       true
683 regBankSelected: false
684 selected:        false
685 # CHECK: registers:
686 # CHECK: - { id: 0, class: fprb, preferred-register: '' }
687 # CHECK: - { id: 1, class: gprb, preferred-register: '' }
688 # CHECK: - { id: 2, class: gprb, preferred-register: '' }
689 registers:
690   - { id: 0, class: _ }
691   - { id: 1, class: _ }
692   - { id: 2, class: _ }
693 body:             |
694   bb.0:
695     liveins: $r0, $d0
697     %0(s64) = COPY $d0
698     %2(p0) = COPY $r0
699     %1(s32) = G_TRUNC %0(s64)
700     G_STORE %1(s32), %2 :: (store (s32))
701     BX_RET 14, $noreg
704 name:            test_icmp_eq_s32
705 # CHECK-LABEL: name: test_icmp_eq_s32
706 legalized:       true
707 regBankSelected: false
708 selected:        false
709 # CHECK: registers:
710 # CHECK: - { id: 0, class: gprb, preferred-register: '' }
711 # CHECK: - { id: 1, class: gprb, preferred-register: '' }
712 # CHECK: - { id: 2, class: gprb, preferred-register: '' }
713 # CHECK: - { id: 3, class: gprb, preferred-register: '' }
715 registers:
716   - { id: 0, class: _ }
717   - { id: 1, class: _ }
718   - { id: 2, class: _ }
719   - { id: 3, class: _ }
720 body:             |
721   bb.0:
722     liveins: $r0, $r1
724     %0(s32) = COPY $r0
725     %1(s32) = COPY $r1
726     %2(s1) = G_ICMP intpred(eq), %0(s32), %1
727     %3(s32) = G_ZEXT %2(s1)
728     $r0 = COPY %3(s32)
729     BX_RET 14, $noreg, implicit $r0
733 name:            test_fcmp_one_s32
734 # CHECK-LABEL: name: test_fcmp_one_s32
735 legalized:       true
736 regBankSelected: false
737 selected:        false
738 # CHECK: registers:
739 # CHECK: - { id: 0, class: fprb, preferred-register: '' }
740 # CHECK: - { id: 1, class: fprb, preferred-register: '' }
741 # CHECK: - { id: 2, class: gprb, preferred-register: '' }
742 # CHECK: - { id: 3, class: gprb, preferred-register: '' }
744 registers:
745   - { id: 0, class: _ }
746   - { id: 1, class: _ }
747   - { id: 2, class: _ }
748   - { id: 3, class: _ }
749 body:             |
750   bb.0:
751     liveins: $s0, $s1
753     %0(s32) = COPY $s0
754     %1(s32) = COPY $s1
755     %2(s1) = G_FCMP floatpred(one), %0(s32), %1
756     %3(s32) = G_ZEXT %2(s1)
757     $r0 = COPY %3(s32)
758     BX_RET 14, $noreg, implicit $r0
762 name:            test_fcmp_ugt_s64
763 # CHECK-LABEL: name: test_fcmp_ugt_s64
764 legalized:       true
765 regBankSelected: false
766 selected:        false
767 # CHECK: registers:
768 # CHECK: - { id: 0, class: fprb, preferred-register: '' }
769 # CHECK: - { id: 1, class: fprb, preferred-register: '' }
770 # CHECK: - { id: 2, class: gprb, preferred-register: '' }
771 # CHECK: - { id: 3, class: gprb, preferred-register: '' }
773 registers:
774   - { id: 0, class: _ }
775   - { id: 1, class: _ }
776   - { id: 2, class: _ }
777   - { id: 3, class: _ }
778 body:             |
779   bb.0:
780     liveins: $d0, $d1
782     %0(s64) = COPY $d0
783     %1(s64) = COPY $d1
784     %2(s1) = G_FCMP floatpred(ugt), %0(s64), %1
785     %3(s32) = G_ZEXT %2(s1)
786     $r0 = COPY %3(s32)
787     BX_RET 14, $noreg, implicit $r0
791 name:            test_select_s32
792 # CHECK-LABEL: name: test_select_s32
793 legalized:       true
794 regBankSelected: false
795 selected:        false
796 # CHECK: registers:
797 # CHECK: - { id: 0, class: gprb, preferred-register: '' }
798 # CHECK: - { id: 1, class: gprb, preferred-register: '' }
799 # CHECK: - { id: 2, class: gprb, preferred-register: '' }
800 # CHECK: - { id: 3, class: gprb, preferred-register: '' }
801 # CHECK: - { id: 4, class: gprb, preferred-register: '' }
803 registers:
804   - { id: 0, class: _ }
805   - { id: 1, class: _ }
806   - { id: 2, class: _ }
807   - { id: 3, class: _ }
808   - { id: 4, class: _ }
809 body:             |
810   bb.0:
811     liveins: $r0, $r1, $r2
813     %0(s32) = COPY $r0
814     %1(s32) = COPY $r1
815     %2(s32) = COPY $r2
816     %3(s1) = G_TRUNC %2(s32)
817     %4(s32) = G_SELECT %3(s1), %0, %1
818     $r0 = COPY %4(s32)
819     BX_RET 14, $noreg, implicit $r0
823 name:            test_br
824 # CHECK-LABEL: name: test_br
825 legalized:       true
826 regBankSelected: false
827 # CHECK: regBankSelected: true
828 selected:        false
829 registers:
830   - { id: 0, class: _ }
831   - { id: 1, class: _ }
832 # CHECK: { id: 0, class: gprb, preferred-register: '' }
833 # CHECK: { id: 1, class: gprb, preferred-register: '' }
834 # Check that we map the condition of the G_BRCOND into the GPR.
835 # For the G_BR, there are no registers to map, but make sure we don't crash.
836 body:             |
837   bb.0:
838     successors: %bb.1(0x40000000), %bb.2(0x40000000)
839     liveins: $r0
841     %0(s32) = COPY $r0
842     %1(s1) = G_TRUNC %0(s32)
843     G_BRCOND %1(s1), %bb.1
844     G_BR %bb.2
846   bb.1:
847     BX_RET 14, $noreg
849   bb.2:
850     BX_RET 14, $noreg
854 name:            test_phi_s32
855 # CHECK-LABEL: name: test_phi_s32
856 legalized:       true
857 regBankSelected: false
858 # CHECK: regBankSelected: true
859 selected:        false
860 tracksRegLiveness: true
861 registers:
862   - { id: 0, class: _ }
863   - { id: 1, class: _ }
864   - { id: 2, class: _ }
865   - { id: 3, class: _ }
866   - { id: 4, class: _ }
867 # CHECK: { id: 0, class: gprb, preferred-register: '' }
868 # CHECK: { id: 1, class: gprb, preferred-register: '' }
869 # CHECK: { id: 2, class: gprb, preferred-register: '' }
870 # CHECK: { id: 3, class: gprb, preferred-register: '' }
871 # CHECK: { id: 4, class: gprb, preferred-register: '' }
872 body:             |
873   bb.0:
874     successors: %bb.1(0x40000000), %bb.2(0x40000000)
875     liveins: $r0, $r1, $r2
877     %0(s32) = COPY $r0
878     %1(s1) = G_TRUNC %0(s32)
880     %2(s32) = COPY $r1
881     %3(s32) = COPY $r2
883     G_BRCOND %1(s1), %bb.1
884     G_BR %bb.2
886   bb.1:
887     successors: %bb.2(0x80000000)
889   bb.2:
890     %4(s32) = G_PHI %2(s32), %bb.0, %3(s32), %bb.1
891     $r0 = COPY %4(s32)
892     BX_RET 14, $noreg, implicit $r0
895 name:            test_phi_s64
896 # CHECK-LABEL: name: test_phi_s64
897 legalized:       true
898 regBankSelected: false
899 # CHECK: regBankSelected: true
900 selected:        false
901 tracksRegLiveness: true
902 registers:
903   - { id: 0, class: _ }
904   - { id: 1, class: _ }
905   - { id: 2, class: _ }
906   - { id: 3, class: _ }
907   - { id: 4, class: _ }
908 # CHECK: { id: 0, class: gprb, preferred-register: '' }
909 # CHECK: { id: 1, class: gprb, preferred-register: '' }
910 # CHECK: { id: 2, class: fprb, preferred-register: '' }
911 # CHECK: { id: 3, class: fprb, preferred-register: '' }
912 # CHECK: { id: 4, class: fprb, preferred-register: '' }
913 body:             |
914   bb.0:
915     successors: %bb.1(0x40000000), %bb.2(0x40000000)
916     liveins: $r0, $d0, $d1
918     %0(s32) = COPY $r0
919     %1(s1) = G_TRUNC %0(s32)
921     %2(s64) = COPY $d0
922     %3(s64) = COPY $d1
924     G_BRCOND %1(s1), %bb.1
925     G_BR %bb.2
927   bb.1:
928     successors: %bb.2(0x80000000)
930   bb.2:
931     %4(s64) = G_PHI %2(s64), %bb.0, %3(s64), %bb.1
932     $d0 = COPY %4(s64)
933     BX_RET 14, $noreg, implicit $d0
936 name:            test_fadd_s32
937 # CHECK-LABEL: name: test_fadd_s32
938 legalized:       true
939 regBankSelected: false
940 selected:        false
941 # CHECK: registers:
942 # CHECK: - { id: 0, class: fprb, preferred-register: '' }
943 # CHECK: - { id: 1, class: fprb, preferred-register: '' }
944 # CHECK: - { id: 2, class: fprb, preferred-register: '' }
946 registers:
947   - { id: 0, class: _ }
948   - { id: 1, class: _ }
949   - { id: 2, class: _ }
950 body:             |
951   bb.0:
952     liveins: $s0, $s1
954     %0(s32) = COPY $s0
955     %1(s32) = COPY $s1
956     %2(s32) = G_FADD %0, %1
957     $s0 = COPY %2(s32)
958     BX_RET 14, $noreg, implicit $s0
962 name:            test_fadd_s64
963 # CHECK-LABEL: name: test_fadd_s64
964 legalized:       true
965 regBankSelected: false
966 selected:        false
967 # CHECK: registers:
968 # CHECK: - { id: 0, class: fprb, preferred-register: '' }
969 # CHECK: - { id: 1, class: fprb, preferred-register: '' }
970 # CHECK: - { id: 2, class: fprb, preferred-register: '' }
972 registers:
973   - { id: 0, class: _ }
974   - { id: 1, class: _ }
975   - { id: 2, class: _ }
976 body:             |
977   bb.0:
978     liveins: $d0, $d1
980     %0(s64) = COPY $d0
981     %1(s64) = COPY $d1
982     %2(s64) = G_FADD %0, %1
983     $d0 = COPY %2(s64)
984     BX_RET 14, $noreg, implicit $d0
988 name:            test_fsub_s32
989 # CHECK-LABEL: name: test_fsub_s32
990 legalized:       true
991 regBankSelected: false
992 selected:        false
993 # CHECK: registers:
994 # CHECK: - { id: 0, class: fprb, preferred-register: '' }
995 # CHECK: - { id: 1, class: fprb, preferred-register: '' }
996 # CHECK: - { id: 2, class: fprb, preferred-register: '' }
998 registers:
999   - { id: 0, class: _ }
1000   - { id: 1, class: _ }
1001   - { id: 2, class: _ }
1002 body:             |
1003   bb.0:
1004     liveins: $s0, $s1
1006     %0(s32) = COPY $s0
1007     %1(s32) = COPY $s1
1008     %2(s32) = G_FSUB %0, %1
1009     $s0 = COPY %2(s32)
1010     BX_RET 14, $noreg, implicit $s0
1014 name:            test_fsub_s64
1015 # CHECK-LABEL: name: test_fsub_s64
1016 legalized:       true
1017 regBankSelected: false
1018 selected:        false
1019 # CHECK: registers:
1020 # CHECK: - { id: 0, class: fprb, preferred-register: '' }
1021 # CHECK: - { id: 1, class: fprb, preferred-register: '' }
1022 # CHECK: - { id: 2, class: fprb, preferred-register: '' }
1024 registers:
1025   - { id: 0, class: _ }
1026   - { id: 1, class: _ }
1027   - { id: 2, class: _ }
1028 body:             |
1029   bb.0:
1030     liveins: $d0, $d1
1032     %0(s64) = COPY $d0
1033     %1(s64) = COPY $d1
1034     %2(s64) = G_FSUB %0, %1
1035     $d0 = COPY %2(s64)
1036     BX_RET 14, $noreg, implicit $d0
1040 name:            test_fmul_s32
1041 # CHECK-LABEL: name: test_fmul_s32
1042 legalized:       true
1043 regBankSelected: false
1044 selected:        false
1045 # CHECK: registers:
1046 # CHECK: - { id: 0, class: fprb, preferred-register: '' }
1047 # CHECK: - { id: 1, class: fprb, preferred-register: '' }
1048 # CHECK: - { id: 2, class: fprb, preferred-register: '' }
1050 registers:
1051   - { id: 0, class: _ }
1052   - { id: 1, class: _ }
1053   - { id: 2, class: _ }
1054 body:             |
1055   bb.0:
1056     liveins: $s0, $s1
1058     %0(s32) = COPY $s0
1059     %1(s32) = COPY $s1
1060     %2(s32) = G_FMUL %0, %1
1061     $s0 = COPY %2(s32)
1062     BX_RET 14, $noreg, implicit $s0
1066 name:            test_fmul_s64
1067 # CHECK-LABEL: name: test_fmul_s64
1068 legalized:       true
1069 regBankSelected: false
1070 selected:        false
1071 # CHECK: registers:
1072 # CHECK: - { id: 0, class: fprb, preferred-register: '' }
1073 # CHECK: - { id: 1, class: fprb, preferred-register: '' }
1074 # CHECK: - { id: 2, class: fprb, preferred-register: '' }
1076 registers:
1077   - { id: 0, class: _ }
1078   - { id: 1, class: _ }
1079   - { id: 2, class: _ }
1080 body:             |
1081   bb.0:
1082     liveins: $d0, $d1
1084     %0(s64) = COPY $d0
1085     %1(s64) = COPY $d1
1086     %2(s64) = G_FMUL %0, %1
1087     $d0 = COPY %2(s64)
1088     BX_RET 14, $noreg, implicit $d0
1092 name:            test_fdiv_s32
1093 # CHECK-LABEL: name: test_fdiv_s32
1094 legalized:       true
1095 regBankSelected: false
1096 selected:        false
1097 # CHECK: registers:
1098 # CHECK: - { id: 0, class: fprb, preferred-register: '' }
1099 # CHECK: - { id: 1, class: fprb, preferred-register: '' }
1100 # CHECK: - { id: 2, class: fprb, preferred-register: '' }
1102 registers:
1103   - { id: 0, class: _ }
1104   - { id: 1, class: _ }
1105   - { id: 2, class: _ }
1106 body:             |
1107   bb.0:
1108     liveins: $s0, $s1
1110     %0(s32) = COPY $s0
1111     %1(s32) = COPY $s1
1112     %2(s32) = G_FDIV %0, %1
1113     $s0 = COPY %2(s32)
1114     BX_RET 14, $noreg, implicit $s0
1118 name:            test_fdiv_s64
1119 # CHECK-LABEL: name: test_fdiv_s64
1120 legalized:       true
1121 regBankSelected: false
1122 selected:        false
1123 # CHECK: registers:
1124 # CHECK: - { id: 0, class: fprb, preferred-register: '' }
1125 # CHECK: - { id: 1, class: fprb, preferred-register: '' }
1126 # CHECK: - { id: 2, class: fprb, preferred-register: '' }
1128 registers:
1129   - { id: 0, class: _ }
1130   - { id: 1, class: _ }
1131   - { id: 2, class: _ }
1132 body:             |
1133   bb.0:
1134     liveins: $d0, $d1
1136     %0(s64) = COPY $d0
1137     %1(s64) = COPY $d1
1138     %2(s64) = G_FDIV %0, %1
1139     $d0 = COPY %2(s64)
1140     BX_RET 14, $noreg, implicit $d0
1144 name:            test_fneg_s32
1145 # CHECK-LABEL: name: test_fneg_s32
1146 legalized:       true
1147 regBankSelected: false
1148 selected:        false
1149 # CHECK: registers:
1150 # CHECK: - { id: 0, class: fprb, preferred-register: '' }
1151 # CHECK: - { id: 1, class: fprb, preferred-register: '' }
1152 registers:
1153   - { id: 0, class: _ }
1154   - { id: 1, class: _ }
1155 body:             |
1156   bb.0:
1157     liveins: $s0
1159     %0(s32) = COPY $s0
1160     %1(s32) = G_FNEG %0
1161     $s0 = COPY %1(s32)
1162     BX_RET 14, $noreg, implicit $s0
1166 name:            test_fneg_s64
1167 # CHECK-LABEL: name: test_fneg_s64
1168 legalized:       true
1169 regBankSelected: false
1170 selected:        false
1171 # CHECK: registers:
1172 # CHECK: - { id: 0, class: fprb, preferred-register: '' }
1173 # CHECK: - { id: 1, class: fprb, preferred-register: '' }
1174 registers:
1175   - { id: 0, class: _ }
1176   - { id: 1, class: _ }
1177 body:             |
1178   bb.0:
1179     liveins: $d0
1181     %0(s64) = COPY $d0
1182     %1(s64) = G_FNEG %0
1183     $d0 = COPY %1(s64)
1184     BX_RET 14, $noreg, implicit $d0
1188 name:            test_fma_s32
1189 # CHECK-LABEL: name: test_fma_s32
1190 legalized:       true
1191 regBankSelected: false
1192 selected:        false
1193 # CHECK: registers:
1194 # CHECK: - { id: 0, class: fprb, preferred-register: '' }
1195 # CHECK: - { id: 1, class: fprb, preferred-register: '' }
1196 # CHECK: - { id: 2, class: fprb, preferred-register: '' }
1197 # CHECK: - { id: 3, class: fprb, preferred-register: '' }
1198 registers:
1199   - { id: 0, class: _ }
1200   - { id: 1, class: _ }
1201   - { id: 2, class: _ }
1202   - { id: 3, class: _ }
1203 body:             |
1204   bb.0:
1205     liveins: $s0, $s1, $s2
1207     %0(s32) = COPY $s0
1208     %1(s32) = COPY $s1
1209     %2(s32) = COPY $s2
1210     %3(s32) = G_FMA %0, %1, %2
1211     $s0 = COPY %3(s32)
1212     BX_RET 14, $noreg, implicit $s0
1215 name:            test_fma_s64
1216 # CHECK-LABEL: name: test_fma_s64
1217 legalized:       true
1218 regBankSelected: false
1219 selected:        false
1220 # CHECK: registers:
1221 # CHECK: - { id: 0, class: fprb, preferred-register: '' }
1222 # CHECK: - { id: 1, class: fprb, preferred-register: '' }
1223 # CHECK: - { id: 2, class: fprb, preferred-register: '' }
1224 # CHECK: - { id: 3, class: fprb, preferred-register: '' }
1225 registers:
1226   - { id: 0, class: _ }
1227   - { id: 1, class: _ }
1228   - { id: 2, class: _ }
1229   - { id: 3, class: _ }
1230 body:             |
1231   bb.0:
1232     liveins: $d0, $d1, $d2
1234     %0(s64) = COPY $d0
1235     %1(s64) = COPY $d1
1236     %2(s64) = COPY $d2
1237     %3(s64) = G_FMA %0, %1, %2
1238     $d0 = COPY %3(s64)
1239     BX_RET 14, $noreg, implicit $d0
1242 name:            test_fpext_s32_to_s64
1243 # CHECK-LABEL: name: test_fpext_s32_to_s64
1244 legalized:       true
1245 regBankSelected: false
1246 selected:        false
1247 # CHECK: registers:
1248 # CHECK: - { id: 0, class: fprb, preferred-register: '' }
1249 # CHECK: - { id: 1, class: fprb, preferred-register: '' }
1250 registers:
1251   - { id: 0, class: _ }
1252   - { id: 1, class: _ }
1253 body:             |
1254   bb.0:
1255     liveins: $s0
1257     %0(s32) = COPY $s0
1258     %1(s64) = G_FPEXT %0
1259     $d0 = COPY %1(s64)
1260     BX_RET 14, $noreg, implicit $d0
1263 name:            test_fptrunc_s64_to_s32
1264 # CHECK-LABEL: name: test_fptrunc_s64_to_s32
1265 legalized:       true
1266 regBankSelected: false
1267 selected:        false
1268 # CHECK: registers:
1269 # CHECK: - { id: 0, class: fprb, preferred-register: '' }
1270 # CHECK: - { id: 1, class: fprb, preferred-register: '' }
1271 registers:
1272   - { id: 0, class: _ }
1273   - { id: 1, class: _ }
1274 body:             |
1275   bb.0:
1276     liveins: $d0
1278     %0(s64) = COPY $d0
1279     %1(s32) = G_FPTRUNC %0
1280     $s0 = COPY %1(s32)
1281     BX_RET 14, $noreg, implicit $s0
1284 name:            test_fpconst_s32
1285 # CHECK-LABEL: name: test_fpconst_s32
1286 legalized:       true
1287 regBankSelected: false
1288 selected:        false
1289 # CHECK: registers:
1290 # CHECK: - { id: 0, class: fprb, preferred-register: '' }
1291 registers:
1292   - { id: 0, class: _ }
1293 body:             |
1294   bb.0:
1295     liveins:
1297     %0(s32) = G_FCONSTANT float -1.25
1298     $s0 = COPY %0(s32)
1299     BX_RET 14, $noreg, implicit $s0
1302 name:            test_fpconst_s64
1303 # CHECK-LABEL: name: test_fpconst_s64
1304 legalized:       true
1305 regBankSelected: false
1306 selected:        false
1307 # CHECK: registers:
1308 # CHECK: - { id: 0, class: fprb, preferred-register: '' }
1309 registers:
1310   - { id: 0, class: _ }
1311 body:             |
1312   bb.0:
1313     liveins:
1315     %0(s64) = G_FCONSTANT double -2.4
1316     $d0 = COPY %0(s64)
1317     BX_RET 14, $noreg, implicit $d0
1320 name:            test_fptosi_s32
1321 # CHECK-LABEL: name: test_fptosi_s32
1322 legalized:       true
1323 regBankSelected: false
1324 selected:        false
1325 # CHECK: registers:
1326 # CHECK: - { id: 0, class: fprb, preferred-register: '' }
1327 # CHECK: - { id: 1, class: gprb, preferred-register: '' }
1328 registers:
1329   - { id: 0, class: _ }
1330   - { id: 1, class: _ }
1331 body:             |
1332   bb.0:
1333     liveins: $s0
1335     %0(s32) = COPY $s0
1336     %1(s32) = G_FPTOSI %0
1337     $r0 = COPY %1(s32)
1338     BX_RET 14, $noreg, implicit $r0
1342 name:            test_fptosi_s64
1343 # CHECK-LABEL: name: test_fptosi_s64
1344 legalized:       true
1345 regBankSelected: false
1346 selected:        false
1347 # CHECK: registers:
1348 # CHECK: - { id: 0, class: fprb, preferred-register: '' }
1349 # CHECK: - { id: 1, class: gprb, preferred-register: '' }
1350 registers:
1351   - { id: 0, class: _ }
1352   - { id: 1, class: _ }
1353 body:             |
1354   bb.0:
1355     liveins: $d0
1357     %0(s64) = COPY $d0
1358     %1(s32) = G_FPTOSI %0
1359     $r0 = COPY %1(s32)
1360     BX_RET 14, $noreg, implicit $r0
1363 name:            test_fptoui_s32
1364 # CHECK-LABEL: name: test_fptoui_s32
1365 legalized:       true
1366 regBankSelected: false
1367 selected:        false
1368 # CHECK: registers:
1369 # CHECK: - { id: 0, class: fprb, preferred-register: '' }
1370 # CHECK: - { id: 1, class: gprb, preferred-register: '' }
1371 registers:
1372   - { id: 0, class: _ }
1373   - { id: 1, class: _ }
1374 body:             |
1375   bb.0:
1376     liveins: $s0
1378     %0(s32) = COPY $s0
1379     %1(s32) = G_FPTOUI %0
1380     $r0 = COPY %1(s32)
1381     BX_RET 14, $noreg, implicit $r0
1385 name:            test_fptoui_s64
1386 # CHECK-LABEL: name: test_fptoui_s64
1387 legalized:       true
1388 regBankSelected: false
1389 selected:        false
1390 # CHECK: registers:
1391 # CHECK: - { id: 0, class: fprb, preferred-register: '' }
1392 # CHECK: - { id: 1, class: gprb, preferred-register: '' }
1393 registers:
1394   - { id: 0, class: _ }
1395   - { id: 1, class: _ }
1396 body:             |
1397   bb.0:
1398     liveins: $d0
1400     %0(s64) = COPY $d0
1401     %1(s32) = G_FPTOUI %0
1402     $r0 = COPY %1(s32)
1403     BX_RET 14, $noreg, implicit $r0
1406 name:            test_sitofp_s32
1407 # CHECK-LABEL: name: test_sitofp_s32
1408 legalized:       true
1409 regBankSelected: false
1410 selected:        false
1411 # CHECK: registers:
1412 # CHECK: - { id: 0, class: gprb, preferred-register: '' }
1413 # CHECK: - { id: 1, class: fprb, preferred-register: '' }
1414 registers:
1415   - { id: 0, class: _ }
1416   - { id: 1, class: _ }
1417 body:             |
1418   bb.0:
1419     liveins: $r0
1421     %0(s32) = COPY $r0
1422     %1(s32) = G_SITOFP %0
1423     $s0 = COPY %1(s32)
1424     BX_RET 14, $noreg, implicit $s0
1428 name:            test_sitofp_s64
1429 # CHECK-LABEL: name: test_sitofp_s64
1430 legalized:       true
1431 regBankSelected: false
1432 selected:        false
1433 # CHECK: registers:
1434 # CHECK: - { id: 0, class: gprb, preferred-register: '' }
1435 # CHECK: - { id: 1, class: fprb, preferred-register: '' }
1436 registers:
1437   - { id: 0, class: _ }
1438   - { id: 1, class: _ }
1439 body:             |
1440   bb.0:
1441     liveins: $r0
1443     %0(s32) = COPY $r0
1444     %1(s64) = G_SITOFP %0
1445     $d0 = COPY %1(s64)
1446     BX_RET 14, $noreg, implicit $d0
1449 name:            test_uitofp_s32
1450 # CHECK-LABEL: name: test_uitofp_s32
1451 legalized:       true
1452 regBankSelected: false
1453 selected:        false
1454 # CHECK: registers:
1455 # CHECK: - { id: 0, class: gprb, preferred-register: '' }
1456 # CHECK: - { id: 1, class: fprb, preferred-register: '' }
1457 registers:
1458   - { id: 0, class: _ }
1459   - { id: 1, class: _ }
1460 body:             |
1461   bb.0:
1462     liveins: $r0
1464     %0(s32) = COPY $r0
1465     %1(s32) = G_UITOFP %0
1466     $s0 = COPY %1(s32)
1467     BX_RET 14, $noreg, implicit $s0
1471 name:            test_uitofp_s64
1472 # CHECK-LABEL: name: test_uitofp_s64
1473 legalized:       true
1474 regBankSelected: false
1475 selected:        false
1476 # CHECK: registers:
1477 # CHECK: - { id: 0, class: gprb, preferred-register: '' }
1478 # CHECK: - { id: 1, class: fprb, preferred-register: '' }
1479 registers:
1480   - { id: 0, class: _ }
1481   - { id: 1, class: _ }
1482 body:             |
1483   bb.0:
1484     liveins: $r0
1486     %0(s32) = COPY $r0
1487     %1(s64) = G_UITOFP %0
1488     $d0 = COPY %1(s64)
1489     BX_RET 14, $noreg, implicit $d0
1492 name:            test_soft_fp_s64
1493 # CHECK-LABEL: name: test_soft_fp_s64
1494 legalized:       true
1495 regBankSelected: false
1496 selected:        false
1497 # CHECK: registers:
1498 # CHECK: - { id: 0, class: gprb, preferred-register: '' }
1499 # CHECK: - { id: 1, class: gprb, preferred-register: '' }
1500 # CHECK: - { id: 2, class: fprb, preferred-register: '' }
1501 # CHECK: - { id: 3, class: gprb, preferred-register: '' }
1502 # CHECK: - { id: 4, class: gprb, preferred-register: '' }
1504 registers:
1505   - { id: 0, class: _ }
1506   - { id: 1, class: _ }
1507   - { id: 2, class: _ }
1508   - { id: 3, class: _ }
1509   - { id: 4, class: _ }
1510 body:             |
1511   bb.0:
1512     liveins: $r0, $r1
1514     %0(s32) = COPY $r0
1515     %1(s32) = COPY $r1
1516     %2(s64) = G_MERGE_VALUES %0(s32), %1(s32)
1517     %3(s32), %4(s32) = G_UNMERGE_VALUES %2(s64)
1518     $r0 = COPY %3(s32)
1519     $r1 = COPY %4(s32)
1520     BX_RET 14, $noreg, implicit $r0, implicit $r1
1524 name:            test_dbg_value
1525 # CHECK-LABEL: name: test_dbg_value
1526 legalized:       true
1527 regBankSelected: false
1528 selected:        false
1530 registers:
1531   - { id: 0, class: _ }
1532   - { id: 1, class: _ }
1533   - { id: 2, class: _ }
1534   - { id: 3, class: _ }
1535   - { id: 4, class: _ }
1536   - { id: 5, class: _ }
1537 body:             |
1538   bb.0:
1539     liveins: $r0, $s1, $d2
1541     %0(s32) = COPY $r0
1543     ; CHECK: {{%[0-9]+}}:gprb(s32) = G_ADD
1544     %1(s32) = G_ADD %0, %0
1546     ; CHECK: DBG_VALUE {{%[0-9]+}}(s32), $noreg
1547     DBG_VALUE %1(s32), $noreg, !7, !DIExpression(), debug-location !9
1549     $r0 = COPY %1(s32)
1551     %2(s32) = COPY $s1
1553     ; CHECK: {{%[0-9]+}}:fprb(s32) = G_FADD
1554     %3(s32) = G_FADD %2, %2
1556     ; CHECK: DBG_VALUE {{%[0-9]+}}(s32), $noreg
1557     DBG_VALUE %3(s32), $noreg, !7, !DIExpression(), debug-location !9
1559     $s1 = COPY %3(s32)
1561     %4(s64) = COPY $d2
1563     ; CHECK: {{%[0-9]+}}:fprb(s64) = G_FADD
1564     %5(s64) = G_FADD %4, %4
1566     ; CHECK: DBG_VALUE {{%[0-9]+}}(s64), $noreg
1567     DBG_VALUE %5(s64), $noreg, !7, !DIExpression(), debug-location !9
1569     $d2 = COPY %5(s64)
1571     ; CHECK: DBG_VALUE i32 42, 0
1572     DBG_VALUE i32 42, 0, !7, !DIExpression(), debug-location !9
1574     ; CHECK: DBG_VALUE float 1.000000e+00, 0
1575     DBG_VALUE float 1.000000e+00, 0, !7, !DIExpression(), debug-location !9
1577     ; CHECK: DBG_VALUE $noreg, 0
1578     DBG_VALUE $noreg, 0, !7, !DIExpression(), debug-location !9
1580     $d2 = COPY %5(s64)
1581     BX_RET 14, $noreg, implicit $r0, implicit $s1, implicit $d2