1// RUN: llvm-mc -triple=arm64 -mattr=+neon -show-encoding < %s | FileCheck %s
2
3// Check that the assembler can handle the documented syntax for AArch64
4
5//------------------------------------------------------------------------------
6// Load multiple 1-element structures from one register (post-index)
7//------------------------------------------------------------------------------
8         ld1 { v0.16b }, [x0], x1
9         ld1 { v15.8h }, [x15], x2
10         ld1 { v31.4s }, [sp], #16
11         ld1 { v0.2d }, [x0], #16
12         ld1 { v0.8b }, [x0], x2
13         ld1 { v15.4h }, [x15], x3
14         ld1 { v31.2s }, [sp], #8
15         ld1 { v0.1d }, [x0], #8
16// CHECK: ld1 { v0.16b }, [x0], x1
17// CHECK:     // encoding: [0x00,0x70,0xc1,0x4c]
18// CHECK: ld1 { v15.8h }, [x15], x2
19// CHECK:     // encoding: [0xef,0x75,0xc2,0x4c]
20// CHECK: ld1 { v31.4s }, [sp], #16
21// CHECK:     // encoding: [0xff,0x7b,0xdf,0x4c]
22// CHECK: ld1 { v0.2d }, [x0], #16
23// CHECK:     // encoding: [0x00,0x7c,0xdf,0x4c]
24// CHECK: ld1 { v0.8b }, [x0], x2
25// CHECK:     // encoding: [0x00,0x70,0xc2,0x0c]
26// CHECK: ld1 { v15.4h }, [x15], x3
27// CHECK:     // encoding: [0xef,0x75,0xc3,0x0c]
28// CHECK: ld1 { v31.2s }, [sp], #8
29// CHECK:     // encoding: [0xff,0x7b,0xdf,0x0c]
30// CHECK: ld1 { v0.1d }, [x0], #8
31// CHECK:     // encoding: [0x00,0x7c,0xdf,0x0c]
32
33//------------------------------------------------------------------------------
34// Load multiple 1-element structures from two consecutive registers
35// (post-index)
36//------------------------------------------------------------------------------
37         ld1 { v0.16b, v1.16b }, [x0], x1
38         ld1 { v15.8h, v16.8h }, [x15], x2
39         ld1 { v31.4s, v0.4s }, [sp], #32
40         ld1 { v0.2d, v1.2d }, [x0], #32
41         ld1 { v0.8b, v1.8b }, [x0], x2
42         ld1 { v15.4h, v16.4h }, [x15], x3
43         ld1 { v31.2s, v0.2s }, [sp], #16
44         ld1 { v0.1d, v1.1d }, [x0], #16
45// CHECK: ld1 { v0.16b, v1.16b }, [x0], x1
46// CHECK:     // encoding: [0x00,0xa0,0xc1,0x4c]
47// CHECK: ld1 { v15.8h, v16.8h }, [x15], x2
48// CHECK:     // encoding: [0xef,0xa5,0xc2,0x4c]
49// CHECK: ld1 { v31.4s, v0.4s }, [sp], #32
50// CHECK:     // encoding: [0xff,0xab,0xdf,0x4c]
51// CHECK: ld1 { v0.2d, v1.2d }, [x0], #32
52// CHECK:     // encoding: [0x00,0xac,0xdf,0x4c]
53// CHECK: ld1 { v0.8b, v1.8b }, [x0], x2
54// CHECK:     // encoding: [0x00,0xa0,0xc2,0x0c]
55// CHECK: ld1 { v15.4h, v16.4h }, [x15], x3
56// CHECK:     // encoding: [0xef,0xa5,0xc3,0x0c]
57// CHECK: ld1 { v31.2s, v0.2s }, [sp], #16
58// CHECK:     // encoding: [0xff,0xab,0xdf,0x0c]
59// CHECK: ld1 { v0.1d, v1.1d }, [x0], #16
60// CHECK:     // encoding: [0x00,0xac,0xdf,0x0c]
61
62//------------------------------------------------------------------------------
63// Load multiple 1-element structures from three consecutive registers
64// (post-index)
65//------------------------------------------------------------------------------
66         ld1 { v0.16b, v1.16b, v2.16b }, [x0], x1
67         ld1 { v15.8h, v16.8h, v17.8h }, [x15], x2
68         ld1 { v31.4s, v0.4s, v1.4s }, [sp], #48
69         ld1 { v0.2d, v1.2d, v2.2d }, [x0], #48
70         ld1 { v0.8b, v1.8b, v2.8b }, [x0], x2
71         ld1 { v15.4h, v16.4h, v17.4h }, [x15], x3
72         ld1 { v31.2s, v0.2s, v1.2s }, [sp], #24
73         ld1 { v0.1d, v1.1d, v2.1d }, [x0], #24
74// CHECK: ld1 { v0.16b, v1.16b, v2.16b }, [x0], x1
75// CHECK:     // encoding: [0x00,0x60,0xc1,0x4c]
76// CHECK: ld1 { v15.8h, v16.8h, v17.8h }, [x15], x2
77// CHECK:     // encoding: [0xef,0x65,0xc2,0x4c]
78// CHECK: ld1 { v31.4s, v0.4s, v1.4s }, [sp], #48
79// CHECK:     // encoding: [0xff,0x6b,0xdf,0x4c]
80// CHECK: ld1 { v0.2d, v1.2d, v2.2d }, [x0], #48
81// CHECK:     // encoding: [0x00,0x6c,0xdf,0x4c]
82// CHECK: ld1 { v0.8b, v1.8b, v2.8b }, [x0], x2
83// CHECK:     // encoding: [0x00,0x60,0xc2,0x0c]
84// CHECK: ld1 { v15.4h, v16.4h, v17.4h }, [x15], x3
85// CHECK:     // encoding: [0xef,0x65,0xc3,0x0c]
86// CHECK: ld1 { v31.2s, v0.2s, v1.2s }, [sp], #24
87// CHECK:     // encoding: [0xff,0x6b,0xdf,0x0c]
88// CHECK: ld1 { v0.1d, v1.1d, v2.1d }, [x0], #24
89// CHECK:     // encoding: [0x00,0x6c,0xdf,0x0c]
90
91//------------------------------------------------------------------------------
92// Load multiple 1-element structures from four consecutive registers
93// (post-index)
94//------------------------------------------------------------------------------
95         ld1 { v0.16b, v1.16b, v2.16b, v3.16b }, [x0], x1
96         ld1 { v15.8h, v16.8h, v17.8h, v18.8h }, [x15], x2
97         ld1 { v31.4s, v0.4s, v1.4s, v2.4s }, [sp], #64
98         ld1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0], #64
99         ld1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3
100         ld1 { v15.4h, v16.4h, v17.4h, v18.4h }, [x15], x4
101         ld1 { v31.2s, v0.2s, v1.2s, v2.2s }, [sp], #32
102         ld1 { v0.1d, v1.1d, v2.1d, v3.1d }, [x0], #32
103// CHECK: ld1 { v0.16b, v1.16b, v2.16b, v3.16b }, [x0], x1
104// CHECK:     // encoding: [0x00,0x20,0xc1,0x4c]
105// CHECK: ld1 { v15.8h, v16.8h, v17.8h, v18.8h }, [x15], x2
106// CHECK:     // encoding: [0xef,0x25,0xc2,0x4c]
107// CHECK: ld1 { v31.4s, v0.4s, v1.4s, v2.4s }, [sp], #64
108// CHECK:     // encoding: [0xff,0x2b,0xdf,0x4c]
109// CHECK: ld1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0], #64
110// CHECK:     // encoding: [0x00,0x2c,0xdf,0x4c]
111// CHECK: ld1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3
112// CHECK:     // encoding: [0x00,0x20,0xc3,0x0c]
113// CHECK: ld1 { v15.4h, v16.4h, v17.4h, v18.4h }, [x15], x4
114// CHECK:     // encoding: [0xef,0x25,0xc4,0x0c]
115// CHECK: ld1 { v31.2s, v0.2s, v1.2s, v2.2s }, [sp], #32
116// CHECK:     // encoding: [0xff,0x2b,0xdf,0x0c]
117// CHECK: ld1 { v0.1d, v1.1d, v2.1d, v3.1d }, [x0], #32
118// CHECK:     // encoding: [0x00,0x2c,0xdf,0x0c]
119
120//------------------------------------------------------------------------------
121// Load multiple 2-element structures from two consecutive registers
122// (post-index)
123//------------------------------------------------------------------------------
124         ld2 { v0.16b, v1.16b }, [x0], x1
125         ld2 { v15.8h, v16.8h }, [x15], x2
126         ld2 { v31.4s, v0.4s }, [sp], #32
127         ld2 { v0.2d, v1.2d }, [x0], #32
128         ld2 { v0.8b, v1.8b }, [x0], x2
129         ld2 { v15.4h, v16.4h }, [x15], x3
130         ld2 { v31.2s, v0.2s }, [sp], #16
131// CHECK: ld2 { v0.16b, v1.16b }, [x0], x1
132// CHECK:     // encoding: [0x00,0x80,0xc1,0x4c]
133// CHECK: ld2 { v15.8h, v16.8h }, [x15], x2
134// CHECK:     // encoding: [0xef,0x85,0xc2,0x4c]
135// CHECK: ld2 { v31.4s, v0.4s }, [sp], #32
136// CHECK:     // encoding: [0xff,0x8b,0xdf,0x4c]
137// CHECK: ld2 { v0.2d, v1.2d }, [x0], #32
138// CHECK:     // encoding: [0x00,0x8c,0xdf,0x4c]
139// CHECK: ld2 { v0.8b, v1.8b }, [x0], x2
140// CHECK:     // encoding: [0x00,0x80,0xc2,0x0c]
141// CHECK: ld2 { v15.4h, v16.4h }, [x15], x3
142// CHECK:     // encoding: [0xef,0x85,0xc3,0x0c]
143// CHECK: ld2 { v31.2s, v0.2s }, [sp], #16
144// CHECK:     // encoding: [0xff,0x8b,0xdf,0x0c]
145
146//------------------------------------------------------------------------------
147// Load multiple 3-element structures from three consecutive registers
148// (post-index)
149//------------------------------------------------------------------------------
150         ld3 { v0.16b, v1.16b, v2.16b }, [x0], x1
151         ld3 { v15.8h, v16.8h, v17.8h }, [x15], x2
152         ld3 { v31.4s, v0.4s, v1.4s }, [sp], #48
153         ld3 { v0.2d, v1.2d, v2.2d }, [x0], #48
154         ld3 { v0.8b, v1.8b, v2.8b }, [x0], x2
155         ld3 { v15.4h, v16.4h, v17.4h }, [x15], x3
156         ld3 { v31.2s, v0.2s, v1.2s }, [sp], #24
157// CHECK: ld3 { v0.16b, v1.16b, v2.16b }, [x0], x1
158// CHECK:     // encoding: [0x00,0x40,0xc1,0x4c]
159// CHECK: ld3 { v15.8h, v16.8h, v17.8h }, [x15], x2
160// CHECK:     // encoding: [0xef,0x45,0xc2,0x4c]
161// CHECK: ld3 { v31.4s, v0.4s, v1.4s }, [sp], #48
162// CHECK:     // encoding: [0xff,0x4b,0xdf,0x4c]
163// CHECK: ld3 { v0.2d, v1.2d, v2.2d }, [x0], #48
164// CHECK:     // encoding: [0x00,0x4c,0xdf,0x4c]
165// CHECK: ld3 { v0.8b, v1.8b, v2.8b }, [x0], x2
166// CHECK:     // encoding: [0x00,0x40,0xc2,0x0c]
167// CHECK: ld3 { v15.4h, v16.4h, v17.4h }, [x15], x3
168// CHECK:     // encoding: [0xef,0x45,0xc3,0x0c]
169// CHECK: ld3 { v31.2s, v0.2s, v1.2s }, [sp], #24
170// CHECK:     // encoding: [0xff,0x4b,0xdf,0x0c]
171
172//------------------------------------------------------------------------------
173// Load multiple 4-element structures from four consecutive registers
174// (post-index)
175//------------------------------------------------------------------------------
176         ld4 { v0.16b, v1.16b, v2.16b, v3.16b }, [x0], x1
177         ld4 { v15.8h, v16.8h, v17.8h, v18.8h }, [x15], x2
178         ld4 { v31.4s, v0.4s, v1.4s, v2.4s }, [sp], #64
179         ld4 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0], #64
180         ld4 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3
181         ld4 { v15.4h, v16.4h, v17.4h, v18.4h }, [x15], x4
182         ld4 { v31.2s, v0.2s, v1.2s, v2.2s }, [sp], #32
183// CHECK: ld4 { v0.16b, v1.16b, v2.16b, v3.16b }, [x0], x1
184// CHECK:     // encoding: [0x00,0x00,0xc1,0x4c]
185// CHECK: ld4 { v15.8h, v16.8h, v17.8h, v18.8h }, [x15], x2
186// CHECK:     // encoding: [0xef,0x05,0xc2,0x4c]
187// CHECK: ld4 { v31.4s, v0.4s, v1.4s, v2.4s }, [sp], #64
188// CHECK:     // encoding: [0xff,0x0b,0xdf,0x4c]
189// CHECK: ld4 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0], #64
190// CHECK:     // encoding: [0x00,0x0c,0xdf,0x4c]
191// CHECK: ld4 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3
192// CHECK:     // encoding: [0x00,0x00,0xc3,0x0c]
193// CHECK: ld4 { v15.4h, v16.4h, v17.4h, v18.4h }, [x15], x4
194// CHECK:     // encoding: [0xef,0x05,0xc4,0x0c]
195// CHECK: ld4 { v31.2s, v0.2s, v1.2s, v2.2s }, [sp], #32
196// CHECK:     // encoding: [0xff,0x0b,0xdf,0x0c]
197
198//------------------------------------------------------------------------------
199// Store multiple 1-element structures from one register (post-index)
200//------------------------------------------------------------------------------
201         st1 { v0.16b }, [x0], x1
202         st1 { v15.8h }, [x15], x2
203         st1 { v31.4s }, [sp], #16
204         st1 { v0.2d }, [x0], #16
205         st1 { v0.8b }, [x0], x2
206         st1 { v15.4h }, [x15], x3
207         st1 { v31.2s }, [sp], #8
208         st1 { v0.1d }, [x0], #8
209// CHECK: st1 { v0.16b }, [x0], x1
210// CHECK:     // encoding: [0x00,0x70,0x81,0x4c]
211// CHECK: st1 { v15.8h }, [x15], x2
212// CHECK:     // encoding: [0xef,0x75,0x82,0x4c]
213// CHECK: st1 { v31.4s }, [sp], #16
214// CHECK:     // encoding: [0xff,0x7b,0x9f,0x4c]
215// CHECK: st1 { v0.2d }, [x0], #16
216// CHECK:     // encoding: [0x00,0x7c,0x9f,0x4c]
217// CHECK: st1 { v0.8b }, [x0], x2
218// CHECK:     // encoding: [0x00,0x70,0x82,0x0c]
219// CHECK: st1 { v15.4h }, [x15], x3
220// CHECK:     // encoding: [0xef,0x75,0x83,0x0c]
221// CHECK: st1 { v31.2s }, [sp], #8
222// CHECK:     // encoding: [0xff,0x7b,0x9f,0x0c]
223// CHECK: st1 { v0.1d }, [x0], #8
224// CHECK:     // encoding: [0x00,0x7c,0x9f,0x0c]
225
226//------------------------------------------------------------------------------
227// Store multiple 1-element structures from two consecutive registers
228// (post-index)
229//------------------------------------------------------------------------------
230         st1 { v0.16b, v1.16b }, [x0], x1
231         st1 { v15.8h, v16.8h }, [x15], x2
232         st1 { v31.4s, v0.4s }, [sp], #32
233         st1 { v0.2d, v1.2d }, [x0], #32
234         st1 { v0.8b, v1.8b }, [x0], x2
235         st1 { v15.4h, v16.4h }, [x15], x3
236         st1 { v31.2s, v0.2s }, [sp], #16
237         st1 { v0.1d, v1.1d }, [x0], #16
238// CHECK: st1 { v0.16b, v1.16b }, [x0], x1
239// CHECK:     // encoding: [0x00,0xa0,0x81,0x4c]
240// CHECK: st1 { v15.8h, v16.8h }, [x15], x2
241// CHECK:     // encoding: [0xef,0xa5,0x82,0x4c]
242// CHECK: st1 { v31.4s, v0.4s }, [sp], #32
243// CHECK:     // encoding: [0xff,0xab,0x9f,0x4c]
244// CHECK: st1 { v0.2d, v1.2d }, [x0], #32
245// CHECK:     // encoding: [0x00,0xac,0x9f,0x4c]
246// CHECK: st1 { v0.8b, v1.8b }, [x0], x2
247// CHECK:     // encoding: [0x00,0xa0,0x82,0x0c]
248// CHECK: st1 { v15.4h, v16.4h }, [x15], x3
249// CHECK:     // encoding: [0xef,0xa5,0x83,0x0c]
250// CHECK: st1 { v31.2s, v0.2s }, [sp], #16
251// CHECK:     // encoding: [0xff,0xab,0x9f,0x0c]
252// CHECK: st1 { v0.1d, v1.1d }, [x0], #16
253// CHECK:     // encoding: [0x00,0xac,0x9f,0x0c]
254
255//------------------------------------------------------------------------------
256// Store multiple 1-element structures from three consecutive registers
257// (post-index)
258//------------------------------------------------------------------------------
259         st1 { v0.16b, v1.16b, v2.16b }, [x0], x1
260         st1 { v15.8h, v16.8h, v17.8h }, [x15], x2
261         st1 { v31.4s, v0.4s, v1.4s }, [sp], #48
262         st1 { v0.2d, v1.2d, v2.2d }, [x0], #48
263         st1 { v0.8b, v1.8b, v2.8b }, [x0], x2
264         st1 { v15.4h, v16.4h, v17.4h }, [x15], x3
265         st1 { v31.2s, v0.2s, v1.2s }, [sp], #24
266         st1 { v0.1d, v1.1d, v2.1d }, [x0], #24
267// CHECK: st1 { v0.16b, v1.16b, v2.16b }, [x0], x1
268// CHECK:     // encoding: [0x00,0x60,0x81,0x4c]
269// CHECK: st1 { v15.8h, v16.8h, v17.8h }, [x15], x2
270// CHECK:     // encoding: [0xef,0x65,0x82,0x4c]
271// CHECK: st1 { v31.4s, v0.4s, v1.4s }, [sp], #48
272// CHECK:     // encoding: [0xff,0x6b,0x9f,0x4c]
273// CHECK: st1 { v0.2d, v1.2d, v2.2d }, [x0], #48
274// CHECK:     // encoding: [0x00,0x6c,0x9f,0x4c]
275// CHECK: st1 { v0.8b, v1.8b, v2.8b }, [x0], x2
276// CHECK:     // encoding: [0x00,0x60,0x82,0x0c]
277// CHECK: st1 { v15.4h, v16.4h, v17.4h }, [x15], x3
278// CHECK:     // encoding: [0xef,0x65,0x83,0x0c]
279// CHECK: st1 { v31.2s, v0.2s, v1.2s }, [sp], #24
280// CHECK:     // encoding: [0xff,0x6b,0x9f,0x0c]
281// CHECK: st1 { v0.1d, v1.1d, v2.1d }, [x0], #24
282// CHECK:     // encoding: [0x00,0x6c,0x9f,0x0c]
283
284//------------------------------------------------------------------------------
285// Store multiple 1-element structures from four consecutive registers
286// (post-index)
287//------------------------------------------------------------------------------
288         st1 { v0.16b, v1.16b, v2.16b, v3.16b }, [x0], x1
289         st1 { v15.8h, v16.8h, v17.8h, v18.8h }, [x15], x2
290         st1 { v31.4s, v0.4s, v1.4s, v2.4s }, [sp], #64
291         st1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0], #64
292         st1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3
293         st1 { v15.4h, v16.4h, v17.4h, v18.4h }, [x15], x4
294         st1 { v31.2s, v0.2s, v1.2s, v2.2s }, [sp], #32
295         st1 { v0.1d, v1.1d, v2.1d, v3.1d }, [x0], #32
296// CHECK: st1 { v0.16b, v1.16b, v2.16b, v3.16b }, [x0], x1
297// CHECK:     // encoding: [0x00,0x20,0x81,0x4c]
298// CHECK: st1 { v15.8h, v16.8h, v17.8h, v18.8h }, [x15], x2
299// CHECK:     // encoding: [0xef,0x25,0x82,0x4c]
300// CHECK: st1 { v31.4s, v0.4s, v1.4s, v2.4s }, [sp], #64
301// CHECK:     // encoding: [0xff,0x2b,0x9f,0x4c]
302// CHECK: st1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0], #64
303// CHECK:     // encoding: [0x00,0x2c,0x9f,0x4c]
304// CHECK: st1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3
305// CHECK:     // encoding: [0x00,0x20,0x83,0x0c]
306// CHECK: st1 { v15.4h, v16.4h, v17.4h, v18.4h }, [x15], x4
307// CHECK:     // encoding: [0xef,0x25,0x84,0x0c]
308// CHECK: st1 { v31.2s, v0.2s, v1.2s, v2.2s }, [sp], #32
309// CHECK:     // encoding: [0xff,0x2b,0x9f,0x0c]
310// CHECK: st1 { v0.1d, v1.1d, v2.1d, v3.1d }, [x0], #32
311// CHECK:     // encoding: [0x00,0x2c,0x9f,0x0c]
312
313//------------------------------------------------------------------------------
314// Store multiple 2-element structures from two consecutive registers
315// (post-index)
316//------------------------------------------------------------------------------
317         st2 { v0.16b, v1.16b }, [x0], x1
318         st2 { v15.8h, v16.8h }, [x15], x2
319         st2 { v31.4s, v0.4s }, [sp], #32
320         st2 { v0.2d, v1.2d }, [x0], #32
321         st2 { v0.8b, v1.8b }, [x0], x2
322         st2 { v15.4h, v16.4h }, [x15], x3
323         st2 { v31.2s, v0.2s }, [sp], #16
324// CHECK: st2 { v0.16b, v1.16b }, [x0], x1
325// CHECK:     // encoding: [0x00,0x80,0x81,0x4c]
326// CHECK: st2 { v15.8h, v16.8h }, [x15], x2
327// CHECK:     // encoding: [0xef,0x85,0x82,0x4c]
328// CHECK: st2 { v31.4s, v0.4s }, [sp], #32
329// CHECK:     // encoding: [0xff,0x8b,0x9f,0x4c]
330// CHECK: st2 { v0.2d, v1.2d }, [x0], #32
331// CHECK:     // encoding: [0x00,0x8c,0x9f,0x4c]
332// CHECK: st2 { v0.8b, v1.8b }, [x0], x2
333// CHECK:     // encoding: [0x00,0x80,0x82,0x0c]
334// CHECK: st2 { v15.4h, v16.4h }, [x15], x3
335// CHECK:     // encoding: [0xef,0x85,0x83,0x0c]
336// CHECK: st2 { v31.2s, v0.2s }, [sp], #16
337// CHECK:     // encoding: [0xff,0x8b,0x9f,0x0c]
338
339//------------------------------------------------------------------------------
340// Store multiple 3-element structures from three consecutive registers
341// (post-index)
342//------------------------------------------------------------------------------
343         st3 { v0.16b, v1.16b, v2.16b }, [x0], x1
344         st3 { v15.8h, v16.8h, v17.8h }, [x15], x2
345         st3 { v31.4s, v0.4s, v1.4s }, [sp], #48
346         st3 { v0.2d, v1.2d, v2.2d }, [x0], #48
347         st3 { v0.8b, v1.8b, v2.8b }, [x0], x2
348         st3 { v15.4h, v16.4h, v17.4h }, [x15], x3
349         st3 { v31.2s, v0.2s, v1.2s }, [sp], #24
350// CHECK: st3 { v0.16b, v1.16b, v2.16b }, [x0], x1
351// CHECK:     // encoding: [0x00,0x40,0x81,0x4c]
352// CHECK: st3 { v15.8h, v16.8h, v17.8h }, [x15], x2
353// CHECK:     // encoding: [0xef,0x45,0x82,0x4c]
354// CHECK: st3 { v31.4s, v0.4s, v1.4s }, [sp], #48
355// CHECK:     // encoding: [0xff,0x4b,0x9f,0x4c]
356// CHECK: st3 { v0.2d, v1.2d, v2.2d }, [x0], #48
357// CHECK:     // encoding: [0x00,0x4c,0x9f,0x4c]
358// CHECK: st3 { v0.8b, v1.8b, v2.8b }, [x0], x2
359// CHECK:     // encoding: [0x00,0x40,0x82,0x0c]
360// CHECK: st3 { v15.4h, v16.4h, v17.4h }, [x15], x3
361// CHECK:     // encoding: [0xef,0x45,0x83,0x0c]
362// CHECK: st3 { v31.2s, v0.2s, v1.2s }, [sp], #24
363// CHECK:     // encoding: [0xff,0x4b,0x9f,0x0c]
364
365//------------------------------------------------------------------------------
366// Store multiple 4-element structures from four consecutive registers
367// (post-index)
368//------------------------------------------------------------------------------
369         st4 { v0.16b, v1.16b, v2.16b, v3.16b }, [x0], x1
370         st4 { v15.8h, v16.8h, v17.8h, v18.8h }, [x15], x2
371         st4 { v31.4s, v0.4s, v1.4s, v2.4s }, [sp], #64
372         st4 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0], #64
373         st4 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3
374         st4 { v15.4h, v16.4h, v17.4h, v18.4h }, [x15], x4
375         st4 { v31.2s, v0.2s, v1.2s, v2.2s }, [sp], #32
376// CHECK: st4 { v0.16b, v1.16b, v2.16b, v3.16b }, [x0], x1
377// CHECK:     // encoding: [0x00,0x00,0x81,0x4c]
378// CHECK: st4 { v15.8h, v16.8h, v17.8h, v18.8h }, [x15], x2
379// CHECK:     // encoding: [0xef,0x05,0x82,0x4c]
380// CHECK: st4 { v31.4s, v0.4s, v1.4s, v2.4s }, [sp], #64
381// CHECK:     // encoding: [0xff,0x0b,0x9f,0x4c]
382// CHECK: st4 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0], #64
383// CHECK:     // encoding: [0x00,0x0c,0x9f,0x4c]
384// CHECK: st4 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3
385// CHECK:     // encoding: [0x00,0x00,0x83,0x0c]
386// CHECK: st4 { v15.4h, v16.4h, v17.4h, v18.4h }, [x15], x4
387// CHECK:     // encoding: [0xef,0x05,0x84,0x0c]
388// CHECK: st4 { v31.2s, v0.2s, v1.2s, v2.2s }, [sp], #32
389// CHECK:     // encoding: [0xff,0x0b,0x9f,0x0c]
390