Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / llvm / test / CodeGen / AArch64 / expand-blr-rvmarker-pseudo.mir
blob83dedcb111a9771f0983e4771f64b0e3b7c9d034
1 # RUN: llc -run-pass=aarch64-expand-pseudo -mtriple=arm64-apple-ios -o - -emit-call-site-info %s | FileCheck %s
3 --- |
4   define void @test_1_callsite_info() {
5     ret void
6   }
8   define void @test_bl_pass_x0_arg() {
9     ret void
10   }
12   define void @test_bl_pass_x0_x1_x2_args() {
13     ret void
14   }
16   define void @test_bl_pass_w0_w1_args() {
17     ret void
18   }
20   define void @test_blr_pass_w0_w1_args() {
21     ret void
22   }
24   define void @foo(i32 %a) {
25     ret void
26   }
28   declare i8* @attachedcall()
29 ...
30 ---
32 # CHECK-LABEL: : test_1_callsite_info
33 # CHECK:       bb.0:
34 # CHECK-NEXT: liveins:
35 # CHECK-NEXT: {{  $}}
36 # CHECK-NEXT:    BUNDLE implicit-def $lr, implicit-def $w30, implicit-def $sp, implicit-def $wsp, implicit-def dead $x0, implicit-def $fp, implicit-def $w29, implicit $x0, implicit $sp, implicit $xzr, implicit $fp {
37 # CHECK-NEXT:      BLR $x0, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def dead $x0
38 # CHECK-NEXT:      ORRXrs $xzr, $fp, 0
39 # CHECK-NEXT:      BL @attachedcall, implicit-def $lr, implicit internal $sp
40 # CHECK-NEXT:   }
41 # CHECK-NEXT:    RET undef $lr, implicit killed $w0
43 name: test_1_callsite_info
44 callSites:
45   - {bb: 0, offset: 0, fwdArgRegs:
46     - { arg: 0, reg: '$x0' } }
47 body:             |
48     bb.0:
49         liveins: $lr, $x0
51         BLR_RVMARKER @attachedcall, $x0, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def dead $x0
52         RET_ReallyLR implicit killed $w0
53 ...
55 # CHECK-LABEL: : test_bl_pass_x0_arg
56 # CHECK:       bb.0:
57 # CHECK-NEXT: liveins:
58 # CHECK-NEXT: {{  $}}
59 # CHECK-NEXT:     BUNDLE implicit-def $lr, implicit-def $w30, implicit-def $sp, implicit-def $wsp, implicit-def dead $x0, implicit-def $fp, implicit-def $w29, implicit $sp, implicit $x0, implicit $xzr, implicit $fp {
60 # CHECK-NEXT:      BL @foo, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $x0, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def dead $x0
61 # CHECK-NEXT:      $fp = ORRXrs $xzr, $fp, 0
62 # CHECK-NEXT:      BL @attachedcall, implicit-def $lr, implicit internal $sp
63 # CHECK-NEXT:    }
64 # CHECK-NEXT:    RET undef $lr, implicit killed $w0
66 name: test_bl_pass_x0_arg
67 body:             |
68     bb.0:
69         liveins: $lr, $x0
71         BLR_RVMARKER @attachedcall, @foo, $x0, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def dead $x0
72         RET_ReallyLR implicit killed $w0
73 ...
75 # CHECK-LABEL: : test_bl_pass_x0_x1_x2_args
76 # CHECK:       bb.0:
77 # CHECK-NEXT: liveins:
78 # CHECK-NEXT: {{  $}}
79 # CHECK-NEXT:     BUNDLE implicit-def $lr, implicit-def $w30, implicit-def $sp, implicit-def $wsp, implicit-def $x0, implicit-def $w0, implicit-def $fp, implicit-def $w29, implicit $sp, implicit $x0, implicit $x1, implicit $x2, implicit $xzr, implicit $fp {
80 # CHECK-NEXT:      BL @foo, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $x0, implicit $x1, implicit $x2, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def $x0
81 # CHECK-NEXT:      $fp = ORRXrs $xzr, $fp, 0
82 # CHECK-NEXT:      BL @attachedcall, implicit-def $lr, implicit internal $sp
83 # CHECK-NEXT:    }
84 # CHECK-NEXT:    RET undef $lr
86 name: test_bl_pass_x0_x1_x2_args
87 body:             |
88     bb.0:
89         liveins: $lr, $x0, $x1, $x2
91         BLR_RVMARKER @attachedcall, @foo, $x0, $x1, $x2, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def $x0
92         RET_ReallyLR
93 ...
95 # CHECK-LABEL: : test_bl_pass_w0_w1_args
96 # CHECK:       bb.0:
97 # CHECK-NEXT: liveins:
98 # CHECK-NEXT: {{  $}}
99 # CHECK-NEXT:     BUNDLE implicit-def $lr, implicit-def $w30, implicit-def $sp, implicit-def $wsp, implicit-def dead $x0, implicit-def $fp, implicit-def $w29, implicit $sp, implicit $w0, implicit $w1, implicit $xzr, implicit $fp {
100 # CHECK-NEXT:      BL @foo, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $w0, implicit $w1, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def dead $x0
101 # CHECK-NEXT:      $fp = ORRXrs $xzr, $fp, 0
102 # CHECK-NEXT:      BL @attachedcall, implicit-def $lr, implicit internal $sp
103 # CHECK-NEXT:    }
104 # CHECK-NEXT:    RET undef $lr, implicit killed $w0
106 name: test_bl_pass_w0_w1_args
107 body:             |
108     bb.0:
109         liveins: $lr, $w0, $w1
111         BLR_RVMARKER @attachedcall, @foo, $w0, $w1, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def dead $x0
112         RET_ReallyLR implicit killed $w0
116 # CHECK-LABEL: : test_blr_pass_w0_w1_args
117 # CHECK:       bb.0:
118 # CHECK-NEXT: liveins:
119 # CHECK-NEXT: {{  $}}
120 # CHECK-NEXT:     BUNDLE implicit-def $lr, implicit-def $w30, implicit-def $sp, implicit-def $wsp, implicit-def dead $x0, implicit-def $fp, implicit-def $w29, implicit $x8, implicit $sp, implicit $w0, implicit $w1, implicit $xzr, implicit $fp {
121 # CHECK-NEXT:      BLR $x8, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $w0, implicit $w1, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def dead $x0
122 # CHECK-NEXT:      $fp = ORRXrs $xzr, $fp, 0
123 # CHECK-NEXT:      BL @attachedcall, implicit-def $lr, implicit internal $sp
124 # CHECK-NEXT:    }
125 # CHECK-NEXT:    RET undef $lr, implicit killed $w0
127 name: test_blr_pass_w0_w1_args
128 body:             |
129     bb.0:
130         liveins: $lr, $x8, $w0, $w1
132         BLR_RVMARKER @attachedcall, $x8, $w0, $w1, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def dead $x0
133         RET_ReallyLR implicit killed $w0