[ARM] Better OR's for MVE compares
[llvm-core.git] / test / MC / AArch64 / neon-simd-post-ldst-multi-elem.s
blobc57a122f35c8a51b36bb71746efb3b93dec269cc
1 // RUN: llvm-mc -triple=arm64 -mattr=+neon -show-encoding < %s | FileCheck %s
3 // Check that the assembler can handle the documented syntax for AArch64
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]
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]
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]
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]
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]
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]
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]
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]
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]
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]
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]
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]
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]
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]