1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -O0 -mtriple arm64-- -run-pass=regbankselect %s -o - | FileCheck %s
4 # Check the default mappings for various instructions.
7 target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128"
9 define void @test_add_s32() { ret void }
10 define void @test_add_v4s32() { ret void }
11 define void @test_sub_s32() { ret void }
12 define void @test_sub_v4s32() { ret void }
13 define void @test_mul_s32() { ret void }
14 define void @test_mul_v4s32() { ret void }
16 define void @test_and_s32() { ret void }
17 define void @test_and_v4s32() { ret void }
18 define void @test_or_s32() { ret void }
19 define void @test_or_v4s32() { ret void }
20 define void @test_xor_s32() { ret void }
21 define void @test_xor_v4s32() { ret void }
23 define void @test_shl_s32() { ret void }
24 define void @test_shl_v4s32() { ret void }
25 define void @test_lshr_s32() { ret void }
26 define void @test_ashr_s32() { ret void }
28 define void @test_sdiv_s32() { ret void }
29 define void @test_udiv_s32() { ret void }
31 define void @test_anyext_s64_s32() { ret void }
32 define void @test_sext_s64_s32() { ret void }
33 define void @test_zext_s64_s32() { ret void }
34 define void @test_trunc_s32_s64() { ret void }
36 define void @test_constant_s32() { ret void }
37 define void @test_constant_p0() { ret void }
39 define void @test_icmp_s32() { ret void }
40 define void @test_icmp_p0() { ret void }
42 define void @test_frame_index_p0() {
47 define void @test_ptrtoint_s64_p0() { ret void }
48 define void @test_inttoptr_p0_s64() { ret void }
50 define void @test_load_s32_p0() { ret void }
51 define void @test_store_s32_p0() { ret void }
53 define void @test_fadd_s32() { ret void }
54 define void @test_fsub_s32() { ret void }
55 define void @test_fmul_s32() { ret void }
56 define void @test_fdiv_s32() { ret void }
58 define void @test_fpext_s64_s32() { ret void }
59 define void @test_fptrunc_s32_s64() { ret void }
61 define void @test_fconstant_s32() { ret void }
62 define void @test_fneg_s32() { ret void }
64 define void @test_fcmp_s32() { ret void }
66 define void @test_sitofp_s64_s32() { ret void }
67 define void @test_sitofp_v4s32() { ret void }
68 define void @test_uitofp_s32_s64() { ret void }
69 define void @test_uitofp_v4s32() { ret void }
71 define void @test_fptosi_s64_s32() { ret void }
72 define void @test_fptosi_v4s32() { ret void }
73 define void @test_fptoui_s32_s64() { ret void }
74 define void @test_fptoui_v4s32() { ret void }
76 define void @test_gphi_ptr() { ret void }
78 define void @test_restricted_tail_call() { ret void }
91 ; CHECK-LABEL: name: test_add_s32
92 ; CHECK: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0
93 ; CHECK: [[ADD:%[0-9]+]]:gpr(s32) = G_ADD [[COPY]], [[COPY]]
95 %1(s32) = G_ADD %0, %0
102 - { id: 0, class: _ }
103 - { id: 1, class: _ }
107 ; CHECK-LABEL: name: test_add_v4s32
108 ; CHECK: [[COPY:%[0-9]+]]:fpr(<4 x s32>) = COPY $q0
109 ; CHECK: [[ADD:%[0-9]+]]:fpr(<4 x s32>) = G_ADD [[COPY]], [[COPY]]
110 %0(<4 x s32>) = COPY $q0
111 %1(<4 x s32>) = G_ADD %0, %0
118 - { id: 0, class: _ }
119 - { id: 1, class: _ }
123 ; CHECK-LABEL: name: test_sub_s32
124 ; CHECK: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0
125 ; CHECK: [[SUB:%[0-9]+]]:gpr(s32) = G_SUB [[COPY]], [[COPY]]
127 %1(s32) = G_SUB %0, %0
134 - { id: 0, class: _ }
135 - { id: 1, class: _ }
139 ; CHECK-LABEL: name: test_sub_v4s32
140 ; CHECK: [[COPY:%[0-9]+]]:fpr(<4 x s32>) = COPY $q0
141 ; CHECK: [[SUB:%[0-9]+]]:fpr(<4 x s32>) = G_SUB [[COPY]], [[COPY]]
142 %0(<4 x s32>) = COPY $q0
143 %1(<4 x s32>) = G_SUB %0, %0
150 - { id: 0, class: _ }
151 - { id: 1, class: _ }
155 ; CHECK-LABEL: name: test_mul_s32
156 ; CHECK: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0
157 ; CHECK: [[MUL:%[0-9]+]]:gpr(s32) = G_MUL [[COPY]], [[COPY]]
159 %1(s32) = G_MUL %0, %0
166 - { id: 0, class: _ }
167 - { id: 1, class: _ }
171 ; CHECK-LABEL: name: test_mul_v4s32
172 ; CHECK: [[COPY:%[0-9]+]]:fpr(<4 x s32>) = COPY $q0
173 ; CHECK: [[MUL:%[0-9]+]]:fpr(<4 x s32>) = G_MUL [[COPY]], [[COPY]]
174 %0(<4 x s32>) = COPY $q0
175 %1(<4 x s32>) = G_MUL %0, %0
182 - { id: 0, class: _ }
183 - { id: 1, class: _ }
187 ; CHECK-LABEL: name: test_and_s32
188 ; CHECK: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0
189 ; CHECK: [[AND:%[0-9]+]]:gpr(s32) = G_AND [[COPY]], [[COPY]]
191 %1(s32) = G_AND %0, %0
198 - { id: 0, class: _ }
199 - { id: 1, class: _ }
203 ; CHECK-LABEL: name: test_and_v4s32
204 ; CHECK: [[COPY:%[0-9]+]]:fpr(<4 x s32>) = COPY $q0
205 ; CHECK: [[AND:%[0-9]+]]:fpr(<4 x s32>) = G_AND [[COPY]], [[COPY]]
206 %0(<4 x s32>) = COPY $q0
207 %1(<4 x s32>) = G_AND %0, %0
214 - { id: 0, class: _ }
215 - { id: 1, class: _ }
219 ; CHECK-LABEL: name: test_or_s32
220 ; CHECK: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0
221 ; CHECK: [[OR:%[0-9]+]]:gpr(s32) = G_OR [[COPY]], [[COPY]]
223 %1(s32) = G_OR %0, %0
230 - { id: 0, class: _ }
231 - { id: 1, class: _ }
235 ; CHECK-LABEL: name: test_or_v4s32
236 ; CHECK: [[COPY:%[0-9]+]]:fpr(<4 x s32>) = COPY $q0
237 ; CHECK: [[OR:%[0-9]+]]:fpr(<4 x s32>) = G_OR [[COPY]], [[COPY]]
238 %0(<4 x s32>) = COPY $q0
239 %1(<4 x s32>) = G_OR %0, %0
246 - { id: 0, class: _ }
247 - { id: 1, class: _ }
251 ; CHECK-LABEL: name: test_xor_s32
252 ; CHECK: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0
253 ; CHECK: [[XOR:%[0-9]+]]:gpr(s32) = G_XOR [[COPY]], [[COPY]]
255 %1(s32) = G_XOR %0, %0
262 - { id: 0, class: _ }
263 - { id: 1, class: _ }
267 ; CHECK-LABEL: name: test_xor_v4s32
268 ; CHECK: [[COPY:%[0-9]+]]:fpr(<4 x s32>) = COPY $q0
269 ; CHECK: [[XOR:%[0-9]+]]:fpr(<4 x s32>) = G_XOR [[COPY]], [[COPY]]
270 %0(<4 x s32>) = COPY $q0
271 %1(<4 x s32>) = G_XOR %0, %0
278 - { id: 0, class: _ }
279 - { id: 1, class: _ }
283 ; CHECK-LABEL: name: test_shl_s32
284 ; CHECK: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0
285 ; CHECK: [[SHL:%[0-9]+]]:gpr(s32) = G_SHL [[COPY]], [[COPY]](s32)
287 %1(s32) = G_SHL %0, %0
294 - { id: 0, class: _ }
295 - { id: 1, class: _ }
299 ; CHECK-LABEL: name: test_shl_v4s32
300 ; CHECK: [[COPY:%[0-9]+]]:fpr(<4 x s32>) = COPY $q0
301 ; CHECK: [[SHL:%[0-9]+]]:fpr(<4 x s32>) = G_SHL [[COPY]], [[COPY]](<4 x s32>)
302 %0(<4 x s32>) = COPY $q0
303 %1(<4 x s32>) = G_SHL %0, %0
310 - { id: 0, class: _ }
311 - { id: 1, class: _ }
315 ; CHECK-LABEL: name: test_lshr_s32
316 ; CHECK: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0
317 ; CHECK: [[LSHR:%[0-9]+]]:gpr(s32) = G_LSHR [[COPY]], [[COPY]](s32)
319 %1(s32) = G_LSHR %0, %0
326 - { id: 0, class: _ }
327 - { id: 1, class: _ }
331 ; CHECK-LABEL: name: test_ashr_s32
332 ; CHECK: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0
333 ; CHECK: [[ASHR:%[0-9]+]]:gpr(s32) = G_ASHR [[COPY]], [[COPY]](s32)
335 %1(s32) = G_ASHR %0, %0
342 - { id: 0, class: _ }
343 - { id: 1, class: _ }
347 ; CHECK-LABEL: name: test_sdiv_s32
348 ; CHECK: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0
349 ; CHECK: [[SDIV:%[0-9]+]]:gpr(s32) = G_SDIV [[COPY]], [[COPY]]
351 %1(s32) = G_SDIV %0, %0
358 - { id: 0, class: _ }
359 - { id: 1, class: _ }
363 ; CHECK-LABEL: name: test_udiv_s32
364 ; CHECK: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0
365 ; CHECK: [[UDIV:%[0-9]+]]:gpr(s32) = G_UDIV [[COPY]], [[COPY]]
367 %1(s32) = G_UDIV %0, %0
371 name: test_anyext_s64_s32
374 - { id: 0, class: _ }
375 - { id: 1, class: _ }
379 ; CHECK-LABEL: name: test_anyext_s64_s32
380 ; CHECK: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0
381 ; CHECK: [[ANYEXT:%[0-9]+]]:gpr(s64) = G_ANYEXT [[COPY]](s32)
383 %1(s64) = G_ANYEXT %0
387 name: test_sext_s64_s32
390 - { id: 0, class: _ }
391 - { id: 1, class: _ }
395 ; CHECK-LABEL: name: test_sext_s64_s32
396 ; CHECK: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0
397 ; CHECK: [[SEXT:%[0-9]+]]:gpr(s64) = G_SEXT [[COPY]](s32)
403 name: test_zext_s64_s32
406 - { id: 0, class: _ }
407 - { id: 1, class: _ }
411 ; CHECK-LABEL: name: test_zext_s64_s32
412 ; CHECK: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0
413 ; CHECK: [[ZEXT:%[0-9]+]]:gpr(s64) = G_ZEXT [[COPY]](s32)
419 name: test_trunc_s32_s64
422 - { id: 0, class: _ }
423 - { id: 1, class: _ }
427 ; CHECK-LABEL: name: test_trunc_s32_s64
428 ; CHECK: [[COPY:%[0-9]+]]:gpr(s64) = COPY $x0
429 ; CHECK: [[TRUNC:%[0-9]+]]:gpr(s32) = G_TRUNC [[COPY]](s64)
435 name: test_constant_s32
438 - { id: 0, class: _ }
441 ; CHECK-LABEL: name: test_constant_s32
442 ; CHECK: [[C:%[0-9]+]]:gpr(s32) = G_CONSTANT i32 123
443 %0(s32) = G_CONSTANT i32 123
447 name: test_constant_p0
450 - { id: 0, class: _ }
453 ; CHECK-LABEL: name: test_constant_p0
454 ; CHECK: [[C:%[0-9]+]]:gpr(p0) = G_CONSTANT i64 0
455 %0(p0) = G_CONSTANT i64 0
462 - { id: 0, class: _ }
463 - { id: 1, class: _ }
464 - { id: 2, class: _ }
468 ; CHECK-LABEL: name: test_icmp_s32
469 ; CHECK: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0
470 ; CHECK: [[ICMP:%[0-9]+]]:gpr(s32) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY]]
471 ; CHECK: [[TRUNC:%[0-9]+]]:gpr(s1) = G_TRUNC [[ICMP]](s32)
473 %1(s32) = G_ICMP intpred(ne), %0, %0
474 %2(s1) = G_TRUNC %1(s32)
481 - { id: 0, class: _ }
482 - { id: 1, class: _ }
483 - { id: 2, class: _ }
487 ; CHECK-LABEL: name: test_icmp_p0
488 ; CHECK: [[COPY:%[0-9]+]]:gpr(p0) = COPY $x0
489 ; CHECK: [[ICMP:%[0-9]+]]:gpr(s32) = G_ICMP intpred(ne), [[COPY]](p0), [[COPY]]
490 ; CHECK: [[TRUNC:%[0-9]+]]:gpr(s1) = G_TRUNC [[ICMP]](s32)
492 %1(s32) = G_ICMP intpred(ne), %0, %0
493 %2(s1) = G_TRUNC %1(s32)
497 name: test_frame_index_p0
500 - { id: 0, class: _ }
502 - { id: 0, name: ptr0, offset: 0, size: 8, alignment: 8 }
505 ; CHECK-LABEL: name: test_frame_index_p0
506 ; CHECK: [[FRAME_INDEX:%[0-9]+]]:gpr(p0) = G_FRAME_INDEX %stack.0.ptr0
507 %0(p0) = G_FRAME_INDEX %stack.0.ptr0
511 name: test_ptrtoint_s64_p0
514 - { id: 0, class: _ }
515 - { id: 1, class: _ }
519 ; CHECK-LABEL: name: test_ptrtoint_s64_p0
520 ; CHECK: [[COPY:%[0-9]+]]:gpr(p0) = COPY $x0
521 ; CHECK: [[PTRTOINT:%[0-9]+]]:gpr(s64) = G_PTRTOINT [[COPY]](p0)
523 %1(s64) = G_PTRTOINT %0
527 name: test_inttoptr_p0_s64
530 - { id: 0, class: _ }
531 - { id: 1, class: _ }
535 ; CHECK-LABEL: name: test_inttoptr_p0_s64
536 ; CHECK: [[COPY:%[0-9]+]]:gpr(s64) = COPY $x0
537 ; CHECK: [[INTTOPTR:%[0-9]+]]:gpr(p0) = G_INTTOPTR [[COPY]](s64)
539 %1(p0) = G_INTTOPTR %0
543 name: test_load_s32_p0
546 - { id: 0, class: _ }
547 - { id: 1, class: _ }
551 ; CHECK-LABEL: name: test_load_s32_p0
552 ; CHECK: [[COPY:%[0-9]+]]:gpr(p0) = COPY $x0
553 ; CHECK: [[LOAD:%[0-9]+]]:gpr(s32) = G_LOAD [[COPY]](p0) :: (load (s32))
555 %1(s32) = G_LOAD %0 :: (load (s32))
559 name: test_store_s32_p0
562 - { id: 0, class: _ }
563 - { id: 1, class: _ }
567 ; CHECK-LABEL: name: test_store_s32_p0
568 ; CHECK: [[COPY:%[0-9]+]]:gpr(p0) = COPY $x0
569 ; CHECK: [[COPY1:%[0-9]+]]:gpr(s32) = COPY $w1
570 ; CHECK: G_STORE [[COPY1]](s32), [[COPY]](p0) :: (store (s32))
573 G_STORE %1, %0 :: (store (s32))
580 - { id: 0, class: _ }
581 - { id: 1, class: _ }
585 ; CHECK-LABEL: name: test_fadd_s32
586 ; CHECK: [[COPY:%[0-9]+]]:fpr(s32) = COPY $s0
587 ; CHECK: [[FADD:%[0-9]+]]:fpr(s32) = G_FADD [[COPY]], [[COPY]]
589 %1(s32) = G_FADD %0, %0
596 - { id: 0, class: _ }
597 - { id: 1, class: _ }
601 ; CHECK-LABEL: name: test_fsub_s32
602 ; CHECK: [[COPY:%[0-9]+]]:fpr(s32) = COPY $s0
603 ; CHECK: [[FSUB:%[0-9]+]]:fpr(s32) = G_FSUB [[COPY]], [[COPY]]
605 %1(s32) = G_FSUB %0, %0
612 - { id: 0, class: _ }
613 - { id: 1, class: _ }
617 ; CHECK-LABEL: name: test_fmul_s32
618 ; CHECK: [[COPY:%[0-9]+]]:fpr(s32) = COPY $s0
619 ; CHECK: [[FMUL:%[0-9]+]]:fpr(s32) = G_FMUL [[COPY]], [[COPY]]
621 %1(s32) = G_FMUL %0, %0
628 - { id: 0, class: _ }
629 - { id: 1, class: _ }
633 ; CHECK-LABEL: name: test_fdiv_s32
634 ; CHECK: [[COPY:%[0-9]+]]:fpr(s32) = COPY $s0
635 ; CHECK: [[FDIV:%[0-9]+]]:fpr(s32) = G_FDIV [[COPY]], [[COPY]]
637 %1(s32) = G_FDIV %0, %0
641 name: test_fpext_s64_s32
644 - { id: 0, class: _ }
645 - { id: 1, class: _ }
649 ; CHECK-LABEL: name: test_fpext_s64_s32
650 ; CHECK: [[COPY:%[0-9]+]]:fpr(s32) = COPY $s0
651 ; CHECK: [[FPEXT:%[0-9]+]]:fpr(s64) = G_FPEXT [[COPY]](s32)
657 name: test_fptrunc_s32_s64
660 - { id: 0, class: _ }
661 - { id: 1, class: _ }
665 ; CHECK-LABEL: name: test_fptrunc_s32_s64
666 ; CHECK: [[COPY:%[0-9]+]]:fpr(s64) = COPY $d0
667 ; CHECK: [[FPTRUNC:%[0-9]+]]:fpr(s32) = G_FPTRUNC [[COPY]](s64)
669 %1(s32) = G_FPTRUNC %0
673 name: test_fconstant_s32
676 - { id: 0, class: _ }
679 ; CHECK-LABEL: name: test_fconstant_s32
680 ; CHECK: [[C:%[0-9]+]]:fpr(s32) = G_FCONSTANT float 1.000000e+00
681 %0(s32) = G_FCONSTANT float 1.0
690 ; CHECK-LABEL: name: test_fneg_s32
691 ; CHECK: [[COPY:%[0-9]+]]:fpr(s32) = COPY $s0
692 ; CHECK: [[FNEG:%[0-9]+]]:fpr(s32) = G_FNEG [[COPY]]
694 %1:_(s32) = G_FNEG %0(s32)
701 - { id: 0, class: _ }
702 - { id: 1, class: _ }
703 - { id: 2, class: _ }
707 ; CHECK-LABEL: name: test_fcmp_s32
708 ; CHECK: [[COPY:%[0-9]+]]:fpr(s32) = COPY $s0
709 ; CHECK: [[FCMP:%[0-9]+]]:gpr(s32) = G_FCMP floatpred(olt), [[COPY]](s32), [[COPY]]
710 ; CHECK: [[TRUNC:%[0-9]+]]:gpr(s1) = G_TRUNC [[FCMP]](s32)
712 %1(s32) = G_FCMP floatpred(olt), %0, %0
713 %2(s1) = G_TRUNC %1(s32)
717 name: test_sitofp_s64_s32
720 - { id: 0, class: _ }
721 - { id: 1, class: _ }
725 ; CHECK-LABEL: name: test_sitofp_s64_s32
726 ; CHECK: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0
727 ; CHECK: [[SITOFP:%[0-9]+]]:fpr(s64) = G_SITOFP [[COPY]](s32)
729 %1(s64) = G_SITOFP %0
733 name: test_sitofp_v4s32
736 - { id: 0, class: _ }
737 - { id: 1, class: _ }
741 ; CHECK-LABEL: name: test_sitofp_v4s32
742 ; CHECK: [[COPY:%[0-9]+]]:fpr(<4 x s32>) = COPY $q0
743 ; CHECK: [[SITOFP:%[0-9]+]]:fpr(<4 x s32>) = G_SITOFP [[COPY]](<4 x s32>)
744 %0(<4 x s32>) = COPY $q0
745 %1(<4 x s32>) = G_SITOFP %0
749 name: test_uitofp_s32_s64
752 - { id: 0, class: _ }
753 - { id: 1, class: _ }
757 ; CHECK-LABEL: name: test_uitofp_s32_s64
758 ; CHECK: [[COPY:%[0-9]+]]:gpr(s64) = COPY $x0
759 ; CHECK: [[UITOFP:%[0-9]+]]:fpr(s32) = G_UITOFP [[COPY]](s64)
761 %1(s32) = G_UITOFP %0
765 name: test_uitofp_v4s32
768 - { id: 0, class: _ }
769 - { id: 1, class: _ }
773 ; CHECK-LABEL: name: test_uitofp_v4s32
774 ; CHECK: [[COPY:%[0-9]+]]:fpr(<4 x s32>) = COPY $q0
775 ; CHECK: [[UITOFP:%[0-9]+]]:fpr(<4 x s32>) = G_UITOFP [[COPY]](<4 x s32>)
776 %0(<4 x s32>) = COPY $q0
777 %1(<4 x s32>) = G_UITOFP %0
781 name: test_fptosi_s64_s32
784 - { id: 0, class: _ }
785 - { id: 1, class: _ }
789 ; CHECK-LABEL: name: test_fptosi_s64_s32
790 ; CHECK: [[COPY:%[0-9]+]]:fpr(s32) = COPY $s0
791 ; CHECK: [[FPTOSI:%[0-9]+]]:gpr(s64) = G_FPTOSI [[COPY]](s32)
793 %1(s64) = G_FPTOSI %0
797 name: test_fptosi_v4s32
800 - { id: 0, class: _ }
801 - { id: 1, class: _ }
805 ; CHECK-LABEL: name: test_fptosi_v4s32
806 ; CHECK: [[COPY:%[0-9]+]]:fpr(<4 x s32>) = COPY $q0
807 ; CHECK: [[FPTOSI:%[0-9]+]]:fpr(<4 x s32>) = G_FPTOSI [[COPY]](<4 x s32>)
808 %0(<4 x s32>) = COPY $q0
809 %1(<4 x s32>) = G_FPTOSI %0
813 name: test_fptoui_s32_s64
816 - { id: 0, class: _ }
817 - { id: 1, class: _ }
821 ; CHECK-LABEL: name: test_fptoui_s32_s64
822 ; CHECK: [[COPY:%[0-9]+]]:fpr(s64) = COPY $d0
823 ; CHECK: [[FPTOUI:%[0-9]+]]:gpr(s32) = G_FPTOUI [[COPY]](s64)
825 %1(s32) = G_FPTOUI %0
829 name: test_fptoui_v4s32
832 - { id: 0, class: _ }
833 - { id: 1, class: _ }
837 ; CHECK-LABEL: name: test_fptoui_v4s32
838 ; CHECK: [[COPY:%[0-9]+]]:fpr(<4 x s32>) = COPY $q0
839 ; CHECK: [[FPTOUI:%[0-9]+]]:fpr(<4 x s32>) = G_FPTOUI [[COPY]](<4 x s32>)
840 %0(<4 x s32>) = COPY $q0
841 %1(<4 x s32>) = G_FPTOUI %0
847 tracksRegLiveness: true
849 - { id: 0, class: _, preferred-register: '' }
850 - { id: 1, class: _, preferred-register: '' }
851 - { id: 2, class: _, preferred-register: '' }
852 - { id: 3, class: _, preferred-register: '' }
853 - { id: 4, class: _, preferred-register: '' }
854 - { id: 5, class: _, preferred-register: '' }
856 ; CHECK-LABEL: name: test_gphi_ptr
858 ; CHECK: successors: %bb.1(0x40000000), %bb.2(0x40000000)
859 ; CHECK: liveins: $w2, $x0, $x1
860 ; CHECK: [[COPY:%[0-9]+]]:gpr(p0) = COPY $x0
861 ; CHECK: [[COPY1:%[0-9]+]]:gpr(p0) = COPY $x1
862 ; CHECK: [[COPY2:%[0-9]+]]:gpr(s32) = COPY $w2
863 ; CHECK: G_BRCOND [[COPY2]](s32), %bb.1
866 ; CHECK: successors: %bb.2(0x80000000)
868 ; CHECK: [[PHI:%[0-9]+]]:gpr(p0) = G_PHI [[COPY]](p0), %bb.0, [[COPY1]](p0), %bb.1
869 ; CHECK: $x0 = COPY [[PHI]](p0)
870 ; CHECK: RET_ReallyLR implicit $x0
872 successors: %bb.1, %bb.2
873 liveins: $w2, $x0, $x1
886 %3(p0) = G_PHI %0(p0), %bb.0, %1(p0), %bb.1
888 RET_ReallyLR implicit $x0
893 name: test_restricted_tail_call
895 tracksRegLiveness: true
899 ; CHECK-LABEL: name: test_restricted_tail_call
900 ; CHECK: liveins: $x16, $x17
901 ; CHECK: [[COPY:%[0-9]+]]:gpr(s64) = COPY $x16
902 ; CHECK: [[COPY1:%[0-9]+]]:gpr(s64) = COPY $x17
903 ; CHECK: RET_ReallyLR
904 %0:_(s64) = COPY $x16
905 %1:_(s64) = COPY $x17