[X86] X86DAGToDAGISel - attempt to merge XMM/YMM loads with YMM/ZMM loads of the...
[llvm-project.git] / llvm / test / CodeGen / Thumb2 / mve-postinc-distribute.mir
blob2975cf81efae3188256582b4f85948fb469b724a
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
4 --- |
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 }
74 ...
75 ---
76 name:            MVE_VLDRWU32
77 tracksRegLiveness: true
78 registers:
79   - { id: 0, class: gprnopc, preferred-register: '' }
80   - { id: 1, class: mqpr, preferred-register: '' }
81   - { id: 2, class: rgpr, preferred-register: '' }
82 liveins:
83   - { reg: '$r0', virtual-reg: '%0' }
84   - { reg: '$q0', virtual-reg: '%1' }
85 body:             |
86   bb.0:
87     liveins: $r0, $q0
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
95     %0:gprnopc = COPY $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
98     $r0 = COPY %2
99     tBX_RET 14, $noreg, implicit $r0
103 name:            MVE_VLDRHU16
104 tracksRegLiveness: true
105 registers:
106   - { id: 0, class: gprnopc, preferred-register: '' }
107   - { id: 1, class: mqpr, preferred-register: '' }
108   - { id: 2, class: rgpr, preferred-register: '' }
109 liveins:
110   - { reg: '$r0', virtual-reg: '%0' }
111   - { reg: '$q0', virtual-reg: '%1' }
112 body:             |
113   bb.0:
114     liveins: $r0, $q0
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
125     $r0 = COPY %2
126     tBX_RET 14, $noreg, implicit $r0
130 name:            MVE_VLDRBU8
131 tracksRegLiveness: true
132 registers:
133   - { id: 0, class: gprnopc, preferred-register: '' }
134   - { id: 1, class: mqpr, preferred-register: '' }
135   - { id: 2, class: rgpr, preferred-register: '' }
136 liveins:
137   - { reg: '$r0', virtual-reg: '%0' }
138   - { reg: '$q0', virtual-reg: '%1' }
139 body:             |
140   bb.0:
141     liveins: $r0, $q0
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
152     $r0 = COPY %2
153     tBX_RET 14, $noreg, implicit $r0
157 name:            MVE_VLDRBS32
158 tracksRegLiveness: true
159 registers:
160   - { id: 0, class: tgpr, preferred-register: '' }
161   - { id: 1, class: mqpr, preferred-register: '' }
162   - { id: 2, class: rgpr, preferred-register: '' }
163 liveins:
164   - { reg: '$r0', virtual-reg: '%0' }
165   - { reg: '$q0', virtual-reg: '%1' }
166 body:             |
167   bb.0:
168     liveins: $r0, $q0
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
176     %0:tgpr = COPY $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
179     $r0 = COPY %2
180     tBX_RET 14, $noreg, implicit $r0
184 name:            MVE_VLDRBU32
185 tracksRegLiveness: true
186 registers:
187   - { id: 0, class: tgpr, preferred-register: '' }
188   - { id: 1, class: mqpr, preferred-register: '' }
189   - { id: 2, class: rgpr, preferred-register: '' }
190 liveins:
191   - { reg: '$r0', virtual-reg: '%0' }
192   - { reg: '$q0', virtual-reg: '%1' }
193 body:             |
194   bb.0:
195     liveins: $r0, $q0
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
203     %0:tgpr = COPY $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
206     $r0 = COPY %2
207     tBX_RET 14, $noreg, implicit $r0
211 name:            MVE_VLDRHS32
212 tracksRegLiveness: true
213 registers:
214   - { id: 0, class: tgpr, preferred-register: '' }
215   - { id: 1, class: mqpr, preferred-register: '' }
216   - { id: 2, class: rgpr, preferred-register: '' }
217 liveins:
218   - { reg: '$r0', virtual-reg: '%0' }
219   - { reg: '$q0', virtual-reg: '%1' }
220 body:             |
221   bb.0:
222     liveins: $r0, $q0
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
230     %0:tgpr = COPY $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
233     $r0 = COPY %2
234     tBX_RET 14, $noreg, implicit $r0
238 name:            MVE_VLDRHU32
239 tracksRegLiveness: true
240 registers:
241   - { id: 0, class: tgpr, preferred-register: '' }
242   - { id: 1, class: mqpr, preferred-register: '' }
243   - { id: 2, class: rgpr, preferred-register: '' }
244 liveins:
245   - { reg: '$r0', virtual-reg: '%0' }
246   - { reg: '$q0', virtual-reg: '%1' }
247 body:             |
248   bb.0:
249     liveins: $r0, $q0
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
257     %0:tgpr = COPY $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
260     $r0 = COPY %2
261     tBX_RET 14, $noreg, implicit $r0
265 name:            MVE_VLDRBS16
266 tracksRegLiveness: true
267 registers:
268   - { id: 0, class: tgpr, preferred-register: '' }
269   - { id: 1, class: mqpr, preferred-register: '' }
270   - { id: 2, class: rgpr, preferred-register: '' }
271 liveins:
272   - { reg: '$r0', virtual-reg: '%0' }
273   - { reg: '$q0', virtual-reg: '%1' }
274 body:             |
275   bb.0:
276     liveins: $r0, $q0
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
284     %0:tgpr = COPY $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
287     $r0 = COPY %2
288     tBX_RET 14, $noreg, implicit $r0
292 name:            MVE_VLDRBU16
293 tracksRegLiveness: true
294 registers:
295   - { id: 0, class: tgpr, preferred-register: '' }
296   - { id: 1, class: mqpr, preferred-register: '' }
297   - { id: 2, class: rgpr, preferred-register: '' }
298 liveins:
299   - { reg: '$r0', virtual-reg: '%0' }
300   - { reg: '$q0', virtual-reg: '%1' }
301 body:             |
302   bb.0:
303     liveins: $r0, $q0
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
311     %0:tgpr = COPY $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
314     $r0 = COPY %2
315     tBX_RET 14, $noreg, implicit $r0
319 name:            MVE_VSTRWU32
320 tracksRegLiveness: true
321 registers:
322   - { id: 0, class: gprnopc, preferred-register: '' }
323   - { id: 1, class: mqpr, preferred-register: '' }
324   - { id: 2, class: rgpr, preferred-register: '' }
325 liveins:
326   - { reg: '$r0', virtual-reg: '%0' }
327   - { reg: '$q0', virtual-reg: '%1' }
328 body:             |
329   bb.0:
330     liveins: $r0, $q0
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
339     %1:mqpr = COPY $q0
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
343     $r0 = COPY %2
344     tBX_RET 14, $noreg, implicit $r0
348 name:            MVE_VSTRHU16
349 tracksRegLiveness: true
350 registers:
351   - { id: 0, class: gprnopc, preferred-register: '' }
352   - { id: 1, class: mqpr, preferred-register: '' }
353   - { id: 2, class: rgpr, preferred-register: '' }
354 liveins:
355   - { reg: '$r0', virtual-reg: '%0' }
356   - { reg: '$q0', virtual-reg: '%1' }
357 body:             |
358   bb.0:
359     liveins: $r0, $q0
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
368     %1:mqpr = COPY $q0
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
372     $r0 = COPY %2
373     tBX_RET 14, $noreg, implicit $r0
377 name:            MVE_VSTRBU8
378 tracksRegLiveness: true
379 registers:
380   - { id: 0, class: gprnopc, preferred-register: '' }
381   - { id: 1, class: mqpr, preferred-register: '' }
382   - { id: 2, class: rgpr, preferred-register: '' }
383 liveins:
384   - { reg: '$r0', virtual-reg: '%0' }
385   - { reg: '$q0', virtual-reg: '%1' }
386 body:             |
387   bb.0:
388     liveins: $r0, $q0
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
397     %1:mqpr = COPY $q0
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
401     $r0 = COPY %2
402     tBX_RET 14, $noreg, implicit $r0
406 name:            MVE_VSTRH32
407 tracksRegLiveness: true
408 registers:
409   - { id: 0, class: tgpr, preferred-register: '' }
410   - { id: 1, class: mqpr, preferred-register: '' }
411   - { id: 2, class: rgpr, preferred-register: '' }
412 liveins:
413   - { reg: '$r0', virtual-reg: '%0' }
414   - { reg: '$q0', virtual-reg: '%1' }
415 body:             |
416   bb.0:
417     liveins: $r0, $q0
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
426     %1:mqpr = COPY $q0
427     %0:tgpr = COPY $r0
428     MVE_VSTRH32 %1, %0, 0, 0, $noreg, $noreg :: (store (s64), align 8)
429     %2:rgpr = nuw t2ADDri %0, 32, 14, $noreg, $noreg
430     $r0 = COPY %2
431     tBX_RET 14, $noreg, implicit $r0
435 name:            MVE_VSTRB32
436 tracksRegLiveness: true
437 registers:
438   - { id: 0, class: tgpr, preferred-register: '' }
439   - { id: 1, class: mqpr, preferred-register: '' }
440   - { id: 2, class: rgpr, preferred-register: '' }
441 liveins:
442   - { reg: '$r0', virtual-reg: '%0' }
443   - { reg: '$q0', virtual-reg: '%1' }
444 body:             |
445   bb.0:
446     liveins: $r0, $q0
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
455     %1:mqpr = COPY $q0
456     %0:tgpr = COPY $r0
457     MVE_VSTRB32 %1, %0, 0, 0, $noreg, $noreg :: (store (s32), align 8)
458     %2:rgpr = nuw t2ADDri %0, 32, 14, $noreg, $noreg
459     $r0 = COPY %2
460     tBX_RET 14, $noreg, implicit $r0
464 name:            MVE_VSTRB16
465 tracksRegLiveness: true
466 registers:
467   - { id: 0, class: tgpr, preferred-register: '' }
468   - { id: 1, class: mqpr, preferred-register: '' }
469   - { id: 2, class: rgpr, preferred-register: '' }
470 liveins:
471   - { reg: '$r0', virtual-reg: '%0' }
472   - { reg: '$q0', virtual-reg: '%1' }
473 body:             |
474   bb.0:
475     liveins: $r0, $q0
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
484     %1:mqpr = COPY $q0
485     %0:tgpr = COPY $r0
486     MVE_VSTRB16 %1, %0, 0, 0, $noreg, $noreg :: (store (s64), align 8)
487     %2:rgpr = nuw t2ADDri %0, 32, 14, $noreg, $noreg
488     $r0 = COPY %2
489     tBX_RET 14, $noreg, implicit $r0
493 name:            ld0ld4
494 tracksRegLiveness: true
495 registers:
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: '' }
500 liveins:
501   - { reg: '$r0', virtual-reg: '%0' }
502   - { reg: '$q0', virtual-reg: '%1' }
503 body:             |
504   bb.0:
505     liveins: $r0, $q0
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)
518     $r0 = COPY %2
519     tBX_RET 14, $noreg, implicit $r0
523 name:            ld4ld0
524 tracksRegLiveness: true
525 registers:
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: '' }
530 liveins:
531   - { reg: '$r0', virtual-reg: '%0' }
532   - { reg: '$q0', virtual-reg: '%1' }
533 body:             |
534   bb.0:
535     liveins: $r0, $q0
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)
548     $r0 = COPY %2
549     tBX_RET 14, $noreg, implicit $r0
553 name:            ld0ld4ld0
554 tracksRegLiveness: true
555 registers:
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: '' }
561 liveins:
562   - { reg: '$r0', virtual-reg: '%0' }
563   - { reg: '$q0', virtual-reg: '%1' }
564 body:             |
565   bb.0:
566     liveins: $r0, $q0
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)
581     $r0 = COPY %2
582     tBX_RET 14, $noreg, implicit $r0
586 name:            ld4ld0ld4
587 tracksRegLiveness: true
588 registers:
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: '' }
594 liveins:
595   - { reg: '$r0', virtual-reg: '%0' }
596   - { reg: '$q0', virtual-reg: '%1' }
597 body:             |
598   bb.0:
599     liveins: $r0, $q0
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)
614     $r0 = COPY %2
615     tBX_RET 14, $noreg, implicit $r0
619 name:            addload
620 tracksRegLiveness: true
621 registers:
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: '' }
626 liveins:
627   - { reg: '$r0', virtual-reg: '%0' }
628   - { reg: '$q0', virtual-reg: '%1' }
629 body:             |
630   bb.0:
631     liveins: $r0, $q0
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)
644     $r0 = COPY %2
645     tBX_RET 14, $noreg, implicit $r0
649 name:            sub
650 tracksRegLiveness: true
651 registers:
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: '' }
656 liveins:
657   - { reg: '$r0', virtual-reg: '%0' }
658   - { reg: '$q0', virtual-reg: '%1' }
659 body:             |
660   bb.0:
661     liveins: $r0, $q0
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)
674     $r0 = COPY %2
675     tBX_RET 14, $noreg, implicit $r0
679 name:            otherUse
680 tracksRegLiveness: true
681 registers:
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: '' }
686 liveins:
687   - { reg: '$r0', virtual-reg: '%0' }
688   - { reg: '$q0', virtual-reg: '%1' }
689 body:             |
690   bb.0:
691     liveins: $r0, $q0
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)
706     $r0 = COPY %0
707     $r0 = COPY %2
708     tBX_RET 14, $noreg, implicit $r0
712 name:            postincUse
713 tracksRegLiveness: true
714 registers:
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: '' }
720 liveins:
721   - { reg: '$r0', virtual-reg: '%0' }
722   - { reg: '$q0', virtual-reg: '%1' }
723 body:             |
724   bb.0:
725     liveins: $r0, $q0
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
735     %0:rgpr = COPY $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)
739     $r0 = COPY %2
740     tBX_RET 14, $noreg, implicit $r0
744 name:            badScale
745 tracksRegLiveness: true
746 registers:
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: '' }
751 liveins:
752   - { reg: '$r0', virtual-reg: '%0' }
753   - { reg: '$q0', virtual-reg: '%1' }
754 body:             |
755   bb.0:
756     liveins: $r0, $q0
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)
770     $r0 = COPY %2
771     tBX_RET 14, $noreg, implicit $r0
775 name:            badRange
776 tracksRegLiveness: true
777 registers:
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: '' }
782 liveins:
783   - { reg: '$r0', virtual-reg: '%0' }
784   - { reg: '$q0', virtual-reg: '%1' }
785 body:             |
786   bb.0:
787     liveins: $r0, $q0
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)
801     $r0 = COPY %2
802     tBX_RET 14, $noreg, implicit $r0
806 name:            addUseOK
807 tracksRegLiveness: true
808 registers:
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: '' }
814 liveins:
815   - { reg: '$r0', virtual-reg: '%0' }
816   - { reg: '$q0', virtual-reg: '%1' }
817 body:             |
818   bb.0:
819     liveins: $r0, $q0
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
834     $r0 = COPY %4
835     tBX_RET 14, $noreg, implicit $r0
839 name:            addUseDom
840 tracksRegLiveness: true
841 registers:
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: '' }
847 liveins:
848   - { reg: '$r0', virtual-reg: '%0' }
849   - { reg: '$q0', virtual-reg: '%1' }
850 body:             |
851   bb.0:
852     liveins: $r0, $q0
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)
868     $r0 = COPY %4
869     tBX_RET 14, $noreg, implicit $r0
873 name:            addUseKilled
874 tracksRegLiveness: true
875 registers:
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: '' }
881 liveins:
882   - { reg: '$r0', virtual-reg: '%0' }
883   - { reg: '$q0', virtual-reg: '%1' }
884 body:             |
885   bb.0:
886     liveins: $r0, $q0
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)
901     $r0 = COPY %4
902     tBX_RET 14, $noreg, implicit $r0
906 name:            MVE_VLDRWU32_post
907 tracksRegLiveness: true
908 registers:
909   - { id: 0, class: rgpr, preferred-register: '' }
910   - { id: 1, class: mqpr, preferred-register: '' }
911   - { id: 2, class: rgpr, preferred-register: '' }
912 liveins:
913   - { reg: '$r0', virtual-reg: '%0' }
914   - { reg: '$q0', virtual-reg: '%1' }
915 body:             |
916   bb.0:
917     liveins: $r0, $q0
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
926     %0:rgpr = COPY $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)
929     $r0 = COPY %2
930     tBX_RET 14, $noreg, implicit $r0
934 name:            MVE_VLDRHU16_post
935 tracksRegLiveness: true
936 registers:
937   - { id: 0, class: rgpr, preferred-register: '' }
938   - { id: 1, class: mqpr, preferred-register: '' }
939   - { id: 2, class: rgpr, preferred-register: '' }
940 liveins:
941   - { reg: '$r0', virtual-reg: '%0' }
942   - { reg: '$q0', virtual-reg: '%1' }
943 body:             |
944   bb.0:
945     liveins: $r0, $q0
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
954     %0:rgpr = COPY $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)
957     $r0 = COPY %2
958     tBX_RET 14, $noreg, implicit $r0
962 name:            MVE_VLDRBU8_post
963 tracksRegLiveness: true
964 registers:
965   - { id: 0, class: rgpr, preferred-register: '' }
966   - { id: 1, class: mqpr, preferred-register: '' }
967   - { id: 2, class: rgpr, preferred-register: '' }
968 liveins:
969   - { reg: '$r0', virtual-reg: '%0' }
970   - { reg: '$q0', virtual-reg: '%1' }
971 body:             |
972   bb.0:
973     liveins: $r0, $q0
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
982     %0:rgpr = COPY $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)
985     $r0 = COPY %2
986     tBX_RET 14, $noreg, implicit $r0
990 name:            MVE_VLDRBS32_post
991 tracksRegLiveness: true
992 registers:
993   - { id: 0, class: tgpr, preferred-register: '' }
994   - { id: 1, class: mqpr, preferred-register: '' }
995   - { id: 2, class: tgpr, preferred-register: '' }
996 liveins:
997   - { reg: '$r0', virtual-reg: '%0' }
998   - { reg: '$q0', virtual-reg: '%1' }
999 body:             |
1000   bb.0:
1001     liveins: $r0, $q0
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
1010     %0:tgpr = COPY $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)
1013     $r0 = COPY %2
1014     tBX_RET 14, $noreg, implicit $r0
1018 name:            MVE_VLDRBU32_post
1019 tracksRegLiveness: true
1020 registers:
1021   - { id: 0, class: tgpr, preferred-register: '' }
1022   - { id: 1, class: mqpr, preferred-register: '' }
1023   - { id: 2, class: tgpr, preferred-register: '' }
1024 liveins:
1025   - { reg: '$r0', virtual-reg: '%0' }
1026   - { reg: '$q0', virtual-reg: '%1' }
1027 body:             |
1028   bb.0:
1029     liveins: $r0, $q0
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
1038     %0:tgpr = COPY $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)
1041     $r0 = COPY %2
1042     tBX_RET 14, $noreg, implicit $r0
1046 name:            MVE_VLDRHS32_post
1047 tracksRegLiveness: true
1048 registers:
1049   - { id: 0, class: tgpr, preferred-register: '' }
1050   - { id: 1, class: mqpr, preferred-register: '' }
1051   - { id: 2, class: tgpr, preferred-register: '' }
1052 liveins:
1053   - { reg: '$r0', virtual-reg: '%0' }
1054   - { reg: '$q0', virtual-reg: '%1' }
1055 body:             |
1056   bb.0:
1057     liveins: $r0, $q0
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
1066     %0:tgpr = COPY $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)
1069     $r0 = COPY %2
1070     tBX_RET 14, $noreg, implicit $r0
1074 name:            MVE_VLDRHU32_post
1075 tracksRegLiveness: true
1076 registers:
1077   - { id: 0, class: tgpr, preferred-register: '' }
1078   - { id: 1, class: mqpr, preferred-register: '' }
1079   - { id: 2, class: tgpr, preferred-register: '' }
1080 liveins:
1081   - { reg: '$r0', virtual-reg: '%0' }
1082   - { reg: '$q0', virtual-reg: '%1' }
1083 body:             |
1084   bb.0:
1085     liveins: $r0, $q0
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
1094     %0:tgpr = COPY $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)
1097     $r0 = COPY %2
1098     tBX_RET 14, $noreg, implicit $r0
1102 name:            MVE_VLDRBS16_post
1103 tracksRegLiveness: true
1104 registers:
1105   - { id: 0, class: tgpr, preferred-register: '' }
1106   - { id: 1, class: mqpr, preferred-register: '' }
1107   - { id: 2, class: tgpr, preferred-register: '' }
1108 liveins:
1109   - { reg: '$r0', virtual-reg: '%0' }
1110   - { reg: '$q0', virtual-reg: '%1' }
1111 body:             |
1112   bb.0:
1113     liveins: $r0, $q0
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
1122     %0:tgpr = COPY $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)
1125     $r0 = COPY %2
1126     tBX_RET 14, $noreg, implicit $r0
1130 name:            MVE_VLDRBU16_post
1131 tracksRegLiveness: true
1132 registers:
1133   - { id: 0, class: tgpr, preferred-register: '' }
1134   - { id: 1, class: mqpr, preferred-register: '' }
1135   - { id: 2, class: tgpr, preferred-register: '' }
1136 liveins:
1137   - { reg: '$r0', virtual-reg: '%0' }
1138   - { reg: '$q0', virtual-reg: '%1' }
1139 body:             |
1140   bb.0:
1141     liveins: $r0, $q0
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
1150     %0:tgpr = COPY $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)
1153     $r0 = COPY %2
1154     tBX_RET 14, $noreg, implicit $r0
1158 name:            MVE_VSTRWU32_post
1159 tracksRegLiveness: true
1160 registers:
1161   - { id: 0, class: rgpr, preferred-register: '' }
1162   - { id: 1, class: mqpr, preferred-register: '' }
1163   - { id: 2, class: rgpr, preferred-register: '' }
1164 liveins:
1165   - { reg: '$r0', virtual-reg: '%0' }
1166   - { reg: '$q0', virtual-reg: '%1' }
1167 body:             |
1168   bb.0:
1169     liveins: $r0, $q0
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
1179     %1:mqpr = COPY $q0
1180     %0:rgpr = COPY $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)
1183     $r0 = COPY %2
1184     tBX_RET 14, $noreg, implicit $r0
1188 name:            MVE_VSTRHU16_post
1189 tracksRegLiveness: true
1190 registers:
1191   - { id: 0, class: rgpr, preferred-register: '' }
1192   - { id: 1, class: mqpr, preferred-register: '' }
1193   - { id: 2, class: rgpr, preferred-register: '' }
1194 liveins:
1195   - { reg: '$r0', virtual-reg: '%0' }
1196   - { reg: '$q0', virtual-reg: '%1' }
1197 body:             |
1198   bb.0:
1199     liveins: $r0, $q0
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
1209     %1:mqpr = COPY $q0
1210     %0:rgpr = COPY $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)
1213     $r0 = COPY %2
1214     tBX_RET 14, $noreg, implicit $r0
1218 name:            MVE_VSTRBU8_post
1219 tracksRegLiveness: true
1220 registers:
1221   - { id: 0, class: rgpr, preferred-register: '' }
1222   - { id: 1, class: mqpr, preferred-register: '' }
1223   - { id: 2, class: rgpr, preferred-register: '' }
1224 liveins:
1225   - { reg: '$r0', virtual-reg: '%0' }
1226   - { reg: '$q0', virtual-reg: '%1' }
1227 body:             |
1228   bb.0:
1229     liveins: $r0, $q0
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
1239     %1:mqpr = COPY $q0
1240     %0:rgpr = COPY $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)
1243     $r0 = COPY %2
1244     tBX_RET 14, $noreg, implicit $r0
1248 name:            MVE_VSTRH32_post
1249 tracksRegLiveness: true
1250 registers:
1251   - { id: 0, class: tgpr, preferred-register: '' }
1252   - { id: 1, class: mqpr, preferred-register: '' }
1253   - { id: 2, class: tgpr, preferred-register: '' }
1254 liveins:
1255   - { reg: '$r0', virtual-reg: '%0' }
1256   - { reg: '$q0', virtual-reg: '%1' }
1257 body:             |
1258   bb.0:
1259     liveins: $r0, $q0
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
1269     %1:mqpr = COPY $q0
1270     %0:tgpr = COPY $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)
1273     $r0 = COPY %2
1274     tBX_RET 14, $noreg, implicit $r0
1278 name:            MVE_VSTRB32_post
1279 tracksRegLiveness: true
1280 registers:
1281   - { id: 0, class: tgpr, preferred-register: '' }
1282   - { id: 1, class: mqpr, preferred-register: '' }
1283   - { id: 2, class: tgpr, preferred-register: '' }
1284 liveins:
1285   - { reg: '$r0', virtual-reg: '%0' }
1286   - { reg: '$q0', virtual-reg: '%1' }
1287 body:             |
1288   bb.0:
1289     liveins: $r0, $q0
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
1299     %1:mqpr = COPY $q0
1300     %0:tgpr = COPY $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)
1303     $r0 = COPY %2
1304     tBX_RET 14, $noreg, implicit $r0
1308 name:            MVE_VSTRB16_post
1309 tracksRegLiveness: true
1310 registers:
1311   - { id: 0, class: tgpr, preferred-register: '' }
1312   - { id: 1, class: mqpr, preferred-register: '' }
1313   - { id: 2, class: tgpr, preferred-register: '' }
1314 liveins:
1315   - { reg: '$r0', virtual-reg: '%0' }
1316   - { reg: '$q0', virtual-reg: '%1' }
1317 body:             |
1318   bb.0:
1319     liveins: $r0, $q0
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
1329     %1:mqpr = COPY $q0
1330     %0:tgpr = COPY $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)
1333     $r0 = COPY %2
1334     tBX_RET 14, $noreg, implicit $r0
1338 name:            MVE_VLDRWU32_pre
1339 tracksRegLiveness: true
1340 registers:
1341   - { id: 0, class: rgpr, preferred-register: '' }
1342   - { id: 1, class: mqpr, preferred-register: '' }
1343   - { id: 2, class: rgpr, preferred-register: '' }
1344 liveins:
1345   - { reg: '$r0', virtual-reg: '%0' }
1346   - { reg: '$q0', virtual-reg: '%1' }
1347 body:             |
1348   bb.0:
1349     liveins: $r0, $q0
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
1358     %0:rgpr = COPY $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)
1361     $r0 = COPY %2
1362     tBX_RET 14, $noreg, implicit $r0
1366 name:            MVE_VLDRHU16_pre
1367 tracksRegLiveness: true
1368 registers:
1369   - { id: 0, class: rgpr, preferred-register: '' }
1370   - { id: 1, class: mqpr, preferred-register: '' }
1371   - { id: 2, class: rgpr, preferred-register: '' }
1372 liveins:
1373   - { reg: '$r0', virtual-reg: '%0' }
1374   - { reg: '$q0', virtual-reg: '%1' }
1375 body:             |
1376   bb.0:
1377     liveins: $r0, $q0
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
1386     %0:rgpr = COPY $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)
1389     $r0 = COPY %2
1390     tBX_RET 14, $noreg, implicit $r0
1394 name:            MVE_VLDRBU8_pre
1395 tracksRegLiveness: true
1396 registers:
1397   - { id: 0, class: rgpr, preferred-register: '' }
1398   - { id: 1, class: mqpr, preferred-register: '' }
1399   - { id: 2, class: rgpr, preferred-register: '' }
1400 liveins:
1401   - { reg: '$r0', virtual-reg: '%0' }
1402   - { reg: '$q0', virtual-reg: '%1' }
1403 body:             |
1404   bb.0:
1405     liveins: $r0, $q0
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
1414     %0:rgpr = COPY $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)
1417     $r0 = COPY %2
1418     tBX_RET 14, $noreg, implicit $r0
1422 name:            MVE_VLDRBS32_pre
1423 tracksRegLiveness: true
1424 registers:
1425   - { id: 0, class: tgpr, preferred-register: '' }
1426   - { id: 1, class: mqpr, preferred-register: '' }
1427   - { id: 2, class: tgpr, preferred-register: '' }
1428 liveins:
1429   - { reg: '$r0', virtual-reg: '%0' }
1430   - { reg: '$q0', virtual-reg: '%1' }
1431 body:             |
1432   bb.0:
1433     liveins: $r0, $q0
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
1442     %0:tgpr = COPY $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)
1445     $r0 = COPY %2
1446     tBX_RET 14, $noreg, implicit $r0
1450 name:            MVE_VLDRBU32_pre
1451 tracksRegLiveness: true
1452 registers:
1453   - { id: 0, class: tgpr, preferred-register: '' }
1454   - { id: 1, class: mqpr, preferred-register: '' }
1455   - { id: 2, class: tgpr, preferred-register: '' }
1456 liveins:
1457   - { reg: '$r0', virtual-reg: '%0' }
1458   - { reg: '$q0', virtual-reg: '%1' }
1459 body:             |
1460   bb.0:
1461     liveins: $r0, $q0
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
1470     %0:tgpr = COPY $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)
1473     $r0 = COPY %2
1474     tBX_RET 14, $noreg, implicit $r0
1478 name:            MVE_VLDRHS32_pre
1479 tracksRegLiveness: true
1480 registers:
1481   - { id: 0, class: tgpr, preferred-register: '' }
1482   - { id: 1, class: mqpr, preferred-register: '' }
1483   - { id: 2, class: tgpr, preferred-register: '' }
1484 liveins:
1485   - { reg: '$r0', virtual-reg: '%0' }
1486   - { reg: '$q0', virtual-reg: '%1' }
1487 body:             |
1488   bb.0:
1489     liveins: $r0, $q0
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
1498     %0:tgpr = COPY $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)
1501     $r0 = COPY %2
1502     tBX_RET 14, $noreg, implicit $r0
1506 name:            MVE_VLDRHU32_pre
1507 tracksRegLiveness: true
1508 registers:
1509   - { id: 0, class: tgpr, preferred-register: '' }
1510   - { id: 1, class: mqpr, preferred-register: '' }
1511   - { id: 2, class: tgpr, preferred-register: '' }
1512 liveins:
1513   - { reg: '$r0', virtual-reg: '%0' }
1514   - { reg: '$q0', virtual-reg: '%1' }
1515 body:             |
1516   bb.0:
1517     liveins: $r0, $q0
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
1526     %0:tgpr = COPY $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)
1529     $r0 = COPY %2
1530     tBX_RET 14, $noreg, implicit $r0
1534 name:            MVE_VLDRBS16_pre
1535 tracksRegLiveness: true
1536 registers:
1537   - { id: 0, class: tgpr, preferred-register: '' }
1538   - { id: 1, class: mqpr, preferred-register: '' }
1539   - { id: 2, class: tgpr, preferred-register: '' }
1540 liveins:
1541   - { reg: '$r0', virtual-reg: '%0' }
1542   - { reg: '$q0', virtual-reg: '%1' }
1543 body:             |
1544   bb.0:
1545     liveins: $r0, $q0
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
1554     %0:tgpr = COPY $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)
1557     $r0 = COPY %2
1558     tBX_RET 14, $noreg, implicit $r0
1562 name:            MVE_VLDRBU16_pre
1563 tracksRegLiveness: true
1564 registers:
1565   - { id: 0, class: tgpr, preferred-register: '' }
1566   - { id: 1, class: mqpr, preferred-register: '' }
1567   - { id: 2, class: tgpr, preferred-register: '' }
1568 liveins:
1569   - { reg: '$r0', virtual-reg: '%0' }
1570   - { reg: '$q0', virtual-reg: '%1' }
1571 body:             |
1572   bb.0:
1573     liveins: $r0, $q0
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
1582     %0:tgpr = COPY $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)
1585     $r0 = COPY %2
1586     tBX_RET 14, $noreg, implicit $r0
1590 name:            MVE_VSTRWU32_pre
1591 tracksRegLiveness: true
1592 registers:
1593   - { id: 0, class: rgpr, preferred-register: '' }
1594   - { id: 1, class: mqpr, preferred-register: '' }
1595   - { id: 2, class: rgpr, preferred-register: '' }
1596 liveins:
1597   - { reg: '$r0', virtual-reg: '%0' }
1598   - { reg: '$q0', virtual-reg: '%1' }
1599 body:             |
1600   bb.0:
1601     liveins: $r0, $q0
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
1611     %1:mqpr = COPY $q0
1612     %0:rgpr = COPY $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)
1615     $r0 = COPY %2
1616     tBX_RET 14, $noreg, implicit $r0
1620 name:            MVE_VSTRHU16_pre
1621 tracksRegLiveness: true
1622 registers:
1623   - { id: 0, class: rgpr, preferred-register: '' }
1624   - { id: 1, class: mqpr, preferred-register: '' }
1625   - { id: 2, class: rgpr, preferred-register: '' }
1626 liveins:
1627   - { reg: '$r0', virtual-reg: '%0' }
1628   - { reg: '$q0', virtual-reg: '%1' }
1629 body:             |
1630   bb.0:
1631     liveins: $r0, $q0
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
1641     %1:mqpr = COPY $q0
1642     %0:rgpr = COPY $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)
1645     $r0 = COPY %2
1646     tBX_RET 14, $noreg, implicit $r0
1650 name:            MVE_VSTRBU8_pre
1651 tracksRegLiveness: true
1652 registers:
1653   - { id: 0, class: rgpr, preferred-register: '' }
1654   - { id: 1, class: mqpr, preferred-register: '' }
1655   - { id: 2, class: rgpr, preferred-register: '' }
1656 liveins:
1657   - { reg: '$r0', virtual-reg: '%0' }
1658   - { reg: '$q0', virtual-reg: '%1' }
1659 body:             |
1660   bb.0:
1661     liveins: $r0, $q0
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
1671     %1:mqpr = COPY $q0
1672     %0:rgpr = COPY $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)
1675     $r0 = COPY %2
1676     tBX_RET 14, $noreg, implicit $r0
1680 name:            MVE_VSTRH32_pre
1681 tracksRegLiveness: true
1682 registers:
1683   - { id: 0, class: tgpr, preferred-register: '' }
1684   - { id: 1, class: mqpr, preferred-register: '' }
1685   - { id: 2, class: tgpr, preferred-register: '' }
1686 liveins:
1687   - { reg: '$r0', virtual-reg: '%0' }
1688   - { reg: '$q0', virtual-reg: '%1' }
1689 body:             |
1690   bb.0:
1691     liveins: $r0, $q0
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
1701     %1:mqpr = COPY $q0
1702     %0:tgpr = COPY $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)
1705     $r0 = COPY %2
1706     tBX_RET 14, $noreg, implicit $r0
1710 name:            MVE_VSTRB32_pre
1711 tracksRegLiveness: true
1712 registers:
1713   - { id: 0, class: tgpr, preferred-register: '' }
1714   - { id: 1, class: mqpr, preferred-register: '' }
1715   - { id: 2, class: tgpr, preferred-register: '' }
1716 liveins:
1717   - { reg: '$r0', virtual-reg: '%0' }
1718   - { reg: '$q0', virtual-reg: '%1' }
1719 body:             |
1720   bb.0:
1721     liveins: $r0, $q0
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
1731     %1:mqpr = COPY $q0
1732     %0:tgpr = COPY $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)
1735     $r0 = COPY %2
1736     tBX_RET 14, $noreg, implicit $r0
1740 name:            MVE_VSTRB16_pre
1741 tracksRegLiveness: true
1742 registers:
1743   - { id: 0, class: tgpr, preferred-register: '' }
1744   - { id: 1, class: mqpr, preferred-register: '' }
1745   - { id: 2, class: tgpr, preferred-register: '' }
1746 liveins:
1747   - { reg: '$r0', virtual-reg: '%0' }
1748   - { reg: '$q0', virtual-reg: '%1' }
1749 body:             |
1750   bb.0:
1751     liveins: $r0, $q0
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
1761     %1:mqpr = COPY $q0
1762     %0:tgpr = COPY $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)
1765     $r0 = COPY %2
1766     tBX_RET 14, $noreg, implicit $r0
1770 name:            multiple2
1771 tracksRegLiveness: true
1772 registers:
1773   - { id: 0, class: tgpr, preferred-register: '' }
1774   - { id: 1, class: mqpr, preferred-register: '' }
1775   - { id: 2, class: tgpr, preferred-register: '' }
1776 liveins:
1777   - { reg: '$r0', virtual-reg: '%0' }
1778   - { reg: '$q0', virtual-reg: '%1' }
1779 body:             |
1780   bb.0:
1781     liveins: $r0, $q0
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
1793     %1:mqpr = COPY $q0
1794     %0:tgpr = COPY $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)
1799     $r0 = COPY %2
1800     tBX_RET 14, $noreg, implicit $r0
1804 name:            multiple3
1805 tracksRegLiveness: true
1806 registers:
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: '' }
1811 liveins:
1812   - { reg: '$r0', virtual-reg: '%0' }
1813   - { reg: '$q0', virtual-reg: '%1' }
1814 body:             |
1815   bb.0:
1816     liveins: $r0, $q0
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
1827     %1:mqpr = COPY $q0
1828     %0:tgpr = COPY $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)
1832     $r0 = COPY %3
1833     tBX_RET 14, $noreg, implicit $r0
1837 name:            multiple4
1838 tracksRegLiveness: true
1839 registers:
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: '' }
1844 liveins:
1845   - { reg: '$r0', virtual-reg: '%0' }
1846   - { reg: '$q0', virtual-reg: '%1' }
1847 body:             |
1848   bb.0:
1849     liveins: $r0, $q0
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
1860     %1:mqpr = COPY $q0
1861     %0:tgpr = COPY $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
1865     $r0 = COPY %3
1866     tBX_RET 14, $noreg, implicit $r0
1870 name:            badScale2
1871 tracksRegLiveness: true
1872 registers:
1873   - { id: 0, class: tgpr, preferred-register: '' }
1874   - { id: 1, class: mqpr, preferred-register: '' }
1875   - { id: 2, class: tgpr, preferred-register: '' }
1876 liveins:
1877   - { reg: '$r0', virtual-reg: '%0' }
1878   - { reg: '$q0', virtual-reg: '%1' }
1879 body:             |
1880   bb.0:
1881     liveins: $r0, $q0
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
1891     %1:mqpr = COPY $q0
1892     %0:tgpr = COPY $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)
1895     $r0 = COPY %2
1896     tBX_RET 14, $noreg, implicit $r0
1900 name:            badRange2
1901 tracksRegLiveness: true
1902 registers:
1903   - { id: 0, class: tgpr, preferred-register: '' }
1904   - { id: 1, class: mqpr, preferred-register: '' }
1905   - { id: 2, class: tgpr, preferred-register: '' }
1906 liveins:
1907   - { reg: '$r0', virtual-reg: '%0' }
1908   - { reg: '$q0', virtual-reg: '%1' }
1909 body:             |
1910   bb.0:
1911     liveins: $r0, $q0
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
1921     %1:mqpr = COPY $q0
1922     %0:tgpr = COPY $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)
1925     $r0 = COPY %2
1926     tBX_RET 14, $noreg, implicit $r0
1930 name:            regtype
1931 tracksRegLiveness: true
1932 registers:
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: '' }
1937 liveins:
1938   - { reg: '$r0', virtual-reg: '%0' }
1939   - { reg: '$q0', virtual-reg: '%1' }
1940 body:             |
1941   bb.0:
1942     liveins: $r0, $q0
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
1952     %1:mqpr = COPY $q0
1953     %0:tgpr = COPY $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
1957     $r0 = COPY %3
1958     tBX_RET 14, $noreg, implicit $r0