xref: /llvm-project/llvm/test/CodeGen/AArch64/machine-outliner-sort-per-priority.mir (revision 3b16630c26505060a876f578e4b2ba701c780e9a)
1# The content of this test is modfied upon the output obtained from running
2# `bin/llc -O2 -stop-before=machine-outliner <path_to_llvm_project>/llvm/test/CodeGen/AArch64/machine-outliner-sort-per-priority.ll -o -`
3# RUN: llc -mtriple=aarch64 -run-pass=machine-outliner -verify-machineinstrs %s -o - | FileCheck %s
4
5--- |
6  declare i32 @foo()
7
8  define void @f1() #0 { ret void }
9  define void @f2() #0 { ret void }
10  define void @f3() #0 { ret void }
11  define void @f4() #0 { ret void }
12  define void @f5() #0 { ret void }
13  define void @f6() #0 { ret void }
14
15  attributes #0 = { minsize }
16...
17---
18# CHECK-LABEL: name:            f1
19# CHECK-LABEL: bb.0:
20# CHECK-NEXT: liveins: $lr
21# CHECK-NEXT: {{ $}}
22# CHECK-NEXT: $x5 = ORRXrs $xzr, $lr, 0
23# CHECK-NEXT: BL @OUTLINED_FUNCTION_1
24# CHECK-NEXT: $lr = ORRXrs $xzr, $x5, 0
25# CHECK-NEXT: $w5 = MOVZWi 11, 0
26# CHECK-NEXT: TCRETURNdi @OUTLINED_FUNCTION_0
27name:            f1
28tracksRegLiveness: true
29frameInfo:
30  isCalleeSavedInfoValid: true
31machineFunctionInfo:
32  hasRedZone:      false
33body:             |
34  bb.0:
35    $w0 = MOVZWi 1, 0
36    $w1 = MOVZWi 2, 0
37    $w2 = MOVZWi 3, 0
38    $w3 = MOVZWi 4, 0
39    $w4 = MOVZWi 5, 0
40    $w5 = MOVZWi 11, 0
41    $w6 = MOVZWi 6, 0
42    $w7 = MOVZWi 7, 0
43    TCRETURNdi @foo, 0, csr_darwin_aarch64_aapcs, implicit $sp, implicit killed $w0, implicit killed $w1, implicit killed $w2, implicit killed $w3, implicit killed $w4, implicit killed $w5, implicit killed $w6, implicit killed $w7
44
45...
46---
47# CHECK-LABEL: name:            f2
48# CHECK-LABEL: bb.0:
49# CHECK-NEXT: liveins: $lr
50# CHECK-NEXT: {{ $}}
51# CHECK-NEXT: $x5 = ORRXrs $xzr, $lr, 0
52# CHECK-NEXT: BL @OUTLINED_FUNCTION_1
53# CHECK-NEXT: $lr = ORRXrs $xzr, $x5, 0
54# CHECK-NEXT: $w5 = MOVZWi 12, 0
55# CHECK-NEXT: TCRETURNdi @OUTLINED_FUNCTION_0
56name:            f2
57tracksRegLiveness: true
58frameInfo:
59  isCalleeSavedInfoValid: true
60machineFunctionInfo:
61  hasRedZone:      false
62body:             |
63  bb.0:
64    $w0 = MOVZWi 1, 0
65    $w1 = MOVZWi 2, 0
66    $w2 = MOVZWi 3, 0
67    $w3 = MOVZWi 4, 0
68    $w4 = MOVZWi 5, 0
69    $w5 = MOVZWi 12, 0
70    $w6 = MOVZWi 6, 0
71    $w7 = MOVZWi 7, 0
72    TCRETURNdi @foo, 0, csr_darwin_aarch64_aapcs, implicit $sp, implicit killed $w0, implicit killed $w1, implicit killed $w2, implicit killed $w3, implicit killed $w4, implicit killed $w5, implicit killed $w6, implicit killed $w7
73
74...
75---
76# CHECK-LABEL: name:            f3
77# CHECK-LABEL: bb.0:
78# CHECK-NEXT: liveins: $lr
79# CHECK-NEXT: {{ $}}
80# CHECK-NEXT: $x5 = ORRXrs $xzr, $lr, 0
81# CHECK-NEXT: BL @OUTLINED_FUNCTION_1
82# CHECK-NEXT: $lr = ORRXrs $xzr, $x5, 0
83# CHECK-NEXT: $w5 = MOVZWi 13, 0
84# CHECK-NEXT: TCRETURNdi @OUTLINED_FUNCTION_0
85name:            f3
86tracksRegLiveness: true
87frameInfo:
88  isCalleeSavedInfoValid: true
89machineFunctionInfo:
90  hasRedZone:      false
91body:             |
92  bb.0:
93    $w0 = MOVZWi 1, 0
94    $w1 = MOVZWi 2, 0
95    $w2 = MOVZWi 3, 0
96    $w3 = MOVZWi 4, 0
97    $w4 = MOVZWi 5, 0
98    $w5 = MOVZWi 13, 0
99    $w6 = MOVZWi 6, 0
100    $w7 = MOVZWi 7, 0
101    TCRETURNdi @foo, 0, csr_darwin_aarch64_aapcs, implicit $sp, implicit killed $w0, implicit killed $w1, implicit killed $w2, implicit killed $w3, implicit killed $w4, implicit killed $w5, implicit killed $w6, implicit killed $w7
102
103...
104---
105# CHECK-LABEL: name:            f4
106# CHECK-LABEL: bb.0:
107# CHECK-NEXT: liveins: $lr
108# CHECK-NEXT: {{ $}}
109# CHECK-NEXT: $x5 = ORRXrs $xzr, $lr, 0
110# CHECK-NEXT: BL @OUTLINED_FUNCTION_1
111# CHECK-NEXT: $lr = ORRXrs $xzr, $x5, 0
112# CHECK-NEXT: $w5 = MOVZWi 14, 0
113# CHECK-NEXT: TCRETURNdi @OUTLINED_FUNCTION_0
114name:            f4
115tracksRegLiveness: true
116frameInfo:
117  isCalleeSavedInfoValid: true
118machineFunctionInfo:
119  hasRedZone:      false
120body:             |
121  bb.0:
122    $w0 = MOVZWi 1, 0
123    $w1 = MOVZWi 2, 0
124    $w2 = MOVZWi 3, 0
125    $w3 = MOVZWi 4, 0
126    $w4 = MOVZWi 5, 0
127    $w5 = MOVZWi 14, 0
128    $w6 = MOVZWi 6, 0
129    $w7 = MOVZWi 7, 0
130    TCRETURNdi @foo, 0, csr_darwin_aarch64_aapcs, implicit $sp, implicit killed $w0, implicit killed $w1, implicit killed $w2, implicit killed $w3, implicit killed $w4, implicit killed $w5, implicit killed $w6, implicit killed $w7
131
132...
133---
134# CHECK-LABEL: name:            f5
135# CHECK-LABEL: bb.0:
136# CHECK-NEXT: liveins: $lr
137# CHECK-NEXT: {{ $}}
138# CHECK-NEXT: $x5 = ORRXrs $xzr, $lr, 0
139# CHECK-NEXT: BL @OUTLINED_FUNCTION_1
140# CHECK-NEXT: $lr = ORRXrs $xzr, $x5, 0
141# CHECK-NOT: @OUTLINED_FUNCTION_0
142name:            f5
143tracksRegLiveness: true
144frameInfo:
145  isCalleeSavedInfoValid: true
146machineFunctionInfo:
147  hasRedZone:      false
148body:             |
149  bb.0:
150    $w0 = MOVZWi 1, 0
151    $w1 = MOVZWi 2, 0
152    $w2 = MOVZWi 3, 0
153    $w3 = MOVZWi 4, 0
154    $w4 = MOVZWi 5, 0
155    $w5 = MOVZWi 15, 0
156    $w6 = MOVZWi 8, 0
157    $w7 = MOVZWi 9, 0
158    TCRETURNdi @foo, 0, csr_darwin_aarch64_aapcs, implicit $sp, implicit killed $w0, implicit killed $w1, implicit killed $w2, implicit killed $w3, implicit killed $w4, implicit killed $w5, implicit killed $w6, implicit killed $w7
159
160...
161---
162# CHECK-LABEL: name:            f6
163# CHECK-LABEL: bb.0:
164# CHECK-NEXT: liveins: $lr
165# CHECK-NEXT: {{ $}}
166# CHECK-NEXT: $x5 = ORRXrs $xzr, $lr, 0
167# CHECK-NEXT: BL @OUTLINED_FUNCTION_1
168# CHECK-NEXT: $lr = ORRXrs $xzr, $x5, 0
169# CHECK-NOT: @OUTLINED_FUNCTION_0
170name:            f6
171tracksRegLiveness: true
172frameInfo:
173  isCalleeSavedInfoValid: true
174machineFunctionInfo:
175  hasRedZone:      false
176body:             |
177  bb.0:
178    $w0 = MOVZWi 1, 0
179    $w1 = MOVZWi 2, 0
180    $w2 = MOVZWi 3, 0
181    $w3 = MOVZWi 4, 0
182    $w4 = MOVZWi 5, 0
183    $w5 = MOVZWi 16, 0
184    $w6 = MOVZWi 9, 0
185    $w7 = MOVZWi 8, 0
186    TCRETURNdi @foo, 0, csr_darwin_aarch64_aapcs, implicit $sp, implicit killed $w0, implicit killed $w1, implicit killed $w2, implicit killed $w3, implicit killed $w4, implicit killed $w5, implicit killed $w6, implicit killed $w7
187
188...
189
190# CHECK-LABEL: name:            OUTLINED_FUNCTION_0
191# CHECK-LABEL: bb.0:
192# CHECK-NEXT: liveins: $x19, $x20, $x21, $x22, $x23, $x24, $x25, $x26, $x27, $x28, $lr, $d8, $d9, $d10, $d11, $d12, $d13, $d14, $d15, $w0, $w1, $w2, $w3, $w4, $w5
193# CHECK-NEXT: {{ $}}
194# CHECK-NEXT: $w6 = MOVZWi 6, 0
195# CHECK-NEXT: $w7 = MOVZWi 7, 0
196
197# CHECK-LABEL: name:            OUTLINED_FUNCTION_1
198# CHECK-LABEL: bb.0:
199# CHECK-NEXT: liveins: $x19, $x20, $x21, $x22, $x23, $x24, $x25, $x26, $x27, $x28, $lr, $d8, $d9, $d10, $d11, $d12, $d13, $d14, $d15
200# CHECK-NEXT: {{ $}}
201# CHECK-NEXT: $w0 = MOVZWi 1, 0
202# CHECK-NEXT: $w1 = MOVZWi 2, 0
203# CHECK-NEXT: $w2 = MOVZWi 3, 0
204# CHECK-NEXT: $w3 = MOVZWi 4, 0
205# CHECK-NEXT: $w4 = MOVZWi 5, 0
206# CHECK-NEXT: RET $lr
207