1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=thumbv8.1m.main-none-none-eabi -mattr=+mve.fp -run-pass arm-prera-ldst-opt %s -o - -verify-machineinstrs | FileCheck %s
5 define ptr @MVE_VLDRWU32(ptr %x) { unreachable }
6 define ptr @MVE_VLDRHU16(ptr %x) { unreachable }
7 define ptr @MVE_VLDRBU8(ptr %x) { unreachable }
8 define ptr @MVE_VLDRBS32(ptr %x) { unreachable }
9 define ptr @MVE_VLDRBU32(ptr %x) { unreachable }
10 define ptr @MVE_VLDRHS32(ptr %x) { unreachable }
11 define ptr @MVE_VLDRHU32(ptr %x) { unreachable }
12 define ptr @MVE_VLDRBS16(ptr %x) { unreachable }
13 define ptr @MVE_VLDRBU16(ptr %x) { unreachable }
14 define ptr @MVE_VSTRWU32(ptr %x, <4 x i32> %y) { unreachable }
15 define ptr @MVE_VSTRHU16(ptr %x, <4 x i32> %y) { unreachable }
16 define ptr @MVE_VSTRBU8(ptr %x, <4 x i32> %y) { unreachable }
17 define ptr @MVE_VSTRH32(ptr %x, <4 x i32> %y) { unreachable }
18 define ptr @MVE_VSTRB32(ptr %x, <4 x i32> %y) { unreachable }
19 define ptr @MVE_VSTRB16(ptr %x, <4 x i32> %y) { unreachable }
21 define ptr @ld0ld4(ptr %x) { unreachable }
22 define ptr @ld4ld0(ptr %x) { unreachable }
23 define ptr @ld0ld4ld0(ptr %x) { unreachable }
24 define ptr @ld4ld0ld4(ptr %x) { unreachable }
25 define ptr @addload(ptr %x) { unreachable }
26 define ptr @sub(ptr %x) { unreachable }
27 define ptr @otherUse(ptr %x) { unreachable }
28 define ptr @postincUse(ptr %x) { unreachable }
29 define ptr @badScale(ptr %x) { unreachable }
30 define ptr @badRange(ptr %x) { unreachable }
32 define ptr @addUseOK(ptr %x) { unreachable }
33 define ptr @addUseDom(ptr %x) { unreachable }
34 define ptr @addUseKilled(ptr %x) { unreachable }
36 define ptr @MVE_VLDRWU32_post(ptr %x) { unreachable }
37 define ptr @MVE_VLDRHU16_post(ptr %x) { unreachable }
38 define ptr @MVE_VLDRBU8_post(ptr %x) { unreachable }
39 define ptr @MVE_VLDRBS32_post(ptr %x) { unreachable }
40 define ptr @MVE_VLDRBU32_post(ptr %x) { unreachable }
41 define ptr @MVE_VLDRHS32_post(ptr %x) { unreachable }
42 define ptr @MVE_VLDRHU32_post(ptr %x) { unreachable }
43 define ptr @MVE_VLDRBS16_post(ptr %x) { unreachable }
44 define ptr @MVE_VLDRBU16_post(ptr %x) { unreachable }
45 define ptr @MVE_VSTRWU32_post(ptr %x, <4 x i32> %y) { unreachable }
46 define ptr @MVE_VSTRHU16_post(ptr %x, <4 x i32> %y) { unreachable }
47 define ptr @MVE_VSTRBU8_post(ptr %x, <4 x i32> %y) { unreachable }
48 define ptr @MVE_VSTRH32_post(ptr %x, <4 x i32> %y) { unreachable }
49 define ptr @MVE_VSTRB32_post(ptr %x, <4 x i32> %y) { unreachable }
50 define ptr @MVE_VSTRB16_post(ptr %x, <4 x i32> %y) { unreachable }
51 define ptr @MVE_VLDRWU32_pre(ptr %x) { unreachable }
52 define ptr @MVE_VLDRHU16_pre(ptr %x) { unreachable }
53 define ptr @MVE_VLDRBU8_pre(ptr %x) { unreachable }
54 define ptr @MVE_VLDRBS32_pre(ptr %x) { unreachable }
55 define ptr @MVE_VLDRBU32_pre(ptr %x) { unreachable }
56 define ptr @MVE_VLDRHS32_pre(ptr %x) { unreachable }
57 define ptr @MVE_VLDRHU32_pre(ptr %x) { unreachable }
58 define ptr @MVE_VLDRBS16_pre(ptr %x) { unreachable }
59 define ptr @MVE_VLDRBU16_pre(ptr %x) { unreachable }
60 define ptr @MVE_VSTRWU32_pre(ptr %x, <4 x i32> %y) { unreachable }
61 define ptr @MVE_VSTRHU16_pre(ptr %x, <4 x i32> %y) { unreachable }
62 define ptr @MVE_VSTRBU8_pre(ptr %x, <4 x i32> %y) { unreachable }
63 define ptr @MVE_VSTRH32_pre(ptr %x, <4 x i32> %y) { unreachable }
64 define ptr @MVE_VSTRB32_pre(ptr %x, <4 x i32> %y) { unreachable }
65 define ptr @MVE_VSTRB16_pre(ptr %x, <4 x i32> %y) { unreachable }
67 define ptr @multiple2(ptr %x) { unreachable }
68 define ptr @multiple3(ptr %x) { unreachable }
69 define ptr @multiple4(ptr %x) { unreachable }
70 define ptr @badScale2(ptr %x) { unreachable }
71 define ptr @badRange2(ptr %x) { unreachable }
72 define ptr @regtype(ptr %x) { unreachable }
77 tracksRegLiveness: true
79 - { id: 0, class: gprnopc, preferred-register: '' }
80 - { id: 1, class: mqpr, preferred-register: '' }
81 - { id: 2, class: rgpr, preferred-register: '' }
83 - { reg: '$r0', virtual-reg: '%0' }
84 - { reg: '$q0', virtual-reg: '%1' }
89 ; CHECK-LABEL: name: MVE_VLDRWU32
90 ; CHECK: liveins: $r0, $q0
91 ; CHECK: [[COPY:%[0-9]+]]:rgpr = COPY $r0
92 ; CHECK: [[MVE_VLDRWU32_post:%[0-9]+]]:rgpr, [[MVE_VLDRWU32_post1:%[0-9]+]]:mqpr = MVE_VLDRWU32_post [[COPY]], 32, 0, $noreg, $noreg :: (load (s128), align 8)
93 ; CHECK: $r0 = COPY [[MVE_VLDRWU32_post]]
94 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
96 %1:mqpr = MVE_VLDRWU32 %0, 0, 0, $noreg, $noreg :: (load (s128), align 8)
97 %2:rgpr = nuw t2ADDri %0, 32, 14, $noreg, $noreg
99 tBX_RET 14, $noreg, implicit $r0
104 tracksRegLiveness: true
106 - { id: 0, class: gprnopc, preferred-register: '' }
107 - { id: 1, class: mqpr, preferred-register: '' }
108 - { id: 2, class: rgpr, preferred-register: '' }
110 - { reg: '$r0', virtual-reg: '%0' }
111 - { reg: '$q0', virtual-reg: '%1' }
116 ; CHECK-LABEL: name: MVE_VLDRHU16
117 ; CHECK: liveins: $r0, $q0
118 ; CHECK: [[COPY:%[0-9]+]]:rgpr = COPY $r0
119 ; CHECK: [[MVE_VLDRHU16_post:%[0-9]+]]:rgpr, [[MVE_VLDRHU16_post1:%[0-9]+]]:mqpr = MVE_VLDRHU16_post [[COPY]], 32, 0, $noreg, $noreg :: (load (s128), align 8)
120 ; CHECK: $r0 = COPY [[MVE_VLDRHU16_post]]
121 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
122 %0:gprnopc = COPY $r0
123 %1:mqpr = MVE_VLDRHU16 %0, 0, 0, $noreg, $noreg :: (load (s128), align 8)
124 %2:rgpr = nuw t2ADDri %0, 32, 14, $noreg, $noreg
126 tBX_RET 14, $noreg, implicit $r0
131 tracksRegLiveness: true
133 - { id: 0, class: gprnopc, preferred-register: '' }
134 - { id: 1, class: mqpr, preferred-register: '' }
135 - { id: 2, class: rgpr, preferred-register: '' }
137 - { reg: '$r0', virtual-reg: '%0' }
138 - { reg: '$q0', virtual-reg: '%1' }
143 ; CHECK-LABEL: name: MVE_VLDRBU8
144 ; CHECK: liveins: $r0, $q0
145 ; CHECK: [[COPY:%[0-9]+]]:rgpr = COPY $r0
146 ; CHECK: [[MVE_VLDRBU8_post:%[0-9]+]]:rgpr, [[MVE_VLDRBU8_post1:%[0-9]+]]:mqpr = MVE_VLDRBU8_post [[COPY]], 32, 0, $noreg, $noreg :: (load (s128), align 8)
147 ; CHECK: $r0 = COPY [[MVE_VLDRBU8_post]]
148 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
149 %0:gprnopc = COPY $r0
150 %1:mqpr = MVE_VLDRBU8 %0, 0, 0, $noreg, $noreg :: (load (s128), align 8)
151 %2:rgpr = nuw t2ADDri %0, 32, 14, $noreg, $noreg
153 tBX_RET 14, $noreg, implicit $r0
158 tracksRegLiveness: true
160 - { id: 0, class: tgpr, preferred-register: '' }
161 - { id: 1, class: mqpr, preferred-register: '' }
162 - { id: 2, class: rgpr, preferred-register: '' }
164 - { reg: '$r0', virtual-reg: '%0' }
165 - { reg: '$q0', virtual-reg: '%1' }
170 ; CHECK-LABEL: name: MVE_VLDRBS32
171 ; CHECK: liveins: $r0, $q0
172 ; CHECK: [[COPY:%[0-9]+]]:tgpr = COPY $r0
173 ; CHECK: [[MVE_VLDRBS32_post:%[0-9]+]]:tgpr, [[MVE_VLDRBS32_post1:%[0-9]+]]:mqpr = MVE_VLDRBS32_post [[COPY]], 32, 0, $noreg, $noreg :: (load (s32), align 8)
174 ; CHECK: $r0 = COPY [[MVE_VLDRBS32_post]]
175 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
177 %1:mqpr = MVE_VLDRBS32 %0, 0, 0, $noreg, $noreg :: (load (s32), align 8)
178 %2:rgpr = nuw t2ADDri %0, 32, 14, $noreg, $noreg
180 tBX_RET 14, $noreg, implicit $r0
185 tracksRegLiveness: true
187 - { id: 0, class: tgpr, preferred-register: '' }
188 - { id: 1, class: mqpr, preferred-register: '' }
189 - { id: 2, class: rgpr, preferred-register: '' }
191 - { reg: '$r0', virtual-reg: '%0' }
192 - { reg: '$q0', virtual-reg: '%1' }
197 ; CHECK-LABEL: name: MVE_VLDRBU32
198 ; CHECK: liveins: $r0, $q0
199 ; CHECK: [[COPY:%[0-9]+]]:tgpr = COPY $r0
200 ; CHECK: [[MVE_VLDRBU32_post:%[0-9]+]]:tgpr, [[MVE_VLDRBU32_post1:%[0-9]+]]:mqpr = MVE_VLDRBU32_post [[COPY]], 32, 0, $noreg, $noreg :: (load (s32), align 8)
201 ; CHECK: $r0 = COPY [[MVE_VLDRBU32_post]]
202 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
204 %1:mqpr = MVE_VLDRBU32 %0, 0, 0, $noreg, $noreg :: (load (s32), align 8)
205 %2:rgpr = nuw t2ADDri %0, 32, 14, $noreg, $noreg
207 tBX_RET 14, $noreg, implicit $r0
212 tracksRegLiveness: true
214 - { id: 0, class: tgpr, preferred-register: '' }
215 - { id: 1, class: mqpr, preferred-register: '' }
216 - { id: 2, class: rgpr, preferred-register: '' }
218 - { reg: '$r0', virtual-reg: '%0' }
219 - { reg: '$q0', virtual-reg: '%1' }
224 ; CHECK-LABEL: name: MVE_VLDRHS32
225 ; CHECK: liveins: $r0, $q0
226 ; CHECK: [[COPY:%[0-9]+]]:tgpr = COPY $r0
227 ; CHECK: [[MVE_VLDRHS32_post:%[0-9]+]]:tgpr, [[MVE_VLDRHS32_post1:%[0-9]+]]:mqpr = MVE_VLDRHS32_post [[COPY]], 32, 0, $noreg, $noreg :: (load (s64))
228 ; CHECK: $r0 = COPY [[MVE_VLDRHS32_post]]
229 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
231 %1:mqpr = MVE_VLDRHS32 %0, 0, 0, $noreg, $noreg :: (load (s64), align 8)
232 %2:rgpr = nuw t2ADDri %0, 32, 14, $noreg, $noreg
234 tBX_RET 14, $noreg, implicit $r0
239 tracksRegLiveness: true
241 - { id: 0, class: tgpr, preferred-register: '' }
242 - { id: 1, class: mqpr, preferred-register: '' }
243 - { id: 2, class: rgpr, preferred-register: '' }
245 - { reg: '$r0', virtual-reg: '%0' }
246 - { reg: '$q0', virtual-reg: '%1' }
251 ; CHECK-LABEL: name: MVE_VLDRHU32
252 ; CHECK: liveins: $r0, $q0
253 ; CHECK: [[COPY:%[0-9]+]]:tgpr = COPY $r0
254 ; CHECK: [[MVE_VLDRHU32_post:%[0-9]+]]:tgpr, [[MVE_VLDRHU32_post1:%[0-9]+]]:mqpr = MVE_VLDRHU32_post [[COPY]], 32, 0, $noreg, $noreg :: (load (s64))
255 ; CHECK: $r0 = COPY [[MVE_VLDRHU32_post]]
256 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
258 %1:mqpr = MVE_VLDRHU32 %0, 0, 0, $noreg, $noreg :: (load (s64), align 8)
259 %2:rgpr = nuw t2ADDri %0, 32, 14, $noreg, $noreg
261 tBX_RET 14, $noreg, implicit $r0
266 tracksRegLiveness: true
268 - { id: 0, class: tgpr, preferred-register: '' }
269 - { id: 1, class: mqpr, preferred-register: '' }
270 - { id: 2, class: rgpr, preferred-register: '' }
272 - { reg: '$r0', virtual-reg: '%0' }
273 - { reg: '$q0', virtual-reg: '%1' }
278 ; CHECK-LABEL: name: MVE_VLDRBS16
279 ; CHECK: liveins: $r0, $q0
280 ; CHECK: [[COPY:%[0-9]+]]:tgpr = COPY $r0
281 ; CHECK: [[MVE_VLDRBS16_post:%[0-9]+]]:tgpr, [[MVE_VLDRBS16_post1:%[0-9]+]]:mqpr = MVE_VLDRBS16_post [[COPY]], 32, 0, $noreg, $noreg :: (load (s64))
282 ; CHECK: $r0 = COPY [[MVE_VLDRBS16_post]]
283 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
285 %1:mqpr = MVE_VLDRBS16 %0, 0, 0, $noreg, $noreg :: (load (s64), align 8)
286 %2:rgpr = nuw t2ADDri %0, 32, 14, $noreg, $noreg
288 tBX_RET 14, $noreg, implicit $r0
293 tracksRegLiveness: true
295 - { id: 0, class: tgpr, preferred-register: '' }
296 - { id: 1, class: mqpr, preferred-register: '' }
297 - { id: 2, class: rgpr, preferred-register: '' }
299 - { reg: '$r0', virtual-reg: '%0' }
300 - { reg: '$q0', virtual-reg: '%1' }
305 ; CHECK-LABEL: name: MVE_VLDRBU16
306 ; CHECK: liveins: $r0, $q0
307 ; CHECK: [[COPY:%[0-9]+]]:tgpr = COPY $r0
308 ; CHECK: [[MVE_VLDRBU16_post:%[0-9]+]]:tgpr, [[MVE_VLDRBU16_post1:%[0-9]+]]:mqpr = MVE_VLDRBU16_post [[COPY]], 32, 0, $noreg, $noreg :: (load (s64))
309 ; CHECK: $r0 = COPY [[MVE_VLDRBU16_post]]
310 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
312 %1:mqpr = MVE_VLDRBU16 %0, 0, 0, $noreg, $noreg :: (load (s64), align 8)
313 %2:rgpr = nuw t2ADDri %0, 32, 14, $noreg, $noreg
315 tBX_RET 14, $noreg, implicit $r0
320 tracksRegLiveness: true
322 - { id: 0, class: gprnopc, preferred-register: '' }
323 - { id: 1, class: mqpr, preferred-register: '' }
324 - { id: 2, class: rgpr, preferred-register: '' }
326 - { reg: '$r0', virtual-reg: '%0' }
327 - { reg: '$q0', virtual-reg: '%1' }
332 ; CHECK-LABEL: name: MVE_VSTRWU32
333 ; CHECK: liveins: $r0, $q0
334 ; CHECK: [[COPY:%[0-9]+]]:mqpr = COPY $q0
335 ; CHECK: [[COPY1:%[0-9]+]]:rgpr = COPY $r0
336 ; CHECK: [[MVE_VSTRWU32_post:%[0-9]+]]:rgpr = MVE_VSTRWU32_post [[COPY]], [[COPY1]], 32, 0, $noreg, $noreg :: (store (s128), align 8)
337 ; CHECK: $r0 = COPY [[MVE_VSTRWU32_post]]
338 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
340 %0:gprnopc = COPY $r0
341 MVE_VSTRWU32 %1, %0, 0, 0, $noreg, $noreg :: (store (s128), align 8)
342 %2:rgpr = nuw t2ADDri %0, 32, 14, $noreg, $noreg
344 tBX_RET 14, $noreg, implicit $r0
349 tracksRegLiveness: true
351 - { id: 0, class: gprnopc, preferred-register: '' }
352 - { id: 1, class: mqpr, preferred-register: '' }
353 - { id: 2, class: rgpr, preferred-register: '' }
355 - { reg: '$r0', virtual-reg: '%0' }
356 - { reg: '$q0', virtual-reg: '%1' }
361 ; CHECK-LABEL: name: MVE_VSTRHU16
362 ; CHECK: liveins: $r0, $q0
363 ; CHECK: [[COPY:%[0-9]+]]:mqpr = COPY $q0
364 ; CHECK: [[COPY1:%[0-9]+]]:rgpr = COPY $r0
365 ; CHECK: [[MVE_VSTRHU16_post:%[0-9]+]]:rgpr = MVE_VSTRHU16_post [[COPY]], [[COPY1]], 32, 0, $noreg, $noreg :: (store (s128), align 8)
366 ; CHECK: $r0 = COPY [[MVE_VSTRHU16_post]]
367 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
369 %0:gprnopc = COPY $r0
370 MVE_VSTRHU16 %1, %0, 0, 0, $noreg, $noreg :: (store (s128), align 8)
371 %2:rgpr = nuw t2ADDri %0, 32, 14, $noreg, $noreg
373 tBX_RET 14, $noreg, implicit $r0
378 tracksRegLiveness: true
380 - { id: 0, class: gprnopc, preferred-register: '' }
381 - { id: 1, class: mqpr, preferred-register: '' }
382 - { id: 2, class: rgpr, preferred-register: '' }
384 - { reg: '$r0', virtual-reg: '%0' }
385 - { reg: '$q0', virtual-reg: '%1' }
390 ; CHECK-LABEL: name: MVE_VSTRBU8
391 ; CHECK: liveins: $r0, $q0
392 ; CHECK: [[COPY:%[0-9]+]]:mqpr = COPY $q0
393 ; CHECK: [[COPY1:%[0-9]+]]:rgpr = COPY $r0
394 ; CHECK: [[MVE_VSTRBU8_post:%[0-9]+]]:rgpr = MVE_VSTRBU8_post [[COPY]], [[COPY1]], 32, 0, $noreg, $noreg :: (store (s128), align 8)
395 ; CHECK: $r0 = COPY [[MVE_VSTRBU8_post]]
396 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
398 %0:gprnopc = COPY $r0
399 MVE_VSTRBU8 %1, %0, 0, 0, $noreg, $noreg :: (store (s128), align 8)
400 %2:rgpr = nuw t2ADDri %0, 32, 14, $noreg, $noreg
402 tBX_RET 14, $noreg, implicit $r0
407 tracksRegLiveness: true
409 - { id: 0, class: tgpr, preferred-register: '' }
410 - { id: 1, class: mqpr, preferred-register: '' }
411 - { id: 2, class: rgpr, preferred-register: '' }
413 - { reg: '$r0', virtual-reg: '%0' }
414 - { reg: '$q0', virtual-reg: '%1' }
419 ; CHECK-LABEL: name: MVE_VSTRH32
420 ; CHECK: liveins: $r0, $q0
421 ; CHECK: [[COPY:%[0-9]+]]:mqpr = COPY $q0
422 ; CHECK: [[COPY1:%[0-9]+]]:tgpr = COPY $r0
423 ; CHECK: [[MVE_VSTRH32_post:%[0-9]+]]:tgpr = MVE_VSTRH32_post [[COPY]], [[COPY1]], 32, 0, $noreg, $noreg :: (store (s64))
424 ; CHECK: $r0 = COPY [[MVE_VSTRH32_post]]
425 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
428 MVE_VSTRH32 %1, %0, 0, 0, $noreg, $noreg :: (store (s64), align 8)
429 %2:rgpr = nuw t2ADDri %0, 32, 14, $noreg, $noreg
431 tBX_RET 14, $noreg, implicit $r0
436 tracksRegLiveness: true
438 - { id: 0, class: tgpr, preferred-register: '' }
439 - { id: 1, class: mqpr, preferred-register: '' }
440 - { id: 2, class: rgpr, preferred-register: '' }
442 - { reg: '$r0', virtual-reg: '%0' }
443 - { reg: '$q0', virtual-reg: '%1' }
448 ; CHECK-LABEL: name: MVE_VSTRB32
449 ; CHECK: liveins: $r0, $q0
450 ; CHECK: [[COPY:%[0-9]+]]:mqpr = COPY $q0
451 ; CHECK: [[COPY1:%[0-9]+]]:tgpr = COPY $r0
452 ; CHECK: [[MVE_VSTRB32_post:%[0-9]+]]:tgpr = MVE_VSTRB32_post [[COPY]], [[COPY1]], 32, 0, $noreg, $noreg :: (store (s32), align 8)
453 ; CHECK: $r0 = COPY [[MVE_VSTRB32_post]]
454 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
457 MVE_VSTRB32 %1, %0, 0, 0, $noreg, $noreg :: (store (s32), align 8)
458 %2:rgpr = nuw t2ADDri %0, 32, 14, $noreg, $noreg
460 tBX_RET 14, $noreg, implicit $r0
465 tracksRegLiveness: true
467 - { id: 0, class: tgpr, preferred-register: '' }
468 - { id: 1, class: mqpr, preferred-register: '' }
469 - { id: 2, class: rgpr, preferred-register: '' }
471 - { reg: '$r0', virtual-reg: '%0' }
472 - { reg: '$q0', virtual-reg: '%1' }
477 ; CHECK-LABEL: name: MVE_VSTRB16
478 ; CHECK: liveins: $r0, $q0
479 ; CHECK: [[COPY:%[0-9]+]]:mqpr = COPY $q0
480 ; CHECK: [[COPY1:%[0-9]+]]:tgpr = COPY $r0
481 ; CHECK: [[MVE_VSTRB16_post:%[0-9]+]]:tgpr = MVE_VSTRB16_post [[COPY]], [[COPY1]], 32, 0, $noreg, $noreg :: (store (s64))
482 ; CHECK: $r0 = COPY [[MVE_VSTRB16_post]]
483 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
486 MVE_VSTRB16 %1, %0, 0, 0, $noreg, $noreg :: (store (s64), align 8)
487 %2:rgpr = nuw t2ADDri %0, 32, 14, $noreg, $noreg
489 tBX_RET 14, $noreg, implicit $r0
494 tracksRegLiveness: true
496 - { id: 0, class: gprnopc, preferred-register: '' }
497 - { id: 1, class: mqpr, preferred-register: '' }
498 - { id: 2, class: rgpr, preferred-register: '' }
499 - { id: 3, class: mqpr, preferred-register: '' }
501 - { reg: '$r0', virtual-reg: '%0' }
502 - { reg: '$q0', virtual-reg: '%1' }
507 ; CHECK-LABEL: name: ld0ld4
508 ; CHECK: liveins: $r0, $q0
509 ; CHECK: [[COPY:%[0-9]+]]:rgpr = COPY $r0
510 ; CHECK: [[MVE_VLDRWU32_post:%[0-9]+]]:rgpr, [[MVE_VLDRWU32_post1:%[0-9]+]]:mqpr = MVE_VLDRWU32_post [[COPY]], 32, 0, $noreg, $noreg :: (load (s128), align 8)
511 ; CHECK: [[MVE_VLDRWU32_:%[0-9]+]]:mqpr = MVE_VLDRWU32 [[MVE_VLDRWU32_post]], -28, 0, $noreg, $noreg :: (load (s128), align 8)
512 ; CHECK: $r0 = COPY [[MVE_VLDRWU32_post]]
513 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
514 %0:gprnopc = COPY $r0
515 %1:mqpr = MVE_VLDRWU32 %0, 0, 0, $noreg, $noreg :: (load (s128), align 8)
516 %2:rgpr = nuw t2ADDri %0, 32, 14, $noreg, $noreg
517 %3:mqpr = MVE_VLDRWU32 %0, 4, 0, $noreg, $noreg :: (load (s128), align 8)
519 tBX_RET 14, $noreg, implicit $r0
524 tracksRegLiveness: true
526 - { id: 0, class: gprnopc, preferred-register: '' }
527 - { id: 1, class: mqpr, preferred-register: '' }
528 - { id: 2, class: rgpr, preferred-register: '' }
529 - { id: 3, class: mqpr, preferred-register: '' }
531 - { reg: '$r0', virtual-reg: '%0' }
532 - { reg: '$q0', virtual-reg: '%1' }
537 ; CHECK-LABEL: name: ld4ld0
538 ; CHECK: liveins: $r0, $q0
539 ; CHECK: [[COPY:%[0-9]+]]:rgpr = COPY $r0
540 ; CHECK: [[MVE_VLDRWU32_:%[0-9]+]]:mqpr = MVE_VLDRWU32 [[COPY]], 4, 0, $noreg, $noreg :: (load (s128), align 8)
541 ; CHECK: [[MVE_VLDRWU32_post:%[0-9]+]]:rgpr, [[MVE_VLDRWU32_post1:%[0-9]+]]:mqpr = MVE_VLDRWU32_post [[COPY]], 32, 0, $noreg, $noreg :: (load (s128), align 8)
542 ; CHECK: $r0 = COPY [[MVE_VLDRWU32_post]]
543 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
544 %0:gprnopc = COPY $r0
545 %1:mqpr = MVE_VLDRWU32 %0, 4, 0, $noreg, $noreg :: (load (s128), align 8)
546 %2:rgpr = nuw t2ADDri %0, 32, 14, $noreg, $noreg
547 %3:mqpr = MVE_VLDRWU32 %0, 0, 0, $noreg, $noreg :: (load (s128), align 8)
549 tBX_RET 14, $noreg, implicit $r0
554 tracksRegLiveness: true
556 - { id: 0, class: gprnopc, preferred-register: '' }
557 - { id: 1, class: mqpr, preferred-register: '' }
558 - { id: 2, class: rgpr, preferred-register: '' }
559 - { id: 3, class: mqpr, preferred-register: '' }
560 - { id: 4, class: mqpr, preferred-register: '' }
562 - { reg: '$r0', virtual-reg: '%0' }
563 - { reg: '$q0', virtual-reg: '%1' }
568 ; CHECK-LABEL: name: ld0ld4ld0
569 ; CHECK: liveins: $r0, $q0
570 ; CHECK: [[COPY:%[0-9]+]]:rgpr = COPY $r0
571 ; CHECK: [[MVE_VLDRWU32_:%[0-9]+]]:mqpr = MVE_VLDRWU32 [[COPY]], 0, 0, $noreg, $noreg :: (load (s128), align 8)
572 ; CHECK: [[MVE_VLDRWU32_1:%[0-9]+]]:mqpr = MVE_VLDRWU32 [[COPY]], 4, 0, $noreg, $noreg :: (load (s128), align 8)
573 ; CHECK: [[MVE_VLDRWU32_post:%[0-9]+]]:rgpr, [[MVE_VLDRWU32_post1:%[0-9]+]]:mqpr = MVE_VLDRWU32_post [[COPY]], 32, 0, $noreg, $noreg :: (load (s128), align 8)
574 ; CHECK: $r0 = COPY [[MVE_VLDRWU32_post]]
575 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
576 %0:gprnopc = COPY $r0
577 %1:mqpr = MVE_VLDRWU32 %0, 0, 0, $noreg, $noreg :: (load (s128), align 8)
578 %2:rgpr = nuw t2ADDri %0, 32, 14, $noreg, $noreg
579 %3:mqpr = MVE_VLDRWU32 %0, 4, 0, $noreg, $noreg :: (load (s128), align 8)
580 %4:mqpr = MVE_VLDRWU32 %0, 0, 0, $noreg, $noreg :: (load (s128), align 8)
582 tBX_RET 14, $noreg, implicit $r0
587 tracksRegLiveness: true
589 - { id: 0, class: gprnopc, preferred-register: '' }
590 - { id: 1, class: mqpr, preferred-register: '' }
591 - { id: 2, class: rgpr, preferred-register: '' }
592 - { id: 3, class: mqpr, preferred-register: '' }
593 - { id: 4, class: mqpr, preferred-register: '' }
595 - { reg: '$r0', virtual-reg: '%0' }
596 - { reg: '$q0', virtual-reg: '%1' }
601 ; CHECK-LABEL: name: ld4ld0ld4
602 ; CHECK: liveins: $r0, $q0
603 ; CHECK: [[COPY:%[0-9]+]]:rgpr = COPY $r0
604 ; CHECK: [[MVE_VLDRWU32_:%[0-9]+]]:mqpr = MVE_VLDRWU32 [[COPY]], 4, 0, $noreg, $noreg :: (load (s128), align 8)
605 ; CHECK: [[MVE_VLDRWU32_post:%[0-9]+]]:rgpr, [[MVE_VLDRWU32_post1:%[0-9]+]]:mqpr = MVE_VLDRWU32_post [[COPY]], 32, 0, $noreg, $noreg :: (load (s128), align 8)
606 ; CHECK: [[MVE_VLDRWU32_1:%[0-9]+]]:mqpr = MVE_VLDRWU32 [[MVE_VLDRWU32_post]], -28, 0, $noreg, $noreg :: (load (s128), align 8)
607 ; CHECK: $r0 = COPY [[MVE_VLDRWU32_post]]
608 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
609 %0:gprnopc = COPY $r0
610 %1:mqpr = MVE_VLDRWU32 %0, 4, 0, $noreg, $noreg :: (load (s128), align 8)
611 %2:rgpr = nuw t2ADDri %0, 32, 14, $noreg, $noreg
612 %3:mqpr = MVE_VLDRWU32 %0, 0, 0, $noreg, $noreg :: (load (s128), align 8)
613 %4:mqpr = MVE_VLDRWU32 %0, 4, 0, $noreg, $noreg :: (load (s128), align 8)
615 tBX_RET 14, $noreg, implicit $r0
620 tracksRegLiveness: true
622 - { id: 0, class: gprnopc, preferred-register: '' }
623 - { id: 1, class: mqpr, preferred-register: '' }
624 - { id: 2, class: rgpr, preferred-register: '' }
625 - { id: 3, class: mqpr, preferred-register: '' }
627 - { reg: '$r0', virtual-reg: '%0' }
628 - { reg: '$q0', virtual-reg: '%1' }
633 ; CHECK-LABEL: name: addload
634 ; CHECK: liveins: $r0, $q0
635 ; CHECK: [[COPY:%[0-9]+]]:rgpr = COPY $r0
636 ; CHECK: [[MVE_VLDRWU32_post:%[0-9]+]]:rgpr, [[MVE_VLDRWU32_post1:%[0-9]+]]:mqpr = MVE_VLDRWU32_post [[COPY]], 32, 0, $noreg, $noreg :: (load (s128), align 8)
637 ; CHECK: [[MVE_VLDRWU32_:%[0-9]+]]:mqpr = MVE_VLDRWU32 [[MVE_VLDRWU32_post]], -28, 0, $noreg, $noreg :: (load (s128), align 8)
638 ; CHECK: $r0 = COPY [[MVE_VLDRWU32_post]]
639 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
640 %0:gprnopc = COPY $r0
641 %2:rgpr = nuw t2ADDri %0, 32, 14, $noreg, $noreg
642 %1:mqpr = MVE_VLDRWU32 %0, 0, 0, $noreg, $noreg :: (load (s128), align 8)
643 %3:mqpr = MVE_VLDRWU32 %0, 4, 0, $noreg, $noreg :: (load (s128), align 8)
645 tBX_RET 14, $noreg, implicit $r0
650 tracksRegLiveness: true
652 - { id: 0, class: gprnopc, preferred-register: '' }
653 - { id: 1, class: mqpr, preferred-register: '' }
654 - { id: 2, class: rgpr, preferred-register: '' }
655 - { id: 3, class: mqpr, preferred-register: '' }
657 - { reg: '$r0', virtual-reg: '%0' }
658 - { reg: '$q0', virtual-reg: '%1' }
663 ; CHECK-LABEL: name: sub
664 ; CHECK: liveins: $r0, $q0
665 ; CHECK: [[COPY:%[0-9]+]]:rgpr = COPY $r0
666 ; CHECK: [[MVE_VLDRWU32_post:%[0-9]+]]:rgpr, [[MVE_VLDRWU32_post1:%[0-9]+]]:mqpr = MVE_VLDRWU32_post [[COPY]], -32, 0, $noreg, $noreg :: (load (s128), align 8)
667 ; CHECK: [[MVE_VLDRWU32_:%[0-9]+]]:mqpr = MVE_VLDRWU32 [[MVE_VLDRWU32_post]], 36, 0, $noreg, $noreg :: (load (s128), align 8)
668 ; CHECK: $r0 = COPY [[MVE_VLDRWU32_post]]
669 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
670 %0:gprnopc = COPY $r0
671 %1:mqpr = MVE_VLDRWU32 %0, 0, 0, $noreg, $noreg :: (load (s128), align 8)
672 %2:rgpr = nuw t2SUBri %0, 32, 14, $noreg, $noreg
673 %3:mqpr = MVE_VLDRWU32 %0, 4, 0, $noreg, $noreg :: (load (s128), align 8)
675 tBX_RET 14, $noreg, implicit $r0
680 tracksRegLiveness: true
682 - { id: 0, class: gprnopc, preferred-register: '' }
683 - { id: 1, class: mqpr, preferred-register: '' }
684 - { id: 2, class: rgpr, preferred-register: '' }
685 - { id: 3, class: mqpr, preferred-register: '' }
687 - { reg: '$r0', virtual-reg: '%0' }
688 - { reg: '$q0', virtual-reg: '%1' }
693 ; CHECK-LABEL: name: otherUse
694 ; CHECK: liveins: $r0, $q0
695 ; CHECK: [[COPY:%[0-9]+]]:gprnopc = COPY $r0
696 ; CHECK: [[t2ADDri:%[0-9]+]]:rgpr = nuw t2ADDri [[COPY]], 32, 14 /* CC::al */, $noreg, $noreg
697 ; CHECK: [[MVE_VLDRWU32_:%[0-9]+]]:mqpr = MVE_VLDRWU32 [[COPY]], 0, 0, $noreg, $noreg :: (load (s128), align 8)
698 ; CHECK: [[MVE_VLDRWU32_1:%[0-9]+]]:mqpr = MVE_VLDRWU32 [[COPY]], 4, 0, $noreg, $noreg :: (load (s128), align 8)
699 ; CHECK: $r0 = COPY [[COPY]]
700 ; CHECK: $r0 = COPY [[t2ADDri]]
701 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
702 %0:gprnopc = COPY $r0
703 %2:rgpr = nuw t2ADDri %0, 32, 14, $noreg, $noreg
704 %1:mqpr = MVE_VLDRWU32 %0, 0, 0, $noreg, $noreg :: (load (s128), align 8)
705 %3:mqpr = MVE_VLDRWU32 %0, 4, 0, $noreg, $noreg :: (load (s128), align 8)
708 tBX_RET 14, $noreg, implicit $r0
713 tracksRegLiveness: true
715 - { id: 0, class: rgpr, preferred-register: '' }
716 - { id: 1, class: mqpr, preferred-register: '' }
717 - { id: 2, class: rgpr, preferred-register: '' }
718 - { id: 3, class: mqpr, preferred-register: '' }
719 - { id: 4, class: rgpr, preferred-register: '' }
721 - { reg: '$r0', virtual-reg: '%0' }
722 - { reg: '$q0', virtual-reg: '%1' }
727 ; CHECK-LABEL: name: postincUse
728 ; CHECK: liveins: $r0, $q0
729 ; CHECK: [[COPY:%[0-9]+]]:rgpr = COPY $r0
730 ; CHECK: [[t2ADDri:%[0-9]+]]:rgpr = nuw t2ADDri [[COPY]], 32, 14 /* CC::al */, $noreg, $noreg
731 ; CHECK: [[MVE_VLDRWU32_:%[0-9]+]]:mqpr = MVE_VLDRWU32 [[COPY]], 0, 0, $noreg, $noreg :: (load (s128), align 8)
732 ; CHECK: [[MVE_VLDRWU32_post:%[0-9]+]]:rgpr, [[MVE_VLDRWU32_post1:%[0-9]+]]:mqpr = MVE_VLDRWU32_post [[COPY]], 4, 0, $noreg, $noreg :: (load (s128), align 8)
733 ; CHECK: $r0 = COPY [[t2ADDri]]
734 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
736 %2:rgpr = nuw t2ADDri %0, 32, 14, $noreg, $noreg
737 %1:mqpr = MVE_VLDRWU32 %0, 0, 0, $noreg, $noreg :: (load (s128), align 8)
738 %4:rgpr, %3:mqpr = MVE_VLDRWU32_post %0, 4, 0, $noreg, $noreg :: (load (s128), align 8)
740 tBX_RET 14, $noreg, implicit $r0
745 tracksRegLiveness: true
747 - { id: 0, class: gprnopc, preferred-register: '' }
748 - { id: 1, class: mqpr, preferred-register: '' }
749 - { id: 2, class: rgpr, preferred-register: '' }
750 - { id: 3, class: mqpr, preferred-register: '' }
752 - { reg: '$r0', virtual-reg: '%0' }
753 - { reg: '$q0', virtual-reg: '%1' }
758 ; CHECK-LABEL: name: badScale
759 ; CHECK: liveins: $r0, $q0
760 ; CHECK: [[COPY:%[0-9]+]]:gprnopc = COPY $r0
761 ; CHECK: [[MVE_VLDRWU32_:%[0-9]+]]:mqpr = MVE_VLDRWU32 [[COPY]], 0, 0, $noreg, $noreg :: (load (s128), align 8)
762 ; CHECK: [[t2SUBri:%[0-9]+]]:rgpr = nuw t2SUBri [[COPY]], 3, 14 /* CC::al */, $noreg, $noreg
763 ; CHECK: [[MVE_VLDRWU32_1:%[0-9]+]]:mqpr = MVE_VLDRWU32 [[COPY]], 4, 0, $noreg, $noreg :: (load (s128), align 8)
764 ; CHECK: $r0 = COPY [[t2SUBri]]
765 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
766 %0:gprnopc = COPY $r0
767 %1:mqpr = MVE_VLDRWU32 %0, 0, 0, $noreg, $noreg :: (load (s128), align 8)
768 %2:rgpr = nuw t2SUBri %0, 3, 14, $noreg, $noreg
769 %3:mqpr = MVE_VLDRWU32 %0, 4, 0, $noreg, $noreg :: (load (s128), align 8)
771 tBX_RET 14, $noreg, implicit $r0
776 tracksRegLiveness: true
778 - { id: 0, class: gprnopc, preferred-register: '' }
779 - { id: 1, class: mqpr, preferred-register: '' }
780 - { id: 2, class: rgpr, preferred-register: '' }
781 - { id: 3, class: mqpr, preferred-register: '' }
783 - { reg: '$r0', virtual-reg: '%0' }
784 - { reg: '$q0', virtual-reg: '%1' }
789 ; CHECK-LABEL: name: badRange
790 ; CHECK: liveins: $r0, $q0
791 ; CHECK: [[COPY:%[0-9]+]]:gprnopc = COPY $r0
792 ; CHECK: [[MVE_VLDRWU32_:%[0-9]+]]:mqpr = MVE_VLDRWU32 [[COPY]], 0, 0, $noreg, $noreg :: (load (s128), align 8)
793 ; CHECK: [[t2SUBri:%[0-9]+]]:rgpr = nuw t2SUBri [[COPY]], -300, 14 /* CC::al */, $noreg, $noreg
794 ; CHECK: [[MVE_VLDRWU32_1:%[0-9]+]]:mqpr = MVE_VLDRWU32 [[COPY]], -300, 0, $noreg, $noreg :: (load (s128), align 8)
795 ; CHECK: $r0 = COPY [[t2SUBri]]
796 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
797 %0:gprnopc = COPY $r0
798 %1:mqpr = MVE_VLDRWU32 %0, 0, 0, $noreg, $noreg :: (load (s128), align 8)
799 %2:rgpr = nuw t2SUBri %0, -300, 14, $noreg, $noreg
800 %3:mqpr = MVE_VLDRWU32 %0, -300, 0, $noreg, $noreg :: (load (s128), align 8)
802 tBX_RET 14, $noreg, implicit $r0
807 tracksRegLiveness: true
809 - { id: 0, class: gprnopc, preferred-register: '' }
810 - { id: 1, class: mqpr, preferred-register: '' }
811 - { id: 2, class: rgpr, preferred-register: '' }
812 - { id: 3, class: mqpr, preferred-register: '' }
813 - { id: 4, class: rgpr, preferred-register: '' }
815 - { reg: '$r0', virtual-reg: '%0' }
816 - { reg: '$q0', virtual-reg: '%1' }
821 ; CHECK-LABEL: name: addUseOK
822 ; CHECK: liveins: $r0, $q0
823 ; CHECK: [[COPY:%[0-9]+]]:rgpr = COPY $r0
824 ; CHECK: [[MVE_VLDRWU32_post:%[0-9]+]]:rgpr, [[MVE_VLDRWU32_post1:%[0-9]+]]:mqpr = MVE_VLDRWU32_post [[COPY]], -32, 0, $noreg, $noreg :: (load (s128), align 8)
825 ; CHECK: [[MVE_VLDRWU32_:%[0-9]+]]:mqpr = MVE_VLDRWU32 [[MVE_VLDRWU32_post]], 36, 0, $noreg, $noreg :: (load (s128), align 8)
826 ; CHECK: [[t2LSRri:%[0-9]+]]:rgpr = nuw t2LSRri [[MVE_VLDRWU32_post]], 2, 14 /* CC::al */, $noreg, $noreg
827 ; CHECK: $r0 = COPY [[t2LSRri]]
828 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
829 %0:gprnopc = COPY $r0
830 %1:mqpr = MVE_VLDRWU32 %0, 0, 0, $noreg, $noreg :: (load (s128), align 8)
831 %2:rgpr = nuw t2SUBri %0, 32, 14, $noreg, $noreg
832 %3:mqpr = MVE_VLDRWU32 %0, 4, 0, $noreg, $noreg :: (load (s128), align 8)
833 %4:rgpr = nuw t2LSRri %2, 2, 14, $noreg, $noreg
835 tBX_RET 14, $noreg, implicit $r0
840 tracksRegLiveness: true
842 - { id: 0, class: gprnopc, preferred-register: '' }
843 - { id: 1, class: mqpr, preferred-register: '' }
844 - { id: 2, class: rgpr, preferred-register: '' }
845 - { id: 3, class: mqpr, preferred-register: '' }
846 - { id: 4, class: rgpr, preferred-register: '' }
848 - { reg: '$r0', virtual-reg: '%0' }
849 - { reg: '$q0', virtual-reg: '%1' }
854 ; CHECK-LABEL: name: addUseDom
855 ; CHECK: liveins: $r0, $q0
856 ; CHECK: [[COPY:%[0-9]+]]:gprnopc = COPY $r0
857 ; CHECK: [[t2SUBri:%[0-9]+]]:rgpr = nuw t2SUBri [[COPY]], 32, 14 /* CC::al */, $noreg, $noreg
858 ; CHECK: [[t2LSRri:%[0-9]+]]:rgpr = nuw t2LSRri [[t2SUBri]], 2, 14 /* CC::al */, $noreg, $noreg
859 ; CHECK: [[MVE_VLDRWU32_:%[0-9]+]]:mqpr = MVE_VLDRWU32 [[COPY]], 0, 0, $noreg, $noreg :: (load (s128), align 8)
860 ; CHECK: [[MVE_VLDRWU32_1:%[0-9]+]]:mqpr = MVE_VLDRWU32 [[COPY]], 4, 0, $noreg, $noreg :: (load (s128), align 8)
861 ; CHECK: $r0 = COPY [[t2LSRri]]
862 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
863 %0:gprnopc = COPY $r0
864 %2:rgpr = nuw t2SUBri %0, 32, 14, $noreg, $noreg
865 %4:rgpr = nuw t2LSRri %2, 2, 14, $noreg, $noreg
866 %1:mqpr = MVE_VLDRWU32 %0, 0, 0, $noreg, $noreg :: (load (s128), align 8)
867 %3:mqpr = MVE_VLDRWU32 %0, 4, 0, $noreg, $noreg :: (load (s128), align 8)
869 tBX_RET 14, $noreg, implicit $r0
874 tracksRegLiveness: true
876 - { id: 0, class: gprnopc, preferred-register: '' }
877 - { id: 1, class: mqpr, preferred-register: '' }
878 - { id: 2, class: rgpr, preferred-register: '' }
879 - { id: 3, class: mqpr, preferred-register: '' }
880 - { id: 4, class: rgpr, preferred-register: '' }
882 - { reg: '$r0', virtual-reg: '%0' }
883 - { reg: '$q0', virtual-reg: '%1' }
888 ; CHECK-LABEL: name: addUseKilled
889 ; CHECK: liveins: $r0, $q0
890 ; CHECK: [[COPY:%[0-9]+]]:rgpr = COPY $r0
891 ; CHECK: [[MVE_VLDRWU32_post:%[0-9]+]]:rgpr, [[MVE_VLDRWU32_post1:%[0-9]+]]:mqpr = MVE_VLDRWU32_post [[COPY]], -32, 0, $noreg, $noreg :: (load (s128), align 8)
892 ; CHECK: [[t2LSRri:%[0-9]+]]:rgpr = nuw t2LSRri [[MVE_VLDRWU32_post]], 2, 14 /* CC::al */, $noreg, $noreg
893 ; CHECK: [[MVE_VLDRWU32_:%[0-9]+]]:mqpr = MVE_VLDRWU32 [[MVE_VLDRWU32_post]], 36, 0, $noreg, $noreg :: (load (s128), align 8)
894 ; CHECK: $r0 = COPY [[t2LSRri]]
895 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
896 %0:gprnopc = COPY $r0
897 %1:mqpr = MVE_VLDRWU32 %0, 0, 0, $noreg, $noreg :: (load (s128), align 8)
898 %2:rgpr = nuw t2SUBri %0, 32, 14, $noreg, $noreg
899 %4:rgpr = nuw t2LSRri killed %2, 2, 14, $noreg, $noreg
900 %3:mqpr = MVE_VLDRWU32 %0, 4, 0, $noreg, $noreg :: (load (s128), align 8)
902 tBX_RET 14, $noreg, implicit $r0
906 name: MVE_VLDRWU32_post
907 tracksRegLiveness: true
909 - { id: 0, class: rgpr, preferred-register: '' }
910 - { id: 1, class: mqpr, preferred-register: '' }
911 - { id: 2, class: rgpr, preferred-register: '' }
913 - { reg: '$r0', virtual-reg: '%0' }
914 - { reg: '$q0', virtual-reg: '%1' }
919 ; CHECK-LABEL: name: MVE_VLDRWU32_post
920 ; CHECK: liveins: $r0, $q0
921 ; CHECK: [[COPY:%[0-9]+]]:rgpr = COPY $r0
922 ; CHECK: [[MVE_VLDRWU32_post:%[0-9]+]]:rgpr, [[MVE_VLDRWU32_post1:%[0-9]+]]:mqpr = MVE_VLDRWU32_post [[COPY]], 32, 0, $noreg, $noreg :: (load (s128), align 8)
923 ; CHECK: [[MVE_VLDRWU32_:%[0-9]+]]:mqpr = MVE_VLDRWU32 [[MVE_VLDRWU32_post]], -16, 0, $noreg, $noreg :: (load (s128), align 8)
924 ; CHECK: $r0 = COPY [[MVE_VLDRWU32_post]]
925 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
927 %2:rgpr, %1:mqpr = MVE_VLDRWU32_post %0, 32, 0, $noreg, $noreg :: (load (s128), align 8)
928 %1:mqpr = MVE_VLDRWU32 %0, 16, 0, $noreg, $noreg :: (load (s128), align 8)
930 tBX_RET 14, $noreg, implicit $r0
934 name: MVE_VLDRHU16_post
935 tracksRegLiveness: true
937 - { id: 0, class: rgpr, preferred-register: '' }
938 - { id: 1, class: mqpr, preferred-register: '' }
939 - { id: 2, class: rgpr, preferred-register: '' }
941 - { reg: '$r0', virtual-reg: '%0' }
942 - { reg: '$q0', virtual-reg: '%1' }
947 ; CHECK-LABEL: name: MVE_VLDRHU16_post
948 ; CHECK: liveins: $r0, $q0
949 ; CHECK: [[COPY:%[0-9]+]]:rgpr = COPY $r0
950 ; CHECK: [[MVE_VLDRHU16_post:%[0-9]+]]:rgpr, [[MVE_VLDRHU16_post1:%[0-9]+]]:mqpr = MVE_VLDRHU16_post [[COPY]], 32, 0, $noreg, $noreg :: (load (s128), align 8)
951 ; CHECK: [[MVE_VLDRHU16_:%[0-9]+]]:mqpr = MVE_VLDRHU16 [[MVE_VLDRHU16_post]], -16, 0, $noreg, $noreg :: (load (s128), align 8)
952 ; CHECK: $r0 = COPY [[MVE_VLDRHU16_post]]
953 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
955 %2:rgpr, %1:mqpr = MVE_VLDRHU16_post %0, 32, 0, $noreg, $noreg :: (load (s128), align 8)
956 %1:mqpr = MVE_VLDRHU16 %0, 16, 0, $noreg, $noreg :: (load (s128), align 8)
958 tBX_RET 14, $noreg, implicit $r0
962 name: MVE_VLDRBU8_post
963 tracksRegLiveness: true
965 - { id: 0, class: rgpr, preferred-register: '' }
966 - { id: 1, class: mqpr, preferred-register: '' }
967 - { id: 2, class: rgpr, preferred-register: '' }
969 - { reg: '$r0', virtual-reg: '%0' }
970 - { reg: '$q0', virtual-reg: '%1' }
975 ; CHECK-LABEL: name: MVE_VLDRBU8_post
976 ; CHECK: liveins: $r0, $q0
977 ; CHECK: [[COPY:%[0-9]+]]:rgpr = COPY $r0
978 ; CHECK: [[MVE_VLDRBU8_post:%[0-9]+]]:rgpr, [[MVE_VLDRBU8_post1:%[0-9]+]]:mqpr = MVE_VLDRBU8_post [[COPY]], 32, 0, $noreg, $noreg :: (load (s128), align 8)
979 ; CHECK: [[MVE_VLDRBU8_:%[0-9]+]]:mqpr = MVE_VLDRBU8 [[MVE_VLDRBU8_post]], -16, 0, $noreg, $noreg :: (load (s128), align 8)
980 ; CHECK: $r0 = COPY [[MVE_VLDRBU8_post]]
981 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
983 %2:rgpr, %1:mqpr = MVE_VLDRBU8_post %0, 32, 0, $noreg, $noreg :: (load (s128), align 8)
984 %1:mqpr = MVE_VLDRBU8 %0, 16, 0, $noreg, $noreg :: (load (s128), align 8)
986 tBX_RET 14, $noreg, implicit $r0
990 name: MVE_VLDRBS32_post
991 tracksRegLiveness: true
993 - { id: 0, class: tgpr, preferred-register: '' }
994 - { id: 1, class: mqpr, preferred-register: '' }
995 - { id: 2, class: tgpr, preferred-register: '' }
997 - { reg: '$r0', virtual-reg: '%0' }
998 - { reg: '$q0', virtual-reg: '%1' }
1003 ; CHECK-LABEL: name: MVE_VLDRBS32_post
1004 ; CHECK: liveins: $r0, $q0
1005 ; CHECK: [[COPY:%[0-9]+]]:tgpr = COPY $r0
1006 ; CHECK: [[MVE_VLDRBS32_post:%[0-9]+]]:tgpr, [[MVE_VLDRBS32_post1:%[0-9]+]]:mqpr = MVE_VLDRBS32_post [[COPY]], 32, 0, $noreg, $noreg :: (load (s128), align 8)
1007 ; CHECK: [[MVE_VLDRBS32_:%[0-9]+]]:mqpr = MVE_VLDRBS32 [[MVE_VLDRBS32_post]], -16, 0, $noreg, $noreg :: (load (s128), align 8)
1008 ; CHECK: $r0 = COPY [[MVE_VLDRBS32_post]]
1009 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
1011 %2:tgpr, %1:mqpr = MVE_VLDRBS32_post %0, 32, 0, $noreg, $noreg :: (load (s128), align 8)
1012 %1:mqpr = MVE_VLDRBS32 %0, 16, 0, $noreg, $noreg :: (load (s128), align 8)
1014 tBX_RET 14, $noreg, implicit $r0
1018 name: MVE_VLDRBU32_post
1019 tracksRegLiveness: true
1021 - { id: 0, class: tgpr, preferred-register: '' }
1022 - { id: 1, class: mqpr, preferred-register: '' }
1023 - { id: 2, class: tgpr, preferred-register: '' }
1025 - { reg: '$r0', virtual-reg: '%0' }
1026 - { reg: '$q0', virtual-reg: '%1' }
1031 ; CHECK-LABEL: name: MVE_VLDRBU32_post
1032 ; CHECK: liveins: $r0, $q0
1033 ; CHECK: [[COPY:%[0-9]+]]:tgpr = COPY $r0
1034 ; CHECK: [[MVE_VLDRBU32_post:%[0-9]+]]:tgpr, [[MVE_VLDRBU32_post1:%[0-9]+]]:mqpr = MVE_VLDRBU32_post [[COPY]], 32, 0, $noreg, $noreg :: (load (s128), align 8)
1035 ; CHECK: [[MVE_VLDRBU32_:%[0-9]+]]:mqpr = MVE_VLDRBU32 [[MVE_VLDRBU32_post]], -16, 0, $noreg, $noreg :: (load (s128), align 8)
1036 ; CHECK: $r0 = COPY [[MVE_VLDRBU32_post]]
1037 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
1039 %2:tgpr, %1:mqpr = MVE_VLDRBU32_post %0, 32, 0, $noreg, $noreg :: (load (s128), align 8)
1040 %1:mqpr = MVE_VLDRBU32 %0, 16, 0, $noreg, $noreg :: (load (s128), align 8)
1042 tBX_RET 14, $noreg, implicit $r0
1046 name: MVE_VLDRHS32_post
1047 tracksRegLiveness: true
1049 - { id: 0, class: tgpr, preferred-register: '' }
1050 - { id: 1, class: mqpr, preferred-register: '' }
1051 - { id: 2, class: tgpr, preferred-register: '' }
1053 - { reg: '$r0', virtual-reg: '%0' }
1054 - { reg: '$q0', virtual-reg: '%1' }
1059 ; CHECK-LABEL: name: MVE_VLDRHS32_post
1060 ; CHECK: liveins: $r0, $q0
1061 ; CHECK: [[COPY:%[0-9]+]]:tgpr = COPY $r0
1062 ; CHECK: [[MVE_VLDRHS32_post:%[0-9]+]]:tgpr, [[MVE_VLDRHS32_post1:%[0-9]+]]:mqpr = MVE_VLDRHS32_post [[COPY]], 32, 0, $noreg, $noreg :: (load (s128), align 8)
1063 ; CHECK: [[MVE_VLDRHS32_:%[0-9]+]]:mqpr = MVE_VLDRHS32 [[MVE_VLDRHS32_post]], -16, 0, $noreg, $noreg :: (load (s128), align 8)
1064 ; CHECK: $r0 = COPY [[MVE_VLDRHS32_post]]
1065 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
1067 %2:tgpr, %1:mqpr = MVE_VLDRHS32_post %0, 32, 0, $noreg, $noreg :: (load (s128), align 8)
1068 %1:mqpr = MVE_VLDRHS32 %0, 16, 0, $noreg, $noreg :: (load (s128), align 8)
1070 tBX_RET 14, $noreg, implicit $r0
1074 name: MVE_VLDRHU32_post
1075 tracksRegLiveness: true
1077 - { id: 0, class: tgpr, preferred-register: '' }
1078 - { id: 1, class: mqpr, preferred-register: '' }
1079 - { id: 2, class: tgpr, preferred-register: '' }
1081 - { reg: '$r0', virtual-reg: '%0' }
1082 - { reg: '$q0', virtual-reg: '%1' }
1087 ; CHECK-LABEL: name: MVE_VLDRHU32_post
1088 ; CHECK: liveins: $r0, $q0
1089 ; CHECK: [[COPY:%[0-9]+]]:tgpr = COPY $r0
1090 ; CHECK: [[MVE_VLDRHU32_post:%[0-9]+]]:tgpr, [[MVE_VLDRHU32_post1:%[0-9]+]]:mqpr = MVE_VLDRHU32_post [[COPY]], 32, 0, $noreg, $noreg :: (load (s128), align 8)
1091 ; CHECK: [[MVE_VLDRHU32_:%[0-9]+]]:mqpr = MVE_VLDRHU32 [[MVE_VLDRHU32_post]], -16, 0, $noreg, $noreg :: (load (s128), align 8)
1092 ; CHECK: $r0 = COPY [[MVE_VLDRHU32_post]]
1093 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
1095 %2:tgpr, %1:mqpr = MVE_VLDRHU32_post %0, 32, 0, $noreg, $noreg :: (load (s128), align 8)
1096 %1:mqpr = MVE_VLDRHU32 %0, 16, 0, $noreg, $noreg :: (load (s128), align 8)
1098 tBX_RET 14, $noreg, implicit $r0
1102 name: MVE_VLDRBS16_post
1103 tracksRegLiveness: true
1105 - { id: 0, class: tgpr, preferred-register: '' }
1106 - { id: 1, class: mqpr, preferred-register: '' }
1107 - { id: 2, class: tgpr, preferred-register: '' }
1109 - { reg: '$r0', virtual-reg: '%0' }
1110 - { reg: '$q0', virtual-reg: '%1' }
1115 ; CHECK-LABEL: name: MVE_VLDRBS16_post
1116 ; CHECK: liveins: $r0, $q0
1117 ; CHECK: [[COPY:%[0-9]+]]:tgpr = COPY $r0
1118 ; CHECK: [[MVE_VLDRBS16_post:%[0-9]+]]:tgpr, [[MVE_VLDRBS16_post1:%[0-9]+]]:mqpr = MVE_VLDRBS16_post [[COPY]], 32, 0, $noreg, $noreg :: (load (s128), align 8)
1119 ; CHECK: [[MVE_VLDRBS16_:%[0-9]+]]:mqpr = MVE_VLDRBS16 [[MVE_VLDRBS16_post]], -16, 0, $noreg, $noreg :: (load (s128), align 8)
1120 ; CHECK: $r0 = COPY [[MVE_VLDRBS16_post]]
1121 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
1123 %2:tgpr, %1:mqpr = MVE_VLDRBS16_post %0, 32, 0, $noreg, $noreg :: (load (s128), align 8)
1124 %1:mqpr = MVE_VLDRBS16 %0, 16, 0, $noreg, $noreg :: (load (s128), align 8)
1126 tBX_RET 14, $noreg, implicit $r0
1130 name: MVE_VLDRBU16_post
1131 tracksRegLiveness: true
1133 - { id: 0, class: tgpr, preferred-register: '' }
1134 - { id: 1, class: mqpr, preferred-register: '' }
1135 - { id: 2, class: tgpr, preferred-register: '' }
1137 - { reg: '$r0', virtual-reg: '%0' }
1138 - { reg: '$q0', virtual-reg: '%1' }
1143 ; CHECK-LABEL: name: MVE_VLDRBU16_post
1144 ; CHECK: liveins: $r0, $q0
1145 ; CHECK: [[COPY:%[0-9]+]]:tgpr = COPY $r0
1146 ; CHECK: [[MVE_VLDRBU16_post:%[0-9]+]]:tgpr, [[MVE_VLDRBU16_post1:%[0-9]+]]:mqpr = MVE_VLDRBU16_post [[COPY]], 32, 0, $noreg, $noreg :: (load (s128), align 8)
1147 ; CHECK: [[MVE_VLDRBU16_:%[0-9]+]]:mqpr = MVE_VLDRBU16 [[MVE_VLDRBU16_post]], -16, 0, $noreg, $noreg :: (load (s128), align 8)
1148 ; CHECK: $r0 = COPY [[MVE_VLDRBU16_post]]
1149 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
1151 %2:tgpr, %1:mqpr = MVE_VLDRBU16_post %0, 32, 0, $noreg, $noreg :: (load (s128), align 8)
1152 %1:mqpr = MVE_VLDRBU16 %0, 16, 0, $noreg, $noreg :: (load (s128), align 8)
1154 tBX_RET 14, $noreg, implicit $r0
1158 name: MVE_VSTRWU32_post
1159 tracksRegLiveness: true
1161 - { id: 0, class: rgpr, preferred-register: '' }
1162 - { id: 1, class: mqpr, preferred-register: '' }
1163 - { id: 2, class: rgpr, preferred-register: '' }
1165 - { reg: '$r0', virtual-reg: '%0' }
1166 - { reg: '$q0', virtual-reg: '%1' }
1171 ; CHECK-LABEL: name: MVE_VSTRWU32_post
1172 ; CHECK: liveins: $r0, $q0
1173 ; CHECK: [[COPY:%[0-9]+]]:mqpr = COPY $q0
1174 ; CHECK: [[COPY1:%[0-9]+]]:rgpr = COPY $r0
1175 ; CHECK: [[MVE_VSTRWU32_post:%[0-9]+]]:rgpr = MVE_VSTRWU32_post [[COPY]], [[COPY1]], 32, 0, $noreg, $noreg :: (store (s128), align 8)
1176 ; CHECK: MVE_VSTRWU32 [[COPY]], [[MVE_VSTRWU32_post]], -16, 0, $noreg, $noreg :: (store (s128), align 8)
1177 ; CHECK: $r0 = COPY [[MVE_VSTRWU32_post]]
1178 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
1181 %2:rgpr = MVE_VSTRWU32_post %1, %0, 32, 0, $noreg, $noreg :: (store (s128), align 8)
1182 MVE_VSTRWU32 %1, %0, 16, 0, $noreg, $noreg :: (store (s128), align 8)
1184 tBX_RET 14, $noreg, implicit $r0
1188 name: MVE_VSTRHU16_post
1189 tracksRegLiveness: true
1191 - { id: 0, class: rgpr, preferred-register: '' }
1192 - { id: 1, class: mqpr, preferred-register: '' }
1193 - { id: 2, class: rgpr, preferred-register: '' }
1195 - { reg: '$r0', virtual-reg: '%0' }
1196 - { reg: '$q0', virtual-reg: '%1' }
1201 ; CHECK-LABEL: name: MVE_VSTRHU16_post
1202 ; CHECK: liveins: $r0, $q0
1203 ; CHECK: [[COPY:%[0-9]+]]:mqpr = COPY $q0
1204 ; CHECK: [[COPY1:%[0-9]+]]:rgpr = COPY $r0
1205 ; CHECK: [[MVE_VSTRHU16_post:%[0-9]+]]:rgpr = MVE_VSTRHU16_post [[COPY]], [[COPY1]], 32, 0, $noreg, $noreg :: (store (s128), align 8)
1206 ; CHECK: MVE_VSTRHU16 [[COPY]], [[MVE_VSTRHU16_post]], -16, 0, $noreg, $noreg :: (store (s128), align 8)
1207 ; CHECK: $r0 = COPY [[MVE_VSTRHU16_post]]
1208 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
1211 %2:rgpr = MVE_VSTRHU16_post %1, %0, 32, 0, $noreg, $noreg :: (store (s128), align 8)
1212 MVE_VSTRHU16 %1, %0, 16, 0, $noreg, $noreg :: (store (s128), align 8)
1214 tBX_RET 14, $noreg, implicit $r0
1218 name: MVE_VSTRBU8_post
1219 tracksRegLiveness: true
1221 - { id: 0, class: rgpr, preferred-register: '' }
1222 - { id: 1, class: mqpr, preferred-register: '' }
1223 - { id: 2, class: rgpr, preferred-register: '' }
1225 - { reg: '$r0', virtual-reg: '%0' }
1226 - { reg: '$q0', virtual-reg: '%1' }
1231 ; CHECK-LABEL: name: MVE_VSTRBU8_post
1232 ; CHECK: liveins: $r0, $q0
1233 ; CHECK: [[COPY:%[0-9]+]]:mqpr = COPY $q0
1234 ; CHECK: [[COPY1:%[0-9]+]]:rgpr = COPY $r0
1235 ; CHECK: [[MVE_VSTRBU8_post:%[0-9]+]]:rgpr = MVE_VSTRBU8_post [[COPY]], [[COPY1]], 32, 0, $noreg, $noreg :: (store (s128), align 8)
1236 ; CHECK: MVE_VSTRBU8 [[COPY]], [[MVE_VSTRBU8_post]], -16, 0, $noreg, $noreg :: (store (s128), align 8)
1237 ; CHECK: $r0 = COPY [[MVE_VSTRBU8_post]]
1238 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
1241 %2:rgpr = MVE_VSTRBU8_post %1, %0, 32, 0, $noreg, $noreg :: (store (s128), align 8)
1242 MVE_VSTRBU8 %1, %0, 16, 0, $noreg, $noreg :: (store (s128), align 8)
1244 tBX_RET 14, $noreg, implicit $r0
1248 name: MVE_VSTRH32_post
1249 tracksRegLiveness: true
1251 - { id: 0, class: tgpr, preferred-register: '' }
1252 - { id: 1, class: mqpr, preferred-register: '' }
1253 - { id: 2, class: tgpr, preferred-register: '' }
1255 - { reg: '$r0', virtual-reg: '%0' }
1256 - { reg: '$q0', virtual-reg: '%1' }
1261 ; CHECK-LABEL: name: MVE_VSTRH32_post
1262 ; CHECK: liveins: $r0, $q0
1263 ; CHECK: [[COPY:%[0-9]+]]:mqpr = COPY $q0
1264 ; CHECK: [[COPY1:%[0-9]+]]:tgpr = COPY $r0
1265 ; CHECK: [[MVE_VSTRH32_post:%[0-9]+]]:tgpr = MVE_VSTRH32_post [[COPY]], [[COPY1]], 32, 0, $noreg, $noreg :: (store (s128), align 8)
1266 ; CHECK: MVE_VSTRH32 [[COPY]], [[MVE_VSTRH32_post]], -16, 0, $noreg, $noreg :: (store (s128), align 8)
1267 ; CHECK: $r0 = COPY [[MVE_VSTRH32_post]]
1268 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
1271 %2:tgpr = MVE_VSTRH32_post %1, %0, 32, 0, $noreg, $noreg :: (store (s128), align 8)
1272 MVE_VSTRH32 %1, %0, 16, 0, $noreg, $noreg :: (store (s128), align 8)
1274 tBX_RET 14, $noreg, implicit $r0
1278 name: MVE_VSTRB32_post
1279 tracksRegLiveness: true
1281 - { id: 0, class: tgpr, preferred-register: '' }
1282 - { id: 1, class: mqpr, preferred-register: '' }
1283 - { id: 2, class: tgpr, preferred-register: '' }
1285 - { reg: '$r0', virtual-reg: '%0' }
1286 - { reg: '$q0', virtual-reg: '%1' }
1291 ; CHECK-LABEL: name: MVE_VSTRB32_post
1292 ; CHECK: liveins: $r0, $q0
1293 ; CHECK: [[COPY:%[0-9]+]]:mqpr = COPY $q0
1294 ; CHECK: [[COPY1:%[0-9]+]]:tgpr = COPY $r0
1295 ; CHECK: [[MVE_VSTRB32_post:%[0-9]+]]:tgpr = MVE_VSTRB32_post [[COPY]], [[COPY1]], 32, 0, $noreg, $noreg :: (store (s128), align 8)
1296 ; CHECK: MVE_VSTRB32 [[COPY]], [[MVE_VSTRB32_post]], -16, 0, $noreg, $noreg :: (store (s128), align 8)
1297 ; CHECK: $r0 = COPY [[MVE_VSTRB32_post]]
1298 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
1301 %2:tgpr = MVE_VSTRB32_post %1, %0, 32, 0, $noreg, $noreg :: (store (s128), align 8)
1302 MVE_VSTRB32 %1, %0, 16, 0, $noreg, $noreg :: (store (s128), align 8)
1304 tBX_RET 14, $noreg, implicit $r0
1308 name: MVE_VSTRB16_post
1309 tracksRegLiveness: true
1311 - { id: 0, class: tgpr, preferred-register: '' }
1312 - { id: 1, class: mqpr, preferred-register: '' }
1313 - { id: 2, class: tgpr, preferred-register: '' }
1315 - { reg: '$r0', virtual-reg: '%0' }
1316 - { reg: '$q0', virtual-reg: '%1' }
1321 ; CHECK-LABEL: name: MVE_VSTRB16_post
1322 ; CHECK: liveins: $r0, $q0
1323 ; CHECK: [[COPY:%[0-9]+]]:mqpr = COPY $q0
1324 ; CHECK: [[COPY1:%[0-9]+]]:tgpr = COPY $r0
1325 ; CHECK: [[MVE_VSTRB16_post:%[0-9]+]]:tgpr = MVE_VSTRB16_post [[COPY]], [[COPY1]], 32, 0, $noreg, $noreg :: (store (s128), align 8)
1326 ; CHECK: MVE_VSTRB16 [[COPY]], [[MVE_VSTRB16_post]], -16, 0, $noreg, $noreg :: (store (s128), align 8)
1327 ; CHECK: $r0 = COPY [[MVE_VSTRB16_post]]
1328 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
1331 %2:tgpr = MVE_VSTRB16_post %1, %0, 32, 0, $noreg, $noreg :: (store (s128), align 8)
1332 MVE_VSTRB16 %1, %0, 16, 0, $noreg, $noreg :: (store (s128), align 8)
1334 tBX_RET 14, $noreg, implicit $r0
1338 name: MVE_VLDRWU32_pre
1339 tracksRegLiveness: true
1341 - { id: 0, class: rgpr, preferred-register: '' }
1342 - { id: 1, class: mqpr, preferred-register: '' }
1343 - { id: 2, class: rgpr, preferred-register: '' }
1345 - { reg: '$r0', virtual-reg: '%0' }
1346 - { reg: '$q0', virtual-reg: '%1' }
1351 ; CHECK-LABEL: name: MVE_VLDRWU32_pre
1352 ; CHECK: liveins: $r0, $q0
1353 ; CHECK: [[COPY:%[0-9]+]]:rgpr = COPY $r0
1354 ; CHECK: [[MVE_VLDRWU32_pre:%[0-9]+]]:rgpr, [[MVE_VLDRWU32_pre1:%[0-9]+]]:mqpr = MVE_VLDRWU32_pre [[COPY]], 32, 0, $noreg, $noreg :: (load (s128), align 8)
1355 ; CHECK: [[MVE_VLDRWU32_:%[0-9]+]]:mqpr = MVE_VLDRWU32 [[MVE_VLDRWU32_pre]], -16, 0, $noreg, $noreg :: (load (s128), align 8)
1356 ; CHECK: $r0 = COPY [[MVE_VLDRWU32_pre]]
1357 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
1359 %2:rgpr, %1:mqpr = MVE_VLDRWU32_pre %0, 32, 0, $noreg, $noreg :: (load (s128), align 8)
1360 %1:mqpr = MVE_VLDRWU32 %0, 16, 0, $noreg, $noreg :: (load (s128), align 8)
1362 tBX_RET 14, $noreg, implicit $r0
1366 name: MVE_VLDRHU16_pre
1367 tracksRegLiveness: true
1369 - { id: 0, class: rgpr, preferred-register: '' }
1370 - { id: 1, class: mqpr, preferred-register: '' }
1371 - { id: 2, class: rgpr, preferred-register: '' }
1373 - { reg: '$r0', virtual-reg: '%0' }
1374 - { reg: '$q0', virtual-reg: '%1' }
1379 ; CHECK-LABEL: name: MVE_VLDRHU16_pre
1380 ; CHECK: liveins: $r0, $q0
1381 ; CHECK: [[COPY:%[0-9]+]]:rgpr = COPY $r0
1382 ; CHECK: [[MVE_VLDRHU16_pre:%[0-9]+]]:rgpr, [[MVE_VLDRHU16_pre1:%[0-9]+]]:mqpr = MVE_VLDRHU16_pre [[COPY]], 32, 0, $noreg, $noreg :: (load (s128), align 8)
1383 ; CHECK: [[MVE_VLDRHU16_:%[0-9]+]]:mqpr = MVE_VLDRHU16 [[MVE_VLDRHU16_pre]], -16, 0, $noreg, $noreg :: (load (s128), align 8)
1384 ; CHECK: $r0 = COPY [[MVE_VLDRHU16_pre]]
1385 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
1387 %2:rgpr, %1:mqpr = MVE_VLDRHU16_pre %0, 32, 0, $noreg, $noreg :: (load (s128), align 8)
1388 %1:mqpr = MVE_VLDRHU16 %0, 16, 0, $noreg, $noreg :: (load (s128), align 8)
1390 tBX_RET 14, $noreg, implicit $r0
1394 name: MVE_VLDRBU8_pre
1395 tracksRegLiveness: true
1397 - { id: 0, class: rgpr, preferred-register: '' }
1398 - { id: 1, class: mqpr, preferred-register: '' }
1399 - { id: 2, class: rgpr, preferred-register: '' }
1401 - { reg: '$r0', virtual-reg: '%0' }
1402 - { reg: '$q0', virtual-reg: '%1' }
1407 ; CHECK-LABEL: name: MVE_VLDRBU8_pre
1408 ; CHECK: liveins: $r0, $q0
1409 ; CHECK: [[COPY:%[0-9]+]]:rgpr = COPY $r0
1410 ; CHECK: [[MVE_VLDRBU8_pre:%[0-9]+]]:rgpr, [[MVE_VLDRBU8_pre1:%[0-9]+]]:mqpr = MVE_VLDRBU8_pre [[COPY]], 32, 0, $noreg, $noreg :: (load (s128), align 8)
1411 ; CHECK: [[MVE_VLDRBU8_:%[0-9]+]]:mqpr = MVE_VLDRBU8 [[MVE_VLDRBU8_pre]], -16, 0, $noreg, $noreg :: (load (s128), align 8)
1412 ; CHECK: $r0 = COPY [[MVE_VLDRBU8_pre]]
1413 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
1415 %2:rgpr, %1:mqpr = MVE_VLDRBU8_pre %0, 32, 0, $noreg, $noreg :: (load (s128), align 8)
1416 %1:mqpr = MVE_VLDRBU8 %0, 16, 0, $noreg, $noreg :: (load (s128), align 8)
1418 tBX_RET 14, $noreg, implicit $r0
1422 name: MVE_VLDRBS32_pre
1423 tracksRegLiveness: true
1425 - { id: 0, class: tgpr, preferred-register: '' }
1426 - { id: 1, class: mqpr, preferred-register: '' }
1427 - { id: 2, class: tgpr, preferred-register: '' }
1429 - { reg: '$r0', virtual-reg: '%0' }
1430 - { reg: '$q0', virtual-reg: '%1' }
1435 ; CHECK-LABEL: name: MVE_VLDRBS32_pre
1436 ; CHECK: liveins: $r0, $q0
1437 ; CHECK: [[COPY:%[0-9]+]]:tgpr = COPY $r0
1438 ; CHECK: [[MVE_VLDRBS32_pre:%[0-9]+]]:tgpr, [[MVE_VLDRBS32_pre1:%[0-9]+]]:mqpr = MVE_VLDRBS32_pre [[COPY]], 32, 0, $noreg, $noreg :: (load (s128), align 8)
1439 ; CHECK: [[MVE_VLDRBS32_:%[0-9]+]]:mqpr = MVE_VLDRBS32 [[MVE_VLDRBS32_pre]], -16, 0, $noreg, $noreg :: (load (s128), align 8)
1440 ; CHECK: $r0 = COPY [[MVE_VLDRBS32_pre]]
1441 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
1443 %2:tgpr, %1:mqpr = MVE_VLDRBS32_pre %0, 32, 0, $noreg, $noreg :: (load (s128), align 8)
1444 %1:mqpr = MVE_VLDRBS32 %0, 16, 0, $noreg, $noreg :: (load (s128), align 8)
1446 tBX_RET 14, $noreg, implicit $r0
1450 name: MVE_VLDRBU32_pre
1451 tracksRegLiveness: true
1453 - { id: 0, class: tgpr, preferred-register: '' }
1454 - { id: 1, class: mqpr, preferred-register: '' }
1455 - { id: 2, class: tgpr, preferred-register: '' }
1457 - { reg: '$r0', virtual-reg: '%0' }
1458 - { reg: '$q0', virtual-reg: '%1' }
1463 ; CHECK-LABEL: name: MVE_VLDRBU32_pre
1464 ; CHECK: liveins: $r0, $q0
1465 ; CHECK: [[COPY:%[0-9]+]]:tgpr = COPY $r0
1466 ; CHECK: [[MVE_VLDRBU32_pre:%[0-9]+]]:tgpr, [[MVE_VLDRBU32_pre1:%[0-9]+]]:mqpr = MVE_VLDRBU32_pre [[COPY]], 32, 0, $noreg, $noreg :: (load (s128), align 8)
1467 ; CHECK: [[MVE_VLDRBU32_:%[0-9]+]]:mqpr = MVE_VLDRBU32 [[MVE_VLDRBU32_pre]], -16, 0, $noreg, $noreg :: (load (s128), align 8)
1468 ; CHECK: $r0 = COPY [[MVE_VLDRBU32_pre]]
1469 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
1471 %2:tgpr, %1:mqpr = MVE_VLDRBU32_pre %0, 32, 0, $noreg, $noreg :: (load (s128), align 8)
1472 %1:mqpr = MVE_VLDRBU32 %0, 16, 0, $noreg, $noreg :: (load (s128), align 8)
1474 tBX_RET 14, $noreg, implicit $r0
1478 name: MVE_VLDRHS32_pre
1479 tracksRegLiveness: true
1481 - { id: 0, class: tgpr, preferred-register: '' }
1482 - { id: 1, class: mqpr, preferred-register: '' }
1483 - { id: 2, class: tgpr, preferred-register: '' }
1485 - { reg: '$r0', virtual-reg: '%0' }
1486 - { reg: '$q0', virtual-reg: '%1' }
1491 ; CHECK-LABEL: name: MVE_VLDRHS32_pre
1492 ; CHECK: liveins: $r0, $q0
1493 ; CHECK: [[COPY:%[0-9]+]]:tgpr = COPY $r0
1494 ; CHECK: [[MVE_VLDRHS32_pre:%[0-9]+]]:tgpr, [[MVE_VLDRHS32_pre1:%[0-9]+]]:mqpr = MVE_VLDRHS32_pre [[COPY]], 32, 0, $noreg, $noreg :: (load (s128), align 8)
1495 ; CHECK: [[MVE_VLDRHS32_:%[0-9]+]]:mqpr = MVE_VLDRHS32 [[MVE_VLDRHS32_pre]], -16, 0, $noreg, $noreg :: (load (s128), align 8)
1496 ; CHECK: $r0 = COPY [[MVE_VLDRHS32_pre]]
1497 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
1499 %2:tgpr, %1:mqpr = MVE_VLDRHS32_pre %0, 32, 0, $noreg, $noreg :: (load (s128), align 8)
1500 %1:mqpr = MVE_VLDRHS32 %0, 16, 0, $noreg, $noreg :: (load (s128), align 8)
1502 tBX_RET 14, $noreg, implicit $r0
1506 name: MVE_VLDRHU32_pre
1507 tracksRegLiveness: true
1509 - { id: 0, class: tgpr, preferred-register: '' }
1510 - { id: 1, class: mqpr, preferred-register: '' }
1511 - { id: 2, class: tgpr, preferred-register: '' }
1513 - { reg: '$r0', virtual-reg: '%0' }
1514 - { reg: '$q0', virtual-reg: '%1' }
1519 ; CHECK-LABEL: name: MVE_VLDRHU32_pre
1520 ; CHECK: liveins: $r0, $q0
1521 ; CHECK: [[COPY:%[0-9]+]]:tgpr = COPY $r0
1522 ; CHECK: [[MVE_VLDRHU32_pre:%[0-9]+]]:tgpr, [[MVE_VLDRHU32_pre1:%[0-9]+]]:mqpr = MVE_VLDRHU32_pre [[COPY]], 32, 0, $noreg, $noreg :: (load (s128), align 8)
1523 ; CHECK: [[MVE_VLDRHU32_:%[0-9]+]]:mqpr = MVE_VLDRHU32 [[MVE_VLDRHU32_pre]], -16, 0, $noreg, $noreg :: (load (s128), align 8)
1524 ; CHECK: $r0 = COPY [[MVE_VLDRHU32_pre]]
1525 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
1527 %2:tgpr, %1:mqpr = MVE_VLDRHU32_pre %0, 32, 0, $noreg, $noreg :: (load (s128), align 8)
1528 %1:mqpr = MVE_VLDRHU32 %0, 16, 0, $noreg, $noreg :: (load (s128), align 8)
1530 tBX_RET 14, $noreg, implicit $r0
1534 name: MVE_VLDRBS16_pre
1535 tracksRegLiveness: true
1537 - { id: 0, class: tgpr, preferred-register: '' }
1538 - { id: 1, class: mqpr, preferred-register: '' }
1539 - { id: 2, class: tgpr, preferred-register: '' }
1541 - { reg: '$r0', virtual-reg: '%0' }
1542 - { reg: '$q0', virtual-reg: '%1' }
1547 ; CHECK-LABEL: name: MVE_VLDRBS16_pre
1548 ; CHECK: liveins: $r0, $q0
1549 ; CHECK: [[COPY:%[0-9]+]]:tgpr = COPY $r0
1550 ; CHECK: [[MVE_VLDRBS16_pre:%[0-9]+]]:tgpr, [[MVE_VLDRBS16_pre1:%[0-9]+]]:mqpr = MVE_VLDRBS16_pre [[COPY]], 32, 0, $noreg, $noreg :: (load (s128), align 8)
1551 ; CHECK: [[MVE_VLDRBS16_:%[0-9]+]]:mqpr = MVE_VLDRBS16 [[MVE_VLDRBS16_pre]], -16, 0, $noreg, $noreg :: (load (s128), align 8)
1552 ; CHECK: $r0 = COPY [[MVE_VLDRBS16_pre]]
1553 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
1555 %2:tgpr, %1:mqpr = MVE_VLDRBS16_pre %0, 32, 0, $noreg, $noreg :: (load (s128), align 8)
1556 %1:mqpr = MVE_VLDRBS16 %0, 16, 0, $noreg, $noreg :: (load (s128), align 8)
1558 tBX_RET 14, $noreg, implicit $r0
1562 name: MVE_VLDRBU16_pre
1563 tracksRegLiveness: true
1565 - { id: 0, class: tgpr, preferred-register: '' }
1566 - { id: 1, class: mqpr, preferred-register: '' }
1567 - { id: 2, class: tgpr, preferred-register: '' }
1569 - { reg: '$r0', virtual-reg: '%0' }
1570 - { reg: '$q0', virtual-reg: '%1' }
1575 ; CHECK-LABEL: name: MVE_VLDRBU16_pre
1576 ; CHECK: liveins: $r0, $q0
1577 ; CHECK: [[COPY:%[0-9]+]]:tgpr = COPY $r0
1578 ; CHECK: [[MVE_VLDRBU16_pre:%[0-9]+]]:tgpr, [[MVE_VLDRBU16_pre1:%[0-9]+]]:mqpr = MVE_VLDRBU16_pre [[COPY]], 32, 0, $noreg, $noreg :: (load (s128), align 8)
1579 ; CHECK: [[MVE_VLDRBU16_:%[0-9]+]]:mqpr = MVE_VLDRBU16 [[MVE_VLDRBU16_pre]], -16, 0, $noreg, $noreg :: (load (s128), align 8)
1580 ; CHECK: $r0 = COPY [[MVE_VLDRBU16_pre]]
1581 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
1583 %2:tgpr, %1:mqpr = MVE_VLDRBU16_pre %0, 32, 0, $noreg, $noreg :: (load (s128), align 8)
1584 %1:mqpr = MVE_VLDRBU16 %0, 16, 0, $noreg, $noreg :: (load (s128), align 8)
1586 tBX_RET 14, $noreg, implicit $r0
1590 name: MVE_VSTRWU32_pre
1591 tracksRegLiveness: true
1593 - { id: 0, class: rgpr, preferred-register: '' }
1594 - { id: 1, class: mqpr, preferred-register: '' }
1595 - { id: 2, class: rgpr, preferred-register: '' }
1597 - { reg: '$r0', virtual-reg: '%0' }
1598 - { reg: '$q0', virtual-reg: '%1' }
1603 ; CHECK-LABEL: name: MVE_VSTRWU32_pre
1604 ; CHECK: liveins: $r0, $q0
1605 ; CHECK: [[COPY:%[0-9]+]]:mqpr = COPY $q0
1606 ; CHECK: [[COPY1:%[0-9]+]]:rgpr = COPY $r0
1607 ; CHECK: [[MVE_VSTRWU32_pre:%[0-9]+]]:rgpr = MVE_VSTRWU32_pre [[COPY]], [[COPY1]], 32, 0, $noreg, $noreg :: (store (s128), align 8)
1608 ; CHECK: MVE_VSTRWU32 [[COPY]], [[MVE_VSTRWU32_pre]], -16, 0, $noreg, $noreg :: (store (s128), align 8)
1609 ; CHECK: $r0 = COPY [[MVE_VSTRWU32_pre]]
1610 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
1613 %2:rgpr = MVE_VSTRWU32_pre %1, %0, 32, 0, $noreg, $noreg :: (store (s128), align 8)
1614 MVE_VSTRWU32 %1, %0, 16, 0, $noreg, $noreg :: (store (s128), align 8)
1616 tBX_RET 14, $noreg, implicit $r0
1620 name: MVE_VSTRHU16_pre
1621 tracksRegLiveness: true
1623 - { id: 0, class: rgpr, preferred-register: '' }
1624 - { id: 1, class: mqpr, preferred-register: '' }
1625 - { id: 2, class: rgpr, preferred-register: '' }
1627 - { reg: '$r0', virtual-reg: '%0' }
1628 - { reg: '$q0', virtual-reg: '%1' }
1633 ; CHECK-LABEL: name: MVE_VSTRHU16_pre
1634 ; CHECK: liveins: $r0, $q0
1635 ; CHECK: [[COPY:%[0-9]+]]:mqpr = COPY $q0
1636 ; CHECK: [[COPY1:%[0-9]+]]:rgpr = COPY $r0
1637 ; CHECK: [[MVE_VSTRHU16_pre:%[0-9]+]]:rgpr = MVE_VSTRHU16_pre [[COPY]], [[COPY1]], 32, 0, $noreg, $noreg :: (store (s128), align 8)
1638 ; CHECK: MVE_VSTRHU16 [[COPY]], [[MVE_VSTRHU16_pre]], -16, 0, $noreg, $noreg :: (store (s128), align 8)
1639 ; CHECK: $r0 = COPY [[MVE_VSTRHU16_pre]]
1640 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
1643 %2:rgpr = MVE_VSTRHU16_pre %1, %0, 32, 0, $noreg, $noreg :: (store (s128), align 8)
1644 MVE_VSTRHU16 %1, %0, 16, 0, $noreg, $noreg :: (store (s128), align 8)
1646 tBX_RET 14, $noreg, implicit $r0
1650 name: MVE_VSTRBU8_pre
1651 tracksRegLiveness: true
1653 - { id: 0, class: rgpr, preferred-register: '' }
1654 - { id: 1, class: mqpr, preferred-register: '' }
1655 - { id: 2, class: rgpr, preferred-register: '' }
1657 - { reg: '$r0', virtual-reg: '%0' }
1658 - { reg: '$q0', virtual-reg: '%1' }
1663 ; CHECK-LABEL: name: MVE_VSTRBU8_pre
1664 ; CHECK: liveins: $r0, $q0
1665 ; CHECK: [[COPY:%[0-9]+]]:mqpr = COPY $q0
1666 ; CHECK: [[COPY1:%[0-9]+]]:rgpr = COPY $r0
1667 ; CHECK: [[MVE_VSTRBU8_pre:%[0-9]+]]:rgpr = MVE_VSTRBU8_pre [[COPY]], [[COPY1]], 32, 0, $noreg, $noreg :: (store (s128), align 8)
1668 ; CHECK: MVE_VSTRBU8 [[COPY]], [[MVE_VSTRBU8_pre]], -16, 0, $noreg, $noreg :: (store (s128), align 8)
1669 ; CHECK: $r0 = COPY [[MVE_VSTRBU8_pre]]
1670 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
1673 %2:rgpr = MVE_VSTRBU8_pre %1, %0, 32, 0, $noreg, $noreg :: (store (s128), align 8)
1674 MVE_VSTRBU8 %1, %0, 16, 0, $noreg, $noreg :: (store (s128), align 8)
1676 tBX_RET 14, $noreg, implicit $r0
1680 name: MVE_VSTRH32_pre
1681 tracksRegLiveness: true
1683 - { id: 0, class: tgpr, preferred-register: '' }
1684 - { id: 1, class: mqpr, preferred-register: '' }
1685 - { id: 2, class: tgpr, preferred-register: '' }
1687 - { reg: '$r0', virtual-reg: '%0' }
1688 - { reg: '$q0', virtual-reg: '%1' }
1693 ; CHECK-LABEL: name: MVE_VSTRH32_pre
1694 ; CHECK: liveins: $r0, $q0
1695 ; CHECK: [[COPY:%[0-9]+]]:mqpr = COPY $q0
1696 ; CHECK: [[COPY1:%[0-9]+]]:tgpr = COPY $r0
1697 ; CHECK: [[MVE_VSTRH32_pre:%[0-9]+]]:tgpr = MVE_VSTRH32_pre [[COPY]], [[COPY1]], 32, 0, $noreg, $noreg :: (store (s128), align 8)
1698 ; CHECK: MVE_VSTRH32 [[COPY]], [[MVE_VSTRH32_pre]], -16, 0, $noreg, $noreg :: (store (s128), align 8)
1699 ; CHECK: $r0 = COPY [[MVE_VSTRH32_pre]]
1700 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
1703 %2:tgpr = MVE_VSTRH32_pre %1, %0, 32, 0, $noreg, $noreg :: (store (s128), align 8)
1704 MVE_VSTRH32 %1, %0, 16, 0, $noreg, $noreg :: (store (s128), align 8)
1706 tBX_RET 14, $noreg, implicit $r0
1710 name: MVE_VSTRB32_pre
1711 tracksRegLiveness: true
1713 - { id: 0, class: tgpr, preferred-register: '' }
1714 - { id: 1, class: mqpr, preferred-register: '' }
1715 - { id: 2, class: tgpr, preferred-register: '' }
1717 - { reg: '$r0', virtual-reg: '%0' }
1718 - { reg: '$q0', virtual-reg: '%1' }
1723 ; CHECK-LABEL: name: MVE_VSTRB32_pre
1724 ; CHECK: liveins: $r0, $q0
1725 ; CHECK: [[COPY:%[0-9]+]]:mqpr = COPY $q0
1726 ; CHECK: [[COPY1:%[0-9]+]]:tgpr = COPY $r0
1727 ; CHECK: [[MVE_VSTRB32_pre:%[0-9]+]]:tgpr = MVE_VSTRB32_pre [[COPY]], [[COPY1]], 32, 0, $noreg, $noreg :: (store (s128), align 8)
1728 ; CHECK: MVE_VSTRB32 [[COPY]], [[MVE_VSTRB32_pre]], -16, 0, $noreg, $noreg :: (store (s128), align 8)
1729 ; CHECK: $r0 = COPY [[MVE_VSTRB32_pre]]
1730 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
1733 %2:tgpr = MVE_VSTRB32_pre %1, %0, 32, 0, $noreg, $noreg :: (store (s128), align 8)
1734 MVE_VSTRB32 %1, %0, 16, 0, $noreg, $noreg :: (store (s128), align 8)
1736 tBX_RET 14, $noreg, implicit $r0
1740 name: MVE_VSTRB16_pre
1741 tracksRegLiveness: true
1743 - { id: 0, class: tgpr, preferred-register: '' }
1744 - { id: 1, class: mqpr, preferred-register: '' }
1745 - { id: 2, class: tgpr, preferred-register: '' }
1747 - { reg: '$r0', virtual-reg: '%0' }
1748 - { reg: '$q0', virtual-reg: '%1' }
1753 ; CHECK-LABEL: name: MVE_VSTRB16_pre
1754 ; CHECK: liveins: $r0, $q0
1755 ; CHECK: [[COPY:%[0-9]+]]:mqpr = COPY $q0
1756 ; CHECK: [[COPY1:%[0-9]+]]:tgpr = COPY $r0
1757 ; CHECK: [[MVE_VSTRB16_pre:%[0-9]+]]:tgpr = MVE_VSTRB16_pre [[COPY]], [[COPY1]], 32, 0, $noreg, $noreg :: (store (s128), align 8)
1758 ; CHECK: MVE_VSTRB16 [[COPY]], [[MVE_VSTRB16_pre]], -16, 0, $noreg, $noreg :: (store (s128), align 8)
1759 ; CHECK: $r0 = COPY [[MVE_VSTRB16_pre]]
1760 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
1763 %2:tgpr = MVE_VSTRB16_pre %1, %0, 32, 0, $noreg, $noreg :: (store (s128), align 8)
1764 MVE_VSTRB16 %1, %0, 16, 0, $noreg, $noreg :: (store (s128), align 8)
1766 tBX_RET 14, $noreg, implicit $r0
1771 tracksRegLiveness: true
1773 - { id: 0, class: tgpr, preferred-register: '' }
1774 - { id: 1, class: mqpr, preferred-register: '' }
1775 - { id: 2, class: tgpr, preferred-register: '' }
1777 - { reg: '$r0', virtual-reg: '%0' }
1778 - { reg: '$q0', virtual-reg: '%1' }
1783 ; CHECK-LABEL: name: multiple2
1784 ; CHECK: liveins: $r0, $q0
1785 ; CHECK: [[COPY:%[0-9]+]]:mqpr = COPY $q0
1786 ; CHECK: [[COPY1:%[0-9]+]]:tgpr = COPY $r0
1787 ; CHECK: [[MVE_VSTRB16_pre:%[0-9]+]]:tgpr = MVE_VSTRB16_pre [[COPY]], [[COPY1]], 32, 0, $noreg, $noreg :: (store (s128), align 8)
1788 ; CHECK: MVE_VSTRB16 [[COPY]], [[MVE_VSTRB16_pre]], -16, 0, $noreg, $noreg :: (store (s128), align 8)
1789 ; CHECK: MVE_VSTRB16 [[COPY]], [[MVE_VSTRB16_pre]], -48, 0, $noreg, $noreg :: (store (s128), align 8)
1790 ; CHECK: MVE_VSTRB16 [[COPY]], [[MVE_VSTRB16_pre]], 2, 0, $noreg, $noreg :: (store (s128), align 8)
1791 ; CHECK: $r0 = COPY [[MVE_VSTRB16_pre]]
1792 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
1795 %2:tgpr = MVE_VSTRB16_pre %1, %0, 32, 0, $noreg, $noreg :: (store (s128), align 8)
1796 MVE_VSTRB16 %1, %0, 16, 0, $noreg, $noreg :: (store (s128), align 8)
1797 MVE_VSTRB16 %1, %0, -16, 0, $noreg, $noreg :: (store (s128), align 8)
1798 MVE_VSTRB16 %1, %0, 34, 0, $noreg, $noreg :: (store (s128), align 8)
1800 tBX_RET 14, $noreg, implicit $r0
1805 tracksRegLiveness: true
1807 - { id: 0, class: tgpr, preferred-register: '' }
1808 - { id: 1, class: mqpr, preferred-register: '' }
1809 - { id: 2, class: tgpr, preferred-register: '' }
1810 - { id: 3, class: tgpr, preferred-register: '' }
1812 - { reg: '$r0', virtual-reg: '%0' }
1813 - { reg: '$q0', virtual-reg: '%1' }
1818 ; CHECK-LABEL: name: multiple3
1819 ; CHECK: liveins: $r0, $q0
1820 ; CHECK: [[COPY:%[0-9]+]]:mqpr = COPY $q0
1821 ; CHECK: [[COPY1:%[0-9]+]]:tgpr = COPY $r0
1822 ; CHECK: [[MVE_VSTRB16_pre:%[0-9]+]]:tgpr = MVE_VSTRB16_pre [[COPY]], [[COPY1]], 32, 0, $noreg, $noreg :: (store (s128), align 8)
1823 ; CHECK: [[MVE_VSTRB16_pre1:%[0-9]+]]:tgpr = MVE_VSTRB16_pre [[COPY]], [[COPY1]], 64, 0, $noreg, $noreg :: (store (s128), align 8)
1824 ; CHECK: MVE_VSTRB16 [[COPY]], [[MVE_VSTRB16_pre1]], -48, 0, $noreg, $noreg :: (store (s128), align 8)
1825 ; CHECK: $r0 = COPY [[MVE_VSTRB16_pre1]]
1826 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
1829 %2:tgpr = MVE_VSTRB16_pre %1, %0, 32, 0, $noreg, $noreg :: (store (s128), align 8)
1830 %3:tgpr = MVE_VSTRB16_pre %1, %0, 64, 0, $noreg, $noreg :: (store (s128), align 8)
1831 MVE_VSTRB16 %1, %0, 16, 0, $noreg, $noreg :: (store (s128), align 8)
1833 tBX_RET 14, $noreg, implicit $r0
1838 tracksRegLiveness: true
1840 - { id: 0, class: tgpr, preferred-register: '' }
1841 - { id: 1, class: mqpr, preferred-register: '' }
1842 - { id: 2, class: tgpr, preferred-register: '' }
1843 - { id: 3, class: tgpr, preferred-register: '' }
1845 - { reg: '$r0', virtual-reg: '%0' }
1846 - { reg: '$q0', virtual-reg: '%1' }
1851 ; CHECK-LABEL: name: multiple4
1852 ; CHECK: liveins: $r0, $q0
1853 ; CHECK: [[COPY:%[0-9]+]]:mqpr = COPY $q0
1854 ; CHECK: [[COPY1:%[0-9]+]]:tgpr = COPY $r0
1855 ; CHECK: [[MVE_VSTRB16_pre:%[0-9]+]]:tgpr = MVE_VSTRB16_pre [[COPY]], [[COPY1]], 32, 0, $noreg, $noreg :: (store (s128), align 8)
1856 ; CHECK: MVE_VSTRB16 [[COPY]], [[COPY1]], 0, 0, $noreg, $noreg :: (store (s128), align 8)
1857 ; CHECK: [[t2ADDri:%[0-9]+]]:tgpr = nuw t2ADDri [[COPY1]], 32, 14 /* CC::al */, $noreg, $noreg
1858 ; CHECK: $r0 = COPY [[t2ADDri]]
1859 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
1862 %2:tgpr = MVE_VSTRB16_pre %1, %0, 32, 0, $noreg, $noreg :: (store (s128), align 8)
1863 MVE_VSTRB16 %1, %0, 0, 0, $noreg, $noreg :: (store (s128), align 8)
1864 %3:tgpr = nuw t2ADDri %0, 32, 14, $noreg, $noreg
1866 tBX_RET 14, $noreg, implicit $r0
1871 tracksRegLiveness: true
1873 - { id: 0, class: tgpr, preferred-register: '' }
1874 - { id: 1, class: mqpr, preferred-register: '' }
1875 - { id: 2, class: tgpr, preferred-register: '' }
1877 - { reg: '$r0', virtual-reg: '%0' }
1878 - { reg: '$q0', virtual-reg: '%1' }
1883 ; CHECK-LABEL: name: badScale2
1884 ; CHECK: liveins: $r0, $q0
1885 ; CHECK: [[COPY:%[0-9]+]]:mqpr = COPY $q0
1886 ; CHECK: [[COPY1:%[0-9]+]]:tgpr = COPY $r0
1887 ; CHECK: [[MVE_VSTRBU8_pre:%[0-9]+]]:tgpr = MVE_VSTRBU8_pre [[COPY]], [[COPY1]], 33, 0, $noreg, $noreg :: (store (s128), align 8)
1888 ; CHECK: MVE_VSTRWU32 [[COPY]], [[COPY1]], 0, 0, $noreg, $noreg :: (store (s128), align 8)
1889 ; CHECK: $r0 = COPY [[MVE_VSTRBU8_pre]]
1890 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
1893 %2:tgpr = MVE_VSTRBU8_pre %1, %0, 33, 0, $noreg, $noreg :: (store (s128), align 8)
1894 MVE_VSTRWU32 %1, %0, 0, 0, $noreg, $noreg :: (store (s128), align 8)
1896 tBX_RET 14, $noreg, implicit $r0
1901 tracksRegLiveness: true
1903 - { id: 0, class: tgpr, preferred-register: '' }
1904 - { id: 1, class: mqpr, preferred-register: '' }
1905 - { id: 2, class: tgpr, preferred-register: '' }
1907 - { reg: '$r0', virtual-reg: '%0' }
1908 - { reg: '$q0', virtual-reg: '%1' }
1913 ; CHECK-LABEL: name: badRange2
1914 ; CHECK: liveins: $r0, $q0
1915 ; CHECK: [[COPY:%[0-9]+]]:mqpr = COPY $q0
1916 ; CHECK: [[COPY1:%[0-9]+]]:tgpr = COPY $r0
1917 ; CHECK: [[MVE_VSTRB16_pre:%[0-9]+]]:tgpr = MVE_VSTRB16_pre [[COPY]], [[COPY1]], 100, 0, $noreg, $noreg :: (store (s128), align 8)
1918 ; CHECK: MVE_VSTRB16 [[COPY]], [[COPY1]], -100, 0, $noreg, $noreg :: (store (s128), align 8)
1919 ; CHECK: $r0 = COPY [[MVE_VSTRB16_pre]]
1920 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
1923 %2:tgpr = MVE_VSTRB16_pre %1, %0, 100, 0, $noreg, $noreg :: (store (s128), align 8)
1924 MVE_VSTRB16 %1, %0, -100, 0, $noreg, $noreg :: (store (s128), align 8)
1926 tBX_RET 14, $noreg, implicit $r0
1931 tracksRegLiveness: true
1933 - { id: 0, class: tgpr, preferred-register: '' }
1934 - { id: 1, class: mqpr, preferred-register: '' }
1935 - { id: 2, class: rgpr, preferred-register: '' }
1936 - { id: 3, class: rgpr, preferred-register: '' }
1938 - { reg: '$r0', virtual-reg: '%0' }
1939 - { reg: '$q0', virtual-reg: '%1' }
1944 ; CHECK-LABEL: name: regtype
1945 ; CHECK: liveins: $r0, $q0
1946 ; CHECK: [[COPY:%[0-9]+]]:mqpr = COPY $q0
1947 ; CHECK: [[COPY1:%[0-9]+]]:tgpr = COPY $r0
1948 ; CHECK: [[t2LDRB_POST:%[0-9]+]]:rgpr, [[t2LDRB_POST1:%[0-9]+]]:tgpr = t2LDRB_POST [[COPY1]], 32, 14 /* CC::al */, $noreg :: (load (s8), align 2)
1949 ; CHECK: MVE_VSTRB16 [[COPY]], [[t2LDRB_POST1]], -22, 0, $noreg, $noreg :: (store (s128), align 8)
1950 ; CHECK: $r0 = COPY [[t2LDRB_POST1]]
1951 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
1954 %2:rgpr = t2LDRBi12 %0:tgpr, 0, 14, $noreg :: (load (s8), align 2)
1955 MVE_VSTRB16 %1, %0, 10, 0, $noreg, $noreg :: (store (s128), align 8)
1956 %3:rgpr = nuw t2ADDri %0, 32, 14, $noreg, $noreg
1958 tBX_RET 14, $noreg, implicit $r0