[RISCV] Add shrinkwrap test cases showing gaps in current impl
[llvm-project.git] / llvm / test / CodeGen / AArch64 / machine-outliner-all-stack.mir
blob290e355fd460bb30f705f0c466ecb7216d9ec46e
1 # RUN: llc -mtriple=aarch64--- -run-pass=machine-outliner \
2 # RUN: -verify-machineinstrs %s -o - | FileCheck %s
4 # Show that, when instructions that use the stack are present, it's possible
5 # for us to outline everything as the default outlining type.
6 # It's possible for reg-save-possible to outline by storing LR to a register,
7 # but most candidates in this case require us to modify the stack. The outliner
8 # should see that it's more beneficial to fix up instructions and save LR to
9 # the stack in this case.
11 --- |
12   define void @reg-save-possible() #0 { ret void }
13   define void @stack-save1() #0 { ret void }
14   define void @stack-save2() #0 { ret void }
15   define void @stack-save3() #0 { ret void }
16   attributes #0 = { minsize noinline noredzone "frame-pointer"="all" }
17 ...
18 ---
20 name:            reg-save-possible
21 tracksRegLiveness: true
22 body:             |
23   bb.0:
24   liveins: $lr
25   $lr = ORRXri $xzr, 1
26   $x19 = ORRXri $xzr, 1
27   $x20 = ORRXri $xzr, 1
28   bb.1:
29     liveins: $lr
30     ; CHECK-LABEL: name:            reg-save-possible
31     ; CHECK: $sp = STRXpre $lr, $sp, -16
32     ; CHECK-NEXT: BL [[FN:@OUTLINED_FUNCTION_[0-9]+]]
33     ; CHECK-NEXT: $sp, $lr = LDRXpost $sp, 16
34     $x20, $x19 = LDPXi $sp, 10
35     $x20, $x19 = LDPXi $sp, 10
36     $x20, $x19 = LDPXi $sp, 10
37     $x20, $x19 = LDPXi $sp, 10
38     $x20, $x19 = LDPXi $sp, 10
39   bb.2:
40     RET undef $lr
42 ...
43 ---
45 name:            stack-save1
46 tracksRegLiveness: true
47 body:             |
48   bb.0:
49   liveins: $lr, $x0, $x1, $x2, $x3, $x4, $x5, $x6, $x7, $x8, $x9, $x10, $x11, $x12, $x13, $x14, $x15, $x18, $x19, $x20, $x21, $x22, $x23, $x20, $x21, $x22, $x23, $x24, $x25, $x26, $x27, $x28, $fp
50   $lr = ORRXri $xzr, 1
51   bb.1:
52   liveins: $lr, $x0, $x1, $x2, $x3, $x4, $x5, $x6, $x7, $x8, $x9, $x10, $x11, $x12, $x13, $x14, $x15, $x18, $x19, $x20, $x21, $x22, $x23, $x20, $x21, $x22, $x23, $x24, $x25, $x26, $x27, $x28, $fp
53     ; CHECK-LABEL: name:            stack-save1
54     ; CHECK: $sp = STRXpre $lr, $sp, -16
55     ; CHECK-NEXT: BL [[FN]]
56     ; CHECK-NEXT: $sp, $lr = LDRXpost $sp, 16
57     $x20, $x19 = LDPXi $sp, 10
58     $x20, $x19 = LDPXi $sp, 10
59     $x20, $x19 = LDPXi $sp, 10
60     $x20, $x19 = LDPXi $sp, 10
61     $x20, $x19 = LDPXi $sp, 10
62   bb.2:
63   liveins: $lr, $x0, $x1, $x2, $x3, $x4, $x5, $x6, $x7, $x8, $x9, $x10, $x11, $x12, $x13, $x14, $x15, $x18, $x19, $x20, $x21, $x22, $x23, $x20, $x21, $x22, $x23, $x24, $x25, $x26, $x27, $x28, $fp
64     RET undef $lr
66 ...
67 ---
69 name:            stack-save2
70 tracksRegLiveness: true
71 body:             |
72   bb.0:
73   liveins: $lr, $x0, $x1, $x2, $x3, $x4, $x5, $x6, $x7, $x8, $x9, $x10, $x11, $x12, $x13, $x14, $x15, $x18, $x19, $x20, $x21, $x22, $x23, $x20, $x21, $x22, $x23, $x24, $x25, $x26, $x27, $x28, $fp
74   $lr = ORRXri $xzr, 1
75   bb.1:
76   liveins: $lr, $x0, $x1, $x2, $x3, $x4, $x5, $x6, $x7, $x8, $x9, $x10, $x11, $x12, $x13, $x14, $x15, $x18, $x19, $x20, $x21, $x22, $x23, $x20, $x21, $x22, $x23, $x24, $x25, $x26, $x27, $x28, $fp
77     ; CHECK-LABEL: name:            stack-save2
78     ; CHECK: $sp = STRXpre $lr, $sp, -16
79     ; CHECK-NEXT: BL [[FN]]
80     ; CHECK-NEXT: $sp, $lr = LDRXpost $sp, 16
81     $x20, $x19 = LDPXi $sp, 10
82     $x20, $x19 = LDPXi $sp, 10
83     $x20, $x19 = LDPXi $sp, 10
84     $x20, $x19 = LDPXi $sp, 10
85     $x20, $x19 = LDPXi $sp, 10
86   bb.2:
87   liveins: $lr, $x0, $x1, $x2, $x3, $x4, $x5, $x6, $x7, $x8, $x9, $x10, $x11, $x12, $x13, $x14, $x15, $x18, $x19, $x20, $x21, $x22, $x23, $x20, $x21, $x22, $x23, $x24, $x25, $x26, $x27, $x28, $fp
88     RET undef $lr
90 ...
91 ---
93 name:            stack-save3
94 tracksRegLiveness: true
95 body:             |
96   bb.0:
97   liveins: $lr, $x0, $x1, $x2, $x3, $x4, $x5, $x6, $x7, $x8, $x9, $x10, $x11, $x12, $x13, $x14, $x15, $x18, $x19, $x20, $x21, $x22, $x23, $x20, $x21, $x22, $x23, $x24, $x25, $x26, $x27, $x28, $fp
98   $lr = ORRXri $xzr, 1
99   bb.1:
100   liveins: $lr, $x0, $x1, $x2, $x3, $x4, $x5, $x6, $x7, $x8, $x9, $x10, $x11, $x12, $x13, $x14, $x15, $x18, $x19, $x20, $x21, $x22, $x23, $x20, $x21, $x22, $x23, $x24, $x25, $x26, $x27, $x28, $fp
101     ; CHECK-LABEL: name:            stack-save3
102     ; CHECK: $sp = STRXpre $lr, $sp, -16
103     ; CHECK-NEXT: BL [[FN]]
104     ; CHECK-NEXT: $sp, $lr = LDRXpost $sp, 16
105     $x20, $x19 = LDPXi $sp, 10
106     $x20, $x19 = LDPXi $sp, 10
107     $x20, $x19 = LDPXi $sp, 10
108     $x20, $x19 = LDPXi $sp, 10
109     $x20, $x19 = LDPXi $sp, 10
110   bb.2:
111   liveins: $lr, $x0, $x1, $x2, $x3, $x4, $x5, $x6, $x7, $x8, $x9, $x10, $x11, $x12, $x13, $x14, $x15, $x18, $x19, $x20, $x21, $x22, $x23, $x20, $x21, $x22, $x23, $x24, $x25, $x26, $x27, $x28, $fp
112     RET undef $lr