1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 4
2 # RUN: llc -mtriple=aarch64-none-linux-gnu -mcpu=cortex-a510 -run-pass=machine-scheduler -debug-only=machine-scheduler %s -o - 2>&1 | FileCheck %s
5 # CHECK: SU(0): renamable $z0 = LD1H renamable $p0, renamable $x1, renamable $x10 :: (load unknown-size, align 1)
6 # CHECK-NEXT: # preds left : 0
7 # CHECK-NEXT: # succs left : 4
8 # CHECK-NEXT: # rdefs left : 0
9 # CHECK-NEXT: Latency : 3
10 # CHECK-NEXT: Depth : 0
11 # CHECK-NEXT: Height : 7
12 # CHECK-NEXT: Successors:
13 # CHECK-NEXT: SU(6): Out Latency=1
14 # CHECK-NEXT: SU(6): Data Latency=3 Reg=$z0
15 # CHECK-NEXT: SU(9): Ord Latency=0 Memory
16 # CHECK-NEXT: SU(8): Ord Latency=0 Memory
17 # CHECK-NEXT: Single Issue : false;
18 # CHECK-NEXT: SU(1): renamable $z1 = LD1H renamable $p0, renamable $x2, renamable $x10 :: (load unknown-size, align 1)
19 # CHECK-NEXT: # preds left : 0
20 # CHECK-NEXT: # succs left : 9
21 # CHECK-NEXT: # rdefs left : 0
22 # CHECK-NEXT: Latency : 3
23 # CHECK-NEXT: Depth : 0
24 # CHECK-NEXT: Height : 7
25 # CHECK-NEXT: Successors:
26 # CHECK-NEXT: SU(7): Out Latency=1
27 # CHECK-NEXT: SU(7): Out Latency=1
28 # CHECK-NEXT: SU(7): Out Latency=1
29 # CHECK-NEXT: SU(7): Out Latency=1
30 # CHECK-NEXT: SU(7): Out Latency=1
31 # CHECK-NEXT: SU(7): Out Latency=1
32 # CHECK-NEXT: SU(6): Data Latency=3 Reg=$z1
33 # CHECK-NEXT: SU(9): Ord Latency=0 Memory
34 # CHECK-NEXT: SU(8): Ord Latency=0 Memory
35 # CHECK-NEXT: Single Issue : false;
36 # CHECK-NEXT: SU(2): renamable $z2 = LD1H renamable $p0, renamable $x0, renamable $x10 :: (load unknown-size, align 1)
37 # CHECK-NEXT: # preds left : 0
38 # CHECK-NEXT: # succs left : 3
39 # CHECK-NEXT: # rdefs left : 0
40 # CHECK-NEXT: Latency : 3
41 # CHECK-NEXT: Depth : 0
42 # CHECK-NEXT: Height : 7
43 # CHECK-NEXT: Successors:
44 # CHECK-NEXT: SU(6): Data Latency=3 Reg=$z2
45 # CHECK-NEXT: SU(9): Ord Latency=0 Memory
46 # CHECK-NEXT: SU(8): Ord Latency=0 Memory
47 # CHECK-NEXT: Single Issue : false;
48 # CHECK-NEXT: SU(3): renamable $z3 = LD1H renamable $p0, renamable $x11, renamable $x10 :: (load unknown-size, align 1)
49 # CHECK-NEXT: # preds left : 0
50 # CHECK-NEXT: # succs left : 3
51 # CHECK-NEXT: # rdefs left : 0
52 # CHECK-NEXT: Latency : 3
53 # CHECK-NEXT: Depth : 0
54 # CHECK-NEXT: Height : 7
55 # CHECK-NEXT: Successors:
56 # CHECK-NEXT: SU(7): Data Latency=3 Reg=$z3
57 # CHECK-NEXT: SU(9): Ord Latency=0 Memory
58 # CHECK-NEXT: SU(8): Ord Latency=0 Memory
59 # CHECK-NEXT: Single Issue : false;
60 # CHECK-NEXT: SU(4): renamable $z4 = LD1H renamable $p0, renamable $x12, renamable $x10 :: (load unknown-size, align 1)
61 # CHECK-NEXT: # preds left : 0
62 # CHECK-NEXT: # succs left : 3
63 # CHECK-NEXT: # rdefs left : 0
64 # CHECK-NEXT: Latency : 3
65 # CHECK-NEXT: Depth : 0
66 # CHECK-NEXT: Height : 7
67 # CHECK-NEXT: Successors:
68 # CHECK-NEXT: SU(7): Data Latency=3 Reg=$z4
69 # CHECK-NEXT: SU(9): Ord Latency=0 Memory
70 # CHECK-NEXT: SU(8): Ord Latency=0 Memory
71 # CHECK-NEXT: Single Issue : false;
72 # CHECK-NEXT: SU(5): renamable $z5 = LD1H renamable $p0, renamable $x13, renamable $x10 :: (load unknown-size, align 1)
73 # CHECK-NEXT: # preds left : 0
74 # CHECK-NEXT: # succs left : 3
75 # CHECK-NEXT: # rdefs left : 0
76 # CHECK-NEXT: Latency : 3
77 # CHECK-NEXT: Depth : 0
78 # CHECK-NEXT: Height : 7
79 # CHECK-NEXT: Successors:
80 # CHECK-NEXT: SU(7): Data Latency=3 Reg=$z5
81 # CHECK-NEXT: SU(9): Ord Latency=0 Memory
82 # CHECK-NEXT: SU(8): Ord Latency=0 Memory
83 # CHECK-NEXT: Single Issue : false;
84 # CHECK-NEXT: SU(6): $z0 = FMAD_ZPmZZ_H renamable $p0, killed $z0(tied-def 0), killed renamable $z1, killed renamable $z2
85 # CHECK-NEXT: # preds left : 4
86 # CHECK-NEXT: # succs left : 7
87 # CHECK-NEXT: # rdefs left : 0
88 # CHECK-NEXT: Latency : 4
89 # CHECK-NEXT: Depth : 3
90 # CHECK-NEXT: Height : 4
91 # CHECK-NEXT: Predecessors:
92 # CHECK-NEXT: SU(2): Data Latency=3 Reg=$z2
93 # CHECK-NEXT: SU(1): Data Latency=3 Reg=$z1
94 # CHECK-NEXT: SU(0): Out Latency=1
95 # CHECK-NEXT: SU(0): Data Latency=3 Reg=$z0
96 # CHECK-NEXT: Successors:
97 # CHECK-NEXT: SU(8): Data Latency=4 Reg=$z0
98 # CHECK-NEXT: SU(7): Anti Latency=0
99 # CHECK-NEXT: SU(7): Anti Latency=0
100 # CHECK-NEXT: SU(7): Anti Latency=0
101 # CHECK-NEXT: SU(7): Anti Latency=0
102 # CHECK-NEXT: SU(7): Anti Latency=0
103 # CHECK-NEXT: SU(7): Anti Latency=0
104 # CHECK-NEXT: Single Issue : false;
105 # CHECK-NEXT: SU(7): BUNDLE implicit-def $z1, implicit-def $q1, implicit-def $d1, implicit-def $s1, implicit-def $h1, implicit-def $b1, implicit $z5, implicit $p0, implicit killed $z4, implicit killed $z3
106 # CHECK-NEXT: # preds left : 15
107 # CHECK-NEXT: # succs left : 1
108 # CHECK-NEXT: # rdefs left : 0
109 # CHECK-NEXT: Latency : 1
110 # CHECK-NEXT: Depth : 3
111 # CHECK-NEXT: Height : 4
112 # CHECK-NEXT: Predecessors:
113 # CHECK-NEXT: SU(6): Anti Latency=0
114 # CHECK-NEXT: SU(6): Anti Latency=0
115 # CHECK-NEXT: SU(6): Anti Latency=0
116 # CHECK-NEXT: SU(6): Anti Latency=0
117 # CHECK-NEXT: SU(6): Anti Latency=0
118 # CHECK-NEXT: SU(6): Anti Latency=0
119 # CHECK-NEXT: SU(5): Data Latency=3 Reg=$z5
120 # CHECK-NEXT: SU(4): Data Latency=3 Reg=$z4
121 # CHECK-NEXT: SU(3): Data Latency=3 Reg=$z3
122 # CHECK-NEXT: SU(1): Out Latency=1
123 # CHECK-NEXT: SU(1): Out Latency=1
124 # CHECK-NEXT: SU(1): Out Latency=1
125 # CHECK-NEXT: SU(1): Out Latency=1
126 # CHECK-NEXT: SU(1): Out Latency=1
127 # CHECK-NEXT: SU(1): Out Latency=1
128 # CHECK-NEXT: Successors:
129 # CHECK-NEXT: SU(9): Data Latency=4 Reg=$z1
130 # CHECK-NEXT: Single Issue : false;
131 # CHECK-NEXT: SU(8): ST1H killed renamable $z0, renamable $p0, renamable $x0, renamable $x10 :: (store unknown-size, align 1)
132 # CHECK-NEXT: # preds left : 7
133 # CHECK-NEXT: # succs left : 1
134 # CHECK-NEXT: # rdefs left : 0
135 # CHECK-NEXT: Latency : 1
136 # CHECK-NEXT: Depth : 7
137 # CHECK-NEXT: Height : 0
138 # CHECK-NEXT: Predecessors:
139 # CHECK-NEXT: SU(6): Data Latency=4 Reg=$z0
140 # CHECK-NEXT: SU(5): Ord Latency=0 Memory
141 # CHECK-NEXT: SU(4): Ord Latency=0 Memory
142 # CHECK-NEXT: SU(3): Ord Latency=0 Memory
143 # CHECK-NEXT: SU(2): Ord Latency=0 Memory
144 # CHECK-NEXT: SU(1): Ord Latency=0 Memory
145 # CHECK-NEXT: SU(0): Ord Latency=0 Memory
146 # CHECK-NEXT: Successors:
147 # CHECK-NEXT: SU(9): Ord Latency=0 Memory
148 # CHECK-NEXT: Single Issue : false;
149 # CHECK-NEXT: SU(9): ST1H killed renamable $z1, renamable $p0, renamable $x13, renamable $x10 :: (store unknown-size, align 1)
150 # CHECK-NEXT: # preds left : 8
151 # CHECK-NEXT: # succs left : 0
152 # CHECK-NEXT: # rdefs left : 0
153 # CHECK-NEXT: Latency : 1
154 # CHECK-NEXT: Depth : 7
155 # CHECK-NEXT: Height : 0
156 # CHECK-NEXT: Predecessors:
157 # CHECK-NEXT: SU(8): Ord Latency=0 Memory
158 # CHECK-NEXT: SU(7): Data Latency=4 Reg=$z1
159 # CHECK-NEXT: SU(5): Ord Latency=0 Memory
160 # CHECK-NEXT: SU(4): Ord Latency=0 Memory
161 # CHECK-NEXT: SU(3): Ord Latency=0 Memory
162 # CHECK-NEXT: SU(2): Ord Latency=0 Memory
163 # CHECK-NEXT: SU(1): Ord Latency=0 Memory
164 # CHECK-NEXT: SU(0): Ord Latency=0 Memory
165 # CHECK-NEXT: Single Issue : false;
166 # CHECK-NEXT: ExitSU: RET_ReallyLR
167 # CHECK-NEXT: # preds left : 0
168 # CHECK-NEXT: # succs left : 0
169 # CHECK-NEXT: # rdefs left : 0
170 # CHECK-NEXT: Latency : 0
171 # CHECK-NEXT: Depth : 0
172 # CHECK-NEXT: Height : 0
177 tracksRegLiveness: true
180 liveins: $p0, $x0, $x1, $x2, $x10, $x11, $x12, $x13
183 ; CHECK-LABEL: name: test
184 ; CHECK: liveins: $p0, $x0, $x1, $x2, $x10, $x11, $x12, $x13
186 ; CHECK-NEXT: renamable $z0 = LD1H renamable $p0, renamable $x1, renamable $x10 :: (load unknown-size, align 1)
187 ; CHECK-NEXT: renamable $z1 = LD1H renamable $p0, renamable $x2, renamable $x10 :: (load unknown-size, align 1)
188 ; CHECK-NEXT: renamable $z2 = LD1H renamable $p0, renamable $x0, renamable $x10 :: (load unknown-size, align 1)
189 ; CHECK-NEXT: renamable $z3 = LD1H renamable $p0, renamable $x11, renamable $x10 :: (load unknown-size, align 1)
190 ; CHECK-NEXT: renamable $z4 = LD1H renamable $p0, renamable $x12, renamable $x10 :: (load unknown-size, align 1)
191 ; CHECK-NEXT: renamable $z5 = LD1H renamable $p0, renamable $x13, renamable $x10 :: (load unknown-size, align 1)
192 ; CHECK-NEXT: $z0 = FMAD_ZPmZZ_H renamable $p0, killed $z0, killed renamable $z1, killed renamable $z2
193 ; CHECK-NEXT: BUNDLE implicit-def $z1, implicit-def $q1, implicit-def $d1, implicit-def $s1, implicit-def $h1, implicit-def $b1, implicit $z5, implicit $p0, implicit killed $z4, implicit killed $z3 {
194 ; CHECK-NEXT: $z1 = MOVPRFX_ZZ $z5
195 ; CHECK-NEXT: $z1 = FMLA_ZPmZZ_H renamable $p0, internal killed $z1, killed renamable $z4, killed renamable $z3
197 ; CHECK-NEXT: ST1H killed renamable $z0, renamable $p0, renamable $x0, renamable $x10 :: (store unknown-size, align 1)
198 ; CHECK-NEXT: ST1H killed renamable $z1, renamable $p0, renamable $x13, renamable $x10 :: (store unknown-size, align 1)
199 ; CHECK-NEXT: RET_ReallyLR
200 renamable $z0 = LD1H renamable $p0, renamable $x1, renamable $x10 :: (load unknown-size)
201 renamable $z1 = LD1H renamable $p0, renamable $x2, renamable $x10 :: (load unknown-size)
202 renamable $z2 = LD1H renamable $p0, renamable $x0, renamable $x10 :: (load unknown-size)
203 renamable $z3 = LD1H renamable $p0, renamable $x11, renamable $x10 :: (load unknown-size)
204 renamable $z4 = LD1H renamable $p0, renamable $x12, renamable $x10 :: (load unknown-size)
205 renamable $z5 = LD1H renamable $p0, renamable $x13, renamable $x10 :: (load unknown-size)
206 $z0 = FMAD_ZPmZZ_H renamable $p0, killed $z0, killed renamable $z1, killed renamable $z2
207 BUNDLE implicit-def $z1, implicit-def $q1, implicit-def $d1, implicit-def $s1, implicit-def $h1, implicit-def $b1, implicit $z5, implicit $p0, implicit killed $z4, implicit killed $z3 {
209 $z1 = FMLA_ZPmZZ_H renamable $p0, internal killed $z1, killed renamable $z4, killed renamable $z3
211 ST1H killed renamable $z0, renamable $p0, renamable $x0, renamable $x10 :: (store unknown-size)
212 ST1H killed renamable $z1, renamable $p0, renamable $x13, renamable $x10 :: (store unknown-size)