1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=thumbv8.1m.main -mattr=+mve -run-pass=arm-low-overhead-loops %s -o - | FileCheck %s
4 define dso_local void @legal_vaddv_s32(i16* nocapture readonly %a, i32* %c, i32 %N) {
6 %cmp9 = icmp eq i32 %N, 0
8 %tmp1 = lshr i32 %tmp, 2
9 %tmp2 = shl nuw i32 %tmp1, 2
10 %tmp3 = add i32 %tmp2, -4
11 %tmp4 = lshr i32 %tmp3, 2
12 %tmp5 = add nuw nsw i32 %tmp4, 1
13 br i1 %cmp9, label %exit, label %vector.ph
15 vector.ph: ; preds = %entry
16 %start = call i32 @llvm.start.loop.iterations.i32(i32 %tmp5)
19 vector.body: ; preds = %vector.body, %vector.ph
20 %lsr.iv1 = phi i32 [ %lsr.iv.next, %vector.body ], [ %start, %vector.ph ]
21 %lsr.iv = phi i16* [ %scevgep, %vector.body ], [ %a, %vector.ph ]
22 %store.addr = phi i32* [ %c, %vector.ph ], [ %store.next, %vector.body ]
23 %tmp7 = phi i32 [ %N, %vector.ph ], [ %tmp9, %vector.body ]
24 %lsr.iv17 = bitcast i16* %lsr.iv to <4 x i16>*
25 %tmp8 = call <4 x i1> @llvm.arm.mve.vctp32(i32 %tmp7)
26 %tmp9 = sub i32 %tmp7, 4
27 %wide.masked.load = call <4 x i16> @llvm.masked.load.v4i16.p0v4i16(<4 x i16>* %lsr.iv17, i32 2, <4 x i1> %tmp8, <4 x i16> undef)
28 %tmp10 = sext <4 x i16> %wide.masked.load to <4 x i32>
29 %tmp11 = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %tmp10)
30 store i32 %tmp11, i32* %store.addr
31 %store.next = getelementptr i32, i32* %store.addr, i32 1
32 %scevgep = getelementptr i16, i16* %lsr.iv, i32 4
33 %tmp12 = call i32 @llvm.loop.decrement.reg.i32.i32.i32(i32 %lsr.iv1, i32 1)
34 %tmp13 = icmp ne i32 %tmp12, 0
35 %lsr.iv.next = add nsw i32 %lsr.iv1, -1
36 br i1 %tmp13, label %vector.body, label %exit
38 exit: ; preds = %vector.body, %entry
42 define dso_local void @legal_vaddv_s16(i16* nocapture readonly %a, i32* %c, i32 %N) {
44 %cmp9 = icmp eq i32 %N, 0
46 %tmp1 = lshr i32 %tmp, 2
47 %tmp2 = shl nuw i32 %tmp1, 2
48 %tmp3 = add i32 %tmp2, -4
49 %tmp4 = lshr i32 %tmp3, 2
50 %tmp5 = add nuw nsw i32 %tmp4, 1
51 br i1 %cmp9, label %exit, label %vector.ph
53 vector.ph: ; preds = %entry
54 %start = call i32 @llvm.start.loop.iterations.i32(i32 %tmp5)
57 vector.body: ; preds = %vector.body, %vector.ph
58 %lsr.iv1 = phi i32 [ %lsr.iv.next, %vector.body ], [ %start, %vector.ph ]
59 %lsr.iv = phi i16* [ %scevgep, %vector.body ], [ %a, %vector.ph ]
60 %store.addr = phi i32* [ %c, %vector.ph ], [ %store.next, %vector.body ]
61 %tmp7 = phi i32 [ %N, %vector.ph ], [ %tmp9, %vector.body ]
62 %lsr.iv17 = bitcast i16* %lsr.iv to <8 x i16>*
63 %tmp8 = call <8 x i1> @llvm.arm.mve.vctp16(i32 %tmp7)
64 %tmp9 = sub i32 %tmp7, 8
65 %wide.masked.load = call <8 x i16> @llvm.masked.load.v8i16.p0v8i16(<8 x i16>* %lsr.iv17, i32 2, <8 x i1> %tmp8, <8 x i16> undef)
66 %sext = sext <8 x i16> %wide.masked.load to <8 x i32>
67 %tmp11 = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> %sext)
68 store i32 %tmp11, i32* %store.addr
69 %store.next = getelementptr i32, i32* %store.addr, i32 1
70 %scevgep = getelementptr i16, i16* %lsr.iv, i32 8
71 %tmp12 = call i32 @llvm.loop.decrement.reg.i32.i32.i32(i32 %lsr.iv1, i32 1)
72 %tmp13 = icmp ne i32 %tmp12, 0
73 %lsr.iv.next = add nsw i32 %lsr.iv1, -1
74 br i1 %tmp13, label %vector.body, label %exit
76 exit: ; preds = %vector.body, %entry
80 define dso_local void @legal_vaddv_s8(i8* nocapture readonly %a, i32* %c, i32 %N) {
82 %cmp9 = icmp eq i32 %N, 0
84 %tmp1 = lshr i32 %tmp, 3
85 %tmp2 = shl nuw i32 %tmp1, 3
86 %tmp3 = add i32 %tmp2, -7
87 %tmp4 = lshr i32 %tmp3, 3
88 %tmp5 = add nuw nsw i32 %tmp4, 1
89 br i1 %cmp9, label %exit, label %vector.ph
91 vector.ph: ; preds = %entry
92 %start = call i32 @llvm.start.loop.iterations.i32(i32 %tmp5)
95 vector.body: ; preds = %vector.body, %vector.ph
96 %lsr.iv1 = phi i32 [ %lsr.iv.next, %vector.body ], [ %start, %vector.ph ]
97 %lsr.iv = phi i8* [ %scevgep, %vector.body ], [ %a, %vector.ph ]
98 %store.addr = phi i32* [ %c, %vector.ph ], [ %store.next, %vector.body ]
99 %tmp7 = phi i32 [ %N, %vector.ph ], [ %tmp9, %vector.body ]
100 %lsr.iv17 = bitcast i8* %lsr.iv to <16 x i8>*
101 %tmp8 = call <16 x i1> @llvm.arm.mve.vctp8(i32 %tmp7)
102 %tmp9 = sub i32 %tmp7, 16
103 %wide.masked.load = call <16 x i8> @llvm.masked.load.v16i8.p0v16i8(<16 x i8>* %lsr.iv17, i32 1, <16 x i1> %tmp8, <16 x i8> undef)
104 %sext = sext <16 x i8> %wide.masked.load to <16 x i32>
105 %tmp11 = call i32 @llvm.vector.reduce.add.v16i32(<16 x i32> %sext)
106 store i32 %tmp11, i32* %store.addr
107 %store.next = getelementptr i32, i32* %store.addr, i32 1
108 %scevgep = getelementptr i8, i8* %lsr.iv, i32 16
109 %tmp12 = call i32 @llvm.loop.decrement.reg.i32.i32.i32(i32 %lsr.iv1, i32 1)
110 %tmp13 = icmp ne i32 %tmp12, 0
111 %lsr.iv.next = add nsw i32 %lsr.iv1, -1
112 br i1 %tmp13, label %vector.body, label %exit
114 exit: ; preds = %vector.body, %entry
118 define dso_local i32 @legal_vaddva_s32(i16* nocapture readonly %a, i32 %N) {
120 %cmp9 = icmp eq i32 %N, 0
122 %tmp1 = lshr i32 %tmp, 2
123 %tmp2 = shl nuw i32 %tmp1, 2
124 %tmp3 = add i32 %tmp2, -4
125 %tmp4 = lshr i32 %tmp3, 2
126 %tmp5 = add nuw nsw i32 %tmp4, 1
127 br i1 %cmp9, label %exit, label %vector.ph
129 vector.ph: ; preds = %entry
130 %start = call i32 @llvm.start.loop.iterations.i32(i32 %tmp5)
131 br label %vector.body
133 vector.body: ; preds = %vector.body, %vector.ph
134 %lsr.iv1 = phi i32 [ %lsr.iv.next, %vector.body ], [ %start, %vector.ph ]
135 %lsr.iv = phi i16* [ %scevgep, %vector.body ], [ %a, %vector.ph ]
136 %tmp7 = phi i32 [ %N, %vector.ph ], [ %tmp9, %vector.body ]
137 %acc = phi i32 [ 0, %vector.ph ], [ %acc.next, %vector.body ]
138 %lsr.iv17 = bitcast i16* %lsr.iv to <4 x i16>*
139 %tmp8 = call <4 x i1> @llvm.arm.mve.vctp32(i32 %tmp7)
140 %tmp9 = sub i32 %tmp7, 4
141 %wide.masked.load = call <4 x i16> @llvm.masked.load.v4i16.p0v4i16(<4 x i16>* %lsr.iv17, i32 2, <4 x i1> %tmp8, <4 x i16> undef)
142 %tmp10 = sext <4 x i16> %wide.masked.load to <4 x i32>
143 %tmp11 = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %tmp10)
144 %acc.next = add i32 %tmp11, %acc
145 %scevgep = getelementptr i16, i16* %lsr.iv, i32 4
146 %tmp12 = call i32 @llvm.loop.decrement.reg.i32.i32.i32(i32 %lsr.iv1, i32 1)
147 %tmp13 = icmp ne i32 %tmp12, 0
148 %lsr.iv.next = add nsw i32 %lsr.iv1, -1
149 br i1 %tmp13, label %vector.body, label %exit
151 exit: ; preds = %vector.body, %entry
152 %res = phi i32 [ 0, %entry ], [ %acc.next, %vector.body ]
156 define dso_local void @illegal_vaddv_s32(i16* nocapture readonly %a, i32* %c, i32 %N) {
158 %cmp9 = icmp eq i32 %N, 0
160 %tmp1 = lshr i32 %tmp, 2
161 %tmp2 = shl nuw i32 %tmp1, 2
162 %tmp3 = add i32 %tmp2, -4
163 %tmp4 = lshr i32 %tmp3, 2
164 %tmp5 = add nuw nsw i32 %tmp4, 1
165 br i1 %cmp9, label %exit, label %vector.ph
167 vector.ph: ; preds = %entry
168 %start = call i32 @llvm.start.loop.iterations.i32(i32 %tmp5)
169 br label %vector.body
171 vector.body: ; preds = %vector.body, %vector.ph
172 %lsr.iv1 = phi i32 [ %lsr.iv.next, %vector.body ], [ %start, %vector.ph ]
173 %lsr.iv = phi i16* [ %scevgep, %vector.body ], [ %a, %vector.ph ]
174 %store.addr = phi i32* [ %c, %vector.ph ], [ %store.next, %vector.body ]
175 %tmp7 = phi i32 [ %N, %vector.ph ], [ %tmp9, %vector.body ]
176 %lsr.iv17 = bitcast i16* %lsr.iv to <4 x i16>*
177 %tmp8 = call <4 x i1> @llvm.arm.mve.vctp32(i32 %tmp7)
178 %tmp9 = sub i32 %tmp7, 4
179 %wide.masked.load = call <4 x i16> @llvm.masked.load.v4i16.p0v4i16(<4 x i16>* %lsr.iv17, i32 2, <4 x i1> %tmp8, <4 x i16> undef)
180 %tmp10 = sext <4 x i16> %wide.masked.load to <4 x i32>
181 %not = xor <4 x i32> %tmp10, <i32 -1, i32 -1, i32 -1, i32 -1>
182 %tmp11 = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %not)
183 store i32 %tmp11, i32* %store.addr
184 %store.next = getelementptr i32, i32* %store.addr, i32 1
185 %scevgep = getelementptr i16, i16* %lsr.iv, i32 4
186 %tmp12 = call i32 @llvm.loop.decrement.reg.i32.i32.i32(i32 %lsr.iv1, i32 1)
187 %tmp13 = icmp ne i32 %tmp12, 0
188 %lsr.iv.next = add nsw i32 %lsr.iv1, -1
189 br i1 %tmp13, label %vector.body, label %exit
191 exit: ; preds = %vector.body, %entry
195 define dso_local i32 @illegal_vaddva_s32(i16* nocapture readonly %a, i32 %N) {
197 %cmp9 = icmp eq i32 %N, 0
199 %tmp1 = lshr i32 %tmp, 2
200 %tmp2 = shl nuw i32 %tmp1, 2
201 %tmp3 = add i32 %tmp2, -4
202 %tmp4 = lshr i32 %tmp3, 2
203 %tmp5 = add nuw nsw i32 %tmp4, 1
204 br i1 %cmp9, label %exit, label %vector.ph
206 vector.ph: ; preds = %entry
207 %start = call i32 @llvm.start.loop.iterations.i32(i32 %tmp5)
208 br label %vector.body
210 vector.body: ; preds = %vector.body, %vector.ph
211 %lsr.iv1 = phi i32 [ %lsr.iv.next, %vector.body ], [ %start, %vector.ph ]
212 %lsr.iv = phi i16* [ %scevgep, %vector.body ], [ %a, %vector.ph ]
213 %tmp7 = phi i32 [ %N, %vector.ph ], [ %tmp9, %vector.body ]
214 %acc = phi i32 [ 0, %vector.ph ], [ %acc.next, %vector.body ]
215 %lsr.iv17 = bitcast i16* %lsr.iv to <4 x i16>*
216 %tmp8 = call <4 x i1> @llvm.arm.mve.vctp32(i32 %tmp7)
217 %tmp9 = sub i32 %tmp7, 4
218 %wide.masked.load = call <4 x i16> @llvm.masked.load.v4i16.p0v4i16(<4 x i16>* %lsr.iv17, i32 2, <4 x i1> %tmp8, <4 x i16> undef)
219 %tmp10 = sext <4 x i16> %wide.masked.load to <4 x i32>
220 %not = xor <4 x i32> %tmp10, <i32 -1, i32 -1, i32 -1, i32 -1>
221 %tmp11 = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %not)
222 %acc.next = add i32 %tmp11, %acc
223 %scevgep = getelementptr i16, i16* %lsr.iv, i32 4
224 %tmp12 = call i32 @llvm.loop.decrement.reg.i32.i32.i32(i32 %lsr.iv1, i32 1)
225 %tmp13 = icmp ne i32 %tmp12, 0
226 %lsr.iv.next = add nsw i32 %lsr.iv1, -1
227 br i1 %tmp13, label %vector.body, label %exit
229 exit: ; preds = %vector.body, %entry
230 %res = phi i32 [ 0, %entry ], [ %acc.next, %vector.body ]
234 define dso_local void @illegal_vaddv_u32(i16* nocapture readonly %a, i32* %c, i32 %N) {
236 %cmp9 = icmp eq i32 %N, 0
238 %tmp1 = lshr i32 %tmp, 2
239 %tmp2 = shl nuw i32 %tmp1, 2
240 %tmp3 = add i32 %tmp2, -4
241 %tmp4 = lshr i32 %tmp3, 2
242 %tmp5 = add nuw nsw i32 %tmp4, 1
243 br i1 %cmp9, label %exit, label %vector.ph
245 vector.ph: ; preds = %entry
246 %start = call i32 @llvm.start.loop.iterations.i32(i32 %tmp5)
247 br label %vector.body
249 vector.body: ; preds = %vector.body, %vector.ph
250 %lsr.iv1 = phi i32 [ %lsr.iv.next, %vector.body ], [ %start, %vector.ph ]
251 %lsr.iv = phi i16* [ %scevgep, %vector.body ], [ %a, %vector.ph ]
252 %store.addr = phi i32* [ %c, %vector.ph ], [ %store.next, %vector.body ]
253 %tmp7 = phi i32 [ %N, %vector.ph ], [ %tmp9, %vector.body ]
254 %lsr.iv17 = bitcast i16* %lsr.iv to <4 x i16>*
255 %tmp8 = call <4 x i1> @llvm.arm.mve.vctp32(i32 %tmp7)
256 %tmp9 = sub i32 %tmp7, 4
257 %wide.masked.load = call <4 x i16> @llvm.masked.load.v4i16.p0v4i16(<4 x i16>* %lsr.iv17, i32 2, <4 x i1> %tmp8, <4 x i16> undef)
258 %tmp10 = zext <4 x i16> %wide.masked.load to <4 x i32>
259 %not = xor <4 x i32> %tmp10, <i32 -1, i32 -1, i32 -1, i32 -1>
260 %tmp11 = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %not)
261 store i32 %tmp11, i32* %store.addr
262 %store.next = getelementptr i32, i32* %store.addr, i32 1
263 %scevgep = getelementptr i16, i16* %lsr.iv, i32 4
264 %tmp12 = call i32 @llvm.loop.decrement.reg.i32.i32.i32(i32 %lsr.iv1, i32 1)
265 %tmp13 = icmp ne i32 %tmp12, 0
266 %lsr.iv.next = add nsw i32 %lsr.iv1, -1
267 br i1 %tmp13, label %vector.body, label %exit
269 exit: ; preds = %vector.body, %entry
273 define dso_local i32 @illegal_vaddva_u32(i16* nocapture readonly %a, i32 %N) {
275 %cmp9 = icmp eq i32 %N, 0
277 %tmp1 = lshr i32 %tmp, 2
278 %tmp2 = shl nuw i32 %tmp1, 2
279 %tmp3 = add i32 %tmp2, -4
280 %tmp4 = lshr i32 %tmp3, 2
281 %tmp5 = add nuw nsw i32 %tmp4, 1
282 br i1 %cmp9, label %exit, label %vector.ph
284 vector.ph: ; preds = %entry
285 %start = call i32 @llvm.start.loop.iterations.i32(i32 %tmp5)
286 br label %vector.body
288 vector.body: ; preds = %vector.body, %vector.ph
289 %lsr.iv1 = phi i32 [ %lsr.iv.next, %vector.body ], [ %start, %vector.ph ]
290 %lsr.iv = phi i16* [ %scevgep, %vector.body ], [ %a, %vector.ph ]
291 %tmp7 = phi i32 [ %N, %vector.ph ], [ %tmp9, %vector.body ]
292 %acc = phi i32 [ 0, %vector.ph ], [ %acc.next, %vector.body ]
293 %lsr.iv17 = bitcast i16* %lsr.iv to <4 x i16>*
294 %tmp8 = call <4 x i1> @llvm.arm.mve.vctp32(i32 %tmp7)
295 %tmp9 = sub i32 %tmp7, 4
296 %wide.masked.load = call <4 x i16> @llvm.masked.load.v4i16.p0v4i16(<4 x i16>* %lsr.iv17, i32 2, <4 x i1> %tmp8, <4 x i16> undef)
297 %tmp10 = zext <4 x i16> %wide.masked.load to <4 x i32>
298 %not = xor <4 x i32> %tmp10, <i32 -1, i32 -1, i32 -1, i32 -1>
299 %tmp11 = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %not)
300 %acc.next = add i32 %tmp11, %acc
301 %scevgep = getelementptr i16, i16* %lsr.iv, i32 4
302 %tmp12 = call i32 @llvm.loop.decrement.reg.i32.i32.i32(i32 %lsr.iv1, i32 1)
303 %tmp13 = icmp ne i32 %tmp12, 0
304 %lsr.iv.next = add nsw i32 %lsr.iv1, -1
305 br i1 %tmp13, label %vector.body, label %exit
307 exit: ; preds = %vector.body, %entry
308 %res = phi i32 [ 0, %entry ], [ %acc.next, %vector.body ]
312 define dso_local void @illegal_vaddv_s16(i8* nocapture readonly %a, i32* %c, i32 %N, <8 x i16> %pass) {
314 %cmp9 = icmp eq i32 %N, 0
316 %tmp1 = lshr i32 %tmp, 2
317 %tmp2 = shl nuw i32 %tmp1, 2
318 %tmp3 = add i32 %tmp2, -4
319 %tmp4 = lshr i32 %tmp3, 2
320 %tmp5 = add nuw nsw i32 %tmp4, 1
321 br i1 %cmp9, label %exit, label %vector.ph
323 vector.ph: ; preds = %entry
324 %start = call i32 @llvm.start.loop.iterations.i32(i32 %tmp5)
325 br label %vector.body
327 vector.body: ; preds = %vector.body, %vector.ph
328 %lsr.iv1 = phi i32 [ %lsr.iv.next, %vector.body ], [ %start, %vector.ph ]
329 %lsr.iv = phi i8* [ %scevgep, %vector.body ], [ %a, %vector.ph ]
330 %store.addr = phi i32* [ %c, %vector.ph ], [ %store.next, %vector.body ]
331 %tmp7 = phi i32 [ %N, %vector.ph ], [ %tmp9, %vector.body ]
332 %lsr.iv17 = bitcast i8* %lsr.iv to <8 x i8>*
333 %tmp8 = call <8 x i1> @llvm.arm.mve.vctp16(i32 %tmp7)
334 %tmp9 = sub i32 %tmp7, 8
335 %wide.masked.load = call <8 x i8> @llvm.masked.load.v8i8.p0v8i8(<8 x i8>* %lsr.iv17, i32 1, <8 x i1> %tmp8, <8 x i8> undef)
336 %sext.wide = sext <8 x i8> %wide.masked.load to <8 x i16>
337 %sub = sub <8 x i16> %sext.wide, %pass
338 %reduce = call i16 @llvm.vector.reduce.add.v8i16(<8 x i16> %sub)
339 %sext.reduce = sext i16 %reduce to i32
340 store i32 %sext.reduce, i32* %store.addr
341 %store.next = getelementptr i32, i32* %store.addr, i32 1
342 %scevgep = getelementptr i8, i8* %lsr.iv, i32 8
343 %tmp12 = call i32 @llvm.loop.decrement.reg.i32.i32.i32(i32 %lsr.iv1, i32 1)
344 %tmp13 = icmp ne i32 %tmp12, 0
345 %lsr.iv.next = add nsw i32 %lsr.iv1, -1
346 br i1 %tmp13, label %vector.body, label %exit
348 exit: ; preds = %vector.body, %entry
352 define dso_local i32 @illegal_vaddva_s16(i8* nocapture readonly %a, i32 %N, <8 x i16> %pass) {
354 %cmp9 = icmp eq i32 %N, 0
356 %tmp1 = lshr i32 %tmp, 2
357 %tmp2 = shl nuw i32 %tmp1, 2
358 %tmp3 = add i32 %tmp2, -4
359 %tmp4 = lshr i32 %tmp3, 2
360 %tmp5 = add nuw nsw i32 %tmp4, 1
361 br i1 %cmp9, label %exit, label %vector.ph
363 vector.ph: ; preds = %entry
364 %start = call i32 @llvm.start.loop.iterations.i32(i32 %tmp5)
365 br label %vector.body
367 vector.body: ; preds = %vector.body, %vector.ph
368 %lsr.iv1 = phi i32 [ %lsr.iv.next, %vector.body ], [ %start, %vector.ph ]
369 %lsr.iv = phi i8* [ %scevgep, %vector.body ], [ %a, %vector.ph ]
370 %tmp7 = phi i32 [ %N, %vector.ph ], [ %tmp9, %vector.body ]
371 %acc = phi i32 [ 0, %vector.ph ], [ %acc.next, %vector.body ]
372 %lsr.iv17 = bitcast i8* %lsr.iv to <8 x i8>*
373 %tmp8 = call <8 x i1> @llvm.arm.mve.vctp16(i32 %tmp7)
374 %tmp9 = sub i32 %tmp7, 8
375 %wide.masked.load = call <8 x i8> @llvm.masked.load.v8i8.p0v8i8(<8 x i8>* %lsr.iv17, i32 1, <8 x i1> %tmp8, <8 x i8> undef)
376 %sext.wide = sext <8 x i8> %wide.masked.load to <8 x i16>
377 %sub = sub <8 x i16> %sext.wide, %pass
378 %reduce = call i16 @llvm.vector.reduce.add.v8i16(<8 x i16> %sub)
379 %sext.reduce = sext i16 %reduce to i32
380 %acc.next = add i32 %sext.reduce, %acc
381 %scevgep = getelementptr i8, i8* %lsr.iv, i32 8
382 %tmp12 = call i32 @llvm.loop.decrement.reg.i32.i32.i32(i32 %lsr.iv1, i32 1)
383 %tmp13 = icmp ne i32 %tmp12, 0
384 %lsr.iv.next = add nsw i32 %lsr.iv1, -1
385 br i1 %tmp13, label %vector.body, label %exit
387 exit: ; preds = %vector.body, %entry
388 %res = phi i32 [ 0, %entry ], [ %acc.next, %vector.body ]
392 define dso_local void @illegal_vaddv_u16(i16* nocapture readonly %a, i32* %c, i32 %N, <8 x i16> %pass) {
394 %cmp9 = icmp eq i32 %N, 0
396 %tmp1 = lshr i32 %tmp, 2
397 %tmp2 = shl nuw i32 %tmp1, 2
398 %tmp3 = add i32 %tmp2, -4
399 %tmp4 = lshr i32 %tmp3, 2
400 %tmp5 = add nuw nsw i32 %tmp4, 1
401 br i1 %cmp9, label %exit, label %vector.ph
403 vector.ph: ; preds = %entry
404 %start = call i32 @llvm.start.loop.iterations.i32(i32 %tmp5)
405 br label %vector.body
407 vector.body: ; preds = %vector.body, %vector.ph
408 %lsr.iv1 = phi i32 [ %lsr.iv.next, %vector.body ], [ %start, %vector.ph ]
409 %lsr.iv = phi i16* [ %scevgep, %vector.body ], [ %a, %vector.ph ]
410 %store.addr = phi i32* [ %c, %vector.ph ], [ %store.next, %vector.body ]
411 %tmp7 = phi i32 [ %N, %vector.ph ], [ %tmp9, %vector.body ]
412 %lsr.iv17 = bitcast i16* %lsr.iv to <8 x i16>*
413 %tmp8 = call <8 x i1> @llvm.arm.mve.vctp16(i32 %tmp7)
414 %tmp9 = sub i32 %tmp7, 8
415 %wide.masked.load = call <8 x i16> @llvm.masked.load.v8i16.p0v8i16(<8 x i16>* %lsr.iv17, i32 2, <8 x i1> %tmp8, <8 x i16> undef)
416 %sub = sub <8 x i16> %wide.masked.load, %pass
417 %reduce = call i16 @llvm.vector.reduce.add.v8i16(<8 x i16> %sub)
418 %zext.reduce = zext i16 %reduce to i32
419 store i32 %zext.reduce, i32* %store.addr
420 %store.next = getelementptr i32, i32* %store.addr, i32 1
421 %scevgep = getelementptr i16, i16* %lsr.iv, i32 8
422 %tmp12 = call i32 @llvm.loop.decrement.reg.i32.i32.i32(i32 %lsr.iv1, i32 1)
423 %tmp13 = icmp ne i32 %tmp12, 0
424 %lsr.iv.next = add nsw i32 %lsr.iv1, -1
425 br i1 %tmp13, label %vector.body, label %exit
427 exit: ; preds = %vector.body, %entry
431 define dso_local i32 @illegal_vaddva_u16(i16* nocapture readonly %a, i32 %N, <8 x i16> %pass) {
433 %cmp9 = icmp eq i32 %N, 0
435 %tmp1 = lshr i32 %tmp, 2
436 %tmp2 = shl nuw i32 %tmp1, 2
437 %tmp3 = add i32 %tmp2, -4
438 %tmp4 = lshr i32 %tmp3, 2
439 %tmp5 = add nuw nsw i32 %tmp4, 1
440 br i1 %cmp9, label %exit, label %vector.ph
442 vector.ph: ; preds = %entry
443 %start = call i32 @llvm.start.loop.iterations.i32(i32 %tmp5)
444 br label %vector.body
446 vector.body: ; preds = %vector.body, %vector.ph
447 %lsr.iv1 = phi i32 [ %lsr.iv.next, %vector.body ], [ %start, %vector.ph ]
448 %lsr.iv = phi i16* [ %scevgep, %vector.body ], [ %a, %vector.ph ]
449 %tmp7 = phi i32 [ %N, %vector.ph ], [ %tmp9, %vector.body ]
450 %acc = phi i32 [ 0, %vector.ph ], [ %acc.next, %vector.body ]
451 %lsr.iv17 = bitcast i16* %lsr.iv to <8 x i16>*
452 %tmp8 = call <8 x i1> @llvm.arm.mve.vctp16(i32 %tmp7)
453 %tmp9 = sub i32 %tmp7, 8
454 %wide.masked.load = call <8 x i16> @llvm.masked.load.v8i16.p0v8i16(<8 x i16>* %lsr.iv17, i32 2, <8 x i1> %tmp8, <8 x i16> undef)
455 %sub = sub <8 x i16> %wide.masked.load, %pass
456 %reduce = call i16 @llvm.vector.reduce.add.v8i16(<8 x i16> %sub)
457 %zext.reduce = zext i16 %reduce to i32
458 %acc.next = add i32 %zext.reduce, %acc
459 %scevgep = getelementptr i16, i16* %lsr.iv, i32 8
460 %tmp12 = call i32 @llvm.loop.decrement.reg.i32.i32.i32(i32 %lsr.iv1, i32 1)
461 %tmp13 = icmp ne i32 %tmp12, 0
462 %lsr.iv.next = add nsw i32 %lsr.iv1, -1
463 br i1 %tmp13, label %vector.body, label %exit
465 exit: ; preds = %vector.body, %entry
466 %res = phi i32 [ 0, %entry ], [ %acc.next, %vector.body ]
470 define dso_local void @illegal_vaddv_s8(i8* nocapture readonly %a, i32* %c, i32 %N, <16 x i8> %pass) {
472 %cmp9 = icmp eq i32 %N, 0
474 %tmp1 = lshr i32 %tmp, 3
475 %tmp2 = shl nuw i32 %tmp1, 3
476 %tmp3 = add i32 %tmp2, -7
477 %tmp4 = lshr i32 %tmp3, 3
478 %tmp5 = add nuw nsw i32 %tmp4, 1
479 br i1 %cmp9, label %exit, label %vector.ph
481 vector.ph: ; preds = %entry
482 %start = call i32 @llvm.start.loop.iterations.i32(i32 %tmp5)
483 br label %vector.body
485 vector.body: ; preds = %vector.body, %vector.ph
486 %lsr.iv1 = phi i32 [ %lsr.iv.next, %vector.body ], [ %start, %vector.ph ]
487 %lsr.iv = phi i8* [ %scevgep, %vector.body ], [ %a, %vector.ph ]
488 %store.addr = phi i32* [ %c, %vector.ph ], [ %store.next, %vector.body ]
489 %tmp7 = phi i32 [ %N, %vector.ph ], [ %tmp9, %vector.body ]
490 %lsr.iv17 = bitcast i8* %lsr.iv to <16 x i8>*
491 %tmp8 = call <16 x i1> @llvm.arm.mve.vctp8(i32 %tmp7)
492 %tmp9 = sub i32 %tmp7, 16
493 %wide.masked.load = call <16 x i8> @llvm.masked.load.v16i8.p0v16i8(<16 x i8>* %lsr.iv17, i32 1, <16 x i1> %tmp8, <16 x i8> undef)
494 %xor = xor <16 x i8> %wide.masked.load, %pass
495 %reduce = call i8 @llvm.vector.reduce.add.v16i8(<16 x i8> %xor)
496 %sext.reduce = sext i8 %reduce to i32
497 store i32 %sext.reduce, i32* %store.addr
498 %store.next = getelementptr i32, i32* %store.addr, i32 1
499 %scevgep = getelementptr i8, i8* %lsr.iv, i32 16
500 %tmp12 = call i32 @llvm.loop.decrement.reg.i32.i32.i32(i32 %lsr.iv1, i32 1)
501 %tmp13 = icmp ne i32 %tmp12, 0
502 %lsr.iv.next = add nsw i32 %lsr.iv1, -1
503 br i1 %tmp13, label %vector.body, label %exit
505 exit: ; preds = %vector.body, %entry
509 define dso_local i32 @illegal_vaddva_s8(i8* nocapture readonly %a, i32 %N, <16 x i8> %pass) {
511 %cmp9 = icmp eq i32 %N, 0
513 %tmp1 = lshr i32 %tmp, 3
514 %tmp2 = shl nuw i32 %tmp1, 3
515 %tmp3 = add i32 %tmp2, -7
516 %tmp4 = lshr i32 %tmp3, 3
517 %tmp5 = add nuw nsw i32 %tmp4, 1
518 br i1 %cmp9, label %exit, label %vector.ph
520 vector.ph: ; preds = %entry
521 %start = call i32 @llvm.start.loop.iterations.i32(i32 %tmp5)
522 br label %vector.body
524 vector.body: ; preds = %vector.body, %vector.ph
525 %lsr.iv1 = phi i32 [ %lsr.iv.next, %vector.body ], [ %start, %vector.ph ]
526 %lsr.iv = phi i8* [ %scevgep, %vector.body ], [ %a, %vector.ph ]
527 %tmp7 = phi i32 [ %N, %vector.ph ], [ %tmp9, %vector.body ]
528 %acc = phi i32 [ 0, %vector.ph ], [ %acc.next, %vector.body ]
529 %lsr.iv17 = bitcast i8* %lsr.iv to <16 x i8>*
530 %tmp8 = call <16 x i1> @llvm.arm.mve.vctp8(i32 %tmp7)
531 %tmp9 = sub i32 %tmp7, 16
532 %wide.masked.load = call <16 x i8> @llvm.masked.load.v16i8.p0v16i8(<16 x i8>* %lsr.iv17, i32 1, <16 x i1> %tmp8, <16 x i8> undef)
533 %xor = xor <16 x i8> %wide.masked.load, %pass
534 %reduce = call i8 @llvm.vector.reduce.add.v16i8(<16 x i8> %xor)
535 %sext.reduce = sext i8 %reduce to i32
536 %acc.next = add i32 %sext.reduce, %acc
537 %scevgep = getelementptr i8, i8* %lsr.iv, i32 16
538 %tmp12 = call i32 @llvm.loop.decrement.reg.i32.i32.i32(i32 %lsr.iv1, i32 1)
539 %tmp13 = icmp ne i32 %tmp12, 0
540 %lsr.iv.next = add nsw i32 %lsr.iv1, -1
541 br i1 %tmp13, label %vector.body, label %exit
543 exit: ; preds = %vector.body, %entry
544 %res = phi i32 [ 0, %entry ], [ %acc.next, %vector.body ]
548 define dso_local void @illegal_vaddv_u8(i8* nocapture readonly %a, i32* %c, i32 %N, <16 x i8> %pass) {
550 %cmp9 = icmp eq i32 %N, 0
552 %tmp1 = lshr i32 %tmp, 3
553 %tmp2 = shl nuw i32 %tmp1, 3
554 %tmp3 = add i32 %tmp2, -7
555 %tmp4 = lshr i32 %tmp3, 3
556 %tmp5 = add nuw nsw i32 %tmp4, 1
557 br i1 %cmp9, label %exit, label %vector.ph
559 vector.ph: ; preds = %entry
560 %start = call i32 @llvm.start.loop.iterations.i32(i32 %tmp5)
561 br label %vector.body
563 vector.body: ; preds = %vector.body, %vector.ph
564 %lsr.iv1 = phi i32 [ %lsr.iv.next, %vector.body ], [ %start, %vector.ph ]
565 %lsr.iv = phi i8* [ %scevgep, %vector.body ], [ %a, %vector.ph ]
566 %store.addr = phi i32* [ %c, %vector.ph ], [ %store.next, %vector.body ]
567 %tmp7 = phi i32 [ %N, %vector.ph ], [ %tmp9, %vector.body ]
568 %lsr.iv17 = bitcast i8* %lsr.iv to <16 x i8>*
569 %tmp8 = call <16 x i1> @llvm.arm.mve.vctp8(i32 %tmp7)
570 %tmp9 = sub i32 %tmp7, 16
571 %wide.masked.load = call <16 x i8> @llvm.masked.load.v16i8.p0v16i8(<16 x i8>* %lsr.iv17, i32 1, <16 x i1> %tmp8, <16 x i8> undef)
572 %xor = xor <16 x i8> %wide.masked.load, %pass
573 %reduce = call i8 @llvm.vector.reduce.add.v16i8(<16 x i8> %xor)
574 %zext.reduce = zext i8 %reduce to i32
575 store i32 %zext.reduce, i32* %store.addr
576 %store.next = getelementptr i32, i32* %store.addr, i32 1
577 %scevgep = getelementptr i8, i8* %lsr.iv, i32 16
578 %tmp12 = call i32 @llvm.loop.decrement.reg.i32.i32.i32(i32 %lsr.iv1, i32 1)
579 %tmp13 = icmp ne i32 %tmp12, 0
580 %lsr.iv.next = add nsw i32 %lsr.iv1, -1
581 br i1 %tmp13, label %vector.body, label %exit
583 exit: ; preds = %vector.body, %entry
587 define dso_local i32 @illegal_vaddva_u8(i8* nocapture readonly %a, i32 %N, <16 x i8> %pass) {
589 %cmp9 = icmp eq i32 %N, 0
591 %tmp1 = lshr i32 %tmp, 3
592 %tmp2 = shl nuw i32 %tmp1, 3
593 %tmp3 = add i32 %tmp2, -7
594 %tmp4 = lshr i32 %tmp3, 3
595 %tmp5 = add nuw nsw i32 %tmp4, 1
596 br i1 %cmp9, label %exit, label %vector.ph
598 vector.ph: ; preds = %entry
599 %start = call i32 @llvm.start.loop.iterations.i32(i32 %tmp5)
600 br label %vector.body
602 vector.body: ; preds = %vector.body, %vector.ph
603 %lsr.iv1 = phi i32 [ %lsr.iv.next, %vector.body ], [ %start, %vector.ph ]
604 %lsr.iv = phi i8* [ %scevgep, %vector.body ], [ %a, %vector.ph ]
605 %tmp7 = phi i32 [ %N, %vector.ph ], [ %tmp9, %vector.body ]
606 %acc = phi i32 [ 0, %vector.ph ], [ %acc.next, %vector.body ]
607 %lsr.iv17 = bitcast i8* %lsr.iv to <16 x i8>*
608 %tmp8 = call <16 x i1> @llvm.arm.mve.vctp8(i32 %tmp7)
609 %tmp9 = sub i32 %tmp7, 16
610 %wide.masked.load = call <16 x i8> @llvm.masked.load.v16i8.p0v16i8(<16 x i8>* %lsr.iv17, i32 1, <16 x i1> %tmp8, <16 x i8> undef)
611 %xor = xor <16 x i8> %wide.masked.load, %pass
612 %reduce = call i8 @llvm.vector.reduce.add.v16i8(<16 x i8> %xor)
613 %zext.reduce = zext i8 %reduce to i32
614 %acc.next = add i32 %zext.reduce, %acc
615 %scevgep = getelementptr i8, i8* %lsr.iv, i32 16
616 %tmp12 = call i32 @llvm.loop.decrement.reg.i32.i32.i32(i32 %lsr.iv1, i32 1)
617 %tmp13 = icmp ne i32 %tmp12, 0
618 %lsr.iv.next = add nsw i32 %lsr.iv1, -1
619 br i1 %tmp13, label %vector.body, label %exit
621 exit: ; preds = %vector.body, %entry
622 %res = phi i32 [ 0, %entry ], [ %acc.next, %vector.body ]
626 define hidden i32 @regalloc_legality_vaddva_u32(i16* %x, i16* %y, i32 %n) {
628 %cmp22 = icmp sgt i32 %n, 0
630 %1 = icmp slt i32 %n, 4
631 %smin = select i1 %1, i32 %n, i32 4
632 %2 = sub i32 %0, %smin
634 %4 = add nuw nsw i32 %3, 1
635 br i1 %cmp22, label %while.body.preheader, label %while.end
637 while.body.preheader: ; preds = %entry
638 %start = call i32 @llvm.start.loop.iterations.i32(i32 %4)
641 while.body: ; preds = %while.body.preheader, %while.body
642 %x.addr.026 = phi i16* [ %add.ptr, %while.body ], [ %x, %while.body.preheader ]
643 %y.addr.025 = phi i16* [ %add.ptr4, %while.body ], [ %y, %while.body.preheader ]
644 %n.addr.023 = phi i32 [ %sub, %while.body ], [ %n, %while.body.preheader ]
645 %acc = phi i32 [ %acc.next, %while.body ], [ 0, %while.body.preheader ]
646 %5 = phi i32 [ %start, %while.body.preheader ], [ %6, %while.body ]
647 %tmp3 = bitcast i16* %y.addr.025 to <4 x i16>*
648 %tmp1 = bitcast i16* %x.addr.026 to <4 x i16>*
649 %tmp = tail call <4 x i1> @llvm.arm.mve.vctp32(i32 %n.addr.023)
650 %tmp2 = tail call <4 x i16> @llvm.masked.load.v4i16.p0v4i16(<4 x i16>* %tmp1, i32 2, <4 x i1> %tmp, <4 x i16> zeroinitializer)
651 %zext.wide.1 = zext <4 x i16> %tmp2 to <4 x i32>
652 %tmp4 = tail call <4 x i16> @llvm.masked.load.v4i16.p0v4i16(<4 x i16>* %tmp3, i32 2, <4 x i1> %tmp, <4 x i16> zeroinitializer)
653 %zext.wide.2 = zext <4 x i16> %tmp4 to <4 x i32>
654 %or = or <4 x i32> %zext.wide.1, %zext.wide.2
655 %reduce = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %or)
656 %acc.next = add i32 %reduce, %acc
657 %add.ptr = getelementptr inbounds i16, i16* %x.addr.026, i32 4
658 %add.ptr4 = getelementptr inbounds i16, i16* %y.addr.025, i32 4
659 %sub = add nsw i32 %n.addr.023, -4
660 %6 = call i32 @llvm.loop.decrement.reg.i32.i32.i32(i32 %5, i32 1)
661 %7 = icmp ne i32 %6, 0
662 br i1 %7, label %while.body, label %while.end
664 while.end: ; preds = %while.body, %entry
665 %res = phi i32 [ 0, %entry ], [ %acc.next, %while.body ]
669 define hidden i32 @regalloc_legality_vaddv_u16(i16* %x, i16* %y, i32 %n) {
671 %cmp22 = icmp sgt i32 %n, 0
673 %1 = icmp slt i32 %n, 8
674 %smin = select i1 %1, i32 %n, i32 8
675 %2 = sub i32 %0, %smin
677 %4 = add nuw nsw i32 %3, 1
678 br i1 %cmp22, label %while.body.preheader, label %while.end
680 while.body.preheader: ; preds = %entry
681 %start = call i32 @llvm.start.loop.iterations.i32(i32 %4)
684 while.body: ; preds = %while.body.preheader, %while.body
685 %x.addr.026 = phi i16* [ %add.ptr, %while.body ], [ %x, %while.body.preheader ]
686 %y.addr.025 = phi i16* [ %add.ptr4, %while.body ], [ %y, %while.body.preheader ]
687 %n.addr.023 = phi i32 [ %sub, %while.body ], [ %n, %while.body.preheader ]
688 %acc = phi i32 [ %acc.next, %while.body ], [ 0, %while.body.preheader ]
689 %5 = phi i32 [ %start, %while.body.preheader ], [ %6, %while.body ]
690 %tmp3 = bitcast i16* %y.addr.025 to <8 x i16>*
691 %tmp1 = bitcast i16* %x.addr.026 to <8 x i16>*
692 %tmp = tail call <8 x i1> @llvm.arm.mve.vctp16(i32 %n.addr.023)
693 %tmp2 = tail call <8 x i16> @llvm.masked.load.v8i16.p0v8i16(<8 x i16>* %tmp1, i32 2, <8 x i1> %tmp, <8 x i16> zeroinitializer)
694 %tmp4 = tail call <8 x i16> @llvm.masked.load.v8i16.p0v8i16(<8 x i16>* %tmp3, i32 2, <8 x i1> %tmp, <8 x i16> zeroinitializer)
695 %or = or <8 x i16> %tmp2, %tmp4
696 %reduce = call i16 @llvm.vector.reduce.add.v8i16(<8 x i16> %or)
697 %zext.reduce = zext i16 %reduce to i32
698 %acc.next = add i32 %zext.reduce, %acc
699 %add.ptr = getelementptr inbounds i16, i16* %x.addr.026, i32 8
700 %add.ptr4 = getelementptr inbounds i16, i16* %y.addr.025, i32 8
701 %sub = add nsw i32 %n.addr.023, -8
702 %6 = call i32 @llvm.loop.decrement.reg.i32.i32.i32(i32 %5, i32 1)
703 %7 = icmp ne i32 %6, 0
704 br i1 %7, label %while.body, label %while.end
706 while.end: ; preds = %while.body, %entry
707 %res = phi i32 [ 0, %entry ], [ %acc.next, %while.body ]
711 define hidden i32 @regalloc_illegality_vaddva_s32(i16* %x, i16* %y, i16* %z, i32 %n) {
713 %cmp22 = icmp sgt i32 %n, 0
715 %1 = icmp slt i32 %n, 8
716 %smin = select i1 %1, i32 %n, i32 8
717 %2 = sub i32 %0, %smin
719 %4 = add nuw nsw i32 %3, 1
720 br i1 %cmp22, label %while.body.preheader, label %while.end
722 while.body.preheader: ; preds = %entry
723 %start = call i32 @llvm.start.loop.iterations.i32(i32 %4)
726 while.body: ; preds = %while.body.preheader, %while.body
727 %x.addr.026 = phi i16* [ %add.ptr, %while.body ], [ %x, %while.body.preheader ]
728 %y.addr.025 = phi i16* [ %add.ptr4, %while.body ], [ %y, %while.body.preheader ]
729 %n.addr.023 = phi i32 [ %sub, %while.body ], [ %n, %while.body.preheader ]
730 %acc = phi i32 [ %acc.next, %while.body ], [ 0, %while.body.preheader ]
731 %5 = phi i32 [ %start, %while.body.preheader ], [ %6, %while.body ]
732 %tmp3 = bitcast i16* %y.addr.025 to <8 x i16>*
733 %tmp1 = bitcast i16* %x.addr.026 to <8 x i16>*
734 %tmp = tail call <8 x i1> @llvm.arm.mve.vctp16(i32 %n.addr.023)
735 %tmp2 = tail call <8 x i16> @llvm.masked.load.v8i16.p0v8i16(<8 x i16>* %tmp1, i32 2, <8 x i1> %tmp, <8 x i16> zeroinitializer)
736 %tmp4 = tail call <8 x i16> @llvm.masked.load.v8i16.p0v8i16(<8 x i16>* %tmp3, i32 2, <8 x i1> %tmp, <8 x i16> zeroinitializer)
737 %tmp5 = tail call <4 x i32> @llvm.arm.mve.vmull.v4i32.v8i16(<8 x i16> %tmp2, <8 x i16> %tmp4, i32 0, i32 1)
738 %tmp6 = tail call <4 x i32> @llvm.arm.mve.vmull.v4i32.v8i16(<8 x i16> %tmp2, <8 x i16> %tmp4, i32 0, i32 0)
739 %mul = add <4 x i32> %tmp5, %tmp6
740 %reduce = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %mul)
741 %acc.next = add i32 %reduce, %acc
742 %add.ptr = getelementptr inbounds i16, i16* %x.addr.026, i32 8
743 %add.ptr4 = getelementptr inbounds i16, i16* %y.addr.025, i32 8
744 %sub = add nsw i32 %n.addr.023, -8
745 %6 = call i32 @llvm.loop.decrement.reg.i32.i32.i32(i32 %5, i32 1)
746 %7 = icmp ne i32 %6, 0
747 br i1 %7, label %while.body, label %while.end
749 while.end: ; preds = %while.body, %entry
750 %res = phi i32 [ 0, %entry ], [ %acc.next, %while.body ]
754 define hidden i32 @illegal_vmull_non_zero(i16* %x, i16* %y, i16* %z, i32 %n) {
756 %cmp22 = icmp sgt i32 %n, 0
758 %1 = icmp slt i32 %n, 8
759 %smin = select i1 %1, i32 %n, i32 8
760 %2 = sub i32 %0, %smin
762 %4 = add nuw nsw i32 %3, 1
763 br i1 %cmp22, label %while.body.preheader, label %while.end
765 while.body.preheader: ; preds = %entry
766 %start = call i32 @llvm.start.loop.iterations.i32(i32 %4)
769 while.body: ; preds = %while.body.preheader, %while.body
770 %x.addr.026 = phi i16* [ %add.ptr, %while.body ], [ %x, %while.body.preheader ]
771 %y.addr.025 = phi i16* [ %add.ptr4, %while.body ], [ %y, %while.body.preheader ]
772 %n.addr.023 = phi i32 [ %sub, %while.body ], [ %n, %while.body.preheader ]
773 %acc = phi i32 [ %acc.next, %while.body ], [ 0, %while.body.preheader ]
774 %5 = phi i32 [ %start, %while.body.preheader ], [ %6, %while.body ]
775 %tmp3 = bitcast i16* %y.addr.025 to <8 x i16>*
776 %tmp1 = bitcast i16* %x.addr.026 to <8 x i16>*
777 %tmp = tail call <8 x i1> @llvm.arm.mve.vctp16(i32 %n.addr.023)
778 %tmp2 = tail call <8 x i16> @llvm.masked.load.v8i16.p0v8i16(<8 x i16>* %tmp1, i32 2, <8 x i1> %tmp, <8 x i16> zeroinitializer)
779 %tmp4 = tail call <8 x i16> @llvm.masked.load.v8i16.p0v8i16(<8 x i16>* %tmp3, i32 2, <8 x i1> %tmp, <8 x i16> zeroinitializer)
780 %mul = tail call <4 x i32> @llvm.arm.mve.vmull.v4i32.v8i16(<8 x i16> %tmp2, <8 x i16> %tmp4, i32 0, i32 1)
781 %reduce = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %mul)
782 %acc.next = add i32 %reduce, %acc
783 %add.ptr = getelementptr inbounds i16, i16* %x.addr.026, i32 8
784 %add.ptr4 = getelementptr inbounds i16, i16* %y.addr.025, i32 8
785 %sub = add nsw i32 %n.addr.023, -8
786 %6 = call i32 @llvm.loop.decrement.reg.i32.i32.i32(i32 %5, i32 1)
787 %7 = icmp ne i32 %6, 0
788 br i1 %7, label %while.body, label %while.end
790 while.end: ; preds = %while.body, %entry
791 %res = phi i32 [ 0, %entry ], [ %acc.next, %while.body ]
795 declare <8 x i8> @llvm.masked.load.v8i8.p0v8i8(<8 x i8>*, i32 immarg, <8 x i1>, <8 x i8>)
796 declare <4 x i16> @llvm.masked.load.v4i16.p0v4i16(<4 x i16>*, i32 immarg, <4 x i1>, <4 x i16>)
797 declare <8 x i16> @llvm.masked.load.v8i16.p0v8i16(<8 x i16>*, i32 immarg, <8 x i1>, <8 x i16>)
798 declare <16 x i8> @llvm.masked.load.v16i8.p0v16i8(<16 x i8>*, i32 immarg, <16 x i1>, <16 x i8>)
799 declare void @llvm.masked.store.v8i16.p0v8i16(<8 x i16>, <8 x i16>*, i32 immarg, <8 x i1>)
800 declare void @llvm.masked.store.v4i32.p0v4i32(<4 x i32>, <4 x i32>*, i32 immarg, <4 x i1>)
801 declare i32 @llvm.vector.reduce.add.v4i32(<4 x i32>)
802 declare i32 @llvm.vector.reduce.add.v8i32(<8 x i32>)
803 declare i16 @llvm.vector.reduce.add.v8i16(<8 x i16>)
804 declare i32 @llvm.vector.reduce.add.v16i32(<16 x i32>)
805 declare i8 @llvm.vector.reduce.add.v16i8(<16 x i8>)
806 declare i32 @llvm.start.loop.iterations.i32(i32)
807 declare i32 @llvm.loop.decrement.reg.i32.i32.i32(i32, i32)
808 declare <4 x i32> @llvm.arm.mve.vmull.v4i32.v8i16(<8 x i16>, <8 x i16>, i32, i32)
809 declare <4 x i1> @llvm.arm.mve.vctp32(i32)
810 declare <8 x i1> @llvm.arm.mve.vctp16(i32)
811 declare <16 x i1> @llvm.arm.mve.vctp8(i32)
815 name: legal_vaddv_s32
817 tracksRegLiveness: true
820 - { reg: '$r0', virtual-reg: '' }
821 - { reg: '$r1', virtual-reg: '' }
822 - { reg: '$r2', virtual-reg: '' }
829 cvBytesOfCalleeSavedRegisters: 0
835 - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4,
836 stack-id: default, callee-saved-register: '$lr', callee-saved-restored: false,
837 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
838 - { id: 1, name: '', type: spill-slot, offset: -8, size: 4, alignment: 4,
839 stack-id: default, callee-saved-register: '$r7', callee-saved-restored: true,
840 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
843 machineFunctionInfo: {}
845 ; CHECK-LABEL: name: legal_vaddv_s32
847 ; CHECK: successors: %bb.1(0x80000000)
848 ; CHECK: liveins: $lr, $r0, $r1, $r2, $r7
849 ; CHECK: frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r7, killed $lr, implicit-def $sp, implicit $sp
850 ; CHECK: frame-setup CFI_INSTRUCTION def_cfa_offset 8
851 ; CHECK: frame-setup CFI_INSTRUCTION offset $lr, -4
852 ; CHECK: frame-setup CFI_INSTRUCTION offset $r7, -8
853 ; CHECK: tCMPi8 renamable $r2, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr
854 ; CHECK: t2IT 0, 8, implicit-def $itstate
855 ; CHECK: tPOP_RET 0 /* CC::eq */, killed $cpsr, def $r7, def $pc, implicit killed $itstate
856 ; CHECK: bb.1.vector.ph:
857 ; CHECK: successors: %bb.2(0x80000000)
858 ; CHECK: liveins: $r0, $r1, $r2
859 ; CHECK: $lr = MVE_DLSTP_32 killed renamable $r2
860 ; CHECK: bb.2.vector.body:
861 ; CHECK: successors: %bb.2(0x7c000000), %bb.3(0x04000000)
862 ; CHECK: liveins: $lr, $r0, $r1
863 ; CHECK: renamable $r0, renamable $q0 = MVE_VLDRHS32_post killed renamable $r0, 8, 0, killed $noreg :: (load (s64) from %ir.lsr.iv17, align 2)
864 ; CHECK: renamable $r12 = MVE_VADDVu32no_acc killed renamable $q0, 0, $noreg
865 ; CHECK: early-clobber renamable $r1 = t2STR_POST killed renamable $r12, killed renamable $r1, 4, 14 /* CC::al */, $noreg :: (store (s32) into %ir.store.addr)
866 ; CHECK: $lr = MVE_LETP killed renamable $lr, %bb.2
868 ; CHECK: tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc
870 successors: %bb.1(0x80000000)
871 liveins: $r0, $r1, $r2, $r7, $lr
873 frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r7, killed $lr, implicit-def $sp, implicit $sp
874 frame-setup CFI_INSTRUCTION def_cfa_offset 8
875 frame-setup CFI_INSTRUCTION offset $lr, -4
876 frame-setup CFI_INSTRUCTION offset $r7, -8
877 tCMPi8 renamable $r2, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr
878 t2IT 0, 8, implicit-def $itstate
879 tPOP_RET 0 /* CC::eq */, killed $cpsr, def $r7, def $pc, implicit killed $itstate
882 successors: %bb.2(0x80000000)
883 liveins: $r0, $r1, $r2, $r7, $lr
885 renamable $r3, dead $cpsr = tADDi3 renamable $r2, 3, 14 /* CC::al */, $noreg
886 renamable $r3 = t2BICri killed renamable $r3, 3, 14 /* CC::al */, $noreg, $noreg
887 renamable $r12 = t2SUBri killed renamable $r3, 4, 14 /* CC::al */, $noreg, $noreg
888 renamable $r3, dead $cpsr = tMOVi8 1, 14 /* CC::al */, $noreg
889 renamable $r12 = nuw nsw t2ADDrs killed renamable $r3, killed renamable $r12, 19, 14 /* CC::al */, $noreg, $noreg
890 $lr = t2DoLoopStart renamable $r12
891 $r3 = tMOVr killed $r12, 14 /* CC::al */, $noreg
894 successors: %bb.2(0x7c000000), %bb.3(0x04000000)
895 liveins: $r0, $r1, $r2, $r3
897 renamable $vpr = MVE_VCTP32 renamable $r2, 0, $noreg
898 MVE_VPST 8, implicit $vpr
899 renamable $r0, renamable $q0 = MVE_VLDRHS32_post killed renamable $r0, 8, 1, killed renamable $vpr :: (load (s64) from %ir.lsr.iv17, align 2)
900 renamable $r12 = MVE_VADDVu32no_acc killed renamable $q0, 0, $noreg
901 $lr = tMOVr $r3, 14 /* CC::al */, $noreg
902 early-clobber renamable $r1 = t2STR_POST killed renamable $r12, killed renamable $r1, 4, 14 /* CC::al */, $noreg :: (store (s32) into %ir.store.addr)
903 renamable $r3, dead $cpsr = nsw tSUBi8 killed $r3, 1, 14 /* CC::al */, $noreg
904 renamable $r2, dead $cpsr = tSUBi8 killed renamable $r2, 4, 14 /* CC::al */, $noreg
905 renamable $lr = t2LoopDec killed renamable $lr, 1
906 t2LoopEnd killed renamable $lr, %bb.2, implicit-def dead $cpsr
907 tB %bb.3, 14 /* CC::al */, $noreg
910 tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc
914 name: legal_vaddv_s16
916 tracksRegLiveness: true
919 - { reg: '$r0', virtual-reg: '' }
920 - { reg: '$r1', virtual-reg: '' }
921 - { reg: '$r2', virtual-reg: '' }
928 cvBytesOfCalleeSavedRegisters: 0
934 - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4,
935 stack-id: default, callee-saved-register: '$lr', callee-saved-restored: false,
936 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
937 - { id: 1, name: '', type: spill-slot, offset: -8, size: 4, alignment: 4,
938 stack-id: default, callee-saved-register: '$r7', callee-saved-restored: true,
939 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
942 machineFunctionInfo: {}
944 ; CHECK-LABEL: name: legal_vaddv_s16
946 ; CHECK: successors: %bb.1(0x80000000)
947 ; CHECK: liveins: $lr, $r0, $r1, $r2, $r7
948 ; CHECK: frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r7, killed $lr, implicit-def $sp, implicit $sp
949 ; CHECK: frame-setup CFI_INSTRUCTION def_cfa_offset 8
950 ; CHECK: frame-setup CFI_INSTRUCTION offset $lr, -4
951 ; CHECK: frame-setup CFI_INSTRUCTION offset $r7, -8
952 ; CHECK: tCMPi8 renamable $r2, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr
953 ; CHECK: t2IT 0, 8, implicit-def $itstate
954 ; CHECK: tPOP_RET 0 /* CC::eq */, killed $cpsr, def $r7, def $pc, implicit killed $itstate
955 ; CHECK: bb.1.vector.ph:
956 ; CHECK: successors: %bb.2(0x80000000)
957 ; CHECK: liveins: $r0, $r1, $r2
958 ; CHECK: $lr = MVE_DLSTP_16 killed renamable $r2
959 ; CHECK: bb.2.vector.body:
960 ; CHECK: successors: %bb.2(0x7c000000), %bb.3(0x04000000)
961 ; CHECK: liveins: $lr, $r0, $r1
962 ; CHECK: renamable $r0, renamable $q0 = MVE_VLDRHU16_post killed renamable $r0, 16, 0, killed $noreg :: (load (s128) from %ir.lsr.iv17, align 2)
963 ; CHECK: renamable $r12 = MVE_VADDVs16no_acc killed renamable $q0, 0, $noreg
964 ; CHECK: early-clobber renamable $r1 = t2STR_POST killed renamable $r12, killed renamable $r1, 4, 14 /* CC::al */, $noreg :: (store (s32) into %ir.store.addr)
965 ; CHECK: $lr = MVE_LETP killed renamable $lr, %bb.2
967 ; CHECK: tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc
969 successors: %bb.1(0x80000000)
970 liveins: $r0, $r1, $r2, $r7, $lr
972 frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r7, killed $lr, implicit-def $sp, implicit $sp
973 frame-setup CFI_INSTRUCTION def_cfa_offset 8
974 frame-setup CFI_INSTRUCTION offset $lr, -4
975 frame-setup CFI_INSTRUCTION offset $r7, -8
976 tCMPi8 renamable $r2, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr
977 t2IT 0, 8, implicit-def $itstate
978 tPOP_RET 0 /* CC::eq */, killed $cpsr, def $r7, def $pc, implicit killed $itstate
981 successors: %bb.2(0x80000000)
982 liveins: $r0, $r1, $r2, $r7, $lr
984 renamable $r3, dead $cpsr = tADDi3 renamable $r2, 3, 14 /* CC::al */, $noreg
985 renamable $r3 = t2BICri killed renamable $r3, 3, 14 /* CC::al */, $noreg, $noreg
986 renamable $r12 = t2SUBri killed renamable $r3, 4, 14 /* CC::al */, $noreg, $noreg
987 renamable $r3, dead $cpsr = tMOVi8 1, 14 /* CC::al */, $noreg
988 renamable $r12 = nuw nsw t2ADDrs killed renamable $r3, killed renamable $r12, 19, 14 /* CC::al */, $noreg, $noreg
989 $lr = t2DoLoopStart renamable $r12
990 $r3 = tMOVr killed $r12, 14 /* CC::al */, $noreg
993 successors: %bb.2(0x7c000000), %bb.3(0x04000000)
994 liveins: $r0, $r1, $r2, $r3
996 renamable $vpr = MVE_VCTP16 renamable $r2, 0, $noreg
997 MVE_VPST 8, implicit $vpr
998 renamable $r0, renamable $q0 = MVE_VLDRHU16_post killed renamable $r0, 16, 1, killed renamable $vpr :: (load (s128) from %ir.lsr.iv17, align 2)
999 renamable $r12 = MVE_VADDVs16no_acc killed renamable $q0, 0, $noreg
1000 $lr = tMOVr $r3, 14 /* CC::al */, $noreg
1001 early-clobber renamable $r1 = t2STR_POST killed renamable $r12, killed renamable $r1, 4, 14 /* CC::al */, $noreg :: (store (s32) into %ir.store.addr)
1002 renamable $r3, dead $cpsr = nsw tSUBi8 killed $r3, 1, 14 /* CC::al */, $noreg
1003 renamable $r2, dead $cpsr = tSUBi8 killed renamable $r2, 8, 14 /* CC::al */, $noreg
1004 renamable $lr = t2LoopDec killed renamable $lr, 1
1005 t2LoopEnd killed renamable $lr, %bb.2, implicit-def dead $cpsr
1006 tB %bb.3, 14 /* CC::al */, $noreg
1009 tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc
1013 name: legal_vaddv_s8
1015 tracksRegLiveness: true
1018 - { reg: '$r0', virtual-reg: '' }
1019 - { reg: '$r1', virtual-reg: '' }
1020 - { reg: '$r2', virtual-reg: '' }
1027 cvBytesOfCalleeSavedRegisters: 0
1033 - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4,
1034 stack-id: default, callee-saved-register: '$lr', callee-saved-restored: false,
1035 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
1036 - { id: 1, name: '', type: spill-slot, offset: -8, size: 4, alignment: 4,
1037 stack-id: default, callee-saved-register: '$r7', callee-saved-restored: true,
1038 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
1041 machineFunctionInfo: {}
1043 ; CHECK-LABEL: name: legal_vaddv_s8
1044 ; CHECK: bb.0.entry:
1045 ; CHECK: successors: %bb.1(0x80000000)
1046 ; CHECK: liveins: $lr, $r0, $r1, $r2, $r7
1047 ; CHECK: frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r7, killed $lr, implicit-def $sp, implicit $sp
1048 ; CHECK: frame-setup CFI_INSTRUCTION def_cfa_offset 8
1049 ; CHECK: frame-setup CFI_INSTRUCTION offset $lr, -4
1050 ; CHECK: frame-setup CFI_INSTRUCTION offset $r7, -8
1051 ; CHECK: tCMPi8 renamable $r2, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr
1052 ; CHECK: t2IT 0, 8, implicit-def $itstate
1053 ; CHECK: tPOP_RET 0 /* CC::eq */, killed $cpsr, def $r7, def $pc, implicit killed $itstate
1054 ; CHECK: bb.1.vector.ph:
1055 ; CHECK: successors: %bb.2(0x80000000)
1056 ; CHECK: liveins: $r0, $r1, $r2
1057 ; CHECK: $lr = MVE_DLSTP_8 killed renamable $r2
1058 ; CHECK: bb.2.vector.body:
1059 ; CHECK: successors: %bb.2(0x7c000000), %bb.3(0x04000000)
1060 ; CHECK: liveins: $lr, $r0, $r1
1061 ; CHECK: renamable $r0, renamable $q0 = MVE_VLDRBU8_post killed renamable $r0, 16, 0, killed $noreg :: (load (s128) from %ir.lsr.iv17, align 1)
1062 ; CHECK: renamable $r12 = MVE_VADDVs8no_acc killed renamable $q0, 0, $noreg
1063 ; CHECK: early-clobber renamable $r1 = t2STR_POST killed renamable $r12, killed renamable $r1, 4, 14 /* CC::al */, $noreg :: (store (s32) into %ir.store.addr)
1064 ; CHECK: $lr = MVE_LETP killed renamable $lr, %bb.2
1066 ; CHECK: tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc
1068 successors: %bb.1(0x80000000)
1069 liveins: $r0, $r1, $r2, $r7, $lr
1071 frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r7, killed $lr, implicit-def $sp, implicit $sp
1072 frame-setup CFI_INSTRUCTION def_cfa_offset 8
1073 frame-setup CFI_INSTRUCTION offset $lr, -4
1074 frame-setup CFI_INSTRUCTION offset $r7, -8
1075 tCMPi8 renamable $r2, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr
1076 t2IT 0, 8, implicit-def $itstate
1077 tPOP_RET 0 /* CC::eq */, killed $cpsr, def $r7, def $pc, implicit killed $itstate
1080 successors: %bb.2(0x80000000)
1081 liveins: $r0, $r1, $r2, $r7, $lr
1083 renamable $r3, dead $cpsr = tADDi3 renamable $r2, 7, 14 /* CC::al */, $noreg
1084 renamable $r3 = t2BICri killed renamable $r3, 7, 14 /* CC::al */, $noreg, $noreg
1085 renamable $r12 = t2SUBri killed renamable $r3, 7, 14 /* CC::al */, $noreg, $noreg
1086 renamable $r3, dead $cpsr = tMOVi8 1, 14 /* CC::al */, $noreg
1087 renamable $r12 = nuw nsw t2ADDrs killed renamable $r3, killed renamable $r12, 27, 14 /* CC::al */, $noreg, $noreg
1088 $lr = t2DoLoopStart renamable $r12
1089 $r3 = tMOVr killed $r12, 14 /* CC::al */, $noreg
1092 successors: %bb.2(0x7c000000), %bb.3(0x04000000)
1093 liveins: $r0, $r1, $r2, $r3
1095 renamable $vpr = MVE_VCTP8 renamable $r2, 0, $noreg
1096 MVE_VPST 8, implicit $vpr
1097 renamable $r0, renamable $q0 = MVE_VLDRBU8_post killed renamable $r0, 16, 1, killed renamable $vpr :: (load (s128) from %ir.lsr.iv17, align 1)
1098 renamable $r12 = MVE_VADDVs8no_acc killed renamable $q0, 0, $noreg
1099 $lr = tMOVr $r3, 14 /* CC::al */, $noreg
1100 early-clobber renamable $r1 = t2STR_POST killed renamable $r12, killed renamable $r1, 4, 14 /* CC::al */, $noreg :: (store (s32) into %ir.store.addr)
1101 renamable $r3, dead $cpsr = nsw tSUBi8 killed $r3, 1, 14 /* CC::al */, $noreg
1102 renamable $r2, dead $cpsr = tSUBi8 killed renamable $r2, 16, 14 /* CC::al */, $noreg
1103 renamable $lr = t2LoopDec killed renamable $lr, 1
1104 t2LoopEnd killed renamable $lr, %bb.2, implicit-def dead $cpsr
1105 tB %bb.3, 14 /* CC::al */, $noreg
1108 tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc
1112 name: legal_vaddva_s32
1114 tracksRegLiveness: true
1117 - { reg: '$r0', virtual-reg: '' }
1118 - { reg: '$r1', virtual-reg: '' }
1125 cvBytesOfCalleeSavedRegisters: 0
1131 - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4,
1132 stack-id: default, callee-saved-register: '$lr', callee-saved-restored: false,
1133 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
1134 - { id: 1, name: '', type: spill-slot, offset: -8, size: 4, alignment: 4,
1135 stack-id: default, callee-saved-register: '$r7', callee-saved-restored: true,
1136 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
1139 machineFunctionInfo: {}
1141 ; CHECK-LABEL: name: legal_vaddva_s32
1142 ; CHECK: bb.0.entry:
1143 ; CHECK: successors: %bb.4(0x30000000), %bb.1(0x50000000)
1144 ; CHECK: liveins: $lr, $r0, $r1, $r7
1145 ; CHECK: frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r7, killed $lr, implicit-def $sp, implicit $sp
1146 ; CHECK: frame-setup CFI_INSTRUCTION def_cfa_offset 8
1147 ; CHECK: frame-setup CFI_INSTRUCTION offset $lr, -4
1148 ; CHECK: frame-setup CFI_INSTRUCTION offset $r7, -8
1149 ; CHECK: tCBZ $r1, %bb.4
1150 ; CHECK: bb.1.vector.ph:
1151 ; CHECK: successors: %bb.2(0x80000000)
1152 ; CHECK: liveins: $r0, $r1
1153 ; CHECK: $lr = MVE_DLSTP_32 killed renamable $r1
1154 ; CHECK: renamable $r2, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg
1155 ; CHECK: bb.2.vector.body:
1156 ; CHECK: successors: %bb.2(0x7c000000), %bb.3(0x04000000)
1157 ; CHECK: liveins: $lr, $r0, $r2
1158 ; CHECK: renamable $r0, renamable $q0 = MVE_VLDRHS32_post killed renamable $r0, 8, 0, killed $noreg :: (load (s64) from %ir.lsr.iv17, align 2)
1159 ; CHECK: renamable $r2 = MVE_VADDVu32acc killed renamable $r2, killed renamable $q0, 0, $noreg
1160 ; CHECK: $lr = MVE_LETP killed renamable $lr, %bb.2
1162 ; CHECK: liveins: $r2
1163 ; CHECK: $r0 = tMOVr killed $r2, 14 /* CC::al */, $noreg
1164 ; CHECK: tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc, implicit killed $r0
1166 ; CHECK: renamable $r2, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg
1167 ; CHECK: $r0 = tMOVr killed $r2, 14 /* CC::al */, $noreg
1168 ; CHECK: tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc, implicit killed $r0
1170 successors: %bb.4(0x30000000), %bb.1(0x50000000)
1171 liveins: $r0, $r1, $r7, $lr
1173 frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r7, killed $lr, implicit-def $sp, implicit $sp
1174 frame-setup CFI_INSTRUCTION def_cfa_offset 8
1175 frame-setup CFI_INSTRUCTION offset $lr, -4
1176 frame-setup CFI_INSTRUCTION offset $r7, -8
1180 successors: %bb.2(0x80000000)
1183 renamable $r2, dead $cpsr = tADDi3 renamable $r1, 3, 14 /* CC::al */, $noreg
1184 renamable $r3, dead $cpsr = tMOVi8 1, 14 /* CC::al */, $noreg
1185 renamable $r2 = t2BICri killed renamable $r2, 3, 14 /* CC::al */, $noreg, $noreg
1186 renamable $r2, dead $cpsr = tSUBi8 killed renamable $r2, 4, 14 /* CC::al */, $noreg
1187 renamable $r2 = nuw nsw t2ADDrs killed renamable $r3, killed renamable $r2, 19, 14 /* CC::al */, $noreg, $noreg
1188 $lr = t2DoLoopStart renamable $r2
1189 $r3 = tMOVr killed $r2, 14 /* CC::al */, $noreg
1190 renamable $r2, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg
1193 successors: %bb.2(0x7c000000), %bb.3(0x04000000)
1194 liveins: $r0, $r1, $r2, $r3
1196 renamable $vpr = MVE_VCTP32 renamable $r1, 0, $noreg
1197 $lr = tMOVr $r3, 14 /* CC::al */, $noreg
1198 renamable $r3, dead $cpsr = nsw tSUBi8 killed $r3, 1, 14 /* CC::al */, $noreg
1199 renamable $r1, dead $cpsr = tSUBi8 killed renamable $r1, 4, 14 /* CC::al */, $noreg
1200 MVE_VPST 8, implicit $vpr
1201 renamable $r0, renamable $q0 = MVE_VLDRHS32_post killed renamable $r0, 8, 1, killed renamable $vpr :: (load (s64) from %ir.lsr.iv17, align 2)
1202 renamable $r2 = MVE_VADDVu32acc killed renamable $r2, killed renamable $q0, 0, $noreg
1203 renamable $lr = t2LoopDec killed renamable $lr, 1
1204 t2LoopEnd killed renamable $lr, %bb.2, implicit-def dead $cpsr
1205 tB %bb.3, 14 /* CC::al */, $noreg
1210 $r0 = tMOVr killed $r2, 14 /* CC::al */, $noreg
1211 tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc, implicit killed $r0
1214 renamable $r2, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg
1215 $r0 = tMOVr killed $r2, 14 /* CC::al */, $noreg
1216 tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc, implicit killed $r0
1220 name: illegal_vaddv_s32
1222 tracksRegLiveness: true
1225 - { reg: '$r0', virtual-reg: '' }
1226 - { reg: '$r1', virtual-reg: '' }
1227 - { reg: '$r2', virtual-reg: '' }
1234 cvBytesOfCalleeSavedRegisters: 0
1240 - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4,
1241 stack-id: default, callee-saved-register: '$lr', callee-saved-restored: false,
1242 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
1243 - { id: 1, name: '', type: spill-slot, offset: -8, size: 4, alignment: 4,
1244 stack-id: default, callee-saved-register: '$r7', callee-saved-restored: true,
1245 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
1248 machineFunctionInfo: {}
1250 ; CHECK-LABEL: name: illegal_vaddv_s32
1251 ; CHECK: bb.0.entry:
1252 ; CHECK: successors: %bb.1(0x80000000)
1253 ; CHECK: liveins: $lr, $r0, $r1, $r2, $r7
1254 ; CHECK: frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r7, killed $lr, implicit-def $sp, implicit $sp
1255 ; CHECK: frame-setup CFI_INSTRUCTION def_cfa_offset 8
1256 ; CHECK: frame-setup CFI_INSTRUCTION offset $lr, -4
1257 ; CHECK: frame-setup CFI_INSTRUCTION offset $r7, -8
1258 ; CHECK: tCMPi8 renamable $r2, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr
1259 ; CHECK: t2IT 0, 8, implicit-def $itstate
1260 ; CHECK: tPOP_RET 0 /* CC::eq */, killed $cpsr, def $r7, def $pc, implicit killed $itstate
1261 ; CHECK: bb.1.vector.ph:
1262 ; CHECK: successors: %bb.2(0x80000000)
1263 ; CHECK: liveins: $r0, $r1, $r2
1264 ; CHECK: renamable $r3, dead $cpsr = tADDi3 renamable $r2, 3, 14 /* CC::al */, $noreg
1265 ; CHECK: renamable $r3 = t2BICri killed renamable $r3, 3, 14 /* CC::al */, $noreg, $noreg
1266 ; CHECK: renamable $r12 = t2SUBri killed renamable $r3, 4, 14 /* CC::al */, $noreg, $noreg
1267 ; CHECK: renamable $r3, dead $cpsr = tMOVi8 1, 14 /* CC::al */, $noreg
1268 ; CHECK: renamable $r12 = nuw nsw t2ADDrs killed renamable $r3, killed renamable $r12, 19, 14 /* CC::al */, $noreg, $noreg
1269 ; CHECK: dead $lr = t2DLS renamable $r12
1270 ; CHECK: $r3 = tMOVr killed $r12, 14 /* CC::al */, $noreg
1271 ; CHECK: bb.2.vector.body:
1272 ; CHECK: successors: %bb.2(0x7c000000), %bb.3(0x04000000)
1273 ; CHECK: liveins: $r0, $r1, $r2, $r3
1274 ; CHECK: renamable $vpr = MVE_VCTP32 renamable $r2, 0, $noreg
1275 ; CHECK: MVE_VPST 8, implicit $vpr
1276 ; CHECK: renamable $r0, renamable $q0 = MVE_VLDRHS32_post killed renamable $r0, 8, 1, killed renamable $vpr :: (load (s64) from %ir.lsr.iv17, align 2)
1277 ; CHECK: renamable $q0 = MVE_VMVN killed renamable $q0, 0, $noreg, undef renamable $q0
1278 ; CHECK: $lr = tMOVr $r3, 14 /* CC::al */, $noreg
1279 ; CHECK: renamable $r12 = MVE_VADDVu32no_acc killed renamable $q0, 0, $noreg
1280 ; CHECK: renamable $r3, dead $cpsr = nsw tSUBi8 killed $r3, 1, 14 /* CC::al */, $noreg
1281 ; CHECK: early-clobber renamable $r1 = t2STR_POST killed renamable $r12, killed renamable $r1, 4, 14 /* CC::al */, $noreg :: (store (s32) into %ir.store.addr)
1282 ; CHECK: renamable $r2, dead $cpsr = tSUBi8 killed renamable $r2, 4, 14 /* CC::al */, $noreg
1283 ; CHECK: dead $lr = t2LEUpdate killed renamable $lr, %bb.2
1285 ; CHECK: tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc
1287 successors: %bb.1(0x80000000)
1288 liveins: $r0, $r1, $r2, $r7, $lr
1290 frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r7, killed $lr, implicit-def $sp, implicit $sp
1291 frame-setup CFI_INSTRUCTION def_cfa_offset 8
1292 frame-setup CFI_INSTRUCTION offset $lr, -4
1293 frame-setup CFI_INSTRUCTION offset $r7, -8
1294 tCMPi8 renamable $r2, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr
1295 t2IT 0, 8, implicit-def $itstate
1296 tPOP_RET 0 /* CC::eq */, killed $cpsr, def $r7, def $pc, implicit killed $itstate
1299 successors: %bb.2(0x80000000)
1300 liveins: $r0, $r1, $r2, $r7, $lr
1302 renamable $r3, dead $cpsr = tADDi3 renamable $r2, 3, 14 /* CC::al */, $noreg
1303 renamable $r3 = t2BICri killed renamable $r3, 3, 14 /* CC::al */, $noreg, $noreg
1304 renamable $r12 = t2SUBri killed renamable $r3, 4, 14 /* CC::al */, $noreg, $noreg
1305 renamable $r3, dead $cpsr = tMOVi8 1, 14 /* CC::al */, $noreg
1306 renamable $r12 = nuw nsw t2ADDrs killed renamable $r3, killed renamable $r12, 19, 14 /* CC::al */, $noreg, $noreg
1307 $lr = t2DoLoopStart renamable $r12
1308 $r3 = tMOVr killed $r12, 14 /* CC::al */, $noreg
1311 successors: %bb.2(0x7c000000), %bb.3(0x04000000)
1312 liveins: $r0, $r1, $r2, $r3
1314 renamable $vpr = MVE_VCTP32 renamable $r2, 0, $noreg
1315 MVE_VPST 8, implicit $vpr
1316 renamable $r0, renamable $q0 = MVE_VLDRHS32_post killed renamable $r0, 8, 1, killed renamable $vpr :: (load (s64) from %ir.lsr.iv17, align 2)
1317 renamable $q0 = MVE_VMVN killed renamable $q0, 0, $noreg, undef renamable $q0
1318 $lr = tMOVr $r3, 14 /* CC::al */, $noreg
1319 renamable $r12 = MVE_VADDVu32no_acc killed renamable $q0, 0, $noreg
1320 renamable $r3, dead $cpsr = nsw tSUBi8 killed $r3, 1, 14 /* CC::al */, $noreg
1321 early-clobber renamable $r1 = t2STR_POST killed renamable $r12, killed renamable $r1, 4, 14 /* CC::al */, $noreg :: (store (s32) into %ir.store.addr)
1322 renamable $r2, dead $cpsr = tSUBi8 killed renamable $r2, 4, 14 /* CC::al */, $noreg
1323 renamable $lr = t2LoopDec killed renamable $lr, 1
1324 t2LoopEnd killed renamable $lr, %bb.2, implicit-def dead $cpsr
1325 tB %bb.3, 14 /* CC::al */, $noreg
1328 tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc
1332 name: illegal_vaddva_s32
1334 tracksRegLiveness: true
1337 - { reg: '$r0', virtual-reg: '' }
1338 - { reg: '$r1', virtual-reg: '' }
1345 cvBytesOfCalleeSavedRegisters: 0
1351 - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4,
1352 stack-id: default, callee-saved-register: '$lr', callee-saved-restored: false,
1353 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
1354 - { id: 1, name: '', type: spill-slot, offset: -8, size: 4, alignment: 4,
1355 stack-id: default, callee-saved-register: '$r7', callee-saved-restored: true,
1356 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
1359 machineFunctionInfo: {}
1361 ; CHECK-LABEL: name: illegal_vaddva_s32
1362 ; CHECK: bb.0.entry:
1363 ; CHECK: successors: %bb.4(0x30000000), %bb.1(0x50000000)
1364 ; CHECK: liveins: $lr, $r0, $r1, $r7
1365 ; CHECK: frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r7, killed $lr, implicit-def $sp, implicit $sp
1366 ; CHECK: frame-setup CFI_INSTRUCTION def_cfa_offset 8
1367 ; CHECK: frame-setup CFI_INSTRUCTION offset $lr, -4
1368 ; CHECK: frame-setup CFI_INSTRUCTION offset $r7, -8
1369 ; CHECK: tCBZ $r1, %bb.4
1370 ; CHECK: bb.1.vector.ph:
1371 ; CHECK: successors: %bb.2(0x80000000)
1372 ; CHECK: liveins: $r0, $r1
1373 ; CHECK: renamable $r2, dead $cpsr = tADDi3 renamable $r1, 3, 14 /* CC::al */, $noreg
1374 ; CHECK: renamable $r3, dead $cpsr = tMOVi8 1, 14 /* CC::al */, $noreg
1375 ; CHECK: renamable $r2 = t2BICri killed renamable $r2, 3, 14 /* CC::al */, $noreg, $noreg
1376 ; CHECK: renamable $r2, dead $cpsr = tSUBi8 killed renamable $r2, 4, 14 /* CC::al */, $noreg
1377 ; CHECK: renamable $r2 = nuw nsw t2ADDrs killed renamable $r3, killed renamable $r2, 19, 14 /* CC::al */, $noreg, $noreg
1378 ; CHECK: dead $lr = t2DLS renamable $r2
1379 ; CHECK: $r3 = tMOVr killed $r2, 14 /* CC::al */, $noreg
1380 ; CHECK: renamable $r2, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg
1381 ; CHECK: bb.2.vector.body:
1382 ; CHECK: successors: %bb.2(0x7c000000), %bb.3(0x04000000)
1383 ; CHECK: liveins: $r0, $r1, $r2, $r3
1384 ; CHECK: renamable $vpr = MVE_VCTP32 renamable $r1, 0, $noreg
1385 ; CHECK: MVE_VPST 8, implicit $vpr
1386 ; CHECK: renamable $r0, renamable $q0 = MVE_VLDRHS32_post killed renamable $r0, 8, 1, killed renamable $vpr :: (load (s64) from %ir.lsr.iv17, align 2)
1387 ; CHECK: $lr = tMOVr $r3, 14 /* CC::al */, $noreg
1388 ; CHECK: renamable $q0 = MVE_VMVN killed renamable $q0, 0, $noreg, undef renamable $q0
1389 ; CHECK: renamable $r3, dead $cpsr = nsw tSUBi8 killed $r3, 1, 14 /* CC::al */, $noreg
1390 ; CHECK: renamable $r1, dead $cpsr = tSUBi8 killed renamable $r1, 4, 14 /* CC::al */, $noreg
1391 ; CHECK: renamable $r2 = MVE_VADDVu32acc killed renamable $r2, killed renamable $q0, 0, $noreg
1392 ; CHECK: dead $lr = t2LEUpdate killed renamable $lr, %bb.2
1394 ; CHECK: liveins: $r2
1395 ; CHECK: $r0 = tMOVr killed $r2, 14 /* CC::al */, $noreg
1396 ; CHECK: tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc, implicit killed $r0
1398 ; CHECK: renamable $r2, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg
1399 ; CHECK: $r0 = tMOVr killed $r2, 14 /* CC::al */, $noreg
1400 ; CHECK: tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc, implicit killed $r0
1402 successors: %bb.4(0x30000000), %bb.1(0x50000000)
1403 liveins: $r0, $r1, $r7, $lr
1405 frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r7, killed $lr, implicit-def $sp, implicit $sp
1406 frame-setup CFI_INSTRUCTION def_cfa_offset 8
1407 frame-setup CFI_INSTRUCTION offset $lr, -4
1408 frame-setup CFI_INSTRUCTION offset $r7, -8
1412 successors: %bb.2(0x80000000)
1415 renamable $r2, dead $cpsr = tADDi3 renamable $r1, 3, 14 /* CC::al */, $noreg
1416 renamable $r3, dead $cpsr = tMOVi8 1, 14 /* CC::al */, $noreg
1417 renamable $r2 = t2BICri killed renamable $r2, 3, 14 /* CC::al */, $noreg, $noreg
1418 renamable $r2, dead $cpsr = tSUBi8 killed renamable $r2, 4, 14 /* CC::al */, $noreg
1419 renamable $r2 = nuw nsw t2ADDrs killed renamable $r3, killed renamable $r2, 19, 14 /* CC::al */, $noreg, $noreg
1420 $lr = t2DoLoopStart renamable $r2
1421 $r3 = tMOVr killed $r2, 14 /* CC::al */, $noreg
1422 renamable $r2, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg
1425 successors: %bb.2(0x7c000000), %bb.3(0x04000000)
1426 liveins: $r0, $r1, $r2, $r3
1428 renamable $vpr = MVE_VCTP32 renamable $r1, 0, $noreg
1429 MVE_VPST 8, implicit $vpr
1430 renamable $r0, renamable $q0 = MVE_VLDRHS32_post killed renamable $r0, 8, 1, killed renamable $vpr :: (load (s64) from %ir.lsr.iv17, align 2)
1431 $lr = tMOVr $r3, 14 /* CC::al */, $noreg
1432 renamable $q0 = MVE_VMVN killed renamable $q0, 0, $noreg, undef renamable $q0
1433 renamable $r3, dead $cpsr = nsw tSUBi8 killed $r3, 1, 14 /* CC::al */, $noreg
1434 renamable $r1, dead $cpsr = tSUBi8 killed renamable $r1, 4, 14 /* CC::al */, $noreg
1435 renamable $r2 = MVE_VADDVu32acc killed renamable $r2, killed renamable $q0, 0, $noreg
1436 renamable $lr = t2LoopDec killed renamable $lr, 1
1437 t2LoopEnd killed renamable $lr, %bb.2, implicit-def dead $cpsr
1438 tB %bb.3, 14 /* CC::al */, $noreg
1443 $r0 = tMOVr killed $r2, 14 /* CC::al */, $noreg
1444 tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc, implicit killed $r0
1447 renamable $r2, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg
1448 $r0 = tMOVr killed $r2, 14 /* CC::al */, $noreg
1449 tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc, implicit killed $r0
1453 name: illegal_vaddv_u32
1455 tracksRegLiveness: true
1458 - { reg: '$r0', virtual-reg: '' }
1459 - { reg: '$r1', virtual-reg: '' }
1460 - { reg: '$r2', virtual-reg: '' }
1467 cvBytesOfCalleeSavedRegisters: 0
1473 - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4,
1474 stack-id: default, callee-saved-register: '$lr', callee-saved-restored: false,
1475 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
1476 - { id: 1, name: '', type: spill-slot, offset: -8, size: 4, alignment: 4,
1477 stack-id: default, callee-saved-register: '$r7', callee-saved-restored: true,
1478 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
1481 machineFunctionInfo: {}
1483 ; CHECK-LABEL: name: illegal_vaddv_u32
1484 ; CHECK: bb.0.entry:
1485 ; CHECK: successors: %bb.1(0x80000000)
1486 ; CHECK: liveins: $lr, $r0, $r1, $r2, $r7
1487 ; CHECK: frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r7, killed $lr, implicit-def $sp, implicit $sp
1488 ; CHECK: frame-setup CFI_INSTRUCTION def_cfa_offset 8
1489 ; CHECK: frame-setup CFI_INSTRUCTION offset $lr, -4
1490 ; CHECK: frame-setup CFI_INSTRUCTION offset $r7, -8
1491 ; CHECK: tCMPi8 renamable $r2, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr
1492 ; CHECK: t2IT 0, 8, implicit-def $itstate
1493 ; CHECK: tPOP_RET 0 /* CC::eq */, killed $cpsr, def $r7, def $pc, implicit killed $itstate
1494 ; CHECK: bb.1.vector.ph:
1495 ; CHECK: successors: %bb.2(0x80000000)
1496 ; CHECK: liveins: $r0, $r1, $r2
1497 ; CHECK: renamable $r3, dead $cpsr = tADDi3 renamable $r2, 3, 14 /* CC::al */, $noreg
1498 ; CHECK: renamable $r3 = t2BICri killed renamable $r3, 3, 14 /* CC::al */, $noreg, $noreg
1499 ; CHECK: renamable $r12 = t2SUBri killed renamable $r3, 4, 14 /* CC::al */, $noreg, $noreg
1500 ; CHECK: renamable $r3, dead $cpsr = tMOVi8 1, 14 /* CC::al */, $noreg
1501 ; CHECK: renamable $r12 = nuw nsw t2ADDrs killed renamable $r3, killed renamable $r12, 19, 14 /* CC::al */, $noreg, $noreg
1502 ; CHECK: dead $lr = t2DLS renamable $r12
1503 ; CHECK: $r3 = tMOVr killed $r12, 14 /* CC::al */, $noreg
1504 ; CHECK: bb.2.vector.body:
1505 ; CHECK: successors: %bb.2(0x7c000000), %bb.3(0x04000000)
1506 ; CHECK: liveins: $r0, $r1, $r2, $r3
1507 ; CHECK: renamable $vpr = MVE_VCTP32 renamable $r2, 0, $noreg
1508 ; CHECK: MVE_VPST 8, implicit $vpr
1509 ; CHECK: renamable $r0, renamable $q0 = MVE_VLDRHU32_post killed renamable $r0, 8, 1, killed renamable $vpr :: (load (s64) from %ir.lsr.iv17, align 2)
1510 ; CHECK: renamable $q0 = MVE_VMVN killed renamable $q0, 0, $noreg, undef renamable $q0
1511 ; CHECK: $lr = tMOVr $r3, 14 /* CC::al */, $noreg
1512 ; CHECK: renamable $r12 = MVE_VADDVu32no_acc killed renamable $q0, 0, $noreg
1513 ; CHECK: renamable $r3, dead $cpsr = nsw tSUBi8 killed $r3, 1, 14 /* CC::al */, $noreg
1514 ; CHECK: early-clobber renamable $r1 = t2STR_POST killed renamable $r12, killed renamable $r1, 4, 14 /* CC::al */, $noreg :: (store (s32) into %ir.store.addr)
1515 ; CHECK: renamable $r2, dead $cpsr = tSUBi8 killed renamable $r2, 4, 14 /* CC::al */, $noreg
1516 ; CHECK: dead $lr = t2LEUpdate killed renamable $lr, %bb.2
1518 ; CHECK: tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc
1520 successors: %bb.1(0x80000000)
1521 liveins: $r0, $r1, $r2, $r7, $lr
1523 frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r7, killed $lr, implicit-def $sp, implicit $sp
1524 frame-setup CFI_INSTRUCTION def_cfa_offset 8
1525 frame-setup CFI_INSTRUCTION offset $lr, -4
1526 frame-setup CFI_INSTRUCTION offset $r7, -8
1527 tCMPi8 renamable $r2, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr
1528 t2IT 0, 8, implicit-def $itstate
1529 tPOP_RET 0 /* CC::eq */, killed $cpsr, def $r7, def $pc, implicit killed $itstate
1532 successors: %bb.2(0x80000000)
1533 liveins: $r0, $r1, $r2, $r7, $lr
1535 renamable $r3, dead $cpsr = tADDi3 renamable $r2, 3, 14 /* CC::al */, $noreg
1536 renamable $r3 = t2BICri killed renamable $r3, 3, 14 /* CC::al */, $noreg, $noreg
1537 renamable $r12 = t2SUBri killed renamable $r3, 4, 14 /* CC::al */, $noreg, $noreg
1538 renamable $r3, dead $cpsr = tMOVi8 1, 14 /* CC::al */, $noreg
1539 renamable $r12 = nuw nsw t2ADDrs killed renamable $r3, killed renamable $r12, 19, 14 /* CC::al */, $noreg, $noreg
1540 $lr = t2DoLoopStart renamable $r12
1541 $r3 = tMOVr killed $r12, 14 /* CC::al */, $noreg
1544 successors: %bb.2(0x7c000000), %bb.3(0x04000000)
1545 liveins: $r0, $r1, $r2, $r3
1547 renamable $vpr = MVE_VCTP32 renamable $r2, 0, $noreg
1548 MVE_VPST 8, implicit $vpr
1549 renamable $r0, renamable $q0 = MVE_VLDRHU32_post killed renamable $r0, 8, 1, killed renamable $vpr :: (load (s64) from %ir.lsr.iv17, align 2)
1550 renamable $q0 = MVE_VMVN killed renamable $q0, 0, $noreg, undef renamable $q0
1551 $lr = tMOVr $r3, 14 /* CC::al */, $noreg
1552 renamable $r12 = MVE_VADDVu32no_acc killed renamable $q0, 0, $noreg
1553 renamable $r3, dead $cpsr = nsw tSUBi8 killed $r3, 1, 14 /* CC::al */, $noreg
1554 early-clobber renamable $r1 = t2STR_POST killed renamable $r12, killed renamable $r1, 4, 14 /* CC::al */, $noreg :: (store (s32) into %ir.store.addr)
1555 renamable $r2, dead $cpsr = tSUBi8 killed renamable $r2, 4, 14 /* CC::al */, $noreg
1556 renamable $lr = t2LoopDec killed renamable $lr, 1
1557 t2LoopEnd killed renamable $lr, %bb.2, implicit-def dead $cpsr
1558 tB %bb.3, 14 /* CC::al */, $noreg
1561 tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc
1565 name: illegal_vaddva_u32
1567 tracksRegLiveness: true
1570 - { reg: '$r0', virtual-reg: '' }
1571 - { reg: '$r1', virtual-reg: '' }
1578 cvBytesOfCalleeSavedRegisters: 0
1584 - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4,
1585 stack-id: default, callee-saved-register: '$lr', callee-saved-restored: false,
1586 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
1587 - { id: 1, name: '', type: spill-slot, offset: -8, size: 4, alignment: 4,
1588 stack-id: default, callee-saved-register: '$r7', callee-saved-restored: true,
1589 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
1592 machineFunctionInfo: {}
1594 ; CHECK-LABEL: name: illegal_vaddva_u32
1595 ; CHECK: bb.0.entry:
1596 ; CHECK: successors: %bb.4(0x30000000), %bb.1(0x50000000)
1597 ; CHECK: liveins: $lr, $r0, $r1, $r7
1598 ; CHECK: frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r7, killed $lr, implicit-def $sp, implicit $sp
1599 ; CHECK: frame-setup CFI_INSTRUCTION def_cfa_offset 8
1600 ; CHECK: frame-setup CFI_INSTRUCTION offset $lr, -4
1601 ; CHECK: frame-setup CFI_INSTRUCTION offset $r7, -8
1602 ; CHECK: tCBZ $r1, %bb.4
1603 ; CHECK: bb.1.vector.ph:
1604 ; CHECK: successors: %bb.2(0x80000000)
1605 ; CHECK: liveins: $r0, $r1
1606 ; CHECK: renamable $r2, dead $cpsr = tADDi3 renamable $r1, 3, 14 /* CC::al */, $noreg
1607 ; CHECK: renamable $r3, dead $cpsr = tMOVi8 1, 14 /* CC::al */, $noreg
1608 ; CHECK: renamable $r2 = t2BICri killed renamable $r2, 3, 14 /* CC::al */, $noreg, $noreg
1609 ; CHECK: renamable $r2, dead $cpsr = tSUBi8 killed renamable $r2, 4, 14 /* CC::al */, $noreg
1610 ; CHECK: renamable $r2 = nuw nsw t2ADDrs killed renamable $r3, killed renamable $r2, 19, 14 /* CC::al */, $noreg, $noreg
1611 ; CHECK: dead $lr = t2DLS renamable $r2
1612 ; CHECK: $r3 = tMOVr killed $r2, 14 /* CC::al */, $noreg
1613 ; CHECK: renamable $r2, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg
1614 ; CHECK: bb.2.vector.body:
1615 ; CHECK: successors: %bb.2(0x7c000000), %bb.3(0x04000000)
1616 ; CHECK: liveins: $r0, $r1, $r2, $r3
1617 ; CHECK: renamable $vpr = MVE_VCTP32 renamable $r1, 0, $noreg
1618 ; CHECK: MVE_VPST 8, implicit $vpr
1619 ; CHECK: renamable $r0, renamable $q0 = MVE_VLDRHU32_post killed renamable $r0, 8, 1, killed renamable $vpr :: (load (s64) from %ir.lsr.iv17, align 2)
1620 ; CHECK: $lr = tMOVr $r3, 14 /* CC::al */, $noreg
1621 ; CHECK: renamable $q0 = MVE_VMVN killed renamable $q0, 0, $noreg, undef renamable $q0
1622 ; CHECK: renamable $r3, dead $cpsr = nsw tSUBi8 killed $r3, 1, 14 /* CC::al */, $noreg
1623 ; CHECK: renamable $r1, dead $cpsr = tSUBi8 killed renamable $r1, 4, 14 /* CC::al */, $noreg
1624 ; CHECK: renamable $r2 = MVE_VADDVu32acc killed renamable $r2, killed renamable $q0, 0, $noreg
1625 ; CHECK: dead $lr = t2LEUpdate killed renamable $lr, %bb.2
1627 ; CHECK: liveins: $r2
1628 ; CHECK: $r0 = tMOVr killed $r2, 14 /* CC::al */, $noreg
1629 ; CHECK: tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc, implicit killed $r0
1631 ; CHECK: renamable $r2, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg
1632 ; CHECK: $r0 = tMOVr killed $r2, 14 /* CC::al */, $noreg
1633 ; CHECK: tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc, implicit killed $r0
1635 successors: %bb.4(0x30000000), %bb.1(0x50000000)
1636 liveins: $r0, $r1, $r7, $lr
1638 frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r7, killed $lr, implicit-def $sp, implicit $sp
1639 frame-setup CFI_INSTRUCTION def_cfa_offset 8
1640 frame-setup CFI_INSTRUCTION offset $lr, -4
1641 frame-setup CFI_INSTRUCTION offset $r7, -8
1645 successors: %bb.2(0x80000000)
1648 renamable $r2, dead $cpsr = tADDi3 renamable $r1, 3, 14 /* CC::al */, $noreg
1649 renamable $r3, dead $cpsr = tMOVi8 1, 14 /* CC::al */, $noreg
1650 renamable $r2 = t2BICri killed renamable $r2, 3, 14 /* CC::al */, $noreg, $noreg
1651 renamable $r2, dead $cpsr = tSUBi8 killed renamable $r2, 4, 14 /* CC::al */, $noreg
1652 renamable $r2 = nuw nsw t2ADDrs killed renamable $r3, killed renamable $r2, 19, 14 /* CC::al */, $noreg, $noreg
1653 $lr = t2DoLoopStart renamable $r2
1654 $r3 = tMOVr killed $r2, 14 /* CC::al */, $noreg
1655 renamable $r2, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg
1658 successors: %bb.2(0x7c000000), %bb.3(0x04000000)
1659 liveins: $r0, $r1, $r2, $r3
1661 renamable $vpr = MVE_VCTP32 renamable $r1, 0, $noreg
1662 MVE_VPST 8, implicit $vpr
1663 renamable $r0, renamable $q0 = MVE_VLDRHU32_post killed renamable $r0, 8, 1, killed renamable $vpr :: (load (s64) from %ir.lsr.iv17, align 2)
1664 $lr = tMOVr $r3, 14 /* CC::al */, $noreg
1665 renamable $q0 = MVE_VMVN killed renamable $q0, 0, $noreg, undef renamable $q0
1666 renamable $r3, dead $cpsr = nsw tSUBi8 killed $r3, 1, 14 /* CC::al */, $noreg
1667 renamable $r1, dead $cpsr = tSUBi8 killed renamable $r1, 4, 14 /* CC::al */, $noreg
1668 renamable $r2 = MVE_VADDVu32acc killed renamable $r2, killed renamable $q0, 0, $noreg
1669 renamable $lr = t2LoopDec killed renamable $lr, 1
1670 t2LoopEnd killed renamable $lr, %bb.2, implicit-def dead $cpsr
1671 tB %bb.3, 14 /* CC::al */, $noreg
1676 $r0 = tMOVr killed $r2, 14 /* CC::al */, $noreg
1677 tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc, implicit killed $r0
1680 renamable $r2, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg
1681 $r0 = tMOVr killed $r2, 14 /* CC::al */, $noreg
1682 tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc, implicit killed $r0
1686 name: illegal_vaddv_s16
1688 tracksRegLiveness: true
1691 - { reg: '$r0', virtual-reg: '' }
1692 - { reg: '$r1', virtual-reg: '' }
1693 - { reg: '$r2', virtual-reg: '' }
1700 cvBytesOfCalleeSavedRegisters: 0
1705 - { id: 0, type: default, offset: 0, size: 16, alignment: 8, stack-id: default,
1706 isImmutable: true, isAliased: false, callee-saved-register: '', callee-saved-restored: true,
1707 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
1709 - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4,
1710 stack-id: default, callee-saved-register: '$lr', callee-saved-restored: false,
1711 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
1712 - { id: 1, name: '', type: spill-slot, offset: -8, size: 4, alignment: 4,
1713 stack-id: default, callee-saved-register: '$r4', callee-saved-restored: true,
1714 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
1717 machineFunctionInfo: {}
1719 ; CHECK-LABEL: name: illegal_vaddv_s16
1720 ; CHECK: bb.0.entry:
1721 ; CHECK: successors: %bb.1(0x80000000)
1722 ; CHECK: liveins: $lr, $r0, $r1, $r2, $r4
1723 ; CHECK: frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r4, killed $lr, implicit-def $sp, implicit $sp
1724 ; CHECK: frame-setup CFI_INSTRUCTION def_cfa_offset 8
1725 ; CHECK: frame-setup CFI_INSTRUCTION offset $lr, -4
1726 ; CHECK: frame-setup CFI_INSTRUCTION offset $r4, -8
1727 ; CHECK: tCMPi8 renamable $r2, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr
1728 ; CHECK: t2IT 0, 8, implicit-def $itstate
1729 ; CHECK: tPOP_RET 0 /* CC::eq */, killed $cpsr, def $r4, def $pc, implicit killed $itstate
1730 ; CHECK: bb.1.vector.ph:
1731 ; CHECK: successors: %bb.2(0x80000000)
1732 ; CHECK: liveins: $r0, $r1, $r2
1733 ; CHECK: renamable $r3, dead $cpsr = tADDi3 renamable $r2, 3, 14 /* CC::al */, $noreg
1734 ; CHECK: renamable $r3 = t2BICri killed renamable $r3, 3, 14 /* CC::al */, $noreg, $noreg
1735 ; CHECK: renamable $r12 = t2SUBri killed renamable $r3, 4, 14 /* CC::al */, $noreg, $noreg
1736 ; CHECK: renamable $r3, dead $cpsr = tMOVi8 1, 14 /* CC::al */, $noreg
1737 ; CHECK: renamable $r12 = nuw nsw t2ADDrs killed renamable $r3, killed renamable $r12, 19, 14 /* CC::al */, $noreg, $noreg
1738 ; CHECK: renamable $r3 = tADDrSPi $sp, 2, 14 /* CC::al */, $noreg
1739 ; CHECK: renamable $q0 = MVE_VLDRWU32 killed renamable $r3, 0, 0, $noreg :: (load (s128) from %fixed-stack.0, align 8)
1740 ; CHECK: dead $lr = t2DLS renamable $r12
1741 ; CHECK: $r4 = tMOVr killed $r12, 14 /* CC::al */, $noreg
1742 ; CHECK: bb.2.vector.body:
1743 ; CHECK: successors: %bb.2(0x7c000000), %bb.3(0x04000000)
1744 ; CHECK: liveins: $q0, $r0, $r1, $r2, $r4
1745 ; CHECK: renamable $vpr = MVE_VCTP16 renamable $r2, 0, $noreg
1746 ; CHECK: MVE_VPST 8, implicit $vpr
1747 ; CHECK: renamable $r0, renamable $q1 = MVE_VLDRBS16_post killed renamable $r0, 8, 1, killed renamable $vpr :: (load (s64) from %ir.lsr.iv17, align 1)
1748 ; CHECK: renamable $q1 = MVE_VSUBi16 killed renamable $q1, renamable $q0, 0, $noreg, undef renamable $q1
1749 ; CHECK: $lr = tMOVr $r4, 14 /* CC::al */, $noreg
1750 ; CHECK: renamable $r12 = MVE_VADDVu16no_acc killed renamable $q1, 0, $noreg
1751 ; CHECK: renamable $r4, dead $cpsr = nsw tSUBi8 killed $r4, 1, 14 /* CC::al */, $noreg
1752 ; CHECK: renamable $r3 = t2SXTH killed renamable $r12, 0, 14 /* CC::al */, $noreg
1753 ; CHECK: renamable $r2, dead $cpsr = tSUBi8 killed renamable $r2, 8, 14 /* CC::al */, $noreg
1754 ; CHECK: early-clobber renamable $r1 = t2STR_POST killed renamable $r3, killed renamable $r1, 4, 14 /* CC::al */, $noreg :: (store (s32) into %ir.store.addr)
1755 ; CHECK: dead $lr = t2LEUpdate killed renamable $lr, %bb.2
1757 ; CHECK: tPOP_RET 14 /* CC::al */, $noreg, def $r4, def $pc
1760 successors: %bb.1(0x80000000)
1761 liveins: $r0, $r1, $r2, $r4, $lr
1763 frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r4, killed $lr, implicit-def $sp, implicit $sp
1764 frame-setup CFI_INSTRUCTION def_cfa_offset 8
1765 frame-setup CFI_INSTRUCTION offset $lr, -4
1766 frame-setup CFI_INSTRUCTION offset $r4, -8
1767 tCMPi8 renamable $r2, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr
1768 t2IT 0, 8, implicit-def $itstate
1769 tPOP_RET 0 /* CC::eq */, killed $cpsr, def $r4, def $pc, implicit killed $itstate
1772 successors: %bb.2(0x80000000)
1773 liveins: $r0, $r1, $r2, $r4, $lr
1775 renamable $r3, dead $cpsr = tADDi3 renamable $r2, 3, 14 /* CC::al */, $noreg
1776 renamable $r3 = t2BICri killed renamable $r3, 3, 14 /* CC::al */, $noreg, $noreg
1777 renamable $r12 = t2SUBri killed renamable $r3, 4, 14 /* CC::al */, $noreg, $noreg
1778 renamable $r3, dead $cpsr = tMOVi8 1, 14 /* CC::al */, $noreg
1779 renamable $r12 = nuw nsw t2ADDrs killed renamable $r3, killed renamable $r12, 19, 14 /* CC::al */, $noreg, $noreg
1780 renamable $r3 = tADDrSPi $sp, 2, 14 /* CC::al */, $noreg
1781 renamable $q0 = MVE_VLDRWU32 killed renamable $r3, 0, 0, $noreg :: (load (s128) from %fixed-stack.0, align 8)
1782 $lr = t2DoLoopStart renamable $r12
1783 $r4 = tMOVr killed $r12, 14 /* CC::al */, $noreg
1786 successors: %bb.2(0x7c000000), %bb.3(0x04000000)
1787 liveins: $q0, $r0, $r1, $r2, $r4
1789 renamable $vpr = MVE_VCTP16 renamable $r2, 0, $noreg
1790 MVE_VPST 8, implicit $vpr
1791 renamable $r0, renamable $q1 = MVE_VLDRBS16_post killed renamable $r0, 8, 1, killed renamable $vpr :: (load (s64) from %ir.lsr.iv17, align 1)
1792 renamable $q1 = MVE_VSUBi16 killed renamable $q1, renamable $q0, 0, $noreg, undef renamable $q1
1793 $lr = tMOVr $r4, 14 /* CC::al */, $noreg
1794 renamable $r12 = MVE_VADDVu16no_acc killed renamable $q1, 0, $noreg
1795 renamable $r4, dead $cpsr = nsw tSUBi8 killed $r4, 1, 14 /* CC::al */, $noreg
1796 renamable $r3 = t2SXTH killed renamable $r12, 0, 14 /* CC::al */, $noreg
1797 renamable $r2, dead $cpsr = tSUBi8 killed renamable $r2, 8, 14 /* CC::al */, $noreg
1798 early-clobber renamable $r1 = t2STR_POST killed renamable $r3, killed renamable $r1, 4, 14 /* CC::al */, $noreg :: (store (s32) into %ir.store.addr)
1799 renamable $lr = t2LoopDec killed renamable $lr, 1
1800 t2LoopEnd killed renamable $lr, %bb.2, implicit-def dead $cpsr
1801 tB %bb.3, 14 /* CC::al */, $noreg
1804 tPOP_RET 14 /* CC::al */, $noreg, def $r4, def $pc
1808 name: illegal_vaddva_s16
1810 tracksRegLiveness: true
1813 - { reg: '$r0', virtual-reg: '' }
1814 - { reg: '$r1', virtual-reg: '' }
1815 - { reg: '$r2', virtual-reg: '' }
1816 - { reg: '$r3', virtual-reg: '' }
1823 cvBytesOfCalleeSavedRegisters: 0
1828 - { id: 0, type: default, offset: 0, size: 8, alignment: 8, stack-id: default,
1829 isImmutable: true, isAliased: false, callee-saved-register: '', callee-saved-restored: true,
1830 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
1832 - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4,
1833 stack-id: default, callee-saved-register: '$lr', callee-saved-restored: false,
1834 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
1835 - { id: 1, name: '', type: spill-slot, offset: -8, size: 4, alignment: 4,
1836 stack-id: default, callee-saved-register: '$r4', callee-saved-restored: true,
1837 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
1840 machineFunctionInfo: {}
1842 ; CHECK-LABEL: name: illegal_vaddva_s16
1843 ; CHECK: bb.0.entry:
1844 ; CHECK: successors: %bb.4(0x30000000), %bb.1(0x50000000)
1845 ; CHECK: liveins: $lr, $r0, $r1, $r2, $r3, $r4
1846 ; CHECK: frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r4, killed $lr, implicit-def $sp, implicit $sp
1847 ; CHECK: frame-setup CFI_INSTRUCTION def_cfa_offset 8
1848 ; CHECK: frame-setup CFI_INSTRUCTION offset $lr, -4
1849 ; CHECK: frame-setup CFI_INSTRUCTION offset $r4, -8
1850 ; CHECK: tCBZ $r1, %bb.4
1851 ; CHECK: bb.1.vector.ph:
1852 ; CHECK: successors: %bb.2(0x80000000)
1853 ; CHECK: liveins: $r0, $r1, $r2, $r3
1854 ; CHECK: renamable $d0 = VMOVDRR killed renamable $r2, killed renamable $r3, 14 /* CC::al */, $noreg, implicit-def $q0
1855 ; CHECK: renamable $r2, dead $cpsr = tADDi3 renamable $r1, 3, 14 /* CC::al */, $noreg
1856 ; CHECK: renamable $r2 = t2BICri killed renamable $r2, 3, 14 /* CC::al */, $noreg, $noreg
1857 ; CHECK: renamable $r3, dead $cpsr = tMOVi8 1, 14 /* CC::al */, $noreg
1858 ; CHECK: renamable $r2, dead $cpsr = tSUBi8 killed renamable $r2, 4, 14 /* CC::al */, $noreg
1859 ; CHECK: renamable $d1 = VLDRD $sp, 2, 14 /* CC::al */, $noreg, implicit killed $q0, implicit-def $q0 :: (load (s64) from %fixed-stack.0)
1860 ; CHECK: renamable $r2 = nuw nsw t2ADDrs killed renamable $r3, killed renamable $r2, 19, 14 /* CC::al */, $noreg, $noreg
1861 ; CHECK: renamable $r3, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg
1862 ; CHECK: dead $lr = t2DLS renamable $r2
1863 ; CHECK: $r4 = tMOVr killed $r2, 14 /* CC::al */, $noreg
1864 ; CHECK: bb.2.vector.body:
1865 ; CHECK: successors: %bb.2(0x7c000000), %bb.3(0x04000000)
1866 ; CHECK: liveins: $q0, $r0, $r1, $r3, $r4
1867 ; CHECK: renamable $vpr = MVE_VCTP16 renamable $r1, 0, $noreg
1868 ; CHECK: MVE_VPST 8, implicit $vpr
1869 ; CHECK: renamable $r0, renamable $q1 = MVE_VLDRBS16_post killed renamable $r0, 8, 1, killed renamable $vpr :: (load (s64) from %ir.lsr.iv17, align 1)
1870 ; CHECK: renamable $q1 = MVE_VSUBi16 killed renamable $q1, renamable $q0, 0, $noreg, undef renamable $q1
1871 ; CHECK: $lr = tMOVr $r4, 14 /* CC::al */, $noreg
1872 ; CHECK: renamable $r2 = MVE_VADDVu16no_acc killed renamable $q1, 0, $noreg
1873 ; CHECK: renamable $r4, dead $cpsr = nsw tSUBi8 killed $r4, 1, 14 /* CC::al */, $noreg
1874 ; CHECK: renamable $r3 = t2SXTAH killed renamable $r3, killed renamable $r2, 0, 14 /* CC::al */, $noreg
1875 ; CHECK: renamable $r1, dead $cpsr = tSUBi8 killed renamable $r1, 8, 14 /* CC::al */, $noreg
1876 ; CHECK: dead $lr = t2LEUpdate killed renamable $lr, %bb.2
1878 ; CHECK: liveins: $r3
1879 ; CHECK: $r0 = tMOVr killed $r3, 14 /* CC::al */, $noreg
1880 ; CHECK: tPOP_RET 14 /* CC::al */, $noreg, def $r4, def $pc, implicit killed $r0
1882 ; CHECK: renamable $r3, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg
1883 ; CHECK: $r0 = tMOVr killed $r3, 14 /* CC::al */, $noreg
1884 ; CHECK: tPOP_RET 14 /* CC::al */, $noreg, def $r4, def $pc, implicit killed $r0
1886 successors: %bb.4(0x30000000), %bb.1(0x50000000)
1887 liveins: $r0, $r1, $r2, $r3, $r4, $lr
1889 frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r4, killed $lr, implicit-def $sp, implicit $sp
1890 frame-setup CFI_INSTRUCTION def_cfa_offset 8
1891 frame-setup CFI_INSTRUCTION offset $lr, -4
1892 frame-setup CFI_INSTRUCTION offset $r4, -8
1896 successors: %bb.2(0x80000000)
1897 liveins: $r0, $r1, $r2, $r3
1899 renamable $d0 = VMOVDRR killed renamable $r2, killed renamable $r3, 14 /* CC::al */, $noreg, implicit-def $q0
1900 renamable $r2, dead $cpsr = tADDi3 renamable $r1, 3, 14 /* CC::al */, $noreg
1901 renamable $r2 = t2BICri killed renamable $r2, 3, 14 /* CC::al */, $noreg, $noreg
1902 renamable $r3, dead $cpsr = tMOVi8 1, 14 /* CC::al */, $noreg
1903 renamable $r2, dead $cpsr = tSUBi8 killed renamable $r2, 4, 14 /* CC::al */, $noreg
1904 renamable $d1 = VLDRD $sp, 2, 14 /* CC::al */, $noreg, implicit killed $q0, implicit-def $q0 :: (load (s64) from %fixed-stack.0)
1905 renamable $r2 = nuw nsw t2ADDrs killed renamable $r3, killed renamable $r2, 19, 14 /* CC::al */, $noreg, $noreg
1906 renamable $r3, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg
1907 $lr = t2DoLoopStart renamable $r2
1908 $r4 = tMOVr killed $r2, 14 /* CC::al */, $noreg
1911 successors: %bb.2(0x7c000000), %bb.3(0x04000000)
1912 liveins: $q0, $r0, $r1, $r3, $r4
1914 renamable $vpr = MVE_VCTP16 renamable $r1, 0, $noreg
1915 MVE_VPST 8, implicit $vpr
1916 renamable $r0, renamable $q1 = MVE_VLDRBS16_post killed renamable $r0, 8, 1, killed renamable $vpr :: (load (s64) from %ir.lsr.iv17, align 1)
1917 renamable $q1 = MVE_VSUBi16 killed renamable $q1, renamable $q0, 0, $noreg, undef renamable $q1
1918 $lr = tMOVr $r4, 14 /* CC::al */, $noreg
1919 renamable $r2 = MVE_VADDVu16no_acc killed renamable $q1, 0, $noreg
1920 renamable $r4, dead $cpsr = nsw tSUBi8 killed $r4, 1, 14 /* CC::al */, $noreg
1921 renamable $r3 = t2SXTAH killed renamable $r3, killed renamable $r2, 0, 14 /* CC::al */, $noreg
1922 renamable $r1, dead $cpsr = tSUBi8 killed renamable $r1, 8, 14 /* CC::al */, $noreg
1923 renamable $lr = t2LoopDec killed renamable $lr, 1
1924 t2LoopEnd killed renamable $lr, %bb.2, implicit-def dead $cpsr
1925 tB %bb.3, 14 /* CC::al */, $noreg
1930 $r0 = tMOVr killed $r3, 14 /* CC::al */, $noreg
1931 tPOP_RET 14 /* CC::al */, $noreg, def $r4, def $pc, implicit killed $r0
1934 renamable $r3, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg
1935 $r0 = tMOVr killed $r3, 14 /* CC::al */, $noreg
1936 tPOP_RET 14 /* CC::al */, $noreg, def $r4, def $pc, implicit killed $r0
1940 name: illegal_vaddv_u16
1942 tracksRegLiveness: true
1945 - { reg: '$r0', virtual-reg: '' }
1946 - { reg: '$r1', virtual-reg: '' }
1947 - { reg: '$r2', virtual-reg: '' }
1954 cvBytesOfCalleeSavedRegisters: 0
1959 - { id: 0, type: default, offset: 0, size: 16, alignment: 8, stack-id: default,
1960 isImmutable: true, isAliased: false, callee-saved-register: '', callee-saved-restored: true,
1961 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
1963 - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4,
1964 stack-id: default, callee-saved-register: '$lr', callee-saved-restored: false,
1965 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
1966 - { id: 1, name: '', type: spill-slot, offset: -8, size: 4, alignment: 4,
1967 stack-id: default, callee-saved-register: '$r4', callee-saved-restored: true,
1968 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
1971 machineFunctionInfo: {}
1973 ; CHECK-LABEL: name: illegal_vaddv_u16
1974 ; CHECK: bb.0.entry:
1975 ; CHECK: successors: %bb.1(0x80000000)
1976 ; CHECK: liveins: $lr, $r0, $r1, $r2, $r4
1977 ; CHECK: frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r4, killed $lr, implicit-def $sp, implicit $sp
1978 ; CHECK: frame-setup CFI_INSTRUCTION def_cfa_offset 8
1979 ; CHECK: frame-setup CFI_INSTRUCTION offset $lr, -4
1980 ; CHECK: frame-setup CFI_INSTRUCTION offset $r4, -8
1981 ; CHECK: tCMPi8 renamable $r2, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr
1982 ; CHECK: t2IT 0, 8, implicit-def $itstate
1983 ; CHECK: tPOP_RET 0 /* CC::eq */, killed $cpsr, def $r4, def $pc, implicit killed $itstate
1984 ; CHECK: bb.1.vector.ph:
1985 ; CHECK: successors: %bb.2(0x80000000)
1986 ; CHECK: liveins: $r0, $r1, $r2
1987 ; CHECK: renamable $r3, dead $cpsr = tADDi3 renamable $r2, 3, 14 /* CC::al */, $noreg
1988 ; CHECK: renamable $r3 = t2BICri killed renamable $r3, 3, 14 /* CC::al */, $noreg, $noreg
1989 ; CHECK: renamable $r12 = t2SUBri killed renamable $r3, 4, 14 /* CC::al */, $noreg, $noreg
1990 ; CHECK: renamable $r3, dead $cpsr = tMOVi8 1, 14 /* CC::al */, $noreg
1991 ; CHECK: renamable $r12 = nuw nsw t2ADDrs killed renamable $r3, killed renamable $r12, 19, 14 /* CC::al */, $noreg, $noreg
1992 ; CHECK: renamable $r3 = tADDrSPi $sp, 2, 14 /* CC::al */, $noreg
1993 ; CHECK: renamable $q0 = MVE_VLDRWU32 killed renamable $r3, 0, 0, $noreg :: (load (s128) from %fixed-stack.0, align 8)
1994 ; CHECK: dead $lr = t2DLS renamable $r12
1995 ; CHECK: $r4 = tMOVr killed $r12, 14 /* CC::al */, $noreg
1996 ; CHECK: bb.2.vector.body:
1997 ; CHECK: successors: %bb.2(0x7c000000), %bb.3(0x04000000)
1998 ; CHECK: liveins: $q0, $r0, $r1, $r2, $r4
1999 ; CHECK: renamable $vpr = MVE_VCTP16 renamable $r2, 0, $noreg
2000 ; CHECK: MVE_VPST 8, implicit $vpr
2001 ; CHECK: renamable $r0, renamable $q1 = MVE_VLDRHU16_post killed renamable $r0, 16, 1, killed renamable $vpr :: (load (s128) from %ir.lsr.iv17, align 2)
2002 ; CHECK: renamable $q1 = MVE_VSUBi16 killed renamable $q1, renamable $q0, 0, $noreg, undef renamable $q1
2003 ; CHECK: $lr = tMOVr $r4, 14 /* CC::al */, $noreg
2004 ; CHECK: renamable $r12 = MVE_VADDVu16no_acc killed renamable $q1, 0, $noreg
2005 ; CHECK: renamable $r4, dead $cpsr = nsw tSUBi8 killed $r4, 1, 14 /* CC::al */, $noreg
2006 ; CHECK: renamable $r3 = t2UXTH killed renamable $r12, 0, 14 /* CC::al */, $noreg
2007 ; CHECK: renamable $r2, dead $cpsr = tSUBi8 killed renamable $r2, 8, 14 /* CC::al */, $noreg
2008 ; CHECK: early-clobber renamable $r1 = t2STR_POST killed renamable $r3, killed renamable $r1, 4, 14 /* CC::al */, $noreg :: (store (s32) into %ir.store.addr)
2009 ; CHECK: dead $lr = t2LEUpdate killed renamable $lr, %bb.2
2011 ; CHECK: tPOP_RET 14 /* CC::al */, $noreg, def $r4, def $pc
2013 successors: %bb.1(0x80000000)
2014 liveins: $r0, $r1, $r2, $r4, $lr
2016 frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r4, killed $lr, implicit-def $sp, implicit $sp
2017 frame-setup CFI_INSTRUCTION def_cfa_offset 8
2018 frame-setup CFI_INSTRUCTION offset $lr, -4
2019 frame-setup CFI_INSTRUCTION offset $r4, -8
2020 tCMPi8 renamable $r2, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr
2021 t2IT 0, 8, implicit-def $itstate
2022 tPOP_RET 0 /* CC::eq */, killed $cpsr, def $r4, def $pc, implicit killed $itstate
2025 successors: %bb.2(0x80000000)
2026 liveins: $r0, $r1, $r2, $r4, $lr
2028 renamable $r3, dead $cpsr = tADDi3 renamable $r2, 3, 14 /* CC::al */, $noreg
2029 renamable $r3 = t2BICri killed renamable $r3, 3, 14 /* CC::al */, $noreg, $noreg
2030 renamable $r12 = t2SUBri killed renamable $r3, 4, 14 /* CC::al */, $noreg, $noreg
2031 renamable $r3, dead $cpsr = tMOVi8 1, 14 /* CC::al */, $noreg
2032 renamable $r12 = nuw nsw t2ADDrs killed renamable $r3, killed renamable $r12, 19, 14 /* CC::al */, $noreg, $noreg
2033 renamable $r3 = tADDrSPi $sp, 2, 14 /* CC::al */, $noreg
2034 renamable $q0 = MVE_VLDRWU32 killed renamable $r3, 0, 0, $noreg :: (load (s128) from %fixed-stack.0, align 8)
2035 $lr = t2DoLoopStart renamable $r12
2036 $r4 = tMOVr killed $r12, 14 /* CC::al */, $noreg
2039 successors: %bb.2(0x7c000000), %bb.3(0x04000000)
2040 liveins: $q0, $r0, $r1, $r2, $r4
2042 renamable $vpr = MVE_VCTP16 renamable $r2, 0, $noreg
2043 MVE_VPST 8, implicit $vpr
2044 renamable $r0, renamable $q1 = MVE_VLDRHU16_post killed renamable $r0, 16, 1, killed renamable $vpr :: (load (s128) from %ir.lsr.iv17, align 2)
2045 renamable $q1 = MVE_VSUBi16 killed renamable $q1, renamable $q0, 0, $noreg, undef renamable $q1
2046 $lr = tMOVr $r4, 14 /* CC::al */, $noreg
2047 renamable $r12 = MVE_VADDVu16no_acc killed renamable $q1, 0, $noreg
2048 renamable $r4, dead $cpsr = nsw tSUBi8 killed $r4, 1, 14 /* CC::al */, $noreg
2049 renamable $r3 = t2UXTH killed renamable $r12, 0, 14 /* CC::al */, $noreg
2050 renamable $r2, dead $cpsr = tSUBi8 killed renamable $r2, 8, 14 /* CC::al */, $noreg
2051 early-clobber renamable $r1 = t2STR_POST killed renamable $r3, killed renamable $r1, 4, 14 /* CC::al */, $noreg :: (store (s32) into %ir.store.addr)
2052 renamable $lr = t2LoopDec killed renamable $lr, 1
2053 t2LoopEnd killed renamable $lr, %bb.2, implicit-def dead $cpsr
2054 tB %bb.3, 14 /* CC::al */, $noreg
2057 tPOP_RET 14 /* CC::al */, $noreg, def $r4, def $pc
2061 name: illegal_vaddva_u16
2063 tracksRegLiveness: true
2066 - { reg: '$r0', virtual-reg: '' }
2067 - { reg: '$r1', virtual-reg: '' }
2068 - { reg: '$r2', virtual-reg: '' }
2069 - { reg: '$r3', virtual-reg: '' }
2076 cvBytesOfCalleeSavedRegisters: 0
2081 - { id: 0, type: default, offset: 0, size: 8, alignment: 8, stack-id: default,
2082 isImmutable: true, isAliased: false, callee-saved-register: '', callee-saved-restored: true,
2083 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
2085 - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4,
2086 stack-id: default, callee-saved-register: '$lr', callee-saved-restored: false,
2087 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
2088 - { id: 1, name: '', type: spill-slot, offset: -8, size: 4, alignment: 4,
2089 stack-id: default, callee-saved-register: '$r4', callee-saved-restored: true,
2090 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
2093 machineFunctionInfo: {}
2095 ; CHECK-LABEL: name: illegal_vaddva_u16
2096 ; CHECK: bb.0.entry:
2097 ; CHECK: successors: %bb.4(0x30000000), %bb.1(0x50000000)
2098 ; CHECK: liveins: $lr, $r0, $r1, $r2, $r3, $r4
2099 ; CHECK: frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r4, killed $lr, implicit-def $sp, implicit $sp
2100 ; CHECK: frame-setup CFI_INSTRUCTION def_cfa_offset 8
2101 ; CHECK: frame-setup CFI_INSTRUCTION offset $lr, -4
2102 ; CHECK: frame-setup CFI_INSTRUCTION offset $r4, -8
2103 ; CHECK: tCBZ $r1, %bb.4
2104 ; CHECK: bb.1.vector.ph:
2105 ; CHECK: successors: %bb.2(0x80000000)
2106 ; CHECK: liveins: $r0, $r1, $r2, $r3
2107 ; CHECK: renamable $d0 = VMOVDRR killed renamable $r2, killed renamable $r3, 14 /* CC::al */, $noreg, implicit-def $q0
2108 ; CHECK: renamable $r2, dead $cpsr = tADDi3 renamable $r1, 3, 14 /* CC::al */, $noreg
2109 ; CHECK: renamable $r2 = t2BICri killed renamable $r2, 3, 14 /* CC::al */, $noreg, $noreg
2110 ; CHECK: renamable $r3, dead $cpsr = tMOVi8 1, 14 /* CC::al */, $noreg
2111 ; CHECK: renamable $r2, dead $cpsr = tSUBi8 killed renamable $r2, 4, 14 /* CC::al */, $noreg
2112 ; CHECK: renamable $d1 = VLDRD $sp, 2, 14 /* CC::al */, $noreg, implicit killed $q0, implicit-def $q0 :: (load (s64) from %fixed-stack.0)
2113 ; CHECK: renamable $r2 = nuw nsw t2ADDrs killed renamable $r3, killed renamable $r2, 19, 14 /* CC::al */, $noreg, $noreg
2114 ; CHECK: renamable $r3, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg
2115 ; CHECK: dead $lr = t2DLS renamable $r2
2116 ; CHECK: $r4 = tMOVr killed $r2, 14 /* CC::al */, $noreg
2117 ; CHECK: bb.2.vector.body:
2118 ; CHECK: successors: %bb.2(0x7c000000), %bb.3(0x04000000)
2119 ; CHECK: liveins: $q0, $r0, $r1, $r3, $r4
2120 ; CHECK: renamable $vpr = MVE_VCTP16 renamable $r1, 0, $noreg
2121 ; CHECK: MVE_VPST 8, implicit $vpr
2122 ; CHECK: renamable $r0, renamable $q1 = MVE_VLDRHU16_post killed renamable $r0, 16, 1, killed renamable $vpr :: (load (s128) from %ir.lsr.iv17, align 2)
2123 ; CHECK: renamable $q1 = MVE_VSUBi16 killed renamable $q1, renamable $q0, 0, $noreg, undef renamable $q1
2124 ; CHECK: $lr = tMOVr $r4, 14 /* CC::al */, $noreg
2125 ; CHECK: renamable $r2 = MVE_VADDVu16no_acc killed renamable $q1, 0, $noreg
2126 ; CHECK: renamable $r4, dead $cpsr = nsw tSUBi8 killed $r4, 1, 14 /* CC::al */, $noreg
2127 ; CHECK: renamable $r3 = t2UXTAH killed renamable $r3, killed renamable $r2, 0, 14 /* CC::al */, $noreg
2128 ; CHECK: renamable $r1, dead $cpsr = tSUBi8 killed renamable $r1, 8, 14 /* CC::al */, $noreg
2129 ; CHECK: dead $lr = t2LEUpdate killed renamable $lr, %bb.2
2131 ; CHECK: liveins: $r3
2132 ; CHECK: $r0 = tMOVr killed $r3, 14 /* CC::al */, $noreg
2133 ; CHECK: tPOP_RET 14 /* CC::al */, $noreg, def $r4, def $pc, implicit killed $r0
2135 ; CHECK: renamable $r3, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg
2136 ; CHECK: $r0 = tMOVr killed $r3, 14 /* CC::al */, $noreg
2137 ; CHECK: tPOP_RET 14 /* CC::al */, $noreg, def $r4, def $pc, implicit killed $r0
2139 successors: %bb.4(0x30000000), %bb.1(0x50000000)
2140 liveins: $r0, $r1, $r2, $r3, $r4, $lr
2142 frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r4, killed $lr, implicit-def $sp, implicit $sp
2143 frame-setup CFI_INSTRUCTION def_cfa_offset 8
2144 frame-setup CFI_INSTRUCTION offset $lr, -4
2145 frame-setup CFI_INSTRUCTION offset $r4, -8
2149 successors: %bb.2(0x80000000)
2150 liveins: $r0, $r1, $r2, $r3
2152 renamable $d0 = VMOVDRR killed renamable $r2, killed renamable $r3, 14 /* CC::al */, $noreg, implicit-def $q0
2153 renamable $r2, dead $cpsr = tADDi3 renamable $r1, 3, 14 /* CC::al */, $noreg
2154 renamable $r2 = t2BICri killed renamable $r2, 3, 14 /* CC::al */, $noreg, $noreg
2155 renamable $r3, dead $cpsr = tMOVi8 1, 14 /* CC::al */, $noreg
2156 renamable $r2, dead $cpsr = tSUBi8 killed renamable $r2, 4, 14 /* CC::al */, $noreg
2157 renamable $d1 = VLDRD $sp, 2, 14 /* CC::al */, $noreg, implicit killed $q0, implicit-def $q0 :: (load (s64) from %fixed-stack.0)
2158 renamable $r2 = nuw nsw t2ADDrs killed renamable $r3, killed renamable $r2, 19, 14 /* CC::al */, $noreg, $noreg
2159 renamable $r3, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg
2160 $lr = t2DoLoopStart renamable $r2
2161 $r4 = tMOVr killed $r2, 14 /* CC::al */, $noreg
2164 successors: %bb.2(0x7c000000), %bb.3(0x04000000)
2165 liveins: $q0, $r0, $r1, $r3, $r4
2167 renamable $vpr = MVE_VCTP16 renamable $r1, 0, $noreg
2168 MVE_VPST 8, implicit $vpr
2169 renamable $r0, renamable $q1 = MVE_VLDRHU16_post killed renamable $r0, 16, 1, killed renamable $vpr :: (load (s128) from %ir.lsr.iv17, align 2)
2170 renamable $q1 = MVE_VSUBi16 killed renamable $q1, renamable $q0, 0, $noreg, undef renamable $q1
2171 $lr = tMOVr $r4, 14 /* CC::al */, $noreg
2172 renamable $r2 = MVE_VADDVu16no_acc killed renamable $q1, 0, $noreg
2173 renamable $r4, dead $cpsr = nsw tSUBi8 killed $r4, 1, 14 /* CC::al */, $noreg
2174 renamable $r3 = t2UXTAH killed renamable $r3, killed renamable $r2, 0, 14 /* CC::al */, $noreg
2175 renamable $r1, dead $cpsr = tSUBi8 killed renamable $r1, 8, 14 /* CC::al */, $noreg
2176 renamable $lr = t2LoopDec killed renamable $lr, 1
2177 t2LoopEnd killed renamable $lr, %bb.2, implicit-def dead $cpsr
2178 tB %bb.3, 14 /* CC::al */, $noreg
2183 $r0 = tMOVr killed $r3, 14 /* CC::al */, $noreg
2184 tPOP_RET 14 /* CC::al */, $noreg, def $r4, def $pc, implicit killed $r0
2187 renamable $r3, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg
2188 $r0 = tMOVr killed $r3, 14 /* CC::al */, $noreg
2189 tPOP_RET 14 /* CC::al */, $noreg, def $r4, def $pc, implicit killed $r0
2193 name: illegal_vaddv_s8
2195 tracksRegLiveness: true
2198 - { reg: '$r0', virtual-reg: '' }
2199 - { reg: '$r1', virtual-reg: '' }
2200 - { reg: '$r2', virtual-reg: '' }
2207 cvBytesOfCalleeSavedRegisters: 0
2212 - { id: 0, type: default, offset: 0, size: 16, alignment: 8, stack-id: default,
2213 isImmutable: true, isAliased: false, callee-saved-register: '', callee-saved-restored: true,
2214 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
2216 - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4,
2217 stack-id: default, callee-saved-register: '$lr', callee-saved-restored: false,
2218 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
2219 - { id: 1, name: '', type: spill-slot, offset: -8, size: 4, alignment: 4,
2220 stack-id: default, callee-saved-register: '$r4', callee-saved-restored: true,
2221 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
2224 machineFunctionInfo: {}
2226 ; CHECK-LABEL: name: illegal_vaddv_s8
2227 ; CHECK: bb.0.entry:
2228 ; CHECK: successors: %bb.1(0x80000000)
2229 ; CHECK: liveins: $lr, $r0, $r1, $r2, $r4
2230 ; CHECK: frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r4, killed $lr, implicit-def $sp, implicit $sp
2231 ; CHECK: frame-setup CFI_INSTRUCTION def_cfa_offset 8
2232 ; CHECK: frame-setup CFI_INSTRUCTION offset $lr, -4
2233 ; CHECK: frame-setup CFI_INSTRUCTION offset $r4, -8
2234 ; CHECK: tCMPi8 renamable $r2, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr
2235 ; CHECK: t2IT 0, 8, implicit-def $itstate
2236 ; CHECK: tPOP_RET 0 /* CC::eq */, killed $cpsr, def $r4, def $pc, implicit killed $itstate
2237 ; CHECK: bb.1.vector.ph:
2238 ; CHECK: successors: %bb.2(0x80000000)
2239 ; CHECK: liveins: $r0, $r1, $r2
2240 ; CHECK: renamable $r3, dead $cpsr = tADDi3 renamable $r2, 7, 14 /* CC::al */, $noreg
2241 ; CHECK: renamable $r3 = t2BICri killed renamable $r3, 7, 14 /* CC::al */, $noreg, $noreg
2242 ; CHECK: renamable $r12 = t2SUBri killed renamable $r3, 7, 14 /* CC::al */, $noreg, $noreg
2243 ; CHECK: renamable $r3, dead $cpsr = tMOVi8 1, 14 /* CC::al */, $noreg
2244 ; CHECK: renamable $r12 = nuw nsw t2ADDrs killed renamable $r3, killed renamable $r12, 27, 14 /* CC::al */, $noreg, $noreg
2245 ; CHECK: renamable $r3 = tADDrSPi $sp, 2, 14 /* CC::al */, $noreg
2246 ; CHECK: renamable $q0 = MVE_VLDRWU32 killed renamable $r3, 0, 0, $noreg :: (load (s128) from %fixed-stack.0, align 8)
2247 ; CHECK: dead $lr = t2DLS renamable $r12
2248 ; CHECK: $r4 = tMOVr killed $r12, 14 /* CC::al */, $noreg
2249 ; CHECK: bb.2.vector.body:
2250 ; CHECK: successors: %bb.2(0x7c000000), %bb.3(0x04000000)
2251 ; CHECK: liveins: $q0, $r0, $r1, $r2, $r4
2252 ; CHECK: renamable $vpr = MVE_VCTP8 renamable $r2, 0, $noreg
2253 ; CHECK: MVE_VPST 8, implicit $vpr
2254 ; CHECK: renamable $r0, renamable $q1 = MVE_VLDRBU8_post killed renamable $r0, 16, 1, killed renamable $vpr :: (load (s128) from %ir.lsr.iv17, align 1)
2255 ; CHECK: renamable $q1 = MVE_VEOR killed renamable $q1, renamable $q0, 0, $noreg, undef renamable $q1
2256 ; CHECK: $lr = tMOVr $r4, 14 /* CC::al */, $noreg
2257 ; CHECK: renamable $r12 = MVE_VADDVu8no_acc killed renamable $q1, 0, $noreg
2258 ; CHECK: renamable $r4, dead $cpsr = nsw tSUBi8 killed $r4, 1, 14 /* CC::al */, $noreg
2259 ; CHECK: renamable $r3 = t2SXTB killed renamable $r12, 0, 14 /* CC::al */, $noreg
2260 ; CHECK: renamable $r2, dead $cpsr = tSUBi8 killed renamable $r2, 16, 14 /* CC::al */, $noreg
2261 ; CHECK: early-clobber renamable $r1 = t2STR_POST killed renamable $r3, killed renamable $r1, 4, 14 /* CC::al */, $noreg :: (store (s32) into %ir.store.addr)
2262 ; CHECK: dead $lr = t2LEUpdate killed renamable $lr, %bb.2
2264 ; CHECK: tPOP_RET 14 /* CC::al */, $noreg, def $r4, def $pc
2266 successors: %bb.1(0x80000000)
2267 liveins: $r0, $r1, $r2, $r4, $lr
2269 frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r4, killed $lr, implicit-def $sp, implicit $sp
2270 frame-setup CFI_INSTRUCTION def_cfa_offset 8
2271 frame-setup CFI_INSTRUCTION offset $lr, -4
2272 frame-setup CFI_INSTRUCTION offset $r4, -8
2273 tCMPi8 renamable $r2, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr
2274 t2IT 0, 8, implicit-def $itstate
2275 tPOP_RET 0 /* CC::eq */, killed $cpsr, def $r4, def $pc, implicit killed $itstate
2278 successors: %bb.2(0x80000000)
2279 liveins: $r0, $r1, $r2, $r4, $lr
2281 renamable $r3, dead $cpsr = tADDi3 renamable $r2, 7, 14 /* CC::al */, $noreg
2282 renamable $r3 = t2BICri killed renamable $r3, 7, 14 /* CC::al */, $noreg, $noreg
2283 renamable $r12 = t2SUBri killed renamable $r3, 7, 14 /* CC::al */, $noreg, $noreg
2284 renamable $r3, dead $cpsr = tMOVi8 1, 14 /* CC::al */, $noreg
2285 renamable $r12 = nuw nsw t2ADDrs killed renamable $r3, killed renamable $r12, 27, 14 /* CC::al */, $noreg, $noreg
2286 renamable $r3 = tADDrSPi $sp, 2, 14 /* CC::al */, $noreg
2287 renamable $q0 = MVE_VLDRWU32 killed renamable $r3, 0, 0, $noreg :: (load (s128) from %fixed-stack.0, align 8)
2288 $lr = t2DoLoopStart renamable $r12
2289 $r4 = tMOVr killed $r12, 14 /* CC::al */, $noreg
2292 successors: %bb.2(0x7c000000), %bb.3(0x04000000)
2293 liveins: $q0, $r0, $r1, $r2, $r4
2295 renamable $vpr = MVE_VCTP8 renamable $r2, 0, $noreg
2296 MVE_VPST 8, implicit $vpr
2297 renamable $r0, renamable $q1 = MVE_VLDRBU8_post killed renamable $r0, 16, 1, killed renamable $vpr :: (load (s128) from %ir.lsr.iv17, align 1)
2298 renamable $q1 = MVE_VEOR killed renamable $q1, renamable $q0, 0, $noreg, undef renamable $q1
2299 $lr = tMOVr $r4, 14 /* CC::al */, $noreg
2300 renamable $r12 = MVE_VADDVu8no_acc killed renamable $q1, 0, $noreg
2301 renamable $r4, dead $cpsr = nsw tSUBi8 killed $r4, 1, 14 /* CC::al */, $noreg
2302 renamable $r3 = t2SXTB killed renamable $r12, 0, 14 /* CC::al */, $noreg
2303 renamable $r2, dead $cpsr = tSUBi8 killed renamable $r2, 16, 14 /* CC::al */, $noreg
2304 early-clobber renamable $r1 = t2STR_POST killed renamable $r3, killed renamable $r1, 4, 14 /* CC::al */, $noreg :: (store (s32) into %ir.store.addr)
2305 renamable $lr = t2LoopDec killed renamable $lr, 1
2306 t2LoopEnd killed renamable $lr, %bb.2, implicit-def dead $cpsr
2307 tB %bb.3, 14 /* CC::al */, $noreg
2310 tPOP_RET 14 /* CC::al */, $noreg, def $r4, def $pc
2314 name: illegal_vaddva_s8
2316 tracksRegLiveness: true
2319 - { reg: '$r0', virtual-reg: '' }
2320 - { reg: '$r1', virtual-reg: '' }
2321 - { reg: '$r2', virtual-reg: '' }
2322 - { reg: '$r3', virtual-reg: '' }
2329 cvBytesOfCalleeSavedRegisters: 0
2334 - { id: 0, type: default, offset: 0, size: 8, alignment: 8, stack-id: default,
2335 isImmutable: true, isAliased: false, callee-saved-register: '', callee-saved-restored: true,
2336 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
2338 - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4,
2339 stack-id: default, callee-saved-register: '$lr', callee-saved-restored: false,
2340 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
2341 - { id: 1, name: '', type: spill-slot, offset: -8, size: 4, alignment: 4,
2342 stack-id: default, callee-saved-register: '$r4', callee-saved-restored: true,
2343 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
2346 machineFunctionInfo: {}
2348 ; CHECK-LABEL: name: illegal_vaddva_s8
2349 ; CHECK: bb.0.entry:
2350 ; CHECK: successors: %bb.4(0x30000000), %bb.1(0x50000000)
2351 ; CHECK: liveins: $lr, $r0, $r1, $r2, $r3, $r4
2352 ; CHECK: frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r4, killed $lr, implicit-def $sp, implicit $sp
2353 ; CHECK: frame-setup CFI_INSTRUCTION def_cfa_offset 8
2354 ; CHECK: frame-setup CFI_INSTRUCTION offset $lr, -4
2355 ; CHECK: frame-setup CFI_INSTRUCTION offset $r4, -8
2356 ; CHECK: tCBZ $r1, %bb.4
2357 ; CHECK: bb.1.vector.ph:
2358 ; CHECK: successors: %bb.2(0x80000000)
2359 ; CHECK: liveins: $r0, $r1, $r2, $r3
2360 ; CHECK: renamable $d0 = VMOVDRR killed renamable $r2, killed renamable $r3, 14 /* CC::al */, $noreg, implicit-def $q0
2361 ; CHECK: renamable $r2, dead $cpsr = tADDi3 renamable $r1, 7, 14 /* CC::al */, $noreg
2362 ; CHECK: renamable $r2 = t2BICri killed renamable $r2, 7, 14 /* CC::al */, $noreg, $noreg
2363 ; CHECK: renamable $r3, dead $cpsr = tMOVi8 1, 14 /* CC::al */, $noreg
2364 ; CHECK: renamable $r2, dead $cpsr = tSUBi8 killed renamable $r2, 7, 14 /* CC::al */, $noreg
2365 ; CHECK: renamable $d1 = VLDRD $sp, 2, 14 /* CC::al */, $noreg, implicit killed $q0, implicit-def $q0 :: (load (s64) from %fixed-stack.0)
2366 ; CHECK: renamable $r2 = nuw nsw t2ADDrs killed renamable $r3, killed renamable $r2, 27, 14 /* CC::al */, $noreg, $noreg
2367 ; CHECK: renamable $r3, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg
2368 ; CHECK: dead $lr = t2DLS renamable $r2
2369 ; CHECK: $r4 = tMOVr killed $r2, 14 /* CC::al */, $noreg
2370 ; CHECK: bb.2.vector.body:
2371 ; CHECK: successors: %bb.2(0x7c000000), %bb.3(0x04000000)
2372 ; CHECK: liveins: $q0, $r0, $r1, $r3, $r4
2373 ; CHECK: renamable $vpr = MVE_VCTP8 renamable $r1, 0, $noreg
2374 ; CHECK: MVE_VPST 8, implicit $vpr
2375 ; CHECK: renamable $r0, renamable $q1 = MVE_VLDRBU8_post killed renamable $r0, 16, 1, killed renamable $vpr :: (load (s128) from %ir.lsr.iv17, align 1)
2376 ; CHECK: renamable $q1 = MVE_VEOR killed renamable $q1, renamable $q0, 0, $noreg, undef renamable $q1
2377 ; CHECK: $lr = tMOVr $r4, 14 /* CC::al */, $noreg
2378 ; CHECK: renamable $r2 = MVE_VADDVu8no_acc killed renamable $q1, 0, $noreg
2379 ; CHECK: renamable $r4, dead $cpsr = nsw tSUBi8 killed $r4, 1, 14 /* CC::al */, $noreg
2380 ; CHECK: renamable $r3 = t2SXTAB killed renamable $r3, killed renamable $r2, 0, 14 /* CC::al */, $noreg
2381 ; CHECK: renamable $r1, dead $cpsr = tSUBi8 killed renamable $r1, 16, 14 /* CC::al */, $noreg
2382 ; CHECK: dead $lr = t2LEUpdate killed renamable $lr, %bb.2
2384 ; CHECK: liveins: $r3
2385 ; CHECK: $r0 = tMOVr killed $r3, 14 /* CC::al */, $noreg
2386 ; CHECK: tPOP_RET 14 /* CC::al */, $noreg, def $r4, def $pc, implicit killed $r0
2388 ; CHECK: renamable $r3, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg
2389 ; CHECK: $r0 = tMOVr killed $r3, 14 /* CC::al */, $noreg
2390 ; CHECK: tPOP_RET 14 /* CC::al */, $noreg, def $r4, def $pc, implicit killed $r0
2392 successors: %bb.4(0x30000000), %bb.1(0x50000000)
2393 liveins: $r0, $r1, $r2, $r3, $r4, $lr
2395 frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r4, killed $lr, implicit-def $sp, implicit $sp
2396 frame-setup CFI_INSTRUCTION def_cfa_offset 8
2397 frame-setup CFI_INSTRUCTION offset $lr, -4
2398 frame-setup CFI_INSTRUCTION offset $r4, -8
2402 successors: %bb.2(0x80000000)
2403 liveins: $r0, $r1, $r2, $r3
2405 renamable $d0 = VMOVDRR killed renamable $r2, killed renamable $r3, 14 /* CC::al */, $noreg, implicit-def $q0
2406 renamable $r2, dead $cpsr = tADDi3 renamable $r1, 7, 14 /* CC::al */, $noreg
2407 renamable $r2 = t2BICri killed renamable $r2, 7, 14 /* CC::al */, $noreg, $noreg
2408 renamable $r3, dead $cpsr = tMOVi8 1, 14 /* CC::al */, $noreg
2409 renamable $r2, dead $cpsr = tSUBi8 killed renamable $r2, 7, 14 /* CC::al */, $noreg
2410 renamable $d1 = VLDRD $sp, 2, 14 /* CC::al */, $noreg, implicit killed $q0, implicit-def $q0 :: (load (s64) from %fixed-stack.0)
2411 renamable $r2 = nuw nsw t2ADDrs killed renamable $r3, killed renamable $r2, 27, 14 /* CC::al */, $noreg, $noreg
2412 renamable $r3, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg
2413 $lr = t2DoLoopStart renamable $r2
2414 $r4 = tMOVr killed $r2, 14 /* CC::al */, $noreg
2417 successors: %bb.2(0x7c000000), %bb.3(0x04000000)
2418 liveins: $q0, $r0, $r1, $r3, $r4
2420 renamable $vpr = MVE_VCTP8 renamable $r1, 0, $noreg
2421 MVE_VPST 8, implicit $vpr
2422 renamable $r0, renamable $q1 = MVE_VLDRBU8_post killed renamable $r0, 16, 1, killed renamable $vpr :: (load (s128) from %ir.lsr.iv17, align 1)
2423 renamable $q1 = MVE_VEOR killed renamable $q1, renamable $q0, 0, $noreg, undef renamable $q1
2424 $lr = tMOVr $r4, 14 /* CC::al */, $noreg
2425 renamable $r2 = MVE_VADDVu8no_acc killed renamable $q1, 0, $noreg
2426 renamable $r4, dead $cpsr = nsw tSUBi8 killed $r4, 1, 14 /* CC::al */, $noreg
2427 renamable $r3 = t2SXTAB killed renamable $r3, killed renamable $r2, 0, 14 /* CC::al */, $noreg
2428 renamable $r1, dead $cpsr = tSUBi8 killed renamable $r1, 16, 14 /* CC::al */, $noreg
2429 renamable $lr = t2LoopDec killed renamable $lr, 1
2430 t2LoopEnd killed renamable $lr, %bb.2, implicit-def dead $cpsr
2431 tB %bb.3, 14 /* CC::al */, $noreg
2436 $r0 = tMOVr killed $r3, 14 /* CC::al */, $noreg
2437 tPOP_RET 14 /* CC::al */, $noreg, def $r4, def $pc, implicit killed $r0
2440 renamable $r3, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg
2441 $r0 = tMOVr killed $r3, 14 /* CC::al */, $noreg
2442 tPOP_RET 14 /* CC::al */, $noreg, def $r4, def $pc, implicit killed $r0
2446 name: illegal_vaddv_u8
2448 tracksRegLiveness: true
2451 - { reg: '$r0', virtual-reg: '' }
2452 - { reg: '$r1', virtual-reg: '' }
2453 - { reg: '$r2', virtual-reg: '' }
2460 cvBytesOfCalleeSavedRegisters: 0
2465 - { id: 0, type: default, offset: 0, size: 16, alignment: 8, stack-id: default,
2466 isImmutable: true, isAliased: false, callee-saved-register: '', callee-saved-restored: true,
2467 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
2469 - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4,
2470 stack-id: default, callee-saved-register: '$lr', callee-saved-restored: false,
2471 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
2472 - { id: 1, name: '', type: spill-slot, offset: -8, size: 4, alignment: 4,
2473 stack-id: default, callee-saved-register: '$r4', callee-saved-restored: true,
2474 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
2477 machineFunctionInfo: {}
2479 ; CHECK-LABEL: name: illegal_vaddv_u8
2480 ; CHECK: bb.0.entry:
2481 ; CHECK: successors: %bb.1(0x80000000)
2482 ; CHECK: liveins: $lr, $r0, $r1, $r2, $r4
2483 ; CHECK: frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r4, killed $lr, implicit-def $sp, implicit $sp
2484 ; CHECK: frame-setup CFI_INSTRUCTION def_cfa_offset 8
2485 ; CHECK: frame-setup CFI_INSTRUCTION offset $lr, -4
2486 ; CHECK: frame-setup CFI_INSTRUCTION offset $r4, -8
2487 ; CHECK: tCMPi8 renamable $r2, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr
2488 ; CHECK: t2IT 0, 8, implicit-def $itstate
2489 ; CHECK: tPOP_RET 0 /* CC::eq */, killed $cpsr, def $r4, def $pc, implicit killed $itstate
2490 ; CHECK: bb.1.vector.ph:
2491 ; CHECK: successors: %bb.2(0x80000000)
2492 ; CHECK: liveins: $r0, $r1, $r2
2493 ; CHECK: renamable $r3, dead $cpsr = tADDi3 renamable $r2, 7, 14 /* CC::al */, $noreg
2494 ; CHECK: renamable $r3 = t2BICri killed renamable $r3, 7, 14 /* CC::al */, $noreg, $noreg
2495 ; CHECK: renamable $r12 = t2SUBri killed renamable $r3, 7, 14 /* CC::al */, $noreg, $noreg
2496 ; CHECK: renamable $r3, dead $cpsr = tMOVi8 1, 14 /* CC::al */, $noreg
2497 ; CHECK: renamable $r12 = nuw nsw t2ADDrs killed renamable $r3, killed renamable $r12, 27, 14 /* CC::al */, $noreg, $noreg
2498 ; CHECK: renamable $r3 = tADDrSPi $sp, 2, 14 /* CC::al */, $noreg
2499 ; CHECK: renamable $q0 = MVE_VLDRWU32 killed renamable $r3, 0, 0, $noreg :: (load (s128) from %fixed-stack.0, align 8)
2500 ; CHECK: dead $lr = t2DLS renamable $r12
2501 ; CHECK: $r4 = tMOVr killed $r12, 14 /* CC::al */, $noreg
2502 ; CHECK: bb.2.vector.body:
2503 ; CHECK: successors: %bb.2(0x7c000000), %bb.3(0x04000000)
2504 ; CHECK: liveins: $q0, $r0, $r1, $r2, $r4
2505 ; CHECK: renamable $vpr = MVE_VCTP8 renamable $r2, 0, $noreg
2506 ; CHECK: MVE_VPST 8, implicit $vpr
2507 ; CHECK: renamable $r0, renamable $q1 = MVE_VLDRBU8_post killed renamable $r0, 16, 1, killed renamable $vpr :: (load (s128) from %ir.lsr.iv17, align 1)
2508 ; CHECK: renamable $q1 = MVE_VEOR killed renamable $q1, renamable $q0, 0, $noreg, undef renamable $q1
2509 ; CHECK: $lr = tMOVr $r4, 14 /* CC::al */, $noreg
2510 ; CHECK: renamable $r12 = MVE_VADDVu8no_acc killed renamable $q1, 0, $noreg
2511 ; CHECK: renamable $r4, dead $cpsr = nsw tSUBi8 killed $r4, 1, 14 /* CC::al */, $noreg
2512 ; CHECK: renamable $r3 = t2UXTB killed renamable $r12, 0, 14 /* CC::al */, $noreg
2513 ; CHECK: renamable $r2, dead $cpsr = tSUBi8 killed renamable $r2, 16, 14 /* CC::al */, $noreg
2514 ; CHECK: early-clobber renamable $r1 = t2STR_POST killed renamable $r3, killed renamable $r1, 4, 14 /* CC::al */, $noreg :: (store (s32) into %ir.store.addr)
2515 ; CHECK: dead $lr = t2LEUpdate killed renamable $lr, %bb.2
2517 ; CHECK: tPOP_RET 14 /* CC::al */, $noreg, def $r4, def $pc
2519 successors: %bb.1(0x80000000)
2520 liveins: $r0, $r1, $r2, $r4, $lr
2522 frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r4, killed $lr, implicit-def $sp, implicit $sp
2523 frame-setup CFI_INSTRUCTION def_cfa_offset 8
2524 frame-setup CFI_INSTRUCTION offset $lr, -4
2525 frame-setup CFI_INSTRUCTION offset $r4, -8
2526 tCMPi8 renamable $r2, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr
2527 t2IT 0, 8, implicit-def $itstate
2528 tPOP_RET 0 /* CC::eq */, killed $cpsr, def $r4, def $pc, implicit killed $itstate
2531 successors: %bb.2(0x80000000)
2532 liveins: $r0, $r1, $r2, $r4, $lr
2534 renamable $r3, dead $cpsr = tADDi3 renamable $r2, 7, 14 /* CC::al */, $noreg
2535 renamable $r3 = t2BICri killed renamable $r3, 7, 14 /* CC::al */, $noreg, $noreg
2536 renamable $r12 = t2SUBri killed renamable $r3, 7, 14 /* CC::al */, $noreg, $noreg
2537 renamable $r3, dead $cpsr = tMOVi8 1, 14 /* CC::al */, $noreg
2538 renamable $r12 = nuw nsw t2ADDrs killed renamable $r3, killed renamable $r12, 27, 14 /* CC::al */, $noreg, $noreg
2539 renamable $r3 = tADDrSPi $sp, 2, 14 /* CC::al */, $noreg
2540 renamable $q0 = MVE_VLDRWU32 killed renamable $r3, 0, 0, $noreg :: (load (s128) from %fixed-stack.0, align 8)
2541 $lr = t2DoLoopStart renamable $r12
2542 $r4 = tMOVr killed $r12, 14 /* CC::al */, $noreg
2545 successors: %bb.2(0x7c000000), %bb.3(0x04000000)
2546 liveins: $q0, $r0, $r1, $r2, $r4
2548 renamable $vpr = MVE_VCTP8 renamable $r2, 0, $noreg
2549 MVE_VPST 8, implicit $vpr
2550 renamable $r0, renamable $q1 = MVE_VLDRBU8_post killed renamable $r0, 16, 1, killed renamable $vpr :: (load (s128) from %ir.lsr.iv17, align 1)
2551 renamable $q1 = MVE_VEOR killed renamable $q1, renamable $q0, 0, $noreg, undef renamable $q1
2552 $lr = tMOVr $r4, 14 /* CC::al */, $noreg
2553 renamable $r12 = MVE_VADDVu8no_acc killed renamable $q1, 0, $noreg
2554 renamable $r4, dead $cpsr = nsw tSUBi8 killed $r4, 1, 14 /* CC::al */, $noreg
2555 renamable $r3 = t2UXTB killed renamable $r12, 0, 14 /* CC::al */, $noreg
2556 renamable $r2, dead $cpsr = tSUBi8 killed renamable $r2, 16, 14 /* CC::al */, $noreg
2557 early-clobber renamable $r1 = t2STR_POST killed renamable $r3, killed renamable $r1, 4, 14 /* CC::al */, $noreg :: (store (s32) into %ir.store.addr)
2558 renamable $lr = t2LoopDec killed renamable $lr, 1
2559 t2LoopEnd killed renamable $lr, %bb.2, implicit-def dead $cpsr
2560 tB %bb.3, 14 /* CC::al */, $noreg
2563 tPOP_RET 14 /* CC::al */, $noreg, def $r4, def $pc
2567 name: illegal_vaddva_u8
2569 tracksRegLiveness: true
2572 - { reg: '$r0', virtual-reg: '' }
2573 - { reg: '$r1', virtual-reg: '' }
2574 - { reg: '$r2', virtual-reg: '' }
2575 - { reg: '$r3', virtual-reg: '' }
2582 cvBytesOfCalleeSavedRegisters: 0
2587 - { id: 0, type: default, offset: 0, size: 8, alignment: 8, stack-id: default,
2588 isImmutable: true, isAliased: false, callee-saved-register: '', callee-saved-restored: true,
2589 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
2591 - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4,
2592 stack-id: default, callee-saved-register: '$lr', callee-saved-restored: false,
2593 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
2594 - { id: 1, name: '', type: spill-slot, offset: -8, size: 4, alignment: 4,
2595 stack-id: default, callee-saved-register: '$r4', callee-saved-restored: true,
2596 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
2599 machineFunctionInfo: {}
2601 ; CHECK-LABEL: name: illegal_vaddva_u8
2602 ; CHECK: bb.0.entry:
2603 ; CHECK: successors: %bb.4(0x30000000), %bb.1(0x50000000)
2604 ; CHECK: liveins: $lr, $r0, $r1, $r2, $r3, $r4
2605 ; CHECK: frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r4, killed $lr, implicit-def $sp, implicit $sp
2606 ; CHECK: frame-setup CFI_INSTRUCTION def_cfa_offset 8
2607 ; CHECK: frame-setup CFI_INSTRUCTION offset $lr, -4
2608 ; CHECK: frame-setup CFI_INSTRUCTION offset $r4, -8
2609 ; CHECK: tCBZ $r1, %bb.4
2610 ; CHECK: bb.1.vector.ph:
2611 ; CHECK: successors: %bb.2(0x80000000)
2612 ; CHECK: liveins: $r0, $r1, $r2, $r3
2613 ; CHECK: renamable $d0 = VMOVDRR killed renamable $r2, killed renamable $r3, 14 /* CC::al */, $noreg, implicit-def $q0
2614 ; CHECK: renamable $r2, dead $cpsr = tADDi3 renamable $r1, 7, 14 /* CC::al */, $noreg
2615 ; CHECK: renamable $r2 = t2BICri killed renamable $r2, 7, 14 /* CC::al */, $noreg, $noreg
2616 ; CHECK: renamable $r3, dead $cpsr = tMOVi8 1, 14 /* CC::al */, $noreg
2617 ; CHECK: renamable $r2, dead $cpsr = tSUBi8 killed renamable $r2, 7, 14 /* CC::al */, $noreg
2618 ; CHECK: renamable $d1 = VLDRD $sp, 2, 14 /* CC::al */, $noreg, implicit killed $q0, implicit-def $q0 :: (load (s64) from %fixed-stack.0)
2619 ; CHECK: renamable $r2 = nuw nsw t2ADDrs killed renamable $r3, killed renamable $r2, 27, 14 /* CC::al */, $noreg, $noreg
2620 ; CHECK: renamable $r3, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg
2621 ; CHECK: dead $lr = t2DLS renamable $r2
2622 ; CHECK: $r4 = tMOVr killed $r2, 14 /* CC::al */, $noreg
2623 ; CHECK: bb.2.vector.body:
2624 ; CHECK: successors: %bb.2(0x7c000000), %bb.3(0x04000000)
2625 ; CHECK: liveins: $q0, $r0, $r1, $r3, $r4
2626 ; CHECK: renamable $vpr = MVE_VCTP8 renamable $r1, 0, $noreg
2627 ; CHECK: MVE_VPST 8, implicit $vpr
2628 ; CHECK: renamable $r0, renamable $q1 = MVE_VLDRBU8_post killed renamable $r0, 16, 1, killed renamable $vpr :: (load (s128) from %ir.lsr.iv17, align 1)
2629 ; CHECK: renamable $q1 = MVE_VEOR killed renamable $q1, renamable $q0, 0, $noreg, undef renamable $q1
2630 ; CHECK: $lr = tMOVr $r4, 14 /* CC::al */, $noreg
2631 ; CHECK: renamable $r2 = MVE_VADDVu8no_acc killed renamable $q1, 0, $noreg
2632 ; CHECK: renamable $r4, dead $cpsr = nsw tSUBi8 killed $r4, 1, 14 /* CC::al */, $noreg
2633 ; CHECK: renamable $r3 = t2UXTAB killed renamable $r3, killed renamable $r2, 0, 14 /* CC::al */, $noreg
2634 ; CHECK: renamable $r1, dead $cpsr = tSUBi8 killed renamable $r1, 16, 14 /* CC::al */, $noreg
2635 ; CHECK: dead $lr = t2LEUpdate killed renamable $lr, %bb.2
2637 ; CHECK: liveins: $r3
2638 ; CHECK: $r0 = tMOVr killed $r3, 14 /* CC::al */, $noreg
2639 ; CHECK: tPOP_RET 14 /* CC::al */, $noreg, def $r4, def $pc, implicit killed $r0
2641 ; CHECK: renamable $r3, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg
2642 ; CHECK: $r0 = tMOVr killed $r3, 14 /* CC::al */, $noreg
2643 ; CHECK: tPOP_RET 14 /* CC::al */, $noreg, def $r4, def $pc, implicit killed $r0
2645 successors: %bb.4(0x30000000), %bb.1(0x50000000)
2646 liveins: $r0, $r1, $r2, $r3, $r4, $lr
2648 frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r4, killed $lr, implicit-def $sp, implicit $sp
2649 frame-setup CFI_INSTRUCTION def_cfa_offset 8
2650 frame-setup CFI_INSTRUCTION offset $lr, -4
2651 frame-setup CFI_INSTRUCTION offset $r4, -8
2655 successors: %bb.2(0x80000000)
2656 liveins: $r0, $r1, $r2, $r3
2658 renamable $d0 = VMOVDRR killed renamable $r2, killed renamable $r3, 14 /* CC::al */, $noreg, implicit-def $q0
2659 renamable $r2, dead $cpsr = tADDi3 renamable $r1, 7, 14 /* CC::al */, $noreg
2660 renamable $r2 = t2BICri killed renamable $r2, 7, 14 /* CC::al */, $noreg, $noreg
2661 renamable $r3, dead $cpsr = tMOVi8 1, 14 /* CC::al */, $noreg
2662 renamable $r2, dead $cpsr = tSUBi8 killed renamable $r2, 7, 14 /* CC::al */, $noreg
2663 renamable $d1 = VLDRD $sp, 2, 14 /* CC::al */, $noreg, implicit killed $q0, implicit-def $q0 :: (load (s64) from %fixed-stack.0)
2664 renamable $r2 = nuw nsw t2ADDrs killed renamable $r3, killed renamable $r2, 27, 14 /* CC::al */, $noreg, $noreg
2665 renamable $r3, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg
2666 $lr = t2DoLoopStart renamable $r2
2667 $r4 = tMOVr killed $r2, 14 /* CC::al */, $noreg
2670 successors: %bb.2(0x7c000000), %bb.3(0x04000000)
2671 liveins: $q0, $r0, $r1, $r3, $r4
2673 renamable $vpr = MVE_VCTP8 renamable $r1, 0, $noreg
2674 MVE_VPST 8, implicit $vpr
2675 renamable $r0, renamable $q1 = MVE_VLDRBU8_post killed renamable $r0, 16, 1, killed renamable $vpr :: (load (s128) from %ir.lsr.iv17, align 1)
2676 renamable $q1 = MVE_VEOR killed renamable $q1, renamable $q0, 0, $noreg, undef renamable $q1
2677 $lr = tMOVr $r4, 14 /* CC::al */, $noreg
2678 renamable $r2 = MVE_VADDVu8no_acc killed renamable $q1, 0, $noreg
2679 renamable $r4, dead $cpsr = nsw tSUBi8 killed $r4, 1, 14 /* CC::al */, $noreg
2680 renamable $r3 = t2UXTAB killed renamable $r3, killed renamable $r2, 0, 14 /* CC::al */, $noreg
2681 renamable $r1, dead $cpsr = tSUBi8 killed renamable $r1, 16, 14 /* CC::al */, $noreg
2682 renamable $lr = t2LoopDec killed renamable $lr, 1
2683 t2LoopEnd killed renamable $lr, %bb.2, implicit-def dead $cpsr
2684 tB %bb.3, 14 /* CC::al */, $noreg
2689 $r0 = tMOVr killed $r3, 14 /* CC::al */, $noreg
2690 tPOP_RET 14 /* CC::al */, $noreg, def $r4, def $pc, implicit killed $r0
2693 renamable $r3, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg
2694 $r0 = tMOVr killed $r3, 14 /* CC::al */, $noreg
2695 tPOP_RET 14 /* CC::al */, $noreg, def $r4, def $pc, implicit killed $r0
2699 name: regalloc_legality_vaddva_u32
2701 tracksRegLiveness: true
2704 - { reg: '$r0', virtual-reg: '' }
2705 - { reg: '$r1', virtual-reg: '' }
2706 - { reg: '$r2', virtual-reg: '' }
2713 cvBytesOfCalleeSavedRegisters: 0
2719 - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4,
2720 stack-id: default, callee-saved-register: '$lr', callee-saved-restored: false,
2721 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
2722 - { id: 1, name: '', type: spill-slot, offset: -8, size: 4, alignment: 4,
2723 stack-id: default, callee-saved-register: '$r7', callee-saved-restored: true,
2724 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
2727 machineFunctionInfo: {}
2729 ; CHECK-LABEL: name: regalloc_legality_vaddva_u32
2730 ; CHECK: bb.0.entry:
2731 ; CHECK: successors: %bb.1(0x50000000), %bb.4(0x30000000)
2732 ; CHECK: liveins: $lr, $r0, $r1, $r2, $r7
2733 ; CHECK: frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r7, killed $lr, implicit-def $sp, implicit $sp
2734 ; CHECK: frame-setup CFI_INSTRUCTION def_cfa_offset 8
2735 ; CHECK: frame-setup CFI_INSTRUCTION offset $lr, -4
2736 ; CHECK: frame-setup CFI_INSTRUCTION offset $r7, -8
2737 ; CHECK: tCMPi8 renamable $r2, 1, 14 /* CC::al */, $noreg, implicit-def $cpsr
2738 ; CHECK: tBcc %bb.4, 11 /* CC::lt */, killed $cpsr
2739 ; CHECK: bb.1.while.body.preheader:
2740 ; CHECK: successors: %bb.2(0x80000000)
2741 ; CHECK: liveins: $r0, $r1, $r2
2742 ; CHECK: renamable $r12 = t2MOVi 0, 14 /* CC::al */, $noreg, $noreg
2743 ; CHECK: $lr = MVE_DLSTP_32 killed renamable $r2
2744 ; CHECK: bb.2.while.body:
2745 ; CHECK: successors: %bb.2(0x7c000000), %bb.3(0x04000000)
2746 ; CHECK: liveins: $lr, $r0, $r1, $r12
2747 ; CHECK: renamable $r1, renamable $q0 = MVE_VLDRHU32_post killed renamable $r1, 8, 0, $noreg :: (load (s64) from %ir.tmp3, align 2)
2748 ; CHECK: renamable $r0, renamable $q1 = MVE_VLDRHU32_post killed renamable $r0, 8, 0, killed $noreg :: (load (s64) from %ir.tmp1, align 2)
2749 ; CHECK: renamable $q0 = MVE_VORR killed renamable $q1, killed renamable $q0, 0, $noreg, undef renamable $q0
2750 ; CHECK: renamable $r12 = MVE_VADDVu32acc killed renamable $r12, killed renamable $q0, 0, $noreg
2751 ; CHECK: $lr = MVE_LETP killed renamable $lr, %bb.2
2752 ; CHECK: bb.3.while.end:
2753 ; CHECK: liveins: $r12
2754 ; CHECK: $r0 = tMOVr killed $r12, 14 /* CC::al */, $noreg
2755 ; CHECK: tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc, implicit killed $r0
2757 ; CHECK: renamable $r12 = t2MOVi 0, 14 /* CC::al */, $noreg, $noreg
2758 ; CHECK: $r0 = tMOVr killed $r12, 14 /* CC::al */, $noreg
2759 ; CHECK: tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc, implicit killed $r0
2761 successors: %bb.1(0x50000000), %bb.4(0x30000000)
2762 liveins: $r0, $r1, $r2, $r7, $lr
2764 frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r7, killed $lr, implicit-def $sp, implicit $sp
2765 frame-setup CFI_INSTRUCTION def_cfa_offset 8
2766 frame-setup CFI_INSTRUCTION offset $lr, -4
2767 frame-setup CFI_INSTRUCTION offset $r7, -8
2768 tCMPi8 renamable $r2, 4, 14 /* CC::al */, $noreg, implicit-def $cpsr
2769 $r3 = tMOVr $r2, 14 /* CC::al */, $noreg
2770 t2IT 10, 8, implicit-def $itstate
2771 renamable $r3 = tMOVi8 $noreg, 4, 10 /* CC::ge */, killed $cpsr, implicit killed renamable $r3, implicit killed $itstate
2772 tCMPi8 renamable $r2, 1, 14 /* CC::al */, $noreg, implicit-def $cpsr
2773 tBcc %bb.4, 11 /* CC::lt */, killed $cpsr
2775 bb.1.while.body.preheader:
2776 successors: %bb.2(0x80000000)
2777 liveins: $r0, $r1, $r2, $r3
2779 renamable $r3, dead $cpsr = tSUBrr renamable $r2, killed renamable $r3, 14 /* CC::al */, $noreg
2780 renamable $r12 = t2ADDri killed renamable $r3, 3, 14 /* CC::al */, $noreg, $noreg
2781 renamable $r3, dead $cpsr = tMOVi8 1, 14 /* CC::al */, $noreg
2782 renamable $lr = nuw nsw t2ADDrs killed renamable $r3, killed renamable $r12, 19, 14 /* CC::al */, $noreg, $noreg
2783 renamable $r12 = t2MOVi 0, 14 /* CC::al */, $noreg, $noreg
2784 $lr = t2DoLoopStart renamable $lr
2787 successors: %bb.2(0x7c000000), %bb.3(0x04000000)
2788 liveins: $lr, $r0, $r1, $r2, $r12
2790 renamable $vpr = MVE_VCTP32 renamable $r2, 0, $noreg
2791 MVE_VPST 4, implicit $vpr
2792 renamable $r1, renamable $q0 = MVE_VLDRHU32_post killed renamable $r1, 8, 1, renamable $vpr :: (load (s64) from %ir.tmp3, align 2)
2793 renamable $r0, renamable $q1 = MVE_VLDRHU32_post killed renamable $r0, 8, 1, killed renamable $vpr :: (load (s64) from %ir.tmp1, align 2)
2794 renamable $q0 = MVE_VORR killed renamable $q1, killed renamable $q0, 0, $noreg, undef renamable $q0
2795 renamable $r2, dead $cpsr = nsw tSUBi8 killed renamable $r2, 4, 14 /* CC::al */, $noreg
2796 renamable $r12 = MVE_VADDVu32acc killed renamable $r12, killed renamable $q0, 0, $noreg
2797 renamable $lr = t2LoopDec killed renamable $lr, 1
2798 t2LoopEnd renamable $lr, %bb.2, implicit-def dead $cpsr
2799 tB %bb.3, 14 /* CC::al */, $noreg
2804 $r0 = tMOVr killed $r12, 14 /* CC::al */, $noreg
2805 tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc, implicit killed $r0
2808 renamable $r12 = t2MOVi 0, 14 /* CC::al */, $noreg, $noreg
2809 $r0 = tMOVr killed $r12, 14 /* CC::al */, $noreg
2810 tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc, implicit killed $r0
2814 name: regalloc_legality_vaddv_u16
2816 tracksRegLiveness: true
2819 - { reg: '$r0', virtual-reg: '' }
2820 - { reg: '$r1', virtual-reg: '' }
2821 - { reg: '$r2', virtual-reg: '' }
2828 cvBytesOfCalleeSavedRegisters: 0
2834 - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4,
2835 stack-id: default, callee-saved-register: '$lr', callee-saved-restored: false,
2836 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
2837 - { id: 1, name: '', type: spill-slot, offset: -8, size: 4, alignment: 4,
2838 stack-id: default, callee-saved-register: '$r7', callee-saved-restored: true,
2839 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
2842 machineFunctionInfo: {}
2844 ; CHECK-LABEL: name: regalloc_legality_vaddv_u16
2845 ; CHECK: bb.0.entry:
2846 ; CHECK: successors: %bb.1(0x50000000), %bb.4(0x30000000)
2847 ; CHECK: liveins: $lr, $r0, $r1, $r2, $r7
2848 ; CHECK: frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r7, killed $lr, implicit-def $sp, implicit $sp
2849 ; CHECK: frame-setup CFI_INSTRUCTION def_cfa_offset 8
2850 ; CHECK: frame-setup CFI_INSTRUCTION offset $lr, -4
2851 ; CHECK: frame-setup CFI_INSTRUCTION offset $r7, -8
2852 ; CHECK: tCMPi8 renamable $r2, 1, 14 /* CC::al */, $noreg, implicit-def $cpsr
2853 ; CHECK: tBcc %bb.4, 11 /* CC::lt */, killed $cpsr
2854 ; CHECK: bb.1.while.body.preheader:
2855 ; CHECK: successors: %bb.2(0x80000000)
2856 ; CHECK: liveins: $r0, $r1, $r2
2857 ; CHECK: renamable $r3, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg
2858 ; CHECK: $lr = MVE_DLSTP_16 killed renamable $r2
2859 ; CHECK: bb.2.while.body:
2860 ; CHECK: successors: %bb.2(0x7c000000), %bb.3(0x04000000)
2861 ; CHECK: liveins: $lr, $r0, $r1, $r3
2862 ; CHECK: renamable $r1, renamable $q0 = MVE_VLDRHU16_post killed renamable $r1, 16, 0, $noreg :: (load (s128) from %ir.tmp3, align 2)
2863 ; CHECK: renamable $r0, renamable $q1 = MVE_VLDRHU16_post killed renamable $r0, 16, 0, killed $noreg :: (load (s128) from %ir.tmp1, align 2)
2864 ; CHECK: renamable $q0 = MVE_VORR killed renamable $q1, killed renamable $q0, 0, $noreg, undef renamable $q0
2865 ; CHECK: renamable $r12 = MVE_VADDVu16no_acc killed renamable $q0, 0, $noreg
2866 ; CHECK: renamable $r3 = t2UXTAH killed renamable $r3, killed renamable $r12, 0, 14 /* CC::al */, $noreg
2867 ; CHECK: $lr = MVE_LETP killed renamable $lr, %bb.2
2868 ; CHECK: bb.3.while.end:
2869 ; CHECK: liveins: $r3
2870 ; CHECK: $r0 = tMOVr killed $r3, 14 /* CC::al */, $noreg
2871 ; CHECK: tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc, implicit killed $r0
2873 ; CHECK: renamable $r3, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg
2874 ; CHECK: $r0 = tMOVr killed $r3, 14 /* CC::al */, $noreg
2875 ; CHECK: tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc, implicit killed $r0
2877 successors: %bb.1(0x50000000), %bb.4(0x30000000)
2878 liveins: $r0, $r1, $r2, $r7, $lr
2880 frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r7, killed $lr, implicit-def $sp, implicit $sp
2881 frame-setup CFI_INSTRUCTION def_cfa_offset 8
2882 frame-setup CFI_INSTRUCTION offset $lr, -4
2883 frame-setup CFI_INSTRUCTION offset $r7, -8
2884 tCMPi8 renamable $r2, 8, 14 /* CC::al */, $noreg, implicit-def $cpsr
2885 $r3 = tMOVr $r2, 14 /* CC::al */, $noreg
2886 t2IT 10, 8, implicit-def $itstate
2887 renamable $r3 = tMOVi8 $noreg, 8, 10 /* CC::ge */, killed $cpsr, implicit killed renamable $r3, implicit killed $itstate
2888 tCMPi8 renamable $r2, 1, 14 /* CC::al */, $noreg, implicit-def $cpsr
2889 tBcc %bb.4, 11 /* CC::lt */, killed $cpsr
2891 bb.1.while.body.preheader:
2892 successors: %bb.2(0x80000000)
2893 liveins: $r0, $r1, $r2, $r3
2895 renamable $r3, dead $cpsr = tSUBrr renamable $r2, killed renamable $r3, 14 /* CC::al */, $noreg
2896 renamable $r12 = t2ADDri killed renamable $r3, 7, 14 /* CC::al */, $noreg, $noreg
2897 renamable $r3, dead $cpsr = tMOVi8 1, 14 /* CC::al */, $noreg
2898 renamable $lr = nuw nsw t2ADDrs killed renamable $r3, killed renamable $r12, 27, 14 /* CC::al */, $noreg, $noreg
2899 renamable $r3, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg
2900 $lr = t2DoLoopStart renamable $lr
2903 successors: %bb.2(0x7c000000), %bb.3(0x04000000)
2904 liveins: $lr, $r0, $r1, $r2, $r3
2906 renamable $vpr = MVE_VCTP16 renamable $r2, 0, $noreg
2907 MVE_VPST 4, implicit $vpr
2908 renamable $r1, renamable $q0 = MVE_VLDRHU16_post killed renamable $r1, 16, 1, renamable $vpr :: (load (s128) from %ir.tmp3, align 2)
2909 renamable $r0, renamable $q1 = MVE_VLDRHU16_post killed renamable $r0, 16, 1, killed renamable $vpr :: (load (s128) from %ir.tmp1, align 2)
2910 renamable $q0 = MVE_VORR killed renamable $q1, killed renamable $q0, 0, $noreg, undef renamable $q0
2911 renamable $r2, dead $cpsr = nsw tSUBi8 killed renamable $r2, 8, 14 /* CC::al */, $noreg
2912 renamable $r12 = MVE_VADDVu16no_acc killed renamable $q0, 0, $noreg
2913 renamable $lr = t2LoopDec killed renamable $lr, 1
2914 renamable $r3 = t2UXTAH killed renamable $r3, killed renamable $r12, 0, 14 /* CC::al */, $noreg
2915 t2LoopEnd renamable $lr, %bb.2, implicit-def dead $cpsr
2916 tB %bb.3, 14 /* CC::al */, $noreg
2921 $r0 = tMOVr killed $r3, 14 /* CC::al */, $noreg
2922 tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc, implicit killed $r0
2925 renamable $r3, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg
2926 $r0 = tMOVr killed $r3, 14 /* CC::al */, $noreg
2927 tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc, implicit killed $r0
2931 name: regalloc_illegality_vaddva_s32
2933 tracksRegLiveness: true
2936 - { reg: '$r0', virtual-reg: '' }
2937 - { reg: '$r1', virtual-reg: '' }
2938 - { reg: '$r3', virtual-reg: '' }
2945 cvBytesOfCalleeSavedRegisters: 0
2951 - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4,
2952 stack-id: default, callee-saved-register: '$lr', callee-saved-restored: false,
2953 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
2954 - { id: 1, name: '', type: spill-slot, offset: -8, size: 4, alignment: 4,
2955 stack-id: default, callee-saved-register: '$r7', callee-saved-restored: true,
2956 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
2959 machineFunctionInfo: {}
2961 ; CHECK-LABEL: name: regalloc_illegality_vaddva_s32
2962 ; CHECK: bb.0.entry:
2963 ; CHECK: successors: %bb.1(0x50000000), %bb.4(0x30000000)
2964 ; CHECK: liveins: $lr, $r0, $r1, $r3, $r7
2965 ; CHECK: frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r7, killed $lr, implicit-def $sp, implicit $sp
2966 ; CHECK: frame-setup CFI_INSTRUCTION def_cfa_offset 8
2967 ; CHECK: frame-setup CFI_INSTRUCTION offset $lr, -4
2968 ; CHECK: frame-setup CFI_INSTRUCTION offset $r7, -8
2969 ; CHECK: tCMPi8 renamable $r3, 8, 14 /* CC::al */, $noreg, implicit-def $cpsr
2970 ; CHECK: $r2 = tMOVr $r3, 14 /* CC::al */, $noreg
2971 ; CHECK: t2IT 10, 8, implicit-def $itstate
2972 ; CHECK: renamable $r2 = tMOVi8 $noreg, 8, 10 /* CC::ge */, killed $cpsr, implicit killed renamable $r2, implicit killed $itstate
2973 ; CHECK: tCMPi8 renamable $r3, 1, 14 /* CC::al */, $noreg, implicit-def $cpsr
2974 ; CHECK: tBcc %bb.4, 11 /* CC::lt */, killed $cpsr
2975 ; CHECK: bb.1.while.body.preheader:
2976 ; CHECK: successors: %bb.2(0x80000000)
2977 ; CHECK: liveins: $r0, $r1, $r2, $r3
2978 ; CHECK: renamable $r2, dead $cpsr = tSUBrr renamable $r3, killed renamable $r2, 14 /* CC::al */, $noreg
2979 ; CHECK: renamable $r12 = t2ADDri killed renamable $r2, 7, 14 /* CC::al */, $noreg, $noreg
2980 ; CHECK: renamable $r2, dead $cpsr = tMOVi8 1, 14 /* CC::al */, $noreg
2981 ; CHECK: renamable $lr = nuw nsw t2ADDrs killed renamable $r2, killed renamable $r12, 27, 14 /* CC::al */, $noreg, $noreg
2982 ; CHECK: renamable $r2, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg
2983 ; CHECK: bb.2.while.body:
2984 ; CHECK: successors: %bb.2(0x7c000000), %bb.3(0x04000000)
2985 ; CHECK: liveins: $lr, $r0, $r1, $r2, $r3
2986 ; CHECK: renamable $vpr = MVE_VCTP16 renamable $r3, 0, $noreg
2987 ; CHECK: MVE_VPST 4, implicit $vpr
2988 ; CHECK: renamable $r1, renamable $q0 = MVE_VLDRHU16_post killed renamable $r1, 16, 1, renamable $vpr :: (load (s128) from %ir.tmp3, align 2)
2989 ; CHECK: renamable $r0, renamable $q1 = MVE_VLDRHU16_post killed renamable $r0, 16, 1, killed renamable $vpr :: (load (s128) from %ir.tmp1, align 2)
2990 ; CHECK: renamable $q2 = MVE_VMULLBs16 renamable $q1, renamable $q0, 0, $noreg, undef renamable $q2
2991 ; CHECK: renamable $q0 = MVE_VMULLTs16 killed renamable $q1, killed renamable $q0, 0, $noreg, undef renamable $q0
2992 ; CHECK: renamable $q0 = MVE_VADDi32 killed renamable $q0, killed renamable $q2, 0, $noreg, undef renamable $q0
2993 ; CHECK: renamable $r3, dead $cpsr = nsw tSUBi8 killed renamable $r3, 8, 14 /* CC::al */, $noreg
2994 ; CHECK: renamable $r2 = MVE_VADDVu32acc killed renamable $r2, killed renamable $q0, 0, $noreg
2995 ; CHECK: $lr = t2LEUpdate killed renamable $lr, %bb.2
2996 ; CHECK: bb.3.while.end:
2997 ; CHECK: liveins: $r2
2998 ; CHECK: $r0 = tMOVr killed $r2, 14 /* CC::al */, $noreg
2999 ; CHECK: tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc, implicit killed $r0
3001 ; CHECK: renamable $r2, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg
3002 ; CHECK: $r0 = tMOVr killed $r2, 14 /* CC::al */, $noreg
3003 ; CHECK: tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc, implicit killed $r0
3005 successors: %bb.1(0x50000000), %bb.4(0x30000000)
3006 liveins: $r0, $r1, $r3, $r7, $lr
3008 frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r7, killed $lr, implicit-def $sp, implicit $sp
3009 frame-setup CFI_INSTRUCTION def_cfa_offset 8
3010 frame-setup CFI_INSTRUCTION offset $lr, -4
3011 frame-setup CFI_INSTRUCTION offset $r7, -8
3012 tCMPi8 renamable $r3, 8, 14 /* CC::al */, $noreg, implicit-def $cpsr
3013 $r2 = tMOVr $r3, 14 /* CC::al */, $noreg
3014 t2IT 10, 8, implicit-def $itstate
3015 renamable $r2 = tMOVi8 $noreg, 8, 10 /* CC::ge */, killed $cpsr, implicit killed renamable $r2, implicit killed $itstate
3016 tCMPi8 renamable $r3, 1, 14 /* CC::al */, $noreg, implicit-def $cpsr
3017 tBcc %bb.4, 11 /* CC::lt */, killed $cpsr
3019 bb.1.while.body.preheader:
3020 successors: %bb.2(0x80000000)
3021 liveins: $r0, $r1, $r2, $r3
3023 renamable $r2, dead $cpsr = tSUBrr renamable $r3, killed renamable $r2, 14 /* CC::al */, $noreg
3024 renamable $r12 = t2ADDri killed renamable $r2, 7, 14 /* CC::al */, $noreg, $noreg
3025 renamable $r2, dead $cpsr = tMOVi8 1, 14 /* CC::al */, $noreg
3026 renamable $lr = nuw nsw t2ADDrs killed renamable $r2, killed renamable $r12, 27, 14 /* CC::al */, $noreg, $noreg
3027 renamable $r2, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg
3028 $lr = t2DoLoopStart renamable $lr
3031 successors: %bb.2(0x7c000000), %bb.3(0x04000000)
3032 liveins: $lr, $r0, $r1, $r2, $r3
3034 renamable $vpr = MVE_VCTP16 renamable $r3, 0, $noreg
3035 MVE_VPST 4, implicit $vpr
3036 renamable $r1, renamable $q0 = MVE_VLDRHU16_post killed renamable $r1, 16, 1, renamable $vpr :: (load (s128) from %ir.tmp3, align 2)
3037 renamable $r0, renamable $q1 = MVE_VLDRHU16_post killed renamable $r0, 16, 1, killed renamable $vpr :: (load (s128) from %ir.tmp1, align 2)
3038 renamable $q2 = MVE_VMULLBs16 renamable $q1, renamable $q0, 0, $noreg, undef renamable $q2
3039 renamable $q0 = MVE_VMULLTs16 killed renamable $q1, killed renamable $q0, 0, $noreg, undef renamable $q0
3040 renamable $q0 = MVE_VADDi32 killed renamable $q0, killed renamable $q2, 0, $noreg, undef renamable $q0
3041 renamable $r3, dead $cpsr = nsw tSUBi8 killed renamable $r3, 8, 14 /* CC::al */, $noreg
3042 renamable $r2 = MVE_VADDVu32acc killed renamable $r2, killed renamable $q0, 0, $noreg
3043 renamable $lr = t2LoopDec killed renamable $lr, 1
3044 t2LoopEnd renamable $lr, %bb.2, implicit-def dead $cpsr
3045 tB %bb.3, 14 /* CC::al */, $noreg
3050 $r0 = tMOVr killed $r2, 14 /* CC::al */, $noreg
3051 tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc, implicit killed $r0
3054 renamable $r2, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg
3055 $r0 = tMOVr killed $r2, 14 /* CC::al */, $noreg
3056 tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc, implicit killed $r0
3060 name: illegal_vmull_non_zero
3062 tracksRegLiveness: true
3065 - { reg: '$r0', virtual-reg: '' }
3066 - { reg: '$r1', virtual-reg: '' }
3067 - { reg: '$r3', virtual-reg: '' }
3074 - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4,
3075 stack-id: default, callee-saved-register: '$lr', callee-saved-restored: false,
3076 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
3077 - { id: 1, name: '', type: spill-slot, offset: -8, size: 4, alignment: 4,
3078 stack-id: default, callee-saved-register: '$r7', callee-saved-restored: true,
3079 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
3082 machineFunctionInfo: {}
3084 ; CHECK-LABEL: name: illegal_vmull_non_zero
3085 ; CHECK: bb.0.entry:
3086 ; CHECK: successors: %bb.1(0x50000000), %bb.4(0x30000000)
3087 ; CHECK: liveins: $lr, $r0, $r1, $r3, $r7
3088 ; CHECK: frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r7, killed $lr, implicit-def $sp, implicit $sp
3089 ; CHECK: frame-setup CFI_INSTRUCTION def_cfa_offset 8
3090 ; CHECK: frame-setup CFI_INSTRUCTION offset $lr, -4
3091 ; CHECK: frame-setup CFI_INSTRUCTION offset $r7, -8
3092 ; CHECK: tCMPi8 renamable $r3, 8, 14 /* CC::al */, $noreg, implicit-def $cpsr
3093 ; CHECK: $r2 = tMOVr $r3, 14 /* CC::al */, $noreg
3094 ; CHECK: t2IT 10, 8, implicit-def $itstate
3095 ; CHECK: renamable $r2 = tMOVi8 $noreg, 8, 10 /* CC::ge */, killed $cpsr, implicit killed renamable $r2, implicit killed $itstate
3096 ; CHECK: tCMPi8 renamable $r3, 1, 14 /* CC::al */, $noreg, implicit-def $cpsr
3097 ; CHECK: tBcc %bb.4, 11 /* CC::lt */, killed $cpsr
3098 ; CHECK: bb.1.while.body.preheader:
3099 ; CHECK: successors: %bb.2(0x80000000)
3100 ; CHECK: liveins: $r0, $r1, $r2, $r3
3101 ; CHECK: renamable $r2, dead $cpsr = tSUBrr renamable $r3, killed renamable $r2, 14 /* CC::al */, $noreg
3102 ; CHECK: renamable $r12 = t2ADDri killed renamable $r2, 7, 14 /* CC::al */, $noreg, $noreg
3103 ; CHECK: renamable $r2, dead $cpsr = tMOVi8 1, 14 /* CC::al */, $noreg
3104 ; CHECK: renamable $r2 = nuw nsw t2ADDrs killed renamable $r2, killed renamable $r12, 27, 14 /* CC::al */, $noreg, $noreg
3105 ; CHECK: dead $lr = t2DLS renamable $r2
3106 ; CHECK: $r12 = tMOVr killed $r2, 14 /* CC::al */, $noreg
3107 ; CHECK: renamable $r2, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg
3108 ; CHECK: bb.2.while.body:
3109 ; CHECK: successors: %bb.2(0x7c000000), %bb.3(0x04000000)
3110 ; CHECK: liveins: $r0, $r1, $r2, $r3, $r12
3111 ; CHECK: renamable $vpr = MVE_VCTP16 renamable $r3, 0, $noreg
3112 ; CHECK: MVE_VPST 4, implicit $vpr
3113 ; CHECK: renamable $r1, renamable $q0 = MVE_VLDRHU16_post killed renamable $r1, 16, 1, renamable $vpr :: (load (s128) from %ir.tmp3, align 2)
3114 ; CHECK: renamable $r0, renamable $q1 = MVE_VLDRHU16_post killed renamable $r0, 16, 1, killed renamable $vpr :: (load (s128) from %ir.tmp1, align 2)
3115 ; CHECK: $lr = tMOVr $r12, 14 /* CC::al */, $noreg
3116 ; CHECK: renamable $q0 = MVE_VMULLTs16 killed renamable $q1, killed renamable $q0, 0, $noreg, undef renamable $q0
3117 ; CHECK: renamable $r12 = nsw t2SUBri killed $r12, 1, 14 /* CC::al */, $noreg, $noreg
3118 ; CHECK: renamable $r3, dead $cpsr = nsw tSUBi8 killed renamable $r3, 8, 14 /* CC::al */, $noreg
3119 ; CHECK: renamable $r2 = MVE_VADDVu32acc killed renamable $r2, killed renamable $q0, 0, $noreg
3120 ; CHECK: dead $lr = t2LEUpdate killed renamable $lr, %bb.2
3121 ; CHECK: bb.3.while.end:
3122 ; CHECK: liveins: $r2
3123 ; CHECK: $r0 = tMOVr killed $r2, 14 /* CC::al */, $noreg
3124 ; CHECK: frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc, implicit killed $r0
3126 ; CHECK: renamable $r2, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg
3127 ; CHECK: $r0 = tMOVr killed $r2, 14 /* CC::al */, $noreg
3128 ; CHECK: frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc, implicit killed $r0
3130 successors: %bb.1(0x50000000), %bb.4(0x30000000)
3131 liveins: $r0, $r1, $r3, $r7, $lr
3133 frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r7, killed $lr, implicit-def $sp, implicit $sp
3134 frame-setup CFI_INSTRUCTION def_cfa_offset 8
3135 frame-setup CFI_INSTRUCTION offset $lr, -4
3136 frame-setup CFI_INSTRUCTION offset $r7, -8
3137 tCMPi8 renamable $r3, 8, 14 /* CC::al */, $noreg, implicit-def $cpsr
3138 $r2 = tMOVr $r3, 14 /* CC::al */, $noreg
3139 t2IT 10, 8, implicit-def $itstate
3140 renamable $r2 = tMOVi8 $noreg, 8, 10 /* CC::ge */, killed $cpsr, implicit killed renamable $r2, implicit killed $itstate
3141 tCMPi8 renamable $r3, 1, 14 /* CC::al */, $noreg, implicit-def $cpsr
3142 tBcc %bb.4, 11 /* CC::lt */, killed $cpsr
3144 bb.1.while.body.preheader:
3145 successors: %bb.2(0x80000000)
3146 liveins: $r0, $r1, $r2, $r3
3148 renamable $r2, dead $cpsr = tSUBrr renamable $r3, killed renamable $r2, 14 /* CC::al */, $noreg
3149 renamable $r12 = t2ADDri killed renamable $r2, 7, 14 /* CC::al */, $noreg, $noreg
3150 renamable $r2, dead $cpsr = tMOVi8 1, 14 /* CC::al */, $noreg
3151 renamable $r2 = nuw nsw t2ADDrs killed renamable $r2, killed renamable $r12, 27, 14 /* CC::al */, $noreg, $noreg
3152 $lr = t2DoLoopStart renamable $r2
3153 $r12 = tMOVr killed $r2, 14 /* CC::al */, $noreg
3154 renamable $r2, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg
3157 successors: %bb.2(0x7c000000), %bb.3(0x04000000)
3158 liveins: $r0, $r1, $r2, $r3, $r12
3160 renamable $vpr = MVE_VCTP16 renamable $r3, 0, $noreg
3161 MVE_VPST 4, implicit $vpr
3162 renamable $r1, renamable $q0 = MVE_VLDRHU16_post killed renamable $r1, 16, 1, renamable $vpr :: (load (s128) from %ir.tmp3, align 2)
3163 renamable $r0, renamable $q1 = MVE_VLDRHU16_post killed renamable $r0, 16, 1, killed renamable $vpr :: (load (s128) from %ir.tmp1, align 2)
3164 $lr = tMOVr $r12, 14 /* CC::al */, $noreg
3165 renamable $q0 = MVE_VMULLTs16 killed renamable $q1, killed renamable $q0, 0, $noreg, undef renamable $q0
3166 renamable $r12 = nsw t2SUBri killed $r12, 1, 14 /* CC::al */, $noreg, $noreg
3167 renamable $r3, dead $cpsr = nsw tSUBi8 killed renamable $r3, 8, 14 /* CC::al */, $noreg
3168 renamable $r2 = MVE_VADDVu32acc killed renamable $r2, killed renamable $q0, 0, $noreg
3169 renamable $lr = t2LoopDec killed renamable $lr, 1
3170 t2LoopEnd killed renamable $lr, %bb.2, implicit-def dead $cpsr
3171 tB %bb.3, 14 /* CC::al */, $noreg
3176 $r0 = tMOVr killed $r2, 14 /* CC::al */, $noreg
3177 frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc, implicit killed $r0
3180 renamable $r2, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg
3181 $r0 = tMOVr killed $r2, 14 /* CC::al */, $noreg
3182 frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc, implicit killed $r0