• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# RUN: llc -mtriple arm-- -run-pass=regbankselect %s -o - | FileCheck %s
2--- |
3  define void @test_add_s32() { ret void }
4  define void @test_sub_s32() { ret void }
5  define void @test_mul_s32() { ret void }
6
7  define void @test_sdiv_s32() #1 { ret void }
8  define void @test_udiv_s32() #1 { ret void }
9
10  define void @test_and_s32() { ret void}
11  define void @test_or_s32() { ret void}
12  define void @test_xor_s32() { ret void}
13
14  define void @test_lshr_s32() { ret void }
15  define void @test_ashr_s32() { ret void }
16  define void @test_shl_s32() { ret void }
17
18  define void @test_loads() #0 { ret void }
19  define void @test_stores() #0 { ret void }
20
21  define void @test_stack() { ret void }
22
23  define void @test_gep() { ret void }
24
25  define void @test_constants() { ret void }
26
27  define void @test_inttoptr_s32() { ret void }
28  define void @test_ptrtoint_s32() { ret void }
29
30  @a_global = global float 1.0
31  define void @test_globals() { ret void }
32
33  define void @test_anyext_s8_32() { ret void }
34  define void @test_anyext_s16_32() { ret void }
35
36  define void @test_trunc_s32_16() { ret void }
37  define void @test_trunc_s64_32() #0 { ret void }
38
39  define void @test_icmp_eq_s32() { ret void }
40  define void @test_fcmp_one_s32() #0 { ret void }
41  define void @test_fcmp_ugt_s64() #0 { ret void }
42
43  define void @test_select_s32() { ret void }
44
45  define void @test_br() { ret void }
46
47  define void @test_phi_s32() { ret void }
48  define void @test_phi_s64() #0 { ret void }
49
50  define void @test_fadd_s32() #0 { ret void }
51  define void @test_fadd_s64() #0 { ret void }
52
53  define void @test_fsub_s32() #0 { ret void }
54  define void @test_fsub_s64() #0 { ret void }
55
56  define void @test_fmul_s32() #0 { ret void }
57  define void @test_fmul_s64() #0 { ret void }
58
59  define void @test_fdiv_s32() #0 { ret void }
60  define void @test_fdiv_s64() #0 { ret void }
61
62  define void @test_fneg_s32() #0 { ret void }
63  define void @test_fneg_s64() #0 { ret void }
64
65  define void @test_fma_s32() #2 { ret void }
66  define void @test_fma_s64() #2 { ret void }
67
68  define void @test_fpext_s32_to_s64() #0 { ret void }
69  define void @test_fptrunc_s64_to_s32() #0 { ret void }
70
71  define void @test_fptosi_s32() #0 { ret void }
72  define void @test_fptosi_s64() #0 { ret void }
73  define void @test_fptoui_s32() #0 { ret void }
74  define void @test_fptoui_s64() #0 { ret void }
75
76  define void @test_sitofp_s32() #0 { ret void }
77  define void @test_sitofp_s64() #0 { ret void }
78  define void @test_uitofp_s32() #0 { ret void }
79  define void @test_uitofp_s64() #0 { ret void }
80
81  define void @test_soft_fp_s64() #0 { ret void }
82
83  attributes #0 = { "target-features"="+vfp2"}
84  attributes #1 = { "target-features"="+hwdiv-arm" }
85  attributes #2 = { "target-features"="+vfp4"}
86...
87---
88name:            test_add_s32
89# CHECK-LABEL: name: test_add_s32
90legalized:       true
91regBankSelected: false
92selected:        false
93# CHECK: registers:
94# CHECK: - { id: 0, class: gprb, preferred-register: '' }
95# CHECK: - { id: 1, class: gprb, preferred-register: '' }
96# CHECK: - { id: 2, class: gprb, preferred-register: '' }
97
98registers:
99  - { id: 0, class: _ }
100  - { id: 1, class: _ }
101  - { id: 2, class: _ }
102body:             |
103  bb.0:
104    liveins: $r0, $r1
105
106    %0(s32) = COPY $r0
107    %1(s32) = COPY $r1
108    %2(s32) = G_ADD %0, %1
109    $r0 = COPY %2(s32)
110    BX_RET 14, $noreg, implicit $r0
111
112...
113---
114name:            test_sub_s32
115# CHECK-LABEL: name: test_sub_s32
116legalized:       true
117regBankSelected: false
118selected:        false
119# CHECK: registers:
120# CHECK: - { id: 0, class: gprb, preferred-register: '' }
121# CHECK: - { id: 1, class: gprb, preferred-register: '' }
122# CHECK: - { id: 2, class: gprb, preferred-register: '' }
123
124registers:
125  - { id: 0, class: _ }
126  - { id: 1, class: _ }
127  - { id: 2, class: _ }
128body:             |
129  bb.0:
130    liveins: $r0, $r1
131
132    %0(s32) = COPY $r0
133    %1(s32) = COPY $r1
134    %2(s32) = G_SUB %0, %1
135    $r0 = COPY %2(s32)
136    BX_RET 14, $noreg, implicit $r0
137
138...
139---
140name:            test_mul_s32
141# CHECK-LABEL: name: test_mul_s32
142legalized:       true
143regBankSelected: false
144selected:        false
145# CHECK: registers:
146# CHECK: - { id: 0, class: gprb, preferred-register: '' }
147# CHECK: - { id: 1, class: gprb, preferred-register: '' }
148# CHECK: - { id: 2, class: gprb, preferred-register: '' }
149
150registers:
151  - { id: 0, class: _ }
152  - { id: 1, class: _ }
153  - { id: 2, class: _ }
154body:             |
155  bb.0:
156    liveins: $r0, $r1
157
158    %0(s32) = COPY $r0
159    %1(s32) = COPY $r1
160    %2(s32) = G_MUL %0, %1
161    $r0 = COPY %2(s32)
162    BX_RET 14, $noreg, implicit $r0
163
164...
165---
166name:            test_sdiv_s32
167# CHECK-LABEL: name: test_sdiv_s32
168legalized:       true
169regBankSelected: false
170selected:        false
171# CHECK: registers:
172# CHECK: - { id: 0, class: gprb, preferred-register: '' }
173# CHECK: - { id: 1, class: gprb, preferred-register: '' }
174# CHECK: - { id: 2, class: gprb, preferred-register: '' }
175
176registers:
177  - { id: 0, class: _ }
178  - { id: 1, class: _ }
179  - { id: 2, class: _ }
180body:             |
181  bb.0:
182    liveins: $r0, $r1
183
184    %0(s32) = COPY $r0
185    %1(s32) = COPY $r1
186    %2(s32) = G_SDIV %0, %1
187    $r0 = COPY %2(s32)
188    BX_RET 14, $noreg, implicit $r0
189
190...
191---
192name:            test_udiv_s32
193# CHECK-LABEL: name: test_udiv_s32
194legalized:       true
195regBankSelected: false
196selected:        false
197# CHECK: registers:
198# CHECK: - { id: 0, class: gprb, preferred-register: '' }
199# CHECK: - { id: 1, class: gprb, preferred-register: '' }
200# CHECK: - { id: 2, class: gprb, preferred-register: '' }
201
202registers:
203  - { id: 0, class: _ }
204  - { id: 1, class: _ }
205  - { id: 2, class: _ }
206body:             |
207  bb.0:
208    liveins: $r0, $r1
209
210    %0(s32) = COPY $r0
211    %1(s32) = COPY $r1
212    %2(s32) = G_UDIV %0, %1
213    $r0 = COPY %2(s32)
214    BX_RET 14, $noreg, implicit $r0
215
216...
217---
218name:            test_and_s32
219# CHECK-LABEL: name: test_and_s32
220legalized:       true
221regBankSelected: false
222selected:        false
223# CHECK: registers:
224# CHECK: - { id: 0, class: gprb, preferred-register: '' }
225# CHECK: - { id: 1, class: gprb, preferred-register: '' }
226# CHECK: - { id: 2, class: gprb, preferred-register: '' }
227
228registers:
229  - { id: 0, class: _ }
230  - { id: 1, class: _ }
231  - { id: 2, class: _ }
232body:             |
233  bb.0:
234    liveins: $r0, $r1
235
236    %0(s32) = COPY $r0
237    %1(s32) = COPY $r1
238    %2(s32) = G_AND %0, %1
239    $r0 = COPY %2(s32)
240    BX_RET 14, $noreg, implicit $r0
241
242...
243---
244name:            test_or_s32
245# CHECK-LABEL: name: test_or_s32
246legalized:       true
247regBankSelected: false
248selected:        false
249# CHECK: registers:
250# CHECK: - { id: 0, class: gprb, preferred-register: '' }
251# CHECK: - { id: 1, class: gprb, preferred-register: '' }
252# CHECK: - { id: 2, class: gprb, preferred-register: '' }
253
254registers:
255  - { id: 0, class: _ }
256  - { id: 1, class: _ }
257  - { id: 2, class: _ }
258body:             |
259  bb.0:
260    liveins: $r0, $r1
261
262    %0(s32) = COPY $r0
263    %1(s32) = COPY $r1
264    %2(s32) = G_OR %0, %1
265    $r0 = COPY %2(s32)
266    BX_RET 14, $noreg, implicit $r0
267
268...
269---
270name:            test_xor_s32
271# CHECK-LABEL: name: test_xor_s32
272legalized:       true
273regBankSelected: false
274selected:        false
275# CHECK: registers:
276# CHECK: - { id: 0, class: gprb, preferred-register: '' }
277# CHECK: - { id: 1, class: gprb, preferred-register: '' }
278# CHECK: - { id: 2, class: gprb, preferred-register: '' }
279
280registers:
281  - { id: 0, class: _ }
282  - { id: 1, class: _ }
283  - { id: 2, class: _ }
284body:             |
285  bb.0:
286    liveins: $r0, $r1
287
288    %0(s32) = COPY $r0
289    %1(s32) = COPY $r1
290    %2(s32) = G_XOR %0, %1
291    $r0 = COPY %2(s32)
292    BX_RET 14, $noreg, implicit $r0
293
294...
295---
296name:            test_lshr_s32
297# CHECK-LABEL: name: test_lshr_s32
298legalized:       true
299regBankSelected: false
300selected:        false
301# CHECK: registers:
302# CHECK: - { id: 0, class: gprb, preferred-register: '' }
303# CHECK: - { id: 1, class: gprb, preferred-register: '' }
304# CHECK: - { id: 2, class: gprb, preferred-register: '' }
305
306registers:
307  - { id: 0, class: _ }
308  - { id: 1, class: _ }
309  - { id: 2, class: _ }
310body:             |
311  bb.0:
312    liveins: $r0, $r1
313
314    %0(s32) = COPY $r0
315    %1(s32) = COPY $r1
316    %2(s32) = G_LSHR %0, %1
317    $r0 = COPY %2(s32)
318    BX_RET 14, $noreg, implicit $r0
319
320...
321---
322name:            test_ashr_s32
323# CHECK-LABEL: name: test_ashr_s32
324legalized:       true
325regBankSelected: false
326selected:        false
327# CHECK: registers:
328# CHECK: - { id: 0, class: gprb, preferred-register: '' }
329# CHECK: - { id: 1, class: gprb, preferred-register: '' }
330# CHECK: - { id: 2, class: gprb, preferred-register: '' }
331
332registers:
333  - { id: 0, class: _ }
334  - { id: 1, class: _ }
335  - { id: 2, class: _ }
336body:             |
337  bb.0:
338    liveins: $r0, $r1
339
340    %0(s32) = COPY $r0
341    %1(s32) = COPY $r1
342    %2(s32) = G_ASHR %0, %1
343    $r0 = COPY %2(s32)
344    BX_RET 14, $noreg, implicit $r0
345
346...
347---
348name:            test_shl_s32
349# CHECK-LABEL: name: test_shl_s32
350legalized:       true
351regBankSelected: false
352selected:        false
353# CHECK: registers:
354# CHECK: - { id: 0, class: gprb, preferred-register: '' }
355# CHECK: - { id: 1, class: gprb, preferred-register: '' }
356# CHECK: - { id: 2, class: gprb, preferred-register: '' }
357
358registers:
359  - { id: 0, class: _ }
360  - { id: 1, class: _ }
361  - { id: 2, class: _ }
362body:             |
363  bb.0:
364    liveins: $r0, $r1
365
366    %0(s32) = COPY $r0
367    %1(s32) = COPY $r1
368    %2(s32) = G_SHL %0, %1
369    $r0 = COPY %2(s32)
370    BX_RET 14, $noreg, implicit $r0
371
372...
373---
374name:            test_loads
375# CHECK-LABEL: name: test_loads
376legalized:       true
377regBankSelected: false
378selected:        false
379# CHECK: registers:
380# CHECK: - { id: 0, class: gprb, preferred-register: '' }
381# CHECK: - { id: 1, class: gprb, preferred-register: '' }
382# CHECK: - { id: 2, class: gprb, preferred-register: '' }
383# CHECK: - { id: 3, class: gprb, preferred-register: '' }
384# CHECK: - { id: 4, class: gprb, preferred-register: '' }
385# CHECK: - { id: 5, class: gprb, preferred-register: '' }
386# CHECK: - { id: 6, class: fprb, preferred-register: '' }
387
388registers:
389  - { id: 0, class: _ }
390  - { id: 1, class: _ }
391  - { id: 2, class: _ }
392  - { id: 3, class: _ }
393  - { id: 4, class: _ }
394  - { id: 5, class: _ }
395  - { id: 6, class: _ }
396body:             |
397  bb.0:
398    liveins: $r0
399    %0(p0) = COPY $r0
400    %6(s64) = G_LOAD %0 :: (load 8)
401    %1(s32) = G_LOAD %0 :: (load 4)
402    %2(s16) = G_LOAD %0 :: (load 2)
403    %3(s8)  = G_LOAD %0 :: (load 1)
404    %4(s1)  = G_LOAD %0 :: (load 1)
405    %5(p0)  = G_LOAD %0 :: (load 4)
406    BX_RET 14, $noreg, implicit $r0
407
408...
409---
410name:            test_stores
411# CHECK-LABEL: name: test_stores
412legalized:       true
413regBankSelected: false
414selected:        false
415# CHECK: registers:
416# CHECK: - { id: 0, class: gprb, preferred-register: '' }
417# CHECK: - { id: 1, class: gprb, preferred-register: '' }
418# CHECK: - { id: 2, class: gprb, preferred-register: '' }
419# CHECK: - { id: 3, class: gprb, preferred-register: '' }
420# CHECK: - { id: 4, class: gprb, preferred-register: '' }
421# CHECK: - { id: 5, class: gprb, preferred-register: '' }
422# CHECK: - { id: 6, class: fprb, preferred-register: '' }
423
424registers:
425  - { id: 0, class: _ }
426  - { id: 1, class: _ }
427  - { id: 2, class: _ }
428  - { id: 3, class: _ }
429  - { id: 4, class: _ }
430  - { id: 5, class: _ }
431  - { id: 6, class: _ }
432body:             |
433  bb.0:
434    liveins: $r0, $r1, $r5, $d6
435    %0(p0) = COPY $r0
436    %1(s32) = COPY $r1
437    G_STORE %1(s32), %0 :: (store 4)
438    %2(s16) = G_TRUNC %1(s32)
439    G_STORE %2(s16), %0 :: (store 2)
440    %3(s8) = G_TRUNC %1(s32)
441    G_STORE %3(s8), %0 :: (store 1)
442    %4(s1) = G_TRUNC %1(s32)
443    G_STORE %4(s1), %0 :: (store 1)
444    %5(p0) = COPY $r5
445    G_STORE %5(p0), %0 :: (store 4)
446    %6(s64) = COPY $d6
447    G_STORE %6(s64), %0 :: (store 8)
448    BX_RET 14, $noreg, implicit $r0
449
450...
451---
452name:            test_stack
453# CHECK-LABEL: name: test_stack
454legalized:       true
455regBankSelected: false
456selected:        false
457# CHECK: registers:
458# CHECK: - { id: 0, class: gprb, preferred-register: '' }
459# CHECK: - { id: 1, class: gprb, preferred-register: '' }
460# CHECK: - { id: 2, class: gprb, preferred-register: '' }
461# CHECK: - { id: 3, class: gprb, preferred-register: '' }
462# CHECK: - { id: 4, class: gprb, preferred-register: '' }
463registers:
464  - { id: 0, class: _ }
465  - { id: 1, class: _ }
466  - { id: 2, class: _ }
467  - { id: 3, class: _ }
468  - { id: 4, class: _ }
469fixedStack:
470  - { id: 0, offset: 0, size: 4, alignment: 4, isImmutable: true, isAliased: false }
471body:             |
472  bb.0:
473    %0(p0) = G_FRAME_INDEX %fixed-stack.0
474    %1(s32) = G_LOAD %0(p0) :: (load 4 from %fixed-stack.0, align 0)
475
476    %2(p0) = COPY $sp
477    %3(s32) = G_CONSTANT i32 8
478    %4(p0) = G_GEP %2, %3(s32)
479    G_STORE %1(s32), %4(p0) :: (store 4)
480
481    BX_RET 14, $noreg
482
483...
484---
485name:            test_gep
486# CHECK-LABEL: name: test_gep
487legalized:       true
488regBankSelected: false
489selected:        false
490# CHECK: registers:
491# CHECK: - { id: 0, class: gprb, preferred-register: '' }
492# CHECK: - { id: 1, class: gprb, preferred-register: '' }
493# CHECK: - { id: 2, class: gprb, preferred-register: '' }
494
495registers:
496  - { id: 0, class: _ }
497  - { id: 1, class: _ }
498  - { id: 2, class: _ }
499body:             |
500  bb.0:
501    liveins: $r0, $r1
502
503    %0(p0) = COPY $r0
504    %1(s32) = COPY $r1
505    %2(p0) = G_GEP %0, %1(s32)
506    $r0 = COPY %2(p0)
507    BX_RET 14, $noreg, implicit $r0
508...
509---
510name:            test_constants
511# CHECK-LABEL: name: test_constants
512legalized:       true
513regBankSelected: false
514selected:        false
515# CHECK: registers:
516# CHECK: - { id: 0, class: gprb, preferred-register: '' }
517registers:
518  - { id: 0, class: _ }
519body:             |
520  bb.0:
521    %0(s32) = G_CONSTANT 42
522    $r0 = COPY %0(s32)
523    BX_RET 14, $noreg, implicit $r0
524...
525---
526name:            test_inttoptr_s32
527# CHECK-LABEL: name: test_inttoptr_s32
528legalized:       true
529regBankSelected: false
530selected:        false
531# CHECK: registers:
532# CHECK: - { id: 0, class: gprb, preferred-register: '' }
533# CHECK: - { id: 1, class: gprb, preferred-register: '' }
534registers:
535  - { id: 0, class: _ }
536  - { id: 1, class: _ }
537body:             |
538  bb.0:
539    %0(s32) = COPY $r0
540    %1(p0) = G_INTTOPTR %0(s32)
541    $r0 = COPY %1(p0)
542    BX_RET 14, $noreg, implicit $r0
543...
544---
545name:            test_ptrtoint_s32
546# CHECK-LABEL: name: test_ptrtoint_s32
547legalized:       true
548regBankSelected: false
549selected:        false
550# CHECK: registers:
551# CHECK: - { id: 0, class: gprb, preferred-register: '' }
552# CHECK: - { id: 1, class: gprb, preferred-register: '' }
553registers:
554  - { id: 0, class: _ }
555  - { id: 1, class: _ }
556body:             |
557  bb.0:
558    %0(p0) = COPY $r0
559    %1(s32) = G_PTRTOINT %0(p0)
560    $r0 = COPY %1(s32)
561    BX_RET 14, $noreg, implicit $r0
562...
563---
564name:            test_globals
565# CHECK-LABEL: name: test_globals
566legalized:       true
567regBankSelected: false
568selected:        false
569# CHECK: registers:
570# CHECK: - { id: 0, class: gprb, preferred-register: '' }
571registers:
572  - { id: 0, class: _ }
573body:             |
574  bb.0:
575    %0(p0) = G_GLOBAL_VALUE @a_global
576    $r0 = COPY %0(p0)
577    BX_RET 14, $noreg, implicit $r0
578...
579---
580name:            test_anyext_s8_32
581# CHECK-LABEL: name: test_anyext_s8_32
582legalized:       true
583regBankSelected: false
584selected:        false
585# CHECK: registers:
586# CHECK: - { id: 0, class: gprb, preferred-register: '' }
587# CHECK: - { id: 1, class: gprb, preferred-register: '' }
588# CHECK: - { id: 2, class: gprb, preferred-register: '' }
589registers:
590  - { id: 0, class: _ }
591  - { id: 1, class: _ }
592  - { id: 2, class: _ }
593body:             |
594  bb.0:
595    liveins: $r0
596
597    %0(s32) = COPY $r0
598    %1(s8) = G_TRUNC %0(s32)
599    %2(s32) = G_ANYEXT %1(s8)
600    $r0 = COPY %2(s32)
601    BX_RET 14, $noreg, implicit $r0
602...
603---
604name:            test_anyext_s16_32
605# CHECK-LABEL: name: test_anyext_s16_32
606legalized:       true
607regBankSelected: false
608selected:        false
609# CHECK: registers:
610# CHECK: - { id: 0, class: gprb, preferred-register: '' }
611# CHECK: - { id: 1, class: gprb, preferred-register: '' }
612# CHECK: - { id: 2, class: gprb, preferred-register: '' }
613registers:
614  - { id: 0, class: _ }
615  - { id: 1, class: _ }
616  - { id: 2, class: _ }
617body:             |
618  bb.0:
619    liveins: $r0
620
621    %0(s32) = COPY $r0
622    %1(s16) = G_TRUNC %0(s32)
623    %2(s32) = G_ANYEXT %1(s16)
624    $r0 = COPY %2(s32)
625    BX_RET 14, $noreg, implicit $r0
626...
627---
628name:            test_trunc_s32_16
629# CHECK-LABEL: name: test_trunc_s32_16
630legalized:       true
631regBankSelected: false
632selected:        false
633# CHECK: registers:
634# CHECK: - { id: 0, class: gprb, preferred-register: '' }
635# CHECK: - { id: 1, class: gprb, preferred-register: '' }
636# CHECK: - { id: 2, class: gprb, preferred-register: '' }
637registers:
638  - { id: 0, class: _ }
639  - { id: 1, class: _ }
640  - { id: 2, class: _ }
641body:             |
642  bb.0:
643    liveins: $r0, $r1
644
645    %0(s32) = COPY $r0
646    %2(p0) = COPY $r1
647    %1(s16) = G_TRUNC %0(s32)
648    G_STORE %1(s16), %2 :: (store 2)
649    BX_RET 14, $noreg
650...
651---
652name:            test_trunc_s64_32
653# CHECK-LABEL: name: test_trunc_s64_32
654legalized:       true
655regBankSelected: false
656selected:        false
657# CHECK: registers:
658# CHECK: - { id: 0, class: fprb, preferred-register: '' }
659# CHECK: - { id: 1, class: gprb, preferred-register: '' }
660# CHECK: - { id: 2, class: gprb, preferred-register: '' }
661registers:
662  - { id: 0, class: _ }
663  - { id: 1, class: _ }
664  - { id: 2, class: _ }
665body:             |
666  bb.0:
667    liveins: $r0, $d0
668
669    %0(s64) = COPY $d0
670    %2(p0) = COPY $r0
671    %1(s32) = G_TRUNC %0(s64)
672    G_STORE %1(s32), %2 :: (store 4)
673    BX_RET 14, $noreg
674...
675---
676name:            test_icmp_eq_s32
677# CHECK-LABEL: name: test_icmp_eq_s32
678legalized:       true
679regBankSelected: false
680selected:        false
681# CHECK: registers:
682# CHECK: - { id: 0, class: gprb, preferred-register: '' }
683# CHECK: - { id: 1, class: gprb, preferred-register: '' }
684# CHECK: - { id: 2, class: gprb, preferred-register: '' }
685# CHECK: - { id: 3, class: gprb, preferred-register: '' }
686
687registers:
688  - { id: 0, class: _ }
689  - { id: 1, class: _ }
690  - { id: 2, class: _ }
691  - { id: 3, class: _ }
692body:             |
693  bb.0:
694    liveins: $r0, $r1
695
696    %0(s32) = COPY $r0
697    %1(s32) = COPY $r1
698    %2(s1) = G_ICMP intpred(eq), %0(s32), %1
699    %3(s32) = G_ZEXT %2(s1)
700    $r0 = COPY %3(s32)
701    BX_RET 14, $noreg, implicit $r0
702
703...
704---
705name:            test_fcmp_one_s32
706# CHECK-LABEL: name: test_fcmp_one_s32
707legalized:       true
708regBankSelected: false
709selected:        false
710# CHECK: registers:
711# CHECK: - { id: 0, class: fprb, preferred-register: '' }
712# CHECK: - { id: 1, class: fprb, preferred-register: '' }
713# CHECK: - { id: 2, class: gprb, preferred-register: '' }
714# CHECK: - { id: 3, class: gprb, preferred-register: '' }
715
716registers:
717  - { id: 0, class: _ }
718  - { id: 1, class: _ }
719  - { id: 2, class: _ }
720  - { id: 3, class: _ }
721body:             |
722  bb.0:
723    liveins: $s0, $s1
724
725    %0(s32) = COPY $s0
726    %1(s32) = COPY $s1
727    %2(s1) = G_FCMP floatpred(one), %0(s32), %1
728    %3(s32) = G_ZEXT %2(s1)
729    $r0 = COPY %3(s32)
730    BX_RET 14, $noreg, implicit $r0
731
732...
733---
734name:            test_fcmp_ugt_s64
735# CHECK-LABEL: name: test_fcmp_ugt_s64
736legalized:       true
737regBankSelected: false
738selected:        false
739# CHECK: registers:
740# CHECK: - { id: 0, class: fprb, preferred-register: '' }
741# CHECK: - { id: 1, class: fprb, preferred-register: '' }
742# CHECK: - { id: 2, class: gprb, preferred-register: '' }
743# CHECK: - { id: 3, class: gprb, preferred-register: '' }
744
745registers:
746  - { id: 0, class: _ }
747  - { id: 1, class: _ }
748  - { id: 2, class: _ }
749  - { id: 3, class: _ }
750body:             |
751  bb.0:
752    liveins: $d0, $d1
753
754    %0(s64) = COPY $d0
755    %1(s64) = COPY $d1
756    %2(s1) = G_FCMP floatpred(ugt), %0(s64), %1
757    %3(s32) = G_ZEXT %2(s1)
758    $r0 = COPY %3(s32)
759    BX_RET 14, $noreg, implicit $r0
760
761...
762---
763name:            test_select_s32
764# CHECK-LABEL: name: test_select_s32
765legalized:       true
766regBankSelected: false
767selected:        false
768# CHECK: registers:
769# CHECK: - { id: 0, class: gprb, preferred-register: '' }
770# CHECK: - { id: 1, class: gprb, preferred-register: '' }
771# CHECK: - { id: 2, class: gprb, preferred-register: '' }
772# CHECK: - { id: 3, class: gprb, preferred-register: '' }
773# CHECK: - { id: 4, class: gprb, preferred-register: '' }
774
775registers:
776  - { id: 0, class: _ }
777  - { id: 1, class: _ }
778  - { id: 2, class: _ }
779  - { id: 3, class: _ }
780  - { id: 4, class: _ }
781body:             |
782  bb.0:
783    liveins: $r0, $r1, $r2
784
785    %0(s32) = COPY $r0
786    %1(s32) = COPY $r1
787    %2(s32) = COPY $r2
788    %3(s1) = G_TRUNC %2(s32)
789    %4(s32) = G_SELECT %3(s1), %0, %1
790    $r0 = COPY %4(s32)
791    BX_RET 14, $noreg, implicit $r0
792
793...
794---
795name:            test_br
796# CHECK-LABEL: name: test_br
797legalized:       true
798regBankSelected: false
799# CHECK: regBankSelected: true
800selected:        false
801registers:
802  - { id: 0, class: _ }
803  - { id: 1, class: _ }
804# CHECK: { id: 0, class: gprb, preferred-register: '' }
805# CHECK: { id: 1, class: gprb, preferred-register: '' }
806# Check that we map the condition of the G_BRCOND into the GPR.
807# For the G_BR, there are no registers to map, but make sure we don't crash.
808body:             |
809  bb.0:
810    successors: %bb.1(0x40000000), %bb.2(0x40000000)
811    liveins: $r0
812
813    %0(s32) = COPY $r0
814    %1(s1) = G_TRUNC %0(s32)
815    G_BRCOND %1(s1), %bb.1
816    G_BR %bb.2
817
818  bb.1:
819    BX_RET 14, $noreg
820
821  bb.2:
822    BX_RET 14, $noreg
823
824...
825---
826name:            test_phi_s32
827# CHECK-LABEL: name: test_phi_s32
828legalized:       true
829regBankSelected: false
830# CHECK: regBankSelected: true
831selected:        false
832tracksRegLiveness: true
833registers:
834  - { id: 0, class: _ }
835  - { id: 1, class: _ }
836  - { id: 2, class: _ }
837  - { id: 3, class: _ }
838  - { id: 4, class: _ }
839# CHECK: { id: 0, class: gprb, preferred-register: '' }
840# CHECK: { id: 1, class: gprb, preferred-register: '' }
841# CHECK: { id: 2, class: gprb, preferred-register: '' }
842# CHECK: { id: 3, class: gprb, preferred-register: '' }
843# CHECK: { id: 4, class: gprb, preferred-register: '' }
844body:             |
845  bb.0:
846    successors: %bb.1(0x40000000), %bb.2(0x40000000)
847    liveins: $r0, $r1, $r2
848
849    %0(s32) = COPY $r0
850    %1(s1) = G_TRUNC %0(s32)
851
852    %2(s32) = COPY $r1
853    %3(s32) = COPY $r2
854
855    G_BRCOND %1(s1), %bb.1
856    G_BR %bb.2
857
858  bb.1:
859    successors: %bb.2(0x80000000)
860
861  bb.2:
862    %4(s32) = G_PHI %2(s32), %bb.0, %3(s32), %bb.1
863    $r0 = COPY %4(s32)
864    BX_RET 14, $noreg, implicit $r0
865...
866---
867name:            test_phi_s64
868# CHECK-LABEL: name: test_phi_s64
869legalized:       true
870regBankSelected: false
871# CHECK: regBankSelected: true
872selected:        false
873tracksRegLiveness: true
874registers:
875  - { id: 0, class: _ }
876  - { id: 1, class: _ }
877  - { id: 2, class: _ }
878  - { id: 3, class: _ }
879  - { id: 4, class: _ }
880# CHECK: { id: 0, class: gprb, preferred-register: '' }
881# CHECK: { id: 1, class: gprb, preferred-register: '' }
882# CHECK: { id: 2, class: fprb, preferred-register: '' }
883# CHECK: { id: 3, class: fprb, preferred-register: '' }
884# CHECK: { id: 4, class: fprb, preferred-register: '' }
885body:             |
886  bb.0:
887    successors: %bb.1(0x40000000), %bb.2(0x40000000)
888    liveins: $r0, $d0, $d1
889
890    %0(s32) = COPY $r0
891    %1(s1) = G_TRUNC %0(s32)
892
893    %2(s64) = COPY $d0
894    %3(s64) = COPY $d1
895
896    G_BRCOND %1(s1), %bb.1
897    G_BR %bb.2
898
899  bb.1:
900    successors: %bb.2(0x80000000)
901
902  bb.2:
903    %4(s64) = G_PHI %2(s64), %bb.0, %3(s64), %bb.1
904    $d0 = COPY %4(s64)
905    BX_RET 14, $noreg, implicit $d0
906...
907---
908name:            test_fadd_s32
909# CHECK-LABEL: name: test_fadd_s32
910legalized:       true
911regBankSelected: false
912selected:        false
913# CHECK: registers:
914# CHECK: - { id: 0, class: fprb, preferred-register: '' }
915# CHECK: - { id: 1, class: fprb, preferred-register: '' }
916# CHECK: - { id: 2, class: fprb, preferred-register: '' }
917
918registers:
919  - { id: 0, class: _ }
920  - { id: 1, class: _ }
921  - { id: 2, class: _ }
922body:             |
923  bb.0:
924    liveins: $s0, $s1
925
926    %0(s32) = COPY $s0
927    %1(s32) = COPY $s1
928    %2(s32) = G_FADD %0, %1
929    $s0 = COPY %2(s32)
930    BX_RET 14, $noreg, implicit $s0
931
932...
933---
934name:            test_fadd_s64
935# CHECK-LABEL: name: test_fadd_s64
936legalized:       true
937regBankSelected: false
938selected:        false
939# CHECK: registers:
940# CHECK: - { id: 0, class: fprb, preferred-register: '' }
941# CHECK: - { id: 1, class: fprb, preferred-register: '' }
942# CHECK: - { id: 2, class: fprb, preferred-register: '' }
943
944registers:
945  - { id: 0, class: _ }
946  - { id: 1, class: _ }
947  - { id: 2, class: _ }
948body:             |
949  bb.0:
950    liveins: $d0, $d1
951
952    %0(s64) = COPY $d0
953    %1(s64) = COPY $d1
954    %2(s64) = G_FADD %0, %1
955    $d0 = COPY %2(s64)
956    BX_RET 14, $noreg, implicit $d0
957
958...
959---
960name:            test_fsub_s32
961# CHECK-LABEL: name: test_fsub_s32
962legalized:       true
963regBankSelected: false
964selected:        false
965# CHECK: registers:
966# CHECK: - { id: 0, class: fprb, preferred-register: '' }
967# CHECK: - { id: 1, class: fprb, preferred-register: '' }
968# CHECK: - { id: 2, class: fprb, preferred-register: '' }
969
970registers:
971  - { id: 0, class: _ }
972  - { id: 1, class: _ }
973  - { id: 2, class: _ }
974body:             |
975  bb.0:
976    liveins: $s0, $s1
977
978    %0(s32) = COPY $s0
979    %1(s32) = COPY $s1
980    %2(s32) = G_FSUB %0, %1
981    $s0 = COPY %2(s32)
982    BX_RET 14, $noreg, implicit $s0
983
984...
985---
986name:            test_fsub_s64
987# CHECK-LABEL: name: test_fsub_s64
988legalized:       true
989regBankSelected: false
990selected:        false
991# CHECK: registers:
992# CHECK: - { id: 0, class: fprb, preferred-register: '' }
993# CHECK: - { id: 1, class: fprb, preferred-register: '' }
994# CHECK: - { id: 2, class: fprb, preferred-register: '' }
995
996registers:
997  - { id: 0, class: _ }
998  - { id: 1, class: _ }
999  - { id: 2, class: _ }
1000body:             |
1001  bb.0:
1002    liveins: $d0, $d1
1003
1004    %0(s64) = COPY $d0
1005    %1(s64) = COPY $d1
1006    %2(s64) = G_FSUB %0, %1
1007    $d0 = COPY %2(s64)
1008    BX_RET 14, $noreg, implicit $d0
1009
1010...
1011---
1012name:            test_fmul_s32
1013# CHECK-LABEL: name: test_fmul_s32
1014legalized:       true
1015regBankSelected: false
1016selected:        false
1017# CHECK: registers:
1018# CHECK: - { id: 0, class: fprb, preferred-register: '' }
1019# CHECK: - { id: 1, class: fprb, preferred-register: '' }
1020# CHECK: - { id: 2, class: fprb, preferred-register: '' }
1021
1022registers:
1023  - { id: 0, class: _ }
1024  - { id: 1, class: _ }
1025  - { id: 2, class: _ }
1026body:             |
1027  bb.0:
1028    liveins: $s0, $s1
1029
1030    %0(s32) = COPY $s0
1031    %1(s32) = COPY $s1
1032    %2(s32) = G_FMUL %0, %1
1033    $s0 = COPY %2(s32)
1034    BX_RET 14, $noreg, implicit $s0
1035
1036...
1037---
1038name:            test_fmul_s64
1039# CHECK-LABEL: name: test_fmul_s64
1040legalized:       true
1041regBankSelected: false
1042selected:        false
1043# CHECK: registers:
1044# CHECK: - { id: 0, class: fprb, preferred-register: '' }
1045# CHECK: - { id: 1, class: fprb, preferred-register: '' }
1046# CHECK: - { id: 2, class: fprb, preferred-register: '' }
1047
1048registers:
1049  - { id: 0, class: _ }
1050  - { id: 1, class: _ }
1051  - { id: 2, class: _ }
1052body:             |
1053  bb.0:
1054    liveins: $d0, $d1
1055
1056    %0(s64) = COPY $d0
1057    %1(s64) = COPY $d1
1058    %2(s64) = G_FMUL %0, %1
1059    $d0 = COPY %2(s64)
1060    BX_RET 14, $noreg, implicit $d0
1061
1062...
1063---
1064name:            test_fdiv_s32
1065# CHECK-LABEL: name: test_fdiv_s32
1066legalized:       true
1067regBankSelected: false
1068selected:        false
1069# CHECK: registers:
1070# CHECK: - { id: 0, class: fprb, preferred-register: '' }
1071# CHECK: - { id: 1, class: fprb, preferred-register: '' }
1072# CHECK: - { id: 2, class: fprb, preferred-register: '' }
1073
1074registers:
1075  - { id: 0, class: _ }
1076  - { id: 1, class: _ }
1077  - { id: 2, class: _ }
1078body:             |
1079  bb.0:
1080    liveins: $s0, $s1
1081
1082    %0(s32) = COPY $s0
1083    %1(s32) = COPY $s1
1084    %2(s32) = G_FDIV %0, %1
1085    $s0 = COPY %2(s32)
1086    BX_RET 14, $noreg, implicit $s0
1087
1088...
1089---
1090name:            test_fdiv_s64
1091# CHECK-LABEL: name: test_fdiv_s64
1092legalized:       true
1093regBankSelected: false
1094selected:        false
1095# CHECK: registers:
1096# CHECK: - { id: 0, class: fprb, preferred-register: '' }
1097# CHECK: - { id: 1, class: fprb, preferred-register: '' }
1098# CHECK: - { id: 2, class: fprb, preferred-register: '' }
1099
1100registers:
1101  - { id: 0, class: _ }
1102  - { id: 1, class: _ }
1103  - { id: 2, class: _ }
1104body:             |
1105  bb.0:
1106    liveins: $d0, $d1
1107
1108    %0(s64) = COPY $d0
1109    %1(s64) = COPY $d1
1110    %2(s64) = G_FDIV %0, %1
1111    $d0 = COPY %2(s64)
1112    BX_RET 14, $noreg, implicit $d0
1113
1114...
1115---
1116name:            test_fneg_s32
1117# CHECK-LABEL: name: test_fneg_s32
1118legalized:       true
1119regBankSelected: false
1120selected:        false
1121# CHECK: registers:
1122# CHECK: - { id: 0, class: fprb, preferred-register: '' }
1123# CHECK: - { id: 1, class: fprb, preferred-register: '' }
1124registers:
1125  - { id: 0, class: _ }
1126  - { id: 1, class: _ }
1127body:             |
1128  bb.0:
1129    liveins: $s0
1130
1131    %0(s32) = COPY $s0
1132    %1(s32) = G_FNEG %0
1133    $s0 = COPY %1(s32)
1134    BX_RET 14, $noreg, implicit $s0
1135
1136...
1137---
1138name:            test_fneg_s64
1139# CHECK-LABEL: name: test_fneg_s64
1140legalized:       true
1141regBankSelected: false
1142selected:        false
1143# CHECK: registers:
1144# CHECK: - { id: 0, class: fprb, preferred-register: '' }
1145# CHECK: - { id: 1, class: fprb, preferred-register: '' }
1146registers:
1147  - { id: 0, class: _ }
1148  - { id: 1, class: _ }
1149body:             |
1150  bb.0:
1151    liveins: $d0
1152
1153    %0(s64) = COPY $d0
1154    %1(s64) = G_FNEG %0
1155    $d0 = COPY %1(s64)
1156    BX_RET 14, $noreg, implicit $d0
1157
1158...
1159---
1160name:            test_fma_s32
1161# CHECK-LABEL: name: test_fma_s32
1162legalized:       true
1163regBankSelected: false
1164selected:        false
1165# CHECK: registers:
1166# CHECK: - { id: 0, class: fprb, preferred-register: '' }
1167# CHECK: - { id: 1, class: fprb, preferred-register: '' }
1168# CHECK: - { id: 2, class: fprb, preferred-register: '' }
1169# CHECK: - { id: 3, class: fprb, preferred-register: '' }
1170registers:
1171  - { id: 0, class: _ }
1172  - { id: 1, class: _ }
1173  - { id: 2, class: _ }
1174  - { id: 3, class: _ }
1175body:             |
1176  bb.0:
1177    liveins: $s0, $s1, $s2
1178
1179    %0(s32) = COPY $s0
1180    %1(s32) = COPY $s1
1181    %2(s32) = COPY $s2
1182    %3(s32) = G_FMA %0, %1, %2
1183    $s0 = COPY %3(s32)
1184    BX_RET 14, $noreg, implicit $s0
1185...
1186---
1187name:            test_fma_s64
1188# CHECK-LABEL: name: test_fma_s64
1189legalized:       true
1190regBankSelected: false
1191selected:        false
1192# CHECK: registers:
1193# CHECK: - { id: 0, class: fprb, preferred-register: '' }
1194# CHECK: - { id: 1, class: fprb, preferred-register: '' }
1195# CHECK: - { id: 2, class: fprb, preferred-register: '' }
1196# CHECK: - { id: 3, class: fprb, preferred-register: '' }
1197registers:
1198  - { id: 0, class: _ }
1199  - { id: 1, class: _ }
1200  - { id: 2, class: _ }
1201  - { id: 3, class: _ }
1202body:             |
1203  bb.0:
1204    liveins: $d0, $d1, $d2
1205
1206    %0(s64) = COPY $d0
1207    %1(s64) = COPY $d1
1208    %2(s64) = COPY $d2
1209    %3(s64) = G_FMA %0, %1, %2
1210    $d0 = COPY %3(s64)
1211    BX_RET 14, $noreg, implicit $d0
1212...
1213---
1214name:            test_fpext_s32_to_s64
1215# CHECK-LABEL: name: test_fpext_s32_to_s64
1216legalized:       true
1217regBankSelected: false
1218selected:        false
1219# CHECK: registers:
1220# CHECK: - { id: 0, class: fprb, preferred-register: '' }
1221# CHECK: - { id: 1, class: fprb, preferred-register: '' }
1222registers:
1223  - { id: 0, class: _ }
1224  - { id: 1, class: _ }
1225body:             |
1226  bb.0:
1227    liveins: $s0
1228
1229    %0(s32) = COPY $s0
1230    %1(s64) = G_FPEXT %0
1231    $d0 = COPY %1(s64)
1232    BX_RET 14, $noreg, implicit $d0
1233...
1234---
1235name:            test_fptrunc_s64_to_s32
1236# CHECK-LABEL: name: test_fptrunc_s64_to_s32
1237legalized:       true
1238regBankSelected: false
1239selected:        false
1240# CHECK: registers:
1241# CHECK: - { id: 0, class: fprb, preferred-register: '' }
1242# CHECK: - { id: 1, class: fprb, preferred-register: '' }
1243registers:
1244  - { id: 0, class: _ }
1245  - { id: 1, class: _ }
1246body:             |
1247  bb.0:
1248    liveins: $d0
1249
1250    %0(s64) = COPY $d0
1251    %1(s32) = G_FPTRUNC %0
1252    $s0 = COPY %1(s32)
1253    BX_RET 14, $noreg, implicit $s0
1254...
1255---
1256name:            test_fptosi_s32
1257# CHECK-LABEL: name: test_fptosi_s32
1258legalized:       true
1259regBankSelected: false
1260selected:        false
1261# CHECK: registers:
1262# CHECK: - { id: 0, class: fprb, preferred-register: '' }
1263# CHECK: - { id: 1, class: gprb, preferred-register: '' }
1264registers:
1265  - { id: 0, class: _ }
1266  - { id: 1, class: _ }
1267body:             |
1268  bb.0:
1269    liveins: $s0
1270
1271    %0(s32) = COPY $s0
1272    %1(s32) = G_FPTOSI %0
1273    $r0 = COPY %1(s32)
1274    BX_RET 14, $noreg, implicit $r0
1275
1276...
1277---
1278name:            test_fptosi_s64
1279# CHECK-LABEL: name: test_fptosi_s64
1280legalized:       true
1281regBankSelected: false
1282selected:        false
1283# CHECK: registers:
1284# CHECK: - { id: 0, class: fprb, preferred-register: '' }
1285# CHECK: - { id: 1, class: gprb, preferred-register: '' }
1286registers:
1287  - { id: 0, class: _ }
1288  - { id: 1, class: _ }
1289body:             |
1290  bb.0:
1291    liveins: $d0
1292
1293    %0(s64) = COPY $d0
1294    %1(s32) = G_FPTOSI %0
1295    $r0 = COPY %1(s32)
1296    BX_RET 14, $noreg, implicit $r0
1297...
1298---
1299name:            test_fptoui_s32
1300# CHECK-LABEL: name: test_fptoui_s32
1301legalized:       true
1302regBankSelected: false
1303selected:        false
1304# CHECK: registers:
1305# CHECK: - { id: 0, class: fprb, preferred-register: '' }
1306# CHECK: - { id: 1, class: gprb, preferred-register: '' }
1307registers:
1308  - { id: 0, class: _ }
1309  - { id: 1, class: _ }
1310body:             |
1311  bb.0:
1312    liveins: $s0
1313
1314    %0(s32) = COPY $s0
1315    %1(s32) = G_FPTOUI %0
1316    $r0 = COPY %1(s32)
1317    BX_RET 14, $noreg, implicit $r0
1318
1319...
1320---
1321name:            test_fptoui_s64
1322# CHECK-LABEL: name: test_fptoui_s64
1323legalized:       true
1324regBankSelected: false
1325selected:        false
1326# CHECK: registers:
1327# CHECK: - { id: 0, class: fprb, preferred-register: '' }
1328# CHECK: - { id: 1, class: gprb, preferred-register: '' }
1329registers:
1330  - { id: 0, class: _ }
1331  - { id: 1, class: _ }
1332body:             |
1333  bb.0:
1334    liveins: $d0
1335
1336    %0(s64) = COPY $d0
1337    %1(s32) = G_FPTOUI %0
1338    $r0 = COPY %1(s32)
1339    BX_RET 14, $noreg, implicit $r0
1340...
1341---
1342name:            test_sitofp_s32
1343# CHECK-LABEL: name: test_sitofp_s32
1344legalized:       true
1345regBankSelected: false
1346selected:        false
1347# CHECK: registers:
1348# CHECK: - { id: 0, class: gprb, preferred-register: '' }
1349# CHECK: - { id: 1, class: fprb, preferred-register: '' }
1350registers:
1351  - { id: 0, class: _ }
1352  - { id: 1, class: _ }
1353body:             |
1354  bb.0:
1355    liveins: $r0
1356
1357    %0(s32) = COPY $r0
1358    %1(s32) = G_SITOFP %0
1359    $s0 = COPY %1(s32)
1360    BX_RET 14, $noreg, implicit $s0
1361
1362...
1363---
1364name:            test_sitofp_s64
1365# CHECK-LABEL: name: test_sitofp_s64
1366legalized:       true
1367regBankSelected: false
1368selected:        false
1369# CHECK: registers:
1370# CHECK: - { id: 0, class: gprb, preferred-register: '' }
1371# CHECK: - { id: 1, class: fprb, preferred-register: '' }
1372registers:
1373  - { id: 0, class: _ }
1374  - { id: 1, class: _ }
1375body:             |
1376  bb.0:
1377    liveins: $r0
1378
1379    %0(s32) = COPY $r0
1380    %1(s64) = G_SITOFP %0
1381    $d0 = COPY %1(s64)
1382    BX_RET 14, $noreg, implicit $d0
1383...
1384---
1385name:            test_uitofp_s32
1386# CHECK-LABEL: name: test_uitofp_s32
1387legalized:       true
1388regBankSelected: false
1389selected:        false
1390# CHECK: registers:
1391# CHECK: - { id: 0, class: gprb, preferred-register: '' }
1392# CHECK: - { id: 1, class: fprb, preferred-register: '' }
1393registers:
1394  - { id: 0, class: _ }
1395  - { id: 1, class: _ }
1396body:             |
1397  bb.0:
1398    liveins: $r0
1399
1400    %0(s32) = COPY $r0
1401    %1(s32) = G_UITOFP %0
1402    $s0 = COPY %1(s32)
1403    BX_RET 14, $noreg, implicit $s0
1404
1405...
1406---
1407name:            test_uitofp_s64
1408# CHECK-LABEL: name: test_uitofp_s64
1409legalized:       true
1410regBankSelected: false
1411selected:        false
1412# CHECK: registers:
1413# CHECK: - { id: 0, class: gprb, preferred-register: '' }
1414# CHECK: - { id: 1, class: fprb, preferred-register: '' }
1415registers:
1416  - { id: 0, class: _ }
1417  - { id: 1, class: _ }
1418body:             |
1419  bb.0:
1420    liveins: $r0
1421
1422    %0(s32) = COPY $r0
1423    %1(s64) = G_UITOFP %0
1424    $d0 = COPY %1(s64)
1425    BX_RET 14, $noreg, implicit $d0
1426...
1427---
1428name:            test_soft_fp_s64
1429# CHECK-LABEL: name: test_soft_fp_s64
1430legalized:       true
1431regBankSelected: false
1432selected:        false
1433# CHECK: registers:
1434# CHECK: - { id: 0, class: gprb, preferred-register: '' }
1435# CHECK: - { id: 1, class: gprb, preferred-register: '' }
1436# CHECK: - { id: 2, class: fprb, preferred-register: '' }
1437# CHECK: - { id: 3, class: gprb, preferred-register: '' }
1438# CHECK: - { id: 4, class: gprb, preferred-register: '' }
1439
1440registers:
1441  - { id: 0, class: _ }
1442  - { id: 1, class: _ }
1443  - { id: 2, class: _ }
1444  - { id: 3, class: _ }
1445  - { id: 4, class: _ }
1446body:             |
1447  bb.0:
1448    liveins: $r0, $r1
1449
1450    %0(s32) = COPY $r0
1451    %1(s32) = COPY $r1
1452    %2(s64) = G_MERGE_VALUES %0(s32), %1(s32)
1453    %3(s32), %4(s32) = G_UNMERGE_VALUES %2(s64)
1454    $r0 = COPY %3(s32)
1455    $r1 = COPY %4(s32)
1456    BX_RET 14, $noreg, implicit $r0, implicit $r1
1457
1458...
1459