[ARM] Adjust how NEON shifts are lowered
[llvm-core.git] / test / CodeGen / ARM / GlobalISel / arm-regbankselect.mir
blob5aadc44f9579453791c5f90a0a714ca3a35399c3
1 # RUN: llc -mtriple arm-- -run-pass=regbankselect %s -o - | FileCheck %s
2 # RUN: llc -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: gprb, preferred-register: '' }
404 # CHECK: - { id: 6, class: fprb, preferred-register: '' }
406 registers:
407   - { id: 0, class: _ }
408   - { id: 1, class: _ }
409   - { id: 2, class: _ }
410   - { id: 3, class: _ }
411   - { id: 4, class: _ }
412   - { id: 5, class: _ }
413   - { id: 6, class: _ }
414 body:             |
415   bb.0:
416     liveins: $r0
417     %0(p0) = COPY $r0
418     %6(s64) = G_LOAD %0 :: (load 8)
419     %1(s32) = G_LOAD %0 :: (load 4)
420     %2(s16) = G_LOAD %0 :: (load 2)
421     %3(s8)  = G_LOAD %0 :: (load 1)
422     %4(s1)  = G_LOAD %0 :: (load 1)
423     %5(p0)  = G_LOAD %0 :: (load 4)
424     BX_RET 14, $noreg, implicit $r0
428 name:            test_stores
429 # CHECK-LABEL: name: test_stores
430 legalized:       true
431 regBankSelected: false
432 selected:        false
433 # CHECK: registers:
434 # CHECK: - { id: 0, class: gprb, preferred-register: '' }
435 # CHECK: - { id: 1, class: gprb, preferred-register: '' }
436 # CHECK: - { id: 2, class: gprb, preferred-register: '' }
437 # CHECK: - { id: 3, class: gprb, preferred-register: '' }
438 # CHECK: - { id: 4, class: gprb, preferred-register: '' }
439 # CHECK: - { id: 5, class: gprb, preferred-register: '' }
440 # CHECK: - { id: 6, class: fprb, preferred-register: '' }
442 registers:
443   - { id: 0, class: _ }
444   - { id: 1, class: _ }
445   - { id: 2, class: _ }
446   - { id: 3, class: _ }
447   - { id: 4, class: _ }
448   - { id: 5, class: _ }
449   - { id: 6, class: _ }
450 body:             |
451   bb.0:
452     liveins: $r0, $r1, $r5, $d6
453     %0(p0) = COPY $r0
454     %1(s32) = COPY $r1
455     G_STORE %1(s32), %0 :: (store 4)
456     %2(s16) = G_TRUNC %1(s32)
457     G_STORE %2(s16), %0 :: (store 2)
458     %3(s8) = G_TRUNC %1(s32)
459     G_STORE %3(s8), %0 :: (store 1)
460     %4(s1) = G_TRUNC %1(s32)
461     G_STORE %4(s1), %0 :: (store 1)
462     %5(p0) = COPY $r5
463     G_STORE %5(p0), %0 :: (store 4)
464     %6(s64) = COPY $d6
465     G_STORE %6(s64), %0 :: (store 8)
466     BX_RET 14, $noreg, implicit $r0
470 name:            test_stack
471 # CHECK-LABEL: name: test_stack
472 legalized:       true
473 regBankSelected: false
474 selected:        false
475 # CHECK: registers:
476 # CHECK: - { id: 0, class: gprb, preferred-register: '' }
477 # CHECK: - { id: 1, class: gprb, preferred-register: '' }
478 # CHECK: - { id: 2, class: gprb, preferred-register: '' }
479 # CHECK: - { id: 3, class: gprb, preferred-register: '' }
480 # CHECK: - { id: 4, class: gprb, preferred-register: '' }
481 registers:
482   - { id: 0, class: _ }
483   - { id: 1, class: _ }
484   - { id: 2, class: _ }
485   - { id: 3, class: _ }
486   - { id: 4, class: _ }
487 fixedStack:
488   - { id: 0, offset: 0, size: 4, alignment: 4, isImmutable: true, isAliased: false }
489 body:             |
490   bb.0:
491     %0(p0) = G_FRAME_INDEX %fixed-stack.0
492     %1(s32) = G_LOAD %0(p0) :: (load 4 from %fixed-stack.0, align 4)
494     %2(p0) = COPY $sp
495     %3(s32) = G_CONSTANT i32 8
496     %4(p0) = G_GEP %2, %3(s32)
497     G_STORE %1(s32), %4(p0) :: (store 4)
499     BX_RET 14, $noreg
503 name:            test_gep
504 # CHECK-LABEL: name: test_gep
505 legalized:       true
506 regBankSelected: false
507 selected:        false
508 # CHECK: registers:
509 # CHECK: - { id: 0, class: gprb, preferred-register: '' }
510 # CHECK: - { id: 1, class: gprb, preferred-register: '' }
511 # CHECK: - { id: 2, class: gprb, preferred-register: '' }
513 registers:
514   - { id: 0, class: _ }
515   - { id: 1, class: _ }
516   - { id: 2, class: _ }
517 body:             |
518   bb.0:
519     liveins: $r0, $r1
521     %0(p0) = COPY $r0
522     %1(s32) = COPY $r1
523     %2(p0) = G_GEP %0, %1(s32)
524     $r0 = COPY %2(p0)
525     BX_RET 14, $noreg, implicit $r0
528 name:            test_constants
529 # CHECK-LABEL: name: test_constants
530 legalized:       true
531 regBankSelected: false
532 selected:        false
533 # CHECK: registers:
534 # CHECK: - { id: 0, class: gprb, preferred-register: '' }
535 registers:
536   - { id: 0, class: _ }
537 body:             |
538   bb.0:
539     %0(s32) = G_CONSTANT i32 42
540     $r0 = COPY %0(s32)
541     BX_RET 14, $noreg, implicit $r0
544 name:            test_inttoptr_s32
545 # CHECK-LABEL: name: test_inttoptr_s32
546 legalized:       true
547 regBankSelected: false
548 selected:        false
549 # CHECK: registers:
550 # CHECK: - { id: 0, class: gprb, preferred-register: '' }
551 # CHECK: - { id: 1, class: gprb, preferred-register: '' }
552 registers:
553   - { id: 0, class: _ }
554   - { id: 1, class: _ }
555 body:             |
556   bb.0:
557     %0(s32) = COPY $r0
558     %1(p0) = G_INTTOPTR %0(s32)
559     $r0 = COPY %1(p0)
560     BX_RET 14, $noreg, implicit $r0
563 name:            test_ptrtoint_s32
564 # CHECK-LABEL: name: test_ptrtoint_s32
565 legalized:       true
566 regBankSelected: false
567 selected:        false
568 # CHECK: registers:
569 # CHECK: - { id: 0, class: gprb, preferred-register: '' }
570 # CHECK: - { id: 1, class: gprb, preferred-register: '' }
571 registers:
572   - { id: 0, class: _ }
573   - { id: 1, class: _ }
574 body:             |
575   bb.0:
576     %0(p0) = COPY $r0
577     %1(s32) = G_PTRTOINT %0(p0)
578     $r0 = COPY %1(s32)
579     BX_RET 14, $noreg, implicit $r0
582 name:            test_ctlz_s32
583 # CHECK-LABEL: name: test_ctlz_s32
584 legalized:       true
585 regBankSelected: false
586 selected:        false
587 # CHECK: registers:
588 # CHECK: - { id: 0, class: gprb, preferred-register: '' }
589 # CHECK: - { id: 1, class: gprb, preferred-register: '' }
590 registers:
591   - { id: 0, class: _ }
592   - { id: 1, class: _ }
593 body:             |
594   bb.0:
595     %0(s32) = COPY $r0
596     %1(s32) = G_CTLZ %0(s32)
597     $r0 = COPY %1(s32)
598     BX_RET 14, $noreg, implicit $r0
601 name:            test_globals
602 # CHECK-LABEL: name: test_globals
603 legalized:       true
604 regBankSelected: false
605 selected:        false
606 # CHECK: registers:
607 # CHECK: - { id: 0, class: gprb, preferred-register: '' }
608 registers:
609   - { id: 0, class: _ }
610 body:             |
611   bb.0:
612     %0(p0) = G_GLOBAL_VALUE @a_global
613     $r0 = COPY %0(p0)
614     BX_RET 14, $noreg, implicit $r0
617 name:            test_anyext_s8_32
618 # CHECK-LABEL: name: test_anyext_s8_32
619 legalized:       true
620 regBankSelected: false
621 selected:        false
622 # CHECK: registers:
623 # CHECK: - { id: 0, class: gprb, preferred-register: '' }
624 # CHECK: - { id: 1, class: gprb, preferred-register: '' }
625 # CHECK: - { id: 2, class: gprb, preferred-register: '' }
626 registers:
627   - { id: 0, class: _ }
628   - { id: 1, class: _ }
629   - { id: 2, class: _ }
630 body:             |
631   bb.0:
632     liveins: $r0
634     %0(s32) = COPY $r0
635     %1(s8) = G_TRUNC %0(s32)
636     %2(s32) = G_ANYEXT %1(s8)
637     $r0 = COPY %2(s32)
638     BX_RET 14, $noreg, implicit $r0
641 name:            test_anyext_s16_32
642 # CHECK-LABEL: name: test_anyext_s16_32
643 legalized:       true
644 regBankSelected: false
645 selected:        false
646 # CHECK: registers:
647 # CHECK: - { id: 0, class: gprb, preferred-register: '' }
648 # CHECK: - { id: 1, class: gprb, preferred-register: '' }
649 # CHECK: - { id: 2, class: gprb, preferred-register: '' }
650 registers:
651   - { id: 0, class: _ }
652   - { id: 1, class: _ }
653   - { id: 2, class: _ }
654 body:             |
655   bb.0:
656     liveins: $r0
658     %0(s32) = COPY $r0
659     %1(s16) = G_TRUNC %0(s32)
660     %2(s32) = G_ANYEXT %1(s16)
661     $r0 = COPY %2(s32)
662     BX_RET 14, $noreg, implicit $r0
665 name:            test_trunc_s32_16
666 # CHECK-LABEL: name: test_trunc_s32_16
667 legalized:       true
668 regBankSelected: false
669 selected:        false
670 # CHECK: registers:
671 # CHECK: - { id: 0, class: gprb, preferred-register: '' }
672 # CHECK: - { id: 1, class: gprb, preferred-register: '' }
673 # CHECK: - { id: 2, class: gprb, preferred-register: '' }
674 registers:
675   - { id: 0, class: _ }
676   - { id: 1, class: _ }
677   - { id: 2, class: _ }
678 body:             |
679   bb.0:
680     liveins: $r0, $r1
682     %0(s32) = COPY $r0
683     %2(p0) = COPY $r1
684     %1(s16) = G_TRUNC %0(s32)
685     G_STORE %1(s16), %2 :: (store 2)
686     BX_RET 14, $noreg
689 name:            test_trunc_s64_32
690 # CHECK-LABEL: name: test_trunc_s64_32
691 legalized:       true
692 regBankSelected: false
693 selected:        false
694 # CHECK: registers:
695 # CHECK: - { id: 0, class: fprb, preferred-register: '' }
696 # CHECK: - { id: 1, class: gprb, preferred-register: '' }
697 # CHECK: - { id: 2, class: gprb, preferred-register: '' }
698 registers:
699   - { id: 0, class: _ }
700   - { id: 1, class: _ }
701   - { id: 2, class: _ }
702 body:             |
703   bb.0:
704     liveins: $r0, $d0
706     %0(s64) = COPY $d0
707     %2(p0) = COPY $r0
708     %1(s32) = G_TRUNC %0(s64)
709     G_STORE %1(s32), %2 :: (store 4)
710     BX_RET 14, $noreg
713 name:            test_icmp_eq_s32
714 # CHECK-LABEL: name: test_icmp_eq_s32
715 legalized:       true
716 regBankSelected: false
717 selected:        false
718 # CHECK: registers:
719 # CHECK: - { id: 0, class: gprb, preferred-register: '' }
720 # CHECK: - { id: 1, class: gprb, preferred-register: '' }
721 # CHECK: - { id: 2, class: gprb, preferred-register: '' }
722 # CHECK: - { id: 3, class: gprb, preferred-register: '' }
724 registers:
725   - { id: 0, class: _ }
726   - { id: 1, class: _ }
727   - { id: 2, class: _ }
728   - { id: 3, class: _ }
729 body:             |
730   bb.0:
731     liveins: $r0, $r1
733     %0(s32) = COPY $r0
734     %1(s32) = COPY $r1
735     %2(s1) = G_ICMP intpred(eq), %0(s32), %1
736     %3(s32) = G_ZEXT %2(s1)
737     $r0 = COPY %3(s32)
738     BX_RET 14, $noreg, implicit $r0
742 name:            test_fcmp_one_s32
743 # CHECK-LABEL: name: test_fcmp_one_s32
744 legalized:       true
745 regBankSelected: false
746 selected:        false
747 # CHECK: registers:
748 # CHECK: - { id: 0, class: fprb, preferred-register: '' }
749 # CHECK: - { id: 1, class: fprb, preferred-register: '' }
750 # CHECK: - { id: 2, class: gprb, preferred-register: '' }
751 # CHECK: - { id: 3, class: gprb, preferred-register: '' }
753 registers:
754   - { id: 0, class: _ }
755   - { id: 1, class: _ }
756   - { id: 2, class: _ }
757   - { id: 3, class: _ }
758 body:             |
759   bb.0:
760     liveins: $s0, $s1
762     %0(s32) = COPY $s0
763     %1(s32) = COPY $s1
764     %2(s1) = G_FCMP floatpred(one), %0(s32), %1
765     %3(s32) = G_ZEXT %2(s1)
766     $r0 = COPY %3(s32)
767     BX_RET 14, $noreg, implicit $r0
771 name:            test_fcmp_ugt_s64
772 # CHECK-LABEL: name: test_fcmp_ugt_s64
773 legalized:       true
774 regBankSelected: false
775 selected:        false
776 # CHECK: registers:
777 # CHECK: - { id: 0, class: fprb, preferred-register: '' }
778 # CHECK: - { id: 1, class: fprb, preferred-register: '' }
779 # CHECK: - { id: 2, class: gprb, preferred-register: '' }
780 # CHECK: - { id: 3, class: gprb, preferred-register: '' }
782 registers:
783   - { id: 0, class: _ }
784   - { id: 1, class: _ }
785   - { id: 2, class: _ }
786   - { id: 3, class: _ }
787 body:             |
788   bb.0:
789     liveins: $d0, $d1
791     %0(s64) = COPY $d0
792     %1(s64) = COPY $d1
793     %2(s1) = G_FCMP floatpred(ugt), %0(s64), %1
794     %3(s32) = G_ZEXT %2(s1)
795     $r0 = COPY %3(s32)
796     BX_RET 14, $noreg, implicit $r0
800 name:            test_select_s32
801 # CHECK-LABEL: name: test_select_s32
802 legalized:       true
803 regBankSelected: false
804 selected:        false
805 # CHECK: registers:
806 # CHECK: - { id: 0, class: gprb, preferred-register: '' }
807 # CHECK: - { id: 1, class: gprb, preferred-register: '' }
808 # CHECK: - { id: 2, class: gprb, preferred-register: '' }
809 # CHECK: - { id: 3, class: gprb, preferred-register: '' }
810 # CHECK: - { id: 4, class: gprb, preferred-register: '' }
812 registers:
813   - { id: 0, class: _ }
814   - { id: 1, class: _ }
815   - { id: 2, class: _ }
816   - { id: 3, class: _ }
817   - { id: 4, class: _ }
818 body:             |
819   bb.0:
820     liveins: $r0, $r1, $r2
822     %0(s32) = COPY $r0
823     %1(s32) = COPY $r1
824     %2(s32) = COPY $r2
825     %3(s1) = G_TRUNC %2(s32)
826     %4(s32) = G_SELECT %3(s1), %0, %1
827     $r0 = COPY %4(s32)
828     BX_RET 14, $noreg, implicit $r0
832 name:            test_br
833 # CHECK-LABEL: name: test_br
834 legalized:       true
835 regBankSelected: false
836 # CHECK: regBankSelected: true
837 selected:        false
838 registers:
839   - { id: 0, class: _ }
840   - { id: 1, class: _ }
841 # CHECK: { id: 0, class: gprb, preferred-register: '' }
842 # CHECK: { id: 1, class: gprb, preferred-register: '' }
843 # Check that we map the condition of the G_BRCOND into the GPR.
844 # For the G_BR, there are no registers to map, but make sure we don't crash.
845 body:             |
846   bb.0:
847     successors: %bb.1(0x40000000), %bb.2(0x40000000)
848     liveins: $r0
850     %0(s32) = COPY $r0
851     %1(s1) = G_TRUNC %0(s32)
852     G_BRCOND %1(s1), %bb.1
853     G_BR %bb.2
855   bb.1:
856     BX_RET 14, $noreg
858   bb.2:
859     BX_RET 14, $noreg
863 name:            test_phi_s32
864 # CHECK-LABEL: name: test_phi_s32
865 legalized:       true
866 regBankSelected: false
867 # CHECK: regBankSelected: true
868 selected:        false
869 tracksRegLiveness: true
870 registers:
871   - { id: 0, class: _ }
872   - { id: 1, class: _ }
873   - { id: 2, class: _ }
874   - { id: 3, class: _ }
875   - { id: 4, class: _ }
876 # CHECK: { id: 0, class: gprb, preferred-register: '' }
877 # CHECK: { id: 1, class: gprb, preferred-register: '' }
878 # CHECK: { id: 2, class: gprb, preferred-register: '' }
879 # CHECK: { id: 3, class: gprb, preferred-register: '' }
880 # CHECK: { id: 4, class: gprb, preferred-register: '' }
881 body:             |
882   bb.0:
883     successors: %bb.1(0x40000000), %bb.2(0x40000000)
884     liveins: $r0, $r1, $r2
886     %0(s32) = COPY $r0
887     %1(s1) = G_TRUNC %0(s32)
889     %2(s32) = COPY $r1
890     %3(s32) = COPY $r2
892     G_BRCOND %1(s1), %bb.1
893     G_BR %bb.2
895   bb.1:
896     successors: %bb.2(0x80000000)
898   bb.2:
899     %4(s32) = G_PHI %2(s32), %bb.0, %3(s32), %bb.1
900     $r0 = COPY %4(s32)
901     BX_RET 14, $noreg, implicit $r0
904 name:            test_phi_s64
905 # CHECK-LABEL: name: test_phi_s64
906 legalized:       true
907 regBankSelected: false
908 # CHECK: regBankSelected: true
909 selected:        false
910 tracksRegLiveness: true
911 registers:
912   - { id: 0, class: _ }
913   - { id: 1, class: _ }
914   - { id: 2, class: _ }
915   - { id: 3, class: _ }
916   - { id: 4, class: _ }
917 # CHECK: { id: 0, class: gprb, preferred-register: '' }
918 # CHECK: { id: 1, class: gprb, preferred-register: '' }
919 # CHECK: { id: 2, class: fprb, preferred-register: '' }
920 # CHECK: { id: 3, class: fprb, preferred-register: '' }
921 # CHECK: { id: 4, class: fprb, preferred-register: '' }
922 body:             |
923   bb.0:
924     successors: %bb.1(0x40000000), %bb.2(0x40000000)
925     liveins: $r0, $d0, $d1
927     %0(s32) = COPY $r0
928     %1(s1) = G_TRUNC %0(s32)
930     %2(s64) = COPY $d0
931     %3(s64) = COPY $d1
933     G_BRCOND %1(s1), %bb.1
934     G_BR %bb.2
936   bb.1:
937     successors: %bb.2(0x80000000)
939   bb.2:
940     %4(s64) = G_PHI %2(s64), %bb.0, %3(s64), %bb.1
941     $d0 = COPY %4(s64)
942     BX_RET 14, $noreg, implicit $d0
945 name:            test_fadd_s32
946 # CHECK-LABEL: name: test_fadd_s32
947 legalized:       true
948 regBankSelected: false
949 selected:        false
950 # CHECK: registers:
951 # CHECK: - { id: 0, class: fprb, preferred-register: '' }
952 # CHECK: - { id: 1, class: fprb, preferred-register: '' }
953 # CHECK: - { id: 2, class: fprb, preferred-register: '' }
955 registers:
956   - { id: 0, class: _ }
957   - { id: 1, class: _ }
958   - { id: 2, class: _ }
959 body:             |
960   bb.0:
961     liveins: $s0, $s1
963     %0(s32) = COPY $s0
964     %1(s32) = COPY $s1
965     %2(s32) = G_FADD %0, %1
966     $s0 = COPY %2(s32)
967     BX_RET 14, $noreg, implicit $s0
971 name:            test_fadd_s64
972 # CHECK-LABEL: name: test_fadd_s64
973 legalized:       true
974 regBankSelected: false
975 selected:        false
976 # CHECK: registers:
977 # CHECK: - { id: 0, class: fprb, preferred-register: '' }
978 # CHECK: - { id: 1, class: fprb, preferred-register: '' }
979 # CHECK: - { id: 2, class: fprb, preferred-register: '' }
981 registers:
982   - { id: 0, class: _ }
983   - { id: 1, class: _ }
984   - { id: 2, class: _ }
985 body:             |
986   bb.0:
987     liveins: $d0, $d1
989     %0(s64) = COPY $d0
990     %1(s64) = COPY $d1
991     %2(s64) = G_FADD %0, %1
992     $d0 = COPY %2(s64)
993     BX_RET 14, $noreg, implicit $d0
997 name:            test_fsub_s32
998 # CHECK-LABEL: name: test_fsub_s32
999 legalized:       true
1000 regBankSelected: false
1001 selected:        false
1002 # CHECK: registers:
1003 # CHECK: - { id: 0, class: fprb, preferred-register: '' }
1004 # CHECK: - { id: 1, class: fprb, preferred-register: '' }
1005 # CHECK: - { id: 2, class: fprb, preferred-register: '' }
1007 registers:
1008   - { id: 0, class: _ }
1009   - { id: 1, class: _ }
1010   - { id: 2, class: _ }
1011 body:             |
1012   bb.0:
1013     liveins: $s0, $s1
1015     %0(s32) = COPY $s0
1016     %1(s32) = COPY $s1
1017     %2(s32) = G_FSUB %0, %1
1018     $s0 = COPY %2(s32)
1019     BX_RET 14, $noreg, implicit $s0
1023 name:            test_fsub_s64
1024 # CHECK-LABEL: name: test_fsub_s64
1025 legalized:       true
1026 regBankSelected: false
1027 selected:        false
1028 # CHECK: registers:
1029 # CHECK: - { id: 0, class: fprb, preferred-register: '' }
1030 # CHECK: - { id: 1, class: fprb, preferred-register: '' }
1031 # CHECK: - { id: 2, class: fprb, preferred-register: '' }
1033 registers:
1034   - { id: 0, class: _ }
1035   - { id: 1, class: _ }
1036   - { id: 2, class: _ }
1037 body:             |
1038   bb.0:
1039     liveins: $d0, $d1
1041     %0(s64) = COPY $d0
1042     %1(s64) = COPY $d1
1043     %2(s64) = G_FSUB %0, %1
1044     $d0 = COPY %2(s64)
1045     BX_RET 14, $noreg, implicit $d0
1049 name:            test_fmul_s32
1050 # CHECK-LABEL: name: test_fmul_s32
1051 legalized:       true
1052 regBankSelected: false
1053 selected:        false
1054 # CHECK: registers:
1055 # CHECK: - { id: 0, class: fprb, preferred-register: '' }
1056 # CHECK: - { id: 1, class: fprb, preferred-register: '' }
1057 # CHECK: - { id: 2, class: fprb, preferred-register: '' }
1059 registers:
1060   - { id: 0, class: _ }
1061   - { id: 1, class: _ }
1062   - { id: 2, class: _ }
1063 body:             |
1064   bb.0:
1065     liveins: $s0, $s1
1067     %0(s32) = COPY $s0
1068     %1(s32) = COPY $s1
1069     %2(s32) = G_FMUL %0, %1
1070     $s0 = COPY %2(s32)
1071     BX_RET 14, $noreg, implicit $s0
1075 name:            test_fmul_s64
1076 # CHECK-LABEL: name: test_fmul_s64
1077 legalized:       true
1078 regBankSelected: false
1079 selected:        false
1080 # CHECK: registers:
1081 # CHECK: - { id: 0, class: fprb, preferred-register: '' }
1082 # CHECK: - { id: 1, class: fprb, preferred-register: '' }
1083 # CHECK: - { id: 2, class: fprb, preferred-register: '' }
1085 registers:
1086   - { id: 0, class: _ }
1087   - { id: 1, class: _ }
1088   - { id: 2, class: _ }
1089 body:             |
1090   bb.0:
1091     liveins: $d0, $d1
1093     %0(s64) = COPY $d0
1094     %1(s64) = COPY $d1
1095     %2(s64) = G_FMUL %0, %1
1096     $d0 = COPY %2(s64)
1097     BX_RET 14, $noreg, implicit $d0
1101 name:            test_fdiv_s32
1102 # CHECK-LABEL: name: test_fdiv_s32
1103 legalized:       true
1104 regBankSelected: false
1105 selected:        false
1106 # CHECK: registers:
1107 # CHECK: - { id: 0, class: fprb, preferred-register: '' }
1108 # CHECK: - { id: 1, class: fprb, preferred-register: '' }
1109 # CHECK: - { id: 2, class: fprb, preferred-register: '' }
1111 registers:
1112   - { id: 0, class: _ }
1113   - { id: 1, class: _ }
1114   - { id: 2, class: _ }
1115 body:             |
1116   bb.0:
1117     liveins: $s0, $s1
1119     %0(s32) = COPY $s0
1120     %1(s32) = COPY $s1
1121     %2(s32) = G_FDIV %0, %1
1122     $s0 = COPY %2(s32)
1123     BX_RET 14, $noreg, implicit $s0
1127 name:            test_fdiv_s64
1128 # CHECK-LABEL: name: test_fdiv_s64
1129 legalized:       true
1130 regBankSelected: false
1131 selected:        false
1132 # CHECK: registers:
1133 # CHECK: - { id: 0, class: fprb, preferred-register: '' }
1134 # CHECK: - { id: 1, class: fprb, preferred-register: '' }
1135 # CHECK: - { id: 2, class: fprb, preferred-register: '' }
1137 registers:
1138   - { id: 0, class: _ }
1139   - { id: 1, class: _ }
1140   - { id: 2, class: _ }
1141 body:             |
1142   bb.0:
1143     liveins: $d0, $d1
1145     %0(s64) = COPY $d0
1146     %1(s64) = COPY $d1
1147     %2(s64) = G_FDIV %0, %1
1148     $d0 = COPY %2(s64)
1149     BX_RET 14, $noreg, implicit $d0
1153 name:            test_fneg_s32
1154 # CHECK-LABEL: name: test_fneg_s32
1155 legalized:       true
1156 regBankSelected: false
1157 selected:        false
1158 # CHECK: registers:
1159 # CHECK: - { id: 0, class: fprb, preferred-register: '' }
1160 # CHECK: - { id: 1, class: fprb, preferred-register: '' }
1161 registers:
1162   - { id: 0, class: _ }
1163   - { id: 1, class: _ }
1164 body:             |
1165   bb.0:
1166     liveins: $s0
1168     %0(s32) = COPY $s0
1169     %1(s32) = G_FNEG %0
1170     $s0 = COPY %1(s32)
1171     BX_RET 14, $noreg, implicit $s0
1175 name:            test_fneg_s64
1176 # CHECK-LABEL: name: test_fneg_s64
1177 legalized:       true
1178 regBankSelected: false
1179 selected:        false
1180 # CHECK: registers:
1181 # CHECK: - { id: 0, class: fprb, preferred-register: '' }
1182 # CHECK: - { id: 1, class: fprb, preferred-register: '' }
1183 registers:
1184   - { id: 0, class: _ }
1185   - { id: 1, class: _ }
1186 body:             |
1187   bb.0:
1188     liveins: $d0
1190     %0(s64) = COPY $d0
1191     %1(s64) = G_FNEG %0
1192     $d0 = COPY %1(s64)
1193     BX_RET 14, $noreg, implicit $d0
1197 name:            test_fma_s32
1198 # CHECK-LABEL: name: test_fma_s32
1199 legalized:       true
1200 regBankSelected: false
1201 selected:        false
1202 # CHECK: registers:
1203 # CHECK: - { id: 0, class: fprb, preferred-register: '' }
1204 # CHECK: - { id: 1, class: fprb, preferred-register: '' }
1205 # CHECK: - { id: 2, class: fprb, preferred-register: '' }
1206 # CHECK: - { id: 3, class: fprb, preferred-register: '' }
1207 registers:
1208   - { id: 0, class: _ }
1209   - { id: 1, class: _ }
1210   - { id: 2, class: _ }
1211   - { id: 3, class: _ }
1212 body:             |
1213   bb.0:
1214     liveins: $s0, $s1, $s2
1216     %0(s32) = COPY $s0
1217     %1(s32) = COPY $s1
1218     %2(s32) = COPY $s2
1219     %3(s32) = G_FMA %0, %1, %2
1220     $s0 = COPY %3(s32)
1221     BX_RET 14, $noreg, implicit $s0
1224 name:            test_fma_s64
1225 # CHECK-LABEL: name: test_fma_s64
1226 legalized:       true
1227 regBankSelected: false
1228 selected:        false
1229 # CHECK: registers:
1230 # CHECK: - { id: 0, class: fprb, preferred-register: '' }
1231 # CHECK: - { id: 1, class: fprb, preferred-register: '' }
1232 # CHECK: - { id: 2, class: fprb, preferred-register: '' }
1233 # CHECK: - { id: 3, class: fprb, preferred-register: '' }
1234 registers:
1235   - { id: 0, class: _ }
1236   - { id: 1, class: _ }
1237   - { id: 2, class: _ }
1238   - { id: 3, class: _ }
1239 body:             |
1240   bb.0:
1241     liveins: $d0, $d1, $d2
1243     %0(s64) = COPY $d0
1244     %1(s64) = COPY $d1
1245     %2(s64) = COPY $d2
1246     %3(s64) = G_FMA %0, %1, %2
1247     $d0 = COPY %3(s64)
1248     BX_RET 14, $noreg, implicit $d0
1251 name:            test_fpext_s32_to_s64
1252 # CHECK-LABEL: name: test_fpext_s32_to_s64
1253 legalized:       true
1254 regBankSelected: false
1255 selected:        false
1256 # CHECK: registers:
1257 # CHECK: - { id: 0, class: fprb, preferred-register: '' }
1258 # CHECK: - { id: 1, class: fprb, preferred-register: '' }
1259 registers:
1260   - { id: 0, class: _ }
1261   - { id: 1, class: _ }
1262 body:             |
1263   bb.0:
1264     liveins: $s0
1266     %0(s32) = COPY $s0
1267     %1(s64) = G_FPEXT %0
1268     $d0 = COPY %1(s64)
1269     BX_RET 14, $noreg, implicit $d0
1272 name:            test_fptrunc_s64_to_s32
1273 # CHECK-LABEL: name: test_fptrunc_s64_to_s32
1274 legalized:       true
1275 regBankSelected: false
1276 selected:        false
1277 # CHECK: registers:
1278 # CHECK: - { id: 0, class: fprb, preferred-register: '' }
1279 # CHECK: - { id: 1, class: fprb, preferred-register: '' }
1280 registers:
1281   - { id: 0, class: _ }
1282   - { id: 1, class: _ }
1283 body:             |
1284   bb.0:
1285     liveins: $d0
1287     %0(s64) = COPY $d0
1288     %1(s32) = G_FPTRUNC %0
1289     $s0 = COPY %1(s32)
1290     BX_RET 14, $noreg, implicit $s0
1293 name:            test_fpconst_s32
1294 # CHECK-LABEL: name: test_fpconst_s32
1295 legalized:       true
1296 regBankSelected: false
1297 selected:        false
1298 # CHECK: registers:
1299 # CHECK: - { id: 0, class: fprb, preferred-register: '' }
1300 registers:
1301   - { id: 0, class: _ }
1302 body:             |
1303   bb.0:
1304     liveins:
1306     %0(s32) = G_FCONSTANT float -1.25
1307     $s0 = COPY %0(s32)
1308     BX_RET 14, $noreg, implicit $s0
1311 name:            test_fpconst_s64
1312 # CHECK-LABEL: name: test_fpconst_s64
1313 legalized:       true
1314 regBankSelected: false
1315 selected:        false
1316 # CHECK: registers:
1317 # CHECK: - { id: 0, class: fprb, preferred-register: '' }
1318 registers:
1319   - { id: 0, class: _ }
1320 body:             |
1321   bb.0:
1322     liveins:
1324     %0(s64) = G_FCONSTANT double -2.4
1325     $d0 = COPY %0(s64)
1326     BX_RET 14, $noreg, implicit $d0
1329 name:            test_fptosi_s32
1330 # CHECK-LABEL: name: test_fptosi_s32
1331 legalized:       true
1332 regBankSelected: false
1333 selected:        false
1334 # CHECK: registers:
1335 # CHECK: - { id: 0, class: fprb, preferred-register: '' }
1336 # CHECK: - { id: 1, class: gprb, preferred-register: '' }
1337 registers:
1338   - { id: 0, class: _ }
1339   - { id: 1, class: _ }
1340 body:             |
1341   bb.0:
1342     liveins: $s0
1344     %0(s32) = COPY $s0
1345     %1(s32) = G_FPTOSI %0
1346     $r0 = COPY %1(s32)
1347     BX_RET 14, $noreg, implicit $r0
1351 name:            test_fptosi_s64
1352 # CHECK-LABEL: name: test_fptosi_s64
1353 legalized:       true
1354 regBankSelected: false
1355 selected:        false
1356 # CHECK: registers:
1357 # CHECK: - { id: 0, class: fprb, preferred-register: '' }
1358 # CHECK: - { id: 1, class: gprb, preferred-register: '' }
1359 registers:
1360   - { id: 0, class: _ }
1361   - { id: 1, class: _ }
1362 body:             |
1363   bb.0:
1364     liveins: $d0
1366     %0(s64) = COPY $d0
1367     %1(s32) = G_FPTOSI %0
1368     $r0 = COPY %1(s32)
1369     BX_RET 14, $noreg, implicit $r0
1372 name:            test_fptoui_s32
1373 # CHECK-LABEL: name: test_fptoui_s32
1374 legalized:       true
1375 regBankSelected: false
1376 selected:        false
1377 # CHECK: registers:
1378 # CHECK: - { id: 0, class: fprb, preferred-register: '' }
1379 # CHECK: - { id: 1, class: gprb, preferred-register: '' }
1380 registers:
1381   - { id: 0, class: _ }
1382   - { id: 1, class: _ }
1383 body:             |
1384   bb.0:
1385     liveins: $s0
1387     %0(s32) = COPY $s0
1388     %1(s32) = G_FPTOUI %0
1389     $r0 = COPY %1(s32)
1390     BX_RET 14, $noreg, implicit $r0
1394 name:            test_fptoui_s64
1395 # CHECK-LABEL: name: test_fptoui_s64
1396 legalized:       true
1397 regBankSelected: false
1398 selected:        false
1399 # CHECK: registers:
1400 # CHECK: - { id: 0, class: fprb, preferred-register: '' }
1401 # CHECK: - { id: 1, class: gprb, preferred-register: '' }
1402 registers:
1403   - { id: 0, class: _ }
1404   - { id: 1, class: _ }
1405 body:             |
1406   bb.0:
1407     liveins: $d0
1409     %0(s64) = COPY $d0
1410     %1(s32) = G_FPTOUI %0
1411     $r0 = COPY %1(s32)
1412     BX_RET 14, $noreg, implicit $r0
1415 name:            test_sitofp_s32
1416 # CHECK-LABEL: name: test_sitofp_s32
1417 legalized:       true
1418 regBankSelected: false
1419 selected:        false
1420 # CHECK: registers:
1421 # CHECK: - { id: 0, class: gprb, preferred-register: '' }
1422 # CHECK: - { id: 1, class: fprb, preferred-register: '' }
1423 registers:
1424   - { id: 0, class: _ }
1425   - { id: 1, class: _ }
1426 body:             |
1427   bb.0:
1428     liveins: $r0
1430     %0(s32) = COPY $r0
1431     %1(s32) = G_SITOFP %0
1432     $s0 = COPY %1(s32)
1433     BX_RET 14, $noreg, implicit $s0
1437 name:            test_sitofp_s64
1438 # CHECK-LABEL: name: test_sitofp_s64
1439 legalized:       true
1440 regBankSelected: false
1441 selected:        false
1442 # CHECK: registers:
1443 # CHECK: - { id: 0, class: gprb, preferred-register: '' }
1444 # CHECK: - { id: 1, class: fprb, preferred-register: '' }
1445 registers:
1446   - { id: 0, class: _ }
1447   - { id: 1, class: _ }
1448 body:             |
1449   bb.0:
1450     liveins: $r0
1452     %0(s32) = COPY $r0
1453     %1(s64) = G_SITOFP %0
1454     $d0 = COPY %1(s64)
1455     BX_RET 14, $noreg, implicit $d0
1458 name:            test_uitofp_s32
1459 # CHECK-LABEL: name: test_uitofp_s32
1460 legalized:       true
1461 regBankSelected: false
1462 selected:        false
1463 # CHECK: registers:
1464 # CHECK: - { id: 0, class: gprb, preferred-register: '' }
1465 # CHECK: - { id: 1, class: fprb, preferred-register: '' }
1466 registers:
1467   - { id: 0, class: _ }
1468   - { id: 1, class: _ }
1469 body:             |
1470   bb.0:
1471     liveins: $r0
1473     %0(s32) = COPY $r0
1474     %1(s32) = G_UITOFP %0
1475     $s0 = COPY %1(s32)
1476     BX_RET 14, $noreg, implicit $s0
1480 name:            test_uitofp_s64
1481 # CHECK-LABEL: name: test_uitofp_s64
1482 legalized:       true
1483 regBankSelected: false
1484 selected:        false
1485 # CHECK: registers:
1486 # CHECK: - { id: 0, class: gprb, preferred-register: '' }
1487 # CHECK: - { id: 1, class: fprb, preferred-register: '' }
1488 registers:
1489   - { id: 0, class: _ }
1490   - { id: 1, class: _ }
1491 body:             |
1492   bb.0:
1493     liveins: $r0
1495     %0(s32) = COPY $r0
1496     %1(s64) = G_UITOFP %0
1497     $d0 = COPY %1(s64)
1498     BX_RET 14, $noreg, implicit $d0
1501 name:            test_soft_fp_s64
1502 # CHECK-LABEL: name: test_soft_fp_s64
1503 legalized:       true
1504 regBankSelected: false
1505 selected:        false
1506 # CHECK: registers:
1507 # CHECK: - { id: 0, class: gprb, preferred-register: '' }
1508 # CHECK: - { id: 1, class: gprb, preferred-register: '' }
1509 # CHECK: - { id: 2, class: fprb, preferred-register: '' }
1510 # CHECK: - { id: 3, class: gprb, preferred-register: '' }
1511 # CHECK: - { id: 4, class: gprb, preferred-register: '' }
1513 registers:
1514   - { id: 0, class: _ }
1515   - { id: 1, class: _ }
1516   - { id: 2, class: _ }
1517   - { id: 3, class: _ }
1518   - { id: 4, class: _ }
1519 body:             |
1520   bb.0:
1521     liveins: $r0, $r1
1523     %0(s32) = COPY $r0
1524     %1(s32) = COPY $r1
1525     %2(s64) = G_MERGE_VALUES %0(s32), %1(s32)
1526     %3(s32), %4(s32) = G_UNMERGE_VALUES %2(s64)
1527     $r0 = COPY %3(s32)
1528     $r1 = COPY %4(s32)
1529     BX_RET 14, $noreg, implicit $r0, implicit $r1
1533 name:            test_dbg_value
1534 # CHECK-LABEL: name: test_dbg_value
1535 legalized:       true
1536 regBankSelected: false
1537 selected:        false
1539 registers:
1540   - { id: 0, class: _ }
1541   - { id: 1, class: _ }
1542   - { id: 2, class: _ }
1543   - { id: 3, class: _ }
1544   - { id: 4, class: _ }
1545   - { id: 5, class: _ }
1546 body:             |
1547   bb.0:
1548     liveins: $r0, $s1, $d2
1550     %0(s32) = COPY $r0
1552     ; CHECK: {{%[0-9]+}}:gprb(s32) = G_ADD
1553     %1(s32) = G_ADD %0, %0
1555     ; CHECK: DBG_VALUE {{%[0-9]+}}(s32), $noreg
1556     DBG_VALUE %1(s32), $noreg, !7, !DIExpression(), debug-location !9
1558     $r0 = COPY %1(s32)
1560     %2(s32) = COPY $s1
1562     ; CHECK: {{%[0-9]+}}:fprb(s32) = G_FADD
1563     %3(s32) = G_FADD %2, %2
1565     ; CHECK: DBG_VALUE {{%[0-9]+}}(s32), $noreg
1566     DBG_VALUE %3(s32), $noreg, !7, !DIExpression(), debug-location !9
1568     $s1 = COPY %3(s32)
1570     %4(s64) = COPY $d2
1572     ; CHECK: {{%[0-9]+}}:fprb(s64) = G_FADD
1573     %5(s64) = G_FADD %4, %4
1575     ; CHECK: DBG_VALUE {{%[0-9]+}}(s64), $noreg
1576     DBG_VALUE %5(s64), $noreg, !7, !DIExpression(), debug-location !9
1578     $d2 = COPY %5(s64)
1580     ; CHECK: DBG_VALUE i32 42, 0
1581     DBG_VALUE i32 42, 0, !7, !DIExpression(), debug-location !9
1583     ; CHECK: DBG_VALUE float 1.000000e+00, 0
1584     DBG_VALUE float 1.000000e+00, 0, !7, !DIExpression(), debug-location !9
1586     ; CHECK: DBG_VALUE $noreg, 0
1587     DBG_VALUE $noreg, 0, !7, !DIExpression(), debug-location !9
1589     $d2 = COPY %5(s64)
1590     BX_RET 14, $noreg, implicit $r0, implicit $s1, implicit $d2