]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/CodeGen/aarch64-neon-ldst-one.c
Vendor import of clang release_38 branch r258549:
[FreeBSD/FreeBSD.git] / test / CodeGen / aarch64-neon-ldst-one.c
1 // REQUIRES: aarch64-registered-target
2 // RUN: %clang_cc1 -triple arm64-none-linux-gnu -target-feature +neon \
3 // RUN:   -ffp-contract=fast -S -O3 -o - %s | FileCheck %s
4
5 #include <arm_neon.h>
6
7 uint8x16_t test_vld1q_dup_u8(uint8_t  *a) {
8   // CHECK-LABEL: test_vld1q_dup_u8
9   return vld1q_dup_u8(a);
10   // CHECK: ld1r {{{ *v[0-9]+.16b *}}}, [{{x[0-9]+|sp}}]
11 }
12
13 uint16x8_t test_vld1q_dup_u16(uint16_t  *a) {
14   // CHECK-LABEL: test_vld1q_dup_u16
15   return vld1q_dup_u16(a);
16   // CHECK: ld1r {{{ *v[0-9]+.8h *}}}, [{{x[0-9]+|sp}}]
17 }
18
19 uint32x4_t test_vld1q_dup_u32(uint32_t  *a) {
20   // CHECK-LABEL: test_vld1q_dup_u32
21   return vld1q_dup_u32(a);
22   // CHECK: ld1r {{{ *v[0-9]+.4s *}}}, [{{x[0-9]+|sp}}]
23 }
24
25 uint64x2_t test_vld1q_dup_u64(uint64_t  *a) {
26   // CHECK-LABEL: test_vld1q_dup_u64
27   return vld1q_dup_u64(a);
28   // CHECK: ld1r {{{ *v[0-9]+.2d *}}}, [{{x[0-9]+|sp}}]
29 }
30
31 int8x16_t test_vld1q_dup_s8(int8_t  *a) {
32   // CHECK-LABEL: test_vld1q_dup_s8
33   return vld1q_dup_s8(a);
34   // CHECK: ld1r {{{ *v[0-9]+.16b *}}}, [{{x[0-9]+|sp}}]
35 }
36
37 int16x8_t test_vld1q_dup_s16(int16_t  *a) {
38   // CHECK-LABEL: test_vld1q_dup_s16
39   return vld1q_dup_s16(a);
40   // CHECK: ld1r {{{ *v[0-9]+.8h *}}}, [{{x[0-9]+|sp}}]
41 }
42
43 int32x4_t test_vld1q_dup_s32(int32_t  *a) {
44   // CHECK-LABEL: test_vld1q_dup_s32
45   return vld1q_dup_s32(a);
46   // CHECK: ld1r {{{ *v[0-9]+.4s *}}}, [{{x[0-9]+|sp}}]
47 }
48
49 int64x2_t test_vld1q_dup_s64(int64_t  *a) {
50   // CHECK-LABEL: test_vld1q_dup_s64
51   return vld1q_dup_s64(a);
52   // CHECK: ld1r {{{ *v[0-9]+.2d *}}}, [{{x[0-9]+|sp}}]
53 }
54
55 float16x8_t test_vld1q_dup_f16(float16_t  *a) {
56   // CHECK-LABEL: test_vld1q_dup_f16
57   return vld1q_dup_f16(a);
58   // CHECK: ld1r {{{ *v[0-9]+.8h *}}}, [{{x[0-9]+|sp}}]
59 }
60
61 float32x4_t test_vld1q_dup_f32(float32_t  *a) {
62   // CHECK-LABEL: test_vld1q_dup_f32
63   return vld1q_dup_f32(a);
64   // CHECK: ld1r {{{ *v[0-9]+.4s *}}}, [{{x[0-9]+|sp}}]
65 }
66
67 float64x2_t test_vld1q_dup_f64(float64_t  *a) {
68   // CHECK-LABEL: test_vld1q_dup_f64
69   return vld1q_dup_f64(a);
70   // CHECK: ld1r {{{ *v[0-9]+.2d *}}}, [{{x[0-9]+|sp}}]
71 }
72
73 poly8x16_t test_vld1q_dup_p8(poly8_t  *a) {
74   // CHECK-LABEL: test_vld1q_dup_p8
75   return vld1q_dup_p8(a);
76   // CHECK: ld1r {{{ *v[0-9]+.16b *}}}, [{{x[0-9]+|sp}}]
77 }
78
79 poly16x8_t test_vld1q_dup_p16(poly16_t  *a) {
80   // CHECK-LABEL: test_vld1q_dup_p16
81   return vld1q_dup_p16(a);
82   // CHECK: ld1r {{{ *v[0-9]+.8h *}}}, [{{x[0-9]+|sp}}]
83 }
84
85 poly64x2_t test_vld1q_dup_p64(poly64_t  *a) {
86   // CHECK-LABEL: test_vld1q_dup_p64
87   return vld1q_dup_p64(a);
88   // CHECK: ld1r {{{ *v[0-9]+.2d *}}}, [{{x[0-9]+|sp}}]
89 }
90
91 uint8x8_t test_vld1_dup_u8(uint8_t  *a) {
92   // CHECK-LABEL: test_vld1_dup_u8
93   return vld1_dup_u8(a);
94   // CHECK: ld1r {{{ *v[0-9]+.8b *}}}, [{{x[0-9]+|sp}}]
95 }
96
97 uint16x4_t test_vld1_dup_u16(uint16_t  *a) {
98   // CHECK-LABEL: test_vld1_dup_u16
99   return vld1_dup_u16(a);
100   // CHECK: ld1r {{{ *v[0-9]+.4h *}}}, [{{x[0-9]+|sp}}]
101 }
102
103 uint32x2_t test_vld1_dup_u32(uint32_t  *a) {
104   // CHECK-LABEL: test_vld1_dup_u32
105   return vld1_dup_u32(a);
106   // CHECK: ld1r {{{ *v[0-9]+.2s *}}}, [{{x[0-9]+|sp}}]
107 }
108
109 uint64x1_t test_vld1_dup_u64(uint64_t  *a) {
110   // CHECK-LABEL: test_vld1_dup_u64
111   return vld1_dup_u64(a);
112   // CHECK: {{ld1r { v[0-9]+.1d }|ldr d[0-9]+}}, [{{x[0-9]+|sp}}]
113 }
114
115 int8x8_t test_vld1_dup_s8(int8_t  *a) {
116   // CHECK-LABEL: test_vld1_dup_s8
117   return vld1_dup_s8(a);
118   // CHECK: ld1r {{{ *v[0-9]+.8b *}}}, [{{x[0-9]+|sp}}]
119 }
120
121 int16x4_t test_vld1_dup_s16(int16_t  *a) {
122   // CHECK-LABEL: test_vld1_dup_s16
123   return vld1_dup_s16(a);
124   // CHECK: ld1r {{{ *v[0-9]+.4h *}}}, [{{x[0-9]+|sp}}]
125 }
126
127 int32x2_t test_vld1_dup_s32(int32_t  *a) {
128   // CHECK-LABEL: test_vld1_dup_s32
129   return vld1_dup_s32(a);
130   // CHECK: ld1r {{{ *v[0-9]+.2s *}}}, [{{x[0-9]+|sp}}]
131 }
132
133 int64x1_t test_vld1_dup_s64(int64_t  *a) {
134   // CHECK-LABEL: test_vld1_dup_s64
135   return vld1_dup_s64(a);
136   // CHECK: {{ld1r { v[0-9]+.1d }|ldr d[0-9]+}}, [{{x[0-9]+|sp}}]
137 }
138
139 float16x4_t test_vld1_dup_f16(float16_t  *a) {
140   // CHECK-LABEL: test_vld1_dup_f16
141   return vld1_dup_f16(a);
142   // CHECK: ld1r {{{ *v[0-9]+.4h *}}}, [{{x[0-9]+|sp}}]
143 }
144
145 float32x2_t test_vld1_dup_f32(float32_t  *a) {
146   // CHECK-LABEL: test_vld1_dup_f32
147   return vld1_dup_f32(a);
148   // CHECK: ld1r {{{ *v[0-9]+.2s *}}}, [{{x[0-9]+|sp}}]
149 }
150
151 float64x1_t test_vld1_dup_f64(float64_t  *a) {
152   // CHECK-LABEL: test_vld1_dup_f64
153   return vld1_dup_f64(a);
154   // CHECK: {{ld1r { v[0-9]+.1d }|ldr d[0-9]+}}, [{{x[0-9]+|sp}}]
155 }
156
157 poly8x8_t test_vld1_dup_p8(poly8_t  *a) {
158   // CHECK-LABEL: test_vld1_dup_p8
159   return vld1_dup_p8(a);
160   // CHECK: ld1r {{{ *v[0-9]+.8b *}}}, [{{x[0-9]+|sp}}]
161 }
162
163 poly16x4_t test_vld1_dup_p16(poly16_t  *a) {
164   // CHECK-LABEL: test_vld1_dup_p16
165   return vld1_dup_p16(a);
166   // CHECK: ld1r {{{ *v[0-9]+.4h *}}}, [{{x[0-9]+|sp}}]
167 }
168
169 poly64x1_t test_vld1_dup_p64(poly64_t  *a) {
170   // CHECK-LABEL: test_vld1_dup_p64
171   return vld1_dup_p64(a);
172   // CHECK: {{ld1r { v[0-9]+.1d }|ldr d[0-9]+}}, [{{x[0-9]+|sp}}]
173 }
174
175 uint8x16x2_t test_vld2q_dup_u8(uint8_t  *a) {
176   // CHECK-LABEL: test_vld2q_dup_u8
177   return vld2q_dup_u8(a);
178   // CHECK: ld2r {{{ *v[0-9]+.16b, v[0-9]+.16b *}}}, [{{x[0-9]+|sp}}]
179 }
180
181 uint16x8x2_t test_vld2q_dup_u16(uint16_t  *a) {
182   // CHECK-LABEL: test_vld2q_dup_u16
183   return vld2q_dup_u16(a);
184   // CHECK: ld2r {{{ *v[0-9]+.8h, v[0-9]+.8h *}}}, [{{x[0-9]+|sp}}]
185 }
186
187 uint32x4x2_t test_vld2q_dup_u32(uint32_t  *a) {
188   // CHECK-LABEL: test_vld2q_dup_u32
189   return vld2q_dup_u32(a);
190   // CHECK: ld2r {{{ *v[0-9]+.4s, v[0-9]+.4s *}}}, [{{x[0-9]+|sp}}]
191 }
192
193 uint64x2x2_t test_vld2q_dup_u64(uint64_t  *a) {
194   // CHECK-LABEL: test_vld2q_dup_u64
195   return vld2q_dup_u64(a);
196   // CHECK: ld2r {{{ *v[0-9]+.2d, v[0-9]+.2d *}}}, [{{x[0-9]+|sp}}]
197 }
198
199 int8x16x2_t test_vld2q_dup_s8(int8_t  *a) {
200   // CHECK-LABEL: test_vld2q_dup_s8
201   return vld2q_dup_s8(a);
202   // CHECK: ld2r {{{ *v[0-9]+.16b, v[0-9]+.16b *}}}, [{{x[0-9]+|sp}}]
203 }
204
205 int16x8x2_t test_vld2q_dup_s16(int16_t  *a) {
206   // CHECK-LABEL: test_vld2q_dup_s16
207   return vld2q_dup_s16(a);
208   // CHECK: ld2r {{{ *v[0-9]+.8h, v[0-9]+.8h *}}}, [{{x[0-9]+|sp}}]
209 }
210
211 int32x4x2_t test_vld2q_dup_s32(int32_t  *a) {
212   // CHECK-LABEL: test_vld2q_dup_s32
213   return vld2q_dup_s32(a);
214   // CHECK: ld2r {{{ *v[0-9]+.4s, v[0-9]+.4s *}}}, [{{x[0-9]+|sp}}]
215 }
216
217 int64x2x2_t test_vld2q_dup_s64(int64_t  *a) {
218   // CHECK-LABEL: test_vld2q_dup_s64
219   return vld2q_dup_s64(a);
220   // CHECK: ld2r {{{ *v[0-9]+.2d, v[0-9]+.2d *}}}, [{{x[0-9]+|sp}}]
221 }
222
223 float16x8x2_t test_vld2q_dup_f16(float16_t  *a) {
224   // CHECK-LABEL: test_vld2q_dup_f16
225   return vld2q_dup_f16(a);
226   // CHECK: ld2r {{{ *v[0-9]+.8h, v[0-9]+.8h *}}}, [{{x[0-9]+|sp}}]
227 }
228
229 float32x4x2_t test_vld2q_dup_f32(float32_t  *a) {
230   // CHECK-LABEL: test_vld2q_dup_f32
231   return vld2q_dup_f32(a);
232   // CHECK: ld2r {{{ *v[0-9]+.4s, v[0-9]+.4s *}}}, [{{x[0-9]+|sp}}]
233 }
234
235 float64x2x2_t test_vld2q_dup_f64(float64_t  *a) {
236   // CHECK-LABEL: test_vld2q_dup_f64
237   return vld2q_dup_f64(a);
238   // CHECK: ld2r {{{ *v[0-9]+.2d, v[0-9]+.2d *}}}, [{{x[0-9]+|sp}}]
239 }
240
241 poly8x16x2_t test_vld2q_dup_p8(poly8_t  *a) {
242   // CHECK-LABEL: test_vld2q_dup_p8
243   return vld2q_dup_p8(a);
244   // CHECK: ld2r {{{ *v[0-9]+.16b, v[0-9]+.16b *}}}, [{{x[0-9]+|sp}}]
245 }
246
247 poly16x8x2_t test_vld2q_dup_p16(poly16_t  *a) {
248   // CHECK-LABEL: test_vld2q_dup_p16
249   return vld2q_dup_p16(a);
250   // CHECK: ld2r {{{ *v[0-9]+.8h, v[0-9]+.8h *}}}, [{{x[0-9]+|sp}}]
251 }
252
253 poly64x2x2_t test_vld2q_dup_p64(poly64_t  *a) {
254   // CHECK-LABEL: test_vld2q_dup_p64
255   return vld2q_dup_p64(a);
256   // CHECK: ld2r {{{ *v[0-9]+.2d, v[0-9]+.2d *}}}, [{{x[0-9]+|sp}}]
257 }
258
259 uint8x8x2_t test_vld2_dup_u8(uint8_t  *a) {
260   // CHECK-LABEL: test_vld2_dup_u8
261   return vld2_dup_u8(a);
262   // CHECK: ld2r {{{ *v[0-9]+.8b, v[0-9]+.8b *}}}, [{{x[0-9]+|sp}}]
263 }
264
265 uint16x4x2_t test_vld2_dup_u16(uint16_t  *a) {
266   // CHECK-LABEL: test_vld2_dup_u16
267   return vld2_dup_u16(a);
268   // CHECK: ld2r {{{ *v[0-9]+.4h, v[0-9]+.4h *}}}, [{{x[0-9]+|sp}}]
269 }
270
271 uint32x2x2_t test_vld2_dup_u32(uint32_t  *a) {
272   // CHECK-LABEL: test_vld2_dup_u32
273   return vld2_dup_u32(a);
274   // CHECK: ld2r {{{ *v[0-9]+.2s, v[0-9]+.2s *}}}, [{{x[0-9]+|sp}}]
275 }
276
277 uint64x1x2_t test_vld2_dup_u64(uint64_t  *a) {
278   // CHECK-LABEL: test_vld2_dup_u64
279   return vld2_dup_u64(a);
280   // CHECK: {{ld1|ld2r}} {{{ *v[0-9]+.1d, v[0-9]+.1d *}}}, [{{x[0-9]+|sp}}]
281 }
282
283 int8x8x2_t test_vld2_dup_s8(int8_t  *a) {
284   // CHECK-LABEL: test_vld2_dup_s8
285   return vld2_dup_s8(a);
286   // CHECK: ld2r {{{ *v[0-9]+.8b, v[0-9]+.8b *}}}, [{{x[0-9]+|sp}}]
287 }
288
289 int16x4x2_t test_vld2_dup_s16(int16_t  *a) {
290   // CHECK-LABEL: test_vld2_dup_s16
291   return vld2_dup_s16(a);
292   // CHECK: ld2r {{{ *v[0-9]+.4h, v[0-9]+.4h *}}}, [{{x[0-9]+|sp}}]
293 }
294
295 int32x2x2_t test_vld2_dup_s32(int32_t  *a) {
296   // CHECK-LABEL: test_vld2_dup_s32
297   return vld2_dup_s32(a);
298   // CHECK: ld2r {{{ *v[0-9]+.2s, v[0-9]+.2s *}}}, [{{x[0-9]+|sp}}]
299 }
300
301 int64x1x2_t test_vld2_dup_s64(int64_t  *a) {
302   // CHECK-LABEL: test_vld2_dup_s64
303   return vld2_dup_s64(a);
304   // CHECK: {{ld1|ld2r}} {{{ *v[0-9]+.1d, v[0-9]+.1d *}}}, [{{x[0-9]+|sp}}]
305 }
306
307 float16x4x2_t test_vld2_dup_f16(float16_t  *a) {
308   // CHECK-LABEL: test_vld2_dup_f16
309   return vld2_dup_f16(a);
310   // CHECK: ld2r {{{ *v[0-9]+.4h, v[0-9]+.4h *}}}, [{{x[0-9]+|sp}}]
311 }
312
313 float32x2x2_t test_vld2_dup_f32(float32_t  *a) {
314   // CHECK-LABEL: test_vld2_dup_f32
315   return vld2_dup_f32(a);
316   // CHECK: ld2r {{{ *v[0-9]+.2s, v[0-9]+.2s *}}}, [{{x[0-9]+|sp}}]
317 }
318
319 float64x1x2_t test_vld2_dup_f64(float64_t  *a) {
320   // CHECK-LABEL: test_vld2_dup_f64
321   return vld2_dup_f64(a);
322   // CHECK: {{ld1|ld2r}} {{{ *v[0-9]+.1d, v[0-9]+.1d *}}}, [{{x[0-9]+|sp}}]
323 }
324
325 poly8x8x2_t test_vld2_dup_p8(poly8_t  *a) {
326   // CHECK-LABEL: test_vld2_dup_p8
327   return vld2_dup_p8(a);
328   // CHECK: ld2r {{{ *v[0-9]+.8b, v[0-9]+.8b *}}}, [{{x[0-9]+|sp}}]
329 }
330
331 poly16x4x2_t test_vld2_dup_p16(poly16_t  *a) {
332   // CHECK-LABEL: test_vld2_dup_p16
333   return vld2_dup_p16(a);
334   // CHECK: ld2r {{{ *v[0-9]+.4h, v[0-9]+.4h *}}}, [{{x[0-9]+|sp}}]
335 }
336
337 poly64x1x2_t test_vld2_dup_p64(poly64_t  *a) {
338   // CHECK-LABEL: test_vld2_dup_p64
339   return vld2_dup_p64(a);
340   // CHECK: {{ld1|ld2r}} {{{ *v[0-9]+.1d, v[0-9]+.1d *}}}, [{{x[0-9]+|sp}}]
341 }
342
343 uint8x16x3_t test_vld3q_dup_u8(uint8_t  *a) {
344   // CHECK-LABEL: test_vld3q_dup_u8
345   return vld3q_dup_u8(a);
346   // CHECK: ld3r {{{ *v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b *}}},
347   // [{{x[0-9]+|sp}}]
348 }
349
350 uint16x8x3_t test_vld3q_dup_u16(uint16_t  *a) {
351   // CHECK-LABEL: test_vld3q_dup_u16
352   return vld3q_dup_u16(a);
353   // CHECK: ld3r {{{ *v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h *}}},
354   // [{{x[0-9]+|sp}}]
355 }
356
357 uint32x4x3_t test_vld3q_dup_u32(uint32_t  *a) {
358   // CHECK-LABEL: test_vld3q_dup_u32
359   return vld3q_dup_u32(a);
360   // CHECK: ld3r {{{ *v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s *}}},
361   // [{{x[0-9]+|sp}}]
362 }
363
364 uint64x2x3_t test_vld3q_dup_u64(uint64_t  *a) {
365   // CHECK-LABEL: test_vld3q_dup_u64
366   return vld3q_dup_u64(a);
367   // CHECK: ld3r {{{ *v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d *}}},
368   // [{{x[0-9]+|sp}}]
369 }
370
371 int8x16x3_t test_vld3q_dup_s8(int8_t  *a) {
372   // CHECK-LABEL: test_vld3q_dup_s8
373   return vld3q_dup_s8(a);
374   // CHECK: ld3r {{{ *v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b *}}},
375   // [{{x[0-9]+|sp}}]
376 }
377
378 int16x8x3_t test_vld3q_dup_s16(int16_t  *a) {
379   // CHECK-LABEL: test_vld3q_dup_s16
380   return vld3q_dup_s16(a);
381   // CHECK: ld3r {{{ *v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h *}}},
382   // [{{x[0-9]+|sp}}]
383 }
384
385 int32x4x3_t test_vld3q_dup_s32(int32_t  *a) {
386   // CHECK-LABEL: test_vld3q_dup_s32
387   return vld3q_dup_s32(a);
388   // CHECK: ld3r {{{ *v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s *}}},
389   // [{{x[0-9]+|sp}}]
390 }
391
392 int64x2x3_t test_vld3q_dup_s64(int64_t  *a) {
393   // CHECK-LABEL: test_vld3q_dup_s64
394   return vld3q_dup_s64(a);
395   // CHECK: ld3r {{{ *v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d *}}},
396   // [{{x[0-9]+|sp}}]
397 }
398
399 float16x8x3_t test_vld3q_dup_f16(float16_t  *a) {
400   // CHECK-LABEL: test_vld3q_dup_f16
401   return vld3q_dup_f16(a);
402   // CHECK: ld3r {{{ *v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h *}}},
403   // [{{x[0-9]+|sp}}]
404 }
405
406 float32x4x3_t test_vld3q_dup_f32(float32_t  *a) {
407   // CHECK-LABEL: test_vld3q_dup_f32
408   return vld3q_dup_f32(a);
409   // CHECK: ld3r {{{ *v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s *}}},
410   // [{{x[0-9]+|sp}}]
411 }
412
413 float64x2x3_t test_vld3q_dup_f64(float64_t  *a) {
414   // CHECK-LABEL: test_vld3q_dup_f64
415   return vld3q_dup_f64(a);
416   // CHECK: ld3r {{{ *v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d *}}},
417   // [{{x[0-9]+|sp}}]
418 }
419
420 poly8x16x3_t test_vld3q_dup_p8(poly8_t  *a) {
421   // CHECK-LABEL: test_vld3q_dup_p8
422   return vld3q_dup_p8(a);
423   // CHECK: ld3r {{{ *v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b *}}},
424   // [{{x[0-9]+|sp}}]
425 }
426
427 poly16x8x3_t test_vld3q_dup_p16(poly16_t  *a) {
428   // CHECK-LABEL: test_vld3q_dup_p16
429   return vld3q_dup_p16(a);
430   // CHECK: ld3r {{{ *v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h *}}},
431   // [{{x[0-9]+|sp}}]
432 }
433
434 poly64x2x3_t test_vld3q_dup_p64(poly64_t  *a) {
435   // CHECK-LABEL: test_vld3q_dup_p64
436   return vld3q_dup_p64(a);
437   // CHECK: ld3r {{{ *v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d *}}},
438   // [{{x[0-9]+|sp}}]
439 }
440
441 uint8x8x3_t test_vld3_dup_u8(uint8_t  *a) {
442   // CHECK-LABEL: test_vld3_dup_u8
443   return vld3_dup_u8(a);
444   // CHECK: ld3r {{{ *v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b *}}},
445   // [{{x[0-9]+|sp}}]
446 }
447
448 uint16x4x3_t test_vld3_dup_u16(uint16_t  *a) {
449   // CHECK-LABEL: test_vld3_dup_u16
450   return vld3_dup_u16(a);
451   // CHECK: ld3r {{{ *v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h *}}},
452   // [{{x[0-9]+|sp}}]
453 }
454
455 uint32x2x3_t test_vld3_dup_u32(uint32_t  *a) {
456   // CHECK-LABEL: test_vld3_dup_u32
457   return vld3_dup_u32(a);
458   // CHECK: ld3r {{{ *v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s *}}},
459   // [{{x[0-9]+|sp}}]
460 }
461
462 uint64x1x3_t test_vld3_dup_u64(uint64_t  *a) {
463   // CHECK-LABEL: test_vld3_dup_u64
464   return vld3_dup_u64(a);
465   // CHECK: {{ld1|ld3r}} {{{ *v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d *}}},
466   // [{{x[0-9]+|sp}}]
467 }
468
469 int8x8x3_t test_vld3_dup_s8(int8_t  *a) {
470   // CHECK-LABEL: test_vld3_dup_s8
471   return vld3_dup_s8(a);
472   // CHECK: ld3r {{{ *v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b *}}},
473   // [{{x[0-9]+|sp}}]
474 }
475
476 int16x4x3_t test_vld3_dup_s16(int16_t  *a) {
477   // CHECK-LABEL: test_vld3_dup_s16
478   return vld3_dup_s16(a);
479   // CHECK: ld3r {{{ *v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h *}}},
480   // [{{x[0-9]+|sp}}]
481 }
482
483 int32x2x3_t test_vld3_dup_s32(int32_t  *a) {
484   // CHECK-LABEL: test_vld3_dup_s32
485   return vld3_dup_s32(a);
486   // CHECK: ld3r {{{ *v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s *}}},
487   // [{{x[0-9]+|sp}}]
488 }
489
490 int64x1x3_t test_vld3_dup_s64(int64_t  *a) {
491   // CHECK-LABEL: test_vld3_dup_s64
492   return vld3_dup_s64(a);
493   // CHECK: {{ld1|ld3r}} {{{ *v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d *}}},
494   // [{{x[0-9]+|sp}}]
495 }
496
497 float16x4x3_t test_vld3_dup_f16(float16_t  *a) {
498   // CHECK-LABEL: test_vld3_dup_f16
499   return vld3_dup_f16(a);
500   // CHECK: ld3r {{{ *v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h *}}},
501   // [{{x[0-9]+|sp}}]
502 }
503
504 float32x2x3_t test_vld3_dup_f32(float32_t  *a) {
505   // CHECK-LABEL: test_vld3_dup_f32
506   return vld3_dup_f32(a);
507   // CHECK: ld3r {{{ *v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s *}}},
508   // [{{x[0-9]+|sp}}]
509 }
510
511 float64x1x3_t test_vld3_dup_f64(float64_t  *a) {
512   // CHECK-LABEL: test_vld3_dup_f64
513   return vld3_dup_f64(a);
514   // CHECK: {{ld1|ld3r}} {{{ *v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d *}}},
515   // [{{x[0-9]+|sp}}]
516 }
517
518 poly8x8x3_t test_vld3_dup_p8(poly8_t  *a) {
519   // CHECK-LABEL: test_vld3_dup_p8
520   return vld3_dup_p8(a);
521   // CHECK: ld3r {{{ *v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b *}}},
522   // [{{x[0-9]+|sp}}]
523 }
524
525 poly16x4x3_t test_vld3_dup_p16(poly16_t  *a) {
526   // CHECK-LABEL: test_vld3_dup_p16
527   return vld3_dup_p16(a);
528   // CHECK: ld3r {{{ *v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h *}}},
529   // [{{x[0-9]+|sp}}]
530 }
531
532 poly64x1x3_t test_vld3_dup_p64(poly64_t  *a) {
533   // CHECK-LABEL: test_vld3_dup_p64
534   return vld3_dup_p64(a);
535   // CHECK: {{ld1|ld3r}} {{{ *v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d *}}},
536   // [{{x[0-9]+|sp}}]
537 }
538
539 uint8x16x4_t test_vld4q_dup_u8(uint8_t  *a) {
540   // CHECK-LABEL: test_vld4q_dup_u8
541   return vld4q_dup_u8(a);
542   // CHECK: ld4r {{{ *v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b *}}}, [{{x[0-9]+|sp}}]
543 }
544
545 uint16x8x4_t test_vld4q_dup_u16(uint16_t  *a) {
546   // CHECK-LABEL: test_vld4q_dup_u16
547   return vld4q_dup_u16(a);
548   // CHECK: ld4r {{{ *v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h *}}}, [{{x[0-9]+|sp}}]
549 }
550
551 uint32x4x4_t test_vld4q_dup_u32(uint32_t  *a) {
552   // CHECK-LABEL: test_vld4q_dup_u32
553   return vld4q_dup_u32(a);
554   // CHECK: ld4r {{{ *v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s *}}}, [{{x[0-9]+|sp}}]
555 }
556
557 uint64x2x4_t test_vld4q_dup_u64(uint64_t  *a) {
558   // CHECK-LABEL: test_vld4q_dup_u64
559   return vld4q_dup_u64(a);
560   // CHECK: ld4r {{{ *v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d *}}}, [{{x[0-9]+|sp}}]
561 }
562
563 int8x16x4_t test_vld4q_dup_s8(int8_t  *a) {
564   // CHECK-LABEL: test_vld4q_dup_s8
565   return vld4q_dup_s8(a);
566   // CHECK: ld4r {{{ *v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b *}}}, [{{x[0-9]+|sp}}]
567 }
568
569 int16x8x4_t test_vld4q_dup_s16(int16_t  *a) {
570   // CHECK-LABEL: test_vld4q_dup_s16
571   return vld4q_dup_s16(a);
572   // CHECK: ld4r {{{ *v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h *}}}, [{{x[0-9]+|sp}}]
573 }
574
575 int32x4x4_t test_vld4q_dup_s32(int32_t  *a) {
576   // CHECK-LABEL: test_vld4q_dup_s32
577   return vld4q_dup_s32(a);
578   // CHECK: ld4r {{{ *v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s *}}}, [{{x[0-9]+|sp}}]
579 }
580
581 int64x2x4_t test_vld4q_dup_s64(int64_t  *a) {
582   // CHECK-LABEL: test_vld4q_dup_s64
583   return vld4q_dup_s64(a);
584   // CHECK: ld4r {{{ *v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d *}}}, [{{x[0-9]+|sp}}]
585 }
586
587 float16x8x4_t test_vld4q_dup_f16(float16_t  *a) {
588   // CHECK-LABEL: test_vld4q_dup_f16
589   return vld4q_dup_f16(a);
590   // CHECK: ld4r {{{ *v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h *}}}, [{{x[0-9]+|sp}}]
591 }
592
593 float32x4x4_t test_vld4q_dup_f32(float32_t  *a) {
594   // CHECK-LABEL: test_vld4q_dup_f32
595   return vld4q_dup_f32(a);
596   // CHECK: ld4r {{{ *v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s *}}}, [{{x[0-9]+|sp}}]
597 }
598
599 float64x2x4_t test_vld4q_dup_f64(float64_t  *a) {
600   // CHECK-LABEL: test_vld4q_dup_f64
601   return vld4q_dup_f64(a);
602   // CHECK: ld4r {{{ *v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d *}}}, [{{x[0-9]+|sp}}]
603 }
604
605 poly8x16x4_t test_vld4q_dup_p8(poly8_t  *a) {
606   // CHECK-LABEL: test_vld4q_dup_p8
607   return vld4q_dup_p8(a);
608   // CHECK: ld4r {{{ *v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b *}}}, [{{x[0-9]+|sp}}]
609 }
610
611 poly16x8x4_t test_vld4q_dup_p16(poly16_t  *a) {
612   // CHECK-LABEL: test_vld4q_dup_p16
613   return vld4q_dup_p16(a);
614   // CHECK: ld4r {{{ *v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h *}}}, [{{x[0-9]+|sp}}]
615 }
616
617 poly64x2x4_t test_vld4q_dup_p64(poly64_t  *a) {
618   // CHECK-LABEL: test_vld4q_dup_p64
619   return vld4q_dup_p64(a);
620   // CHECK: ld4r {{{ *v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d *}}}, [{{x[0-9]+|sp}}]
621 }
622
623 uint8x8x4_t test_vld4_dup_u8(uint8_t  *a) {
624   // CHECK-LABEL: test_vld4_dup_u8
625   return vld4_dup_u8(a);
626   // CHECK: ld4r {{{ *v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b *}}}, [{{x[0-9]+|sp}}]
627 }
628
629 uint16x4x4_t test_vld4_dup_u16(uint16_t  *a) {
630   // CHECK-LABEL: test_vld4_dup_u16
631   return vld4_dup_u16(a);
632   // CHECK: ld4r {{{ *v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h *}}}, [{{x[0-9]+|sp}}]
633 }
634
635 uint32x2x4_t test_vld4_dup_u32(uint32_t  *a) {
636   // CHECK-LABEL: test_vld4_dup_u32
637   return vld4_dup_u32(a);
638   // CHECK: ld4r {{{ *v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s *}}}, [{{x[0-9]+|sp}}]
639 }
640
641 uint64x1x4_t test_vld4_dup_u64(uint64_t  *a) {
642   // CHECK-LABEL: test_vld4_dup_u64
643   return vld4_dup_u64(a);
644   // CHECK: {{ld1|ld4r}} {{{ *v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d *}}}, [{{x[0-9]+|sp}}]
645 }
646
647 int8x8x4_t test_vld4_dup_s8(int8_t  *a) {
648   // CHECK-LABEL: test_vld4_dup_s8
649   return vld4_dup_s8(a);
650   // CHECK: ld4r {{{ *v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b *}}}, [{{x[0-9]+|sp}}]
651 }
652
653 int16x4x4_t test_vld4_dup_s16(int16_t  *a) {
654   // CHECK-LABEL: test_vld4_dup_s16
655   return vld4_dup_s16(a);
656   // CHECK: ld4r {{{ *v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h *}}}, [{{x[0-9]+|sp}}]
657 }
658
659 int32x2x4_t test_vld4_dup_s32(int32_t  *a) {
660   // CHECK-LABEL: test_vld4_dup_s32
661   return vld4_dup_s32(a);
662   // CHECK: ld4r {{{ *v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s *}}}, [{{x[0-9]+|sp}}]
663 }
664
665 int64x1x4_t test_vld4_dup_s64(int64_t  *a) {
666   // CHECK-LABEL: test_vld4_dup_s64
667   return vld4_dup_s64(a);
668   // CHECK: {{ld1|ld4r}} {{{ *v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d *}}}, [{{x[0-9]+|sp}}]
669 }
670
671 float16x4x4_t test_vld4_dup_f16(float16_t  *a) {
672   // CHECK-LABEL: test_vld4_dup_f16
673   return vld4_dup_f16(a);
674   // CHECK: ld4r {{{ *v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h *}}}, [{{x[0-9]+|sp}}]
675 }
676
677 float32x2x4_t test_vld4_dup_f32(float32_t  *a) {
678   // CHECK-LABEL: test_vld4_dup_f32
679   return vld4_dup_f32(a);
680   // CHECK: ld4r {{{ *v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s *}}}, [{{x[0-9]+|sp}}]
681 }
682
683 float64x1x4_t test_vld4_dup_f64(float64_t  *a) {
684   // CHECK-LABEL: test_vld4_dup_f64
685   return vld4_dup_f64(a);
686   // CHECK: {{ld1|ld4r}} {{{ *v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d *}}}, [{{x[0-9]+|sp}}]
687 }
688
689 poly8x8x4_t test_vld4_dup_p8(poly8_t  *a) {
690   // CHECK-LABEL: test_vld4_dup_p8
691   return vld4_dup_p8(a);
692   // CHECK: ld4r {{{ *v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b *}}}, [{{x[0-9]+|sp}}]
693 }
694
695 poly16x4x4_t test_vld4_dup_p16(poly16_t  *a) {
696   // CHECK-LABEL: test_vld4_dup_p16
697   return vld4_dup_p16(a);
698   // CHECK: ld4r {{{ *v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h *}}}, [{{x[0-9]+|sp}}]
699 }
700
701 poly64x1x4_t test_vld4_dup_p64(poly64_t  *a) {
702   // CHECK-LABEL: test_vld4_dup_p64
703   return vld4_dup_p64(a);
704   // CHECK: {{ld1|ld4r}} {{{ *v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d *}}}, [{{x[0-9]+|sp}}]
705 }
706
707 uint8x16_t test_vld1q_lane_u8(uint8_t  *a, uint8x16_t b) {
708   // CHECK-LABEL: test_vld1q_lane_u8
709   return vld1q_lane_u8(a, b, 15);
710   // CHECK: ld1 {{{ *v[0-9]+.b *}}}[15], [{{x[0-9]+|sp}}]
711 }
712
713 uint16x8_t test_vld1q_lane_u16(uint16_t  *a, uint16x8_t b) {
714   // CHECK-LABEL: test_vld1q_lane_u16
715   return vld1q_lane_u16(a, b, 7);
716   // CHECK: ld1 {{{ *v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
717 }
718
719 uint32x4_t test_vld1q_lane_u32(uint32_t  *a, uint32x4_t b) {
720   // CHECK-LABEL: test_vld1q_lane_u32
721   return vld1q_lane_u32(a, b, 3);
722   // CHECK: ld1 {{{ *v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
723 }
724
725 uint64x2_t test_vld1q_lane_u64(uint64_t  *a, uint64x2_t b) {
726   // CHECK-LABEL: test_vld1q_lane_u64
727   return vld1q_lane_u64(a, b, 1);
728   // CHECK: ld1 {{{ *v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
729 }
730
731 int8x16_t test_vld1q_lane_s8(int8_t  *a, int8x16_t b) {
732   // CHECK-LABEL: test_vld1q_lane_s8
733   return vld1q_lane_s8(a, b, 15);
734   // CHECK: ld1 {{{ *v[0-9]+.b *}}}[15], [{{x[0-9]+|sp}}]
735 }
736
737 int16x8_t test_vld1q_lane_s16(int16_t  *a, int16x8_t b) {
738   // CHECK-LABEL: test_vld1q_lane_s16
739   return vld1q_lane_s16(a, b, 7);
740   // CHECK: ld1 {{{ *v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
741 }
742
743 int32x4_t test_vld1q_lane_s32(int32_t  *a, int32x4_t b) {
744   // CHECK-LABEL: test_vld1q_lane_s32
745   return vld1q_lane_s32(a, b, 3);
746   // CHECK: ld1 {{{ *v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
747 }
748
749 int64x2_t test_vld1q_lane_s64(int64_t  *a, int64x2_t b) {
750   // CHECK-LABEL: test_vld1q_lane_s64
751   return vld1q_lane_s64(a, b, 1);
752   // CHECK: ld1 {{{ *v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
753 }
754
755 float16x8_t test_vld1q_lane_f16(float16_t  *a, float16x8_t b) {
756   // CHECK-LABEL: test_vld1q_lane_f16
757   return vld1q_lane_f16(a, b, 7);
758   // CHECK: ld1 {{{ *v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
759 }
760
761 float32x4_t test_vld1q_lane_f32(float32_t  *a, float32x4_t b) {
762   // CHECK-LABEL: test_vld1q_lane_f32
763   return vld1q_lane_f32(a, b, 3);
764   // CHECK: ld1 {{{ *v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
765 }
766
767 float64x2_t test_vld1q_lane_f64(float64_t  *a, float64x2_t b) {
768   // CHECK-LABEL: test_vld1q_lane_f64
769   return vld1q_lane_f64(a, b, 1);
770   // CHECK: ld1 {{{ *v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
771 }
772
773 poly8x16_t test_vld1q_lane_p8(poly8_t  *a, poly8x16_t b) {
774   // CHECK-LABEL: test_vld1q_lane_p8
775   return vld1q_lane_p8(a, b, 15);
776   // CHECK: ld1 {{{ *v[0-9]+.b *}}}[15], [{{x[0-9]+|sp}}]
777 }
778
779 poly16x8_t test_vld1q_lane_p16(poly16_t  *a, poly16x8_t b) {
780   // CHECK-LABEL: test_vld1q_lane_p16
781   return vld1q_lane_p16(a, b, 7);
782   // CHECK: ld1 {{{ *v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
783 }
784
785 poly64x2_t test_vld1q_lane_p64(poly64_t  *a, poly64x2_t b) {
786   // CHECK-LABEL: test_vld1q_lane_p64
787   return vld1q_lane_p64(a, b, 1);
788   // CHECK: ld1 {{{ *v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
789 }
790
791 uint8x8_t test_vld1_lane_u8(uint8_t  *a, uint8x8_t b) {
792   // CHECK-LABEL: test_vld1_lane_u8
793   return vld1_lane_u8(a, b, 7);
794   // CHECK: ld1 {{{ *v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
795 }
796
797 uint16x4_t test_vld1_lane_u16(uint16_t  *a, uint16x4_t b) {
798   // CHECK-LABEL: test_vld1_lane_u16
799   return vld1_lane_u16(a, b, 3);
800   // CHECK: ld1 {{{ *v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
801 }
802
803 uint32x2_t test_vld1_lane_u32(uint32_t  *a, uint32x2_t b) {
804   // CHECK-LABEL: test_vld1_lane_u32
805   return vld1_lane_u32(a, b, 1);
806   // CHECK: ld1 {{{ *v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
807 }
808
809 uint64x1_t test_vld1_lane_u64(uint64_t  *a, uint64x1_t b) {
810   // CHECK-LABEL: test_vld1_lane_u64
811   return vld1_lane_u64(a, b, 0);
812   // CHECK: {{ld1r { v[0-9]+.1d }|ldr d[0-9]+}}, [{{x[0-9]+|sp}}]
813 }
814
815 int8x8_t test_vld1_lane_s8(int8_t  *a, int8x8_t b) {
816   // CHECK-LABEL: test_vld1_lane_s8
817   return vld1_lane_s8(a, b, 7);
818   // CHECK: ld1 {{{ *v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
819 }
820
821 int16x4_t test_vld1_lane_s16(int16_t  *a, int16x4_t b) {
822   // CHECK-LABEL: test_vld1_lane_s16
823   return vld1_lane_s16(a, b, 3);
824   // CHECK: ld1 {{{ *v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
825 }
826
827 int32x2_t test_vld1_lane_s32(int32_t  *a, int32x2_t b) {
828   // CHECK-LABEL: test_vld1_lane_s32
829   return vld1_lane_s32(a, b, 1);
830   // CHECK: ld1 {{{ *v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
831 }
832
833 int64x1_t test_vld1_lane_s64(int64_t  *a, int64x1_t b) {
834   // CHECK-LABEL: test_vld1_lane_s64
835   return vld1_lane_s64(a, b, 0);
836   // CHECK: {{ld1r { v[0-9]+.1d }|ldr d[0-9]+}}, [{{x[0-9]+|sp}}]
837 }
838
839 float16x4_t test_vld1_lane_f16(float16_t  *a, float16x4_t b) {
840   // CHECK-LABEL: test_vld1_lane_f16
841   return vld1_lane_f16(a, b, 3);
842   // CHECK: ld1 {{{ *v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
843 }
844
845 float32x2_t test_vld1_lane_f32(float32_t  *a, float32x2_t b) {
846   // CHECK-LABEL: test_vld1_lane_f32
847   return vld1_lane_f32(a, b, 1);
848   // CHECK: ld1 {{{ *v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
849 }
850
851 float64x1_t test_vld1_lane_f64(float64_t  *a, float64x1_t b) {
852   // CHECK-LABEL: test_vld1_lane_f64
853   return vld1_lane_f64(a, b, 0);
854   // CHECK: {{ld1r { v[0-9]+.1d }|ldr d[0-9]+}}, [{{x[0-9]+|sp}}]
855 }
856
857 poly8x8_t test_vld1_lane_p8(poly8_t  *a, poly8x8_t b) {
858   // CHECK-LABEL: test_vld1_lane_p8
859   return vld1_lane_p8(a, b, 7);
860   // CHECK: ld1 {{{ *v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
861 }
862
863 poly16x4_t test_vld1_lane_p16(poly16_t  *a, poly16x4_t b) {
864   // CHECK-LABEL: test_vld1_lane_p16
865   return vld1_lane_p16(a, b, 3);
866   // CHECK: ld1 {{{ *v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
867 }
868
869 poly64x1_t test_vld1_lane_p64(poly64_t  *a, poly64x1_t b) {
870   // CHECK-LABEL: test_vld1_lane_p64
871   return vld1_lane_p64(a, b, 0);
872   // CHECK: {{ld1r { v[0-9]+.1d }|ldr d[0-9]+}}, [{{x[0-9]+|sp}}]
873 }
874
875 int8x16x2_t test_vld2q_lane_s8(int8_t const * ptr, int8x16x2_t src) {
876   // CHECK-LABEL: test_vld2q_lane_s8
877   return vld2q_lane_s8(ptr, src, 15);
878   // CHECK: ld2 {{{ *v[0-9]+.b,  v[0-9]+.b *}}}[15], [x0]
879 }
880
881 uint8x16x2_t test_vld2q_lane_u8(uint8_t const * ptr, uint8x16x2_t src) {
882   // CHECK-LABEL: test_vld2q_lane_u8
883   return vld2q_lane_u8(ptr, src, 15);
884   // CHECK: ld2 {{{ *v[0-9]+.b, v[0-9]+.b *}}}[15], [x0]
885 }
886
887 poly8x16x2_t test_vld2q_lane_p8(poly8_t const * ptr, poly8x16x2_t src) {
888   // CHECK-LABEL: test_vld2q_lane_p8
889   return vld2q_lane_p8(ptr, src, 15);
890   // CHECK: ld2 {{{ *v[0-9]+.b, v[0-9]+.b *}}}[15], [x0]
891 }
892
893 int8x16x3_t test_vld3q_lane_s8(int8_t const * ptr, int8x16x3_t src) {
894   // CHECK-LABEL: test_vld3q_lane_s8
895   return vld3q_lane_s8(ptr, src, 15);
896   // CHECK: ld3 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[15], [x0]
897 }
898
899 uint8x16x3_t test_vld3q_lane_u8(uint8_t const * ptr, uint8x16x3_t src) {
900   // CHECK-LABEL: test_vld3q_lane_u8
901   return vld3q_lane_u8(ptr, src, 15);
902   // CHECK: ld3 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[15], [x0]
903 }
904
905 uint16x8x2_t test_vld2q_lane_u16(uint16_t  *a, uint16x8x2_t b) {
906   // CHECK-LABEL: test_vld2q_lane_u16
907   return vld2q_lane_u16(a, b, 7);
908   // CHECK: ld2 {{{ *v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
909 }
910
911 uint32x4x2_t test_vld2q_lane_u32(uint32_t  *a, uint32x4x2_t b) {
912   // CHECK-LABEL: test_vld2q_lane_u32
913   return vld2q_lane_u32(a, b, 3);
914   // CHECK: ld2 {{{ *v[0-9]+.s, v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
915 }
916
917 uint64x2x2_t test_vld2q_lane_u64(uint64_t  *a, uint64x2x2_t b) {
918   // CHECK-LABEL: test_vld2q_lane_u64
919   return vld2q_lane_u64(a, b, 1);
920   // CHECK: ld2 {{{ *v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
921 }
922
923 int16x8x2_t test_vld2q_lane_s16(int16_t  *a, int16x8x2_t b) {
924   // CHECK-LABEL: test_vld2q_lane_s16
925   return vld2q_lane_s16(a, b, 7);
926   // CHECK: ld2 {{{ *v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
927 }
928
929 int32x4x2_t test_vld2q_lane_s32(int32_t  *a, int32x4x2_t b) {
930   // CHECK-LABEL: test_vld2q_lane_s32
931   return vld2q_lane_s32(a, b, 3);
932   // CHECK: ld2 {{{ *v[0-9]+.s, v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
933 }
934
935 int64x2x2_t test_vld2q_lane_s64(int64_t  *a, int64x2x2_t b) {
936   // CHECK-LABEL: test_vld2q_lane_s64
937   return vld2q_lane_s64(a, b, 1);
938   // CHECK: ld2 {{{ *v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
939 }
940
941 float16x8x2_t test_vld2q_lane_f16(float16_t  *a, float16x8x2_t b) {
942   // CHECK-LABEL: test_vld2q_lane_f16
943   return vld2q_lane_f16(a, b, 7);
944   // CHECK: ld2 {{{ *v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
945 }
946
947 float32x4x2_t test_vld2q_lane_f32(float32_t  *a, float32x4x2_t b) {
948   // CHECK-LABEL: test_vld2q_lane_f32
949   return vld2q_lane_f32(a, b, 3);
950   // CHECK: ld2 {{{ *v[0-9]+.s, v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
951 }
952
953 float64x2x2_t test_vld2q_lane_f64(float64_t  *a, float64x2x2_t b) {
954   // CHECK-LABEL: test_vld2q_lane_f64
955   return vld2q_lane_f64(a, b, 1);
956   // CHECK: ld2 {{{ *v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
957 }
958
959 poly16x8x2_t test_vld2q_lane_p16(poly16_t  *a, poly16x8x2_t b) {
960   // CHECK-LABEL: test_vld2q_lane_p16
961   return vld2q_lane_p16(a, b, 7);
962   // CHECK: ld2 {{{ *v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
963 }
964
965 poly64x2x2_t test_vld2q_lane_p64(poly64_t  *a, poly64x2x2_t b) {
966   // CHECK-LABEL: test_vld2q_lane_p64
967   return vld2q_lane_p64(a, b, 1);
968   // CHECK: ld2 {{{ *v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
969 }
970
971 uint8x8x2_t test_vld2_lane_u8(uint8_t  *a, uint8x8x2_t b) {
972   // CHECK-LABEL: test_vld2_lane_u8
973   return vld2_lane_u8(a, b, 7);
974   // CHECK: ld2 {{{ *v[0-9]+.b, v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
975 }
976
977 uint16x4x2_t test_vld2_lane_u16(uint16_t  *a, uint16x4x2_t b) {
978   // CHECK-LABEL: test_vld2_lane_u16
979   return vld2_lane_u16(a, b, 3);
980   // CHECK: ld2 {{{ *v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
981 }
982
983 uint32x2x2_t test_vld2_lane_u32(uint32_t  *a, uint32x2x2_t b) {
984   // CHECK-LABEL: test_vld2_lane_u32
985   return vld2_lane_u32(a, b, 1);
986   // CHECK: ld2 {{{ *v[0-9]+.s, v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
987 }
988
989 uint64x1x2_t test_vld2_lane_u64(uint64_t  *a, uint64x1x2_t b) {
990   // CHECK-LABEL: test_vld2_lane_u64
991   return vld2_lane_u64(a, b, 0);
992   // CHECK: ld2 {{{ *v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
993 }
994
995 int8x8x2_t test_vld2_lane_s8(int8_t  *a, int8x8x2_t b) {
996   // CHECK-LABEL: test_vld2_lane_s8
997   return vld2_lane_s8(a, b, 7);
998   // CHECK: ld2 {{{ *v[0-9]+.b, v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
999 }
1000
1001 int16x4x2_t test_vld2_lane_s16(int16_t  *a, int16x4x2_t b) {
1002   // CHECK-LABEL: test_vld2_lane_s16
1003   return vld2_lane_s16(a, b, 3);
1004   // CHECK: ld2 {{{ *v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
1005 }
1006
1007 int32x2x2_t test_vld2_lane_s32(int32_t  *a, int32x2x2_t b) {
1008   // CHECK-LABEL: test_vld2_lane_s32
1009   return vld2_lane_s32(a, b, 1);
1010   // CHECK: ld2 {{{ *v[0-9]+.s, v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
1011 }
1012
1013 int64x1x2_t test_vld2_lane_s64(int64_t  *a, int64x1x2_t b) {
1014   // CHECK-LABEL: test_vld2_lane_s64
1015   return vld2_lane_s64(a, b, 0);
1016   // CHECK: ld2 {{{ *v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
1017 }
1018
1019 float16x4x2_t test_vld2_lane_f16(float16_t  *a, float16x4x2_t b) {
1020   // CHECK-LABEL: test_vld2_lane_f16
1021   return vld2_lane_f16(a, b, 3);
1022   // CHECK: ld2 {{{ *v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
1023 }
1024
1025 float32x2x2_t test_vld2_lane_f32(float32_t  *a, float32x2x2_t b) {
1026   // CHECK-LABEL: test_vld2_lane_f32
1027   return vld2_lane_f32(a, b, 1);
1028   // CHECK: ld2 {{{ *v[0-9]+.s, v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
1029 }
1030
1031 float64x1x2_t test_vld2_lane_f64(float64_t  *a, float64x1x2_t b) {
1032   // CHECK-LABEL: test_vld2_lane_f64
1033   return vld2_lane_f64(a, b, 0);
1034   // CHECK: ld2 {{{ *v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
1035 }
1036
1037 poly8x8x2_t test_vld2_lane_p8(poly8_t  *a, poly8x8x2_t b) {
1038   // CHECK-LABEL: test_vld2_lane_p8
1039   return vld2_lane_p8(a, b, 7);
1040   // CHECK: ld2 {{{ *v[0-9]+.b, v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
1041 }
1042
1043 poly16x4x2_t test_vld2_lane_p16(poly16_t  *a, poly16x4x2_t b) {
1044   // CHECK-LABEL: test_vld2_lane_p16
1045   return vld2_lane_p16(a, b, 3);
1046   // CHECK: ld2 {{{ *v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
1047 }
1048
1049 poly64x1x2_t test_vld2_lane_p64(poly64_t  *a, poly64x1x2_t b) {
1050   // CHECK-LABEL: test_vld2_lane_p64
1051   return vld2_lane_p64(a, b, 0);
1052   // CHECK: ld2 {{{ *v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
1053 }
1054
1055 uint16x8x3_t test_vld3q_lane_u16(uint16_t  *a, uint16x8x3_t b) {
1056   // CHECK-LABEL: test_vld3q_lane_u16
1057   return vld3q_lane_u16(a, b, 7);
1058   // CHECK: ld3 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
1059 }
1060
1061 uint32x4x3_t test_vld3q_lane_u32(uint32_t  *a, uint32x4x3_t b) {
1062   // CHECK-LABEL: test_vld3q_lane_u32
1063   return vld3q_lane_u32(a, b, 3);
1064   // CHECK: ld3 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
1065 }
1066
1067 uint64x2x3_t test_vld3q_lane_u64(uint64_t  *a, uint64x2x3_t b) {
1068   // CHECK-LABEL: test_vld3q_lane_u64
1069   return vld3q_lane_u64(a, b, 1);
1070   // CHECK: ld3 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
1071 }
1072
1073 int16x8x3_t test_vld3q_lane_s16(int16_t  *a, int16x8x3_t b) {
1074   // CHECK-LABEL: test_vld3q_lane_s16
1075   return vld3q_lane_s16(a, b, 7);
1076   // CHECK: ld3 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
1077 }
1078
1079 int32x4x3_t test_vld3q_lane_s32(int32_t  *a, int32x4x3_t b) {
1080   // CHECK-LABEL: test_vld3q_lane_s32
1081   return vld3q_lane_s32(a, b, 3);
1082   // CHECK: ld3 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
1083 }
1084
1085 int64x2x3_t test_vld3q_lane_s64(int64_t  *a, int64x2x3_t b) {
1086   // CHECK-LABEL: test_vld3q_lane_s64
1087   return vld3q_lane_s64(a, b, 1);
1088   // CHECK: ld3 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
1089 }
1090
1091 float16x8x3_t test_vld3q_lane_f16(float16_t  *a, float16x8x3_t b) {
1092   // CHECK-LABEL: test_vld3q_lane_f16
1093   return vld3q_lane_f16(a, b, 7);
1094   // CHECK: ld3 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
1095 }
1096
1097 float32x4x3_t test_vld3q_lane_f32(float32_t  *a, float32x4x3_t b) {
1098   // CHECK-LABEL: test_vld3q_lane_f32
1099   return vld3q_lane_f32(a, b, 3);
1100   // CHECK: ld3 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
1101 }
1102
1103 float64x2x3_t test_vld3q_lane_f64(float64_t  *a, float64x2x3_t b) {
1104   // CHECK-LABEL: test_vld3q_lane_f64
1105   return vld3q_lane_f64(a, b, 1);
1106   // CHECK: ld3 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
1107 }
1108
1109 poly8x16x3_t test_vld3q_lane_p8(poly8_t  *a, poly8x16x3_t b) {
1110   // CHECK-LABEL: test_vld3q_lane_p8
1111   return vld3q_lane_p8(a, b, 15);
1112   // CHECK: ld3 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[15], [{{x[0-9]+|sp}}]
1113 }
1114
1115 poly16x8x3_t test_vld3q_lane_p16(poly16_t  *a, poly16x8x3_t b) {
1116   // CHECK-LABEL: test_vld3q_lane_p16
1117   return vld3q_lane_p16(a, b, 7);
1118   // CHECK: ld3 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
1119 }
1120
1121 poly64x2x3_t test_vld3q_lane_p64(poly64_t  *a, poly64x2x3_t b) {
1122   // CHECK-LABEL: test_vld3q_lane_p64
1123   return vld3q_lane_p64(a, b, 1);
1124   // CHECK: ld3 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
1125 }
1126
1127 uint8x8x3_t test_vld3_lane_u8(uint8_t  *a, uint8x8x3_t b) {
1128   // CHECK-LABEL: test_vld3_lane_u8
1129   return vld3_lane_u8(a, b, 7);
1130   // CHECK: ld3 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
1131 }
1132
1133 uint16x4x3_t test_vld3_lane_u16(uint16_t  *a, uint16x4x3_t b) {
1134   // CHECK-LABEL: test_vld3_lane_u16
1135   return vld3_lane_u16(a, b, 3);
1136   // CHECK: ld3 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
1137 }
1138
1139 uint32x2x3_t test_vld3_lane_u32(uint32_t  *a, uint32x2x3_t b) {
1140   // CHECK-LABEL: test_vld3_lane_u32
1141   return vld3_lane_u32(a, b, 1);
1142   // CHECK: ld3 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
1143 }
1144
1145 uint64x1x3_t test_vld3_lane_u64(uint64_t  *a, uint64x1x3_t b) {
1146   // CHECK-LABEL: test_vld3_lane_u64
1147   return vld3_lane_u64(a, b, 0);
1148   // CHECK: ld3 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
1149 }
1150
1151 int8x8x3_t test_vld3_lane_s8(int8_t  *a, int8x8x3_t b) {
1152   // CHECK-LABEL: test_vld3_lane_s8
1153   return vld3_lane_s8(a, b, 7);
1154   // CHECK: ld3 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
1155 }
1156
1157 int16x4x3_t test_vld3_lane_s16(int16_t  *a, int16x4x3_t b) {
1158   // CHECK-LABEL: test_vld3_lane_s16
1159   return vld3_lane_s16(a, b, 3);
1160   // CHECK: ld3 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
1161 }
1162
1163 int32x2x3_t test_vld3_lane_s32(int32_t  *a, int32x2x3_t b) {
1164   // CHECK-LABEL: test_vld3_lane_s32
1165   return vld3_lane_s32(a, b, 1);
1166   // CHECK: ld3 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
1167 }
1168
1169 int64x1x3_t test_vld3_lane_s64(int64_t  *a, int64x1x3_t b) {
1170   // CHECK-LABEL: test_vld3_lane_s64
1171   return vld3_lane_s64(a, b, 0);
1172   // CHECK: ld3 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
1173 }
1174
1175 float16x4x3_t test_vld3_lane_f16(float16_t  *a, float16x4x3_t b) {
1176   // CHECK-LABEL: test_vld3_lane_f16
1177   return vld3_lane_f16(a, b, 3);
1178   // CHECK: ld3 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
1179 }
1180
1181 float32x2x3_t test_vld3_lane_f32(float32_t  *a, float32x2x3_t b) {
1182   // CHECK-LABEL: test_vld3_lane_f32
1183   return vld3_lane_f32(a, b, 1);
1184   // CHECK: ld3 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
1185 }
1186
1187 float64x1x3_t test_vld3_lane_f64(float64_t  *a, float64x1x3_t b) {
1188   // CHECK-LABEL: test_vld3_lane_f64
1189   return vld3_lane_f64(a, b, 0);
1190   // CHECK: ld3 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
1191 }
1192
1193 poly8x8x3_t test_vld3_lane_p8(poly8_t  *a, poly8x8x3_t b) {
1194   // CHECK-LABEL: test_vld3_lane_p8
1195   return vld3_lane_p8(a, b, 7);
1196   // CHECK: ld3 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
1197 }
1198
1199 poly16x4x3_t test_vld3_lane_p16(poly16_t  *a, poly16x4x3_t b) {
1200   // CHECK-LABEL: test_vld3_lane_p16
1201   return vld3_lane_p16(a, b, 3);
1202   // CHECK: ld3 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
1203 }
1204
1205 poly64x1x3_t test_vld3_lane_p64(poly64_t  *a, poly64x1x3_t b) {
1206   // CHECK-LABEL: test_vld3_lane_p64
1207   return vld3_lane_p64(a, b, 0);
1208   // CHECK: ld3 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
1209 }
1210
1211 uint8x16x4_t test_vld4q_lane_u8(uint8_t  *a, uint8x16x4_t b) {
1212   // CHECK-LABEL: test_vld4q_lane_u8
1213   return vld4q_lane_u8(a, b, 15);
1214   // CHECK: ld4 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[15], [{{x[0-9]+|sp}}]
1215 }
1216
1217 uint16x8x4_t test_vld4q_lane_u16(uint16_t  *a, uint16x8x4_t b) {
1218   // CHECK-LABEL: test_vld4q_lane_u16
1219   return vld4q_lane_u16(a, b, 7);
1220   // CHECK: ld4 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
1221 }
1222
1223 uint32x4x4_t test_vld4q_lane_u32(uint32_t  *a, uint32x4x4_t b) {
1224   // CHECK-LABEL: test_vld4q_lane_u32
1225   return vld4q_lane_u32(a, b, 3);
1226   // CHECK: ld4 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
1227 }
1228
1229 uint64x2x4_t test_vld4q_lane_u64(uint64_t  *a, uint64x2x4_t b) {
1230   // CHECK-LABEL: test_vld4q_lane_u64
1231   return vld4q_lane_u64(a, b, 1);
1232   // CHECK: ld4 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
1233 }
1234
1235 int8x16x4_t test_vld4q_lane_s8(int8_t  *a, int8x16x4_t b) {
1236   // CHECK-LABEL: test_vld4q_lane_s8
1237   return vld4q_lane_s8(a, b, 15);
1238   // CHECK: ld4 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[15], [{{x[0-9]+|sp}}]
1239 }
1240
1241 int16x8x4_t test_vld4q_lane_s16(int16_t  *a, int16x8x4_t b) {
1242   // CHECK-LABEL: test_vld4q_lane_s16
1243   return vld4q_lane_s16(a, b, 7);
1244   // CHECK: ld4 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
1245 }
1246
1247 int32x4x4_t test_vld4q_lane_s32(int32_t  *a, int32x4x4_t b) {
1248   // CHECK-LABEL: test_vld4q_lane_s32
1249   return vld4q_lane_s32(a, b, 3);
1250   // CHECK: ld4 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
1251 }
1252
1253 int64x2x4_t test_vld4q_lane_s64(int64_t  *a, int64x2x4_t b) {
1254   // CHECK-LABEL: test_vld4q_lane_s64
1255   return vld4q_lane_s64(a, b, 1);
1256   // CHECK: ld4 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
1257 }
1258
1259 float16x8x4_t test_vld4q_lane_f16(float16_t  *a, float16x8x4_t b) {
1260   // CHECK-LABEL: test_vld4q_lane_f16
1261   return vld4q_lane_f16(a, b, 7);
1262   // CHECK: ld4 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
1263 }
1264
1265 float32x4x4_t test_vld4q_lane_f32(float32_t  *a, float32x4x4_t b) {
1266   // CHECK-LABEL: test_vld4q_lane_f32
1267   return vld4q_lane_f32(a, b, 3);
1268   // CHECK: ld4 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
1269 }
1270
1271 float64x2x4_t test_vld4q_lane_f64(float64_t  *a, float64x2x4_t b) {
1272   // CHECK-LABEL: test_vld4q_lane_f64
1273   return vld4q_lane_f64(a, b, 1);
1274   // CHECK: ld4 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
1275 }
1276
1277 poly8x16x4_t test_vld4q_lane_p8(poly8_t  *a, poly8x16x4_t b) {
1278   // CHECK-LABEL: test_vld4q_lane_p8
1279   return vld4q_lane_p8(a, b, 15);
1280   // CHECK: ld4 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[15], [{{x[0-9]+|sp}}]
1281 }
1282
1283 poly16x8x4_t test_vld4q_lane_p16(poly16_t  *a, poly16x8x4_t b) {
1284   // CHECK-LABEL: test_vld4q_lane_p16
1285   return vld4q_lane_p16(a, b, 7);
1286   // CHECK: ld4 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
1287 }
1288
1289 poly64x2x4_t test_vld4q_lane_p64(poly64_t  *a, poly64x2x4_t b) {
1290   // CHECK-LABEL: test_vld4q_lane_p64
1291   return vld4q_lane_p64(a, b, 1);
1292   // CHECK: ld4 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
1293 }
1294
1295 uint8x8x4_t test_vld4_lane_u8(uint8_t  *a, uint8x8x4_t b) {
1296   // CHECK-LABEL: test_vld4_lane_u8
1297   return vld4_lane_u8(a, b, 7);
1298   // CHECK: ld4 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
1299 }
1300
1301 uint16x4x4_t test_vld4_lane_u16(uint16_t  *a, uint16x4x4_t b) {
1302   // CHECK-LABEL: test_vld4_lane_u16
1303   return vld4_lane_u16(a, b, 3);
1304   // CHECK: ld4 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
1305 }
1306
1307 uint32x2x4_t test_vld4_lane_u32(uint32_t  *a, uint32x2x4_t b) {
1308   // CHECK-LABEL: test_vld4_lane_u32
1309   return vld4_lane_u32(a, b, 1);
1310   // CHECK: ld4 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
1311 }
1312
1313 uint64x1x4_t test_vld4_lane_u64(uint64_t  *a, uint64x1x4_t b) {
1314   // CHECK-LABEL: test_vld4_lane_u64
1315   return vld4_lane_u64(a, b, 0);
1316   // CHECK: ld4 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
1317 }
1318
1319 int8x8x4_t test_vld4_lane_s8(int8_t  *a, int8x8x4_t b) {
1320   // CHECK-LABEL: test_vld4_lane_s8
1321   return vld4_lane_s8(a, b, 7);
1322   // CHECK: ld4 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
1323 }
1324
1325 int16x4x4_t test_vld4_lane_s16(int16_t  *a, int16x4x4_t b) {
1326   // CHECK-LABEL: test_vld4_lane_s16
1327   return vld4_lane_s16(a, b, 3);
1328   // CHECK: ld4 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
1329 }
1330
1331 int32x2x4_t test_vld4_lane_s32(int32_t  *a, int32x2x4_t b) {
1332   // CHECK-LABEL: test_vld4_lane_s32
1333   return vld4_lane_s32(a, b, 1);
1334   // CHECK: ld4 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
1335 }
1336
1337 int64x1x4_t test_vld4_lane_s64(int64_t  *a, int64x1x4_t b) {
1338   // CHECK-LABEL: test_vld4_lane_s64
1339   return vld4_lane_s64(a, b, 0);
1340   // CHECK: ld4 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
1341 }
1342
1343 float16x4x4_t test_vld4_lane_f16(float16_t  *a, float16x4x4_t b) {
1344   // CHECK-LABEL: test_vld4_lane_f16
1345   return vld4_lane_f16(a, b, 3);
1346   // CHECK: ld4 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
1347 }
1348
1349 float32x2x4_t test_vld4_lane_f32(float32_t  *a, float32x2x4_t b) {
1350   // CHECK-LABEL: test_vld4_lane_f32
1351   return vld4_lane_f32(a, b, 1);
1352   // CHECK: ld4 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
1353 }
1354
1355 float64x1x4_t test_vld4_lane_f64(float64_t  *a, float64x1x4_t b) {
1356   // CHECK-LABEL: test_vld4_lane_f64
1357   return vld4_lane_f64(a, b, 0);
1358   // CHECK: ld4 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
1359 }
1360
1361 poly8x8x4_t test_vld4_lane_p8(poly8_t  *a, poly8x8x4_t b) {
1362   // CHECK-LABEL: test_vld4_lane_p8
1363   return vld4_lane_p8(a, b, 7);
1364   // CHECK: ld4 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
1365 }
1366
1367 poly16x4x4_t test_vld4_lane_p16(poly16_t  *a, poly16x4x4_t b) {
1368   // CHECK-LABEL: test_vld4_lane_p16
1369   return vld4_lane_p16(a, b, 3);
1370   // CHECK: ld4 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
1371 }
1372
1373 poly64x1x4_t test_vld4_lane_p64(poly64_t  *a, poly64x1x4_t b) {
1374   // CHECK-LABEL: test_vld4_lane_p64
1375   return vld4_lane_p64(a, b, 0);
1376   // CHECK: ld4 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
1377 }
1378
1379 void test_vst1q_lane_u8(uint8_t  *a, uint8x16_t b) {
1380   // CHECK-LABEL: test_vst1q_lane_u8
1381   vst1q_lane_u8(a, b, 15);
1382   // CHECK: st1 {{{ *v[0-9]+.b *}}}[15], [{{x[0-9]+|sp}}]
1383 }
1384
1385 void test_vst1q_lane_u16(uint16_t  *a, uint16x8_t b) {
1386   // CHECK-LABEL: test_vst1q_lane_u16
1387   vst1q_lane_u16(a, b, 7);
1388   // CHECK: st1 {{{ *v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
1389 }
1390
1391 void test_vst1q_lane_u32(uint32_t  *a, uint32x4_t b) {
1392   // CHECK-LABEL: test_vst1q_lane_u32
1393   vst1q_lane_u32(a, b, 3);
1394   // CHECK: st1 {{{ *v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
1395 }
1396
1397 void test_vst1q_lane_u64(uint64_t  *a, uint64x2_t b) {
1398   // CHECK-LABEL: test_vst1q_lane_u64
1399   vst1q_lane_u64(a, b, 1);
1400   // CHECK: st1 {{{ *v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
1401 }
1402
1403 void test_vst1q_lane_s8(int8_t  *a, int8x16_t b) {
1404   // CHECK-LABEL: test_vst1q_lane_s8
1405   vst1q_lane_s8(a, b, 15);
1406   // CHECK: st1 {{{ *v[0-9]+.b *}}}[15], [{{x[0-9]+|sp}}]
1407 }
1408
1409 void test_vst1q_lane_s16(int16_t  *a, int16x8_t b) {
1410   // CHECK-LABEL: test_vst1q_lane_s16
1411   vst1q_lane_s16(a, b, 7);
1412   // CHECK: st1 {{{ *v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
1413 }
1414
1415 void test_vst1q_lane_s32(int32_t  *a, int32x4_t b) {
1416   // CHECK-LABEL: test_vst1q_lane_s32
1417   vst1q_lane_s32(a, b, 3);
1418   // CHECK: st1 {{{ *v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
1419 }
1420
1421 void test_vst1q_lane_s64(int64_t  *a, int64x2_t b) {
1422   // CHECK-LABEL: test_vst1q_lane_s64
1423   vst1q_lane_s64(a, b, 1);
1424   // CHECK: st1 {{{ *v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
1425 }
1426
1427 void test_vst1q_lane_f16(float16_t  *a, float16x8_t b) {
1428   // CHECK-LABEL: test_vst1q_lane_f16
1429   vst1q_lane_f16(a, b, 7);
1430   // CHECK: st1 {{{ *v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
1431 }
1432
1433 void test_vst1q_lane_f32(float32_t  *a, float32x4_t b) {
1434   // CHECK-LABEL: test_vst1q_lane_f32
1435   vst1q_lane_f32(a, b, 3);
1436   // CHECK: st1 {{{ *v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
1437 }
1438
1439 void test_vst1q_lane_f64(float64_t  *a, float64x2_t b) {
1440   // CHECK-LABEL: test_vst1q_lane_f64
1441   vst1q_lane_f64(a, b, 1);
1442   // CHECK: st1 {{{ *v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
1443 }
1444
1445 void test_vst1q_lane_p8(poly8_t  *a, poly8x16_t b) {
1446   // CHECK-LABEL: test_vst1q_lane_p8
1447   vst1q_lane_p8(a, b, 15);
1448   // CHECK: st1 {{{ *v[0-9]+.b *}}}[15], [{{x[0-9]+|sp}}]
1449 }
1450
1451 void test_vst1q_lane_p16(poly16_t  *a, poly16x8_t b) {
1452   // CHECK-LABEL: test_vst1q_lane_p16
1453   vst1q_lane_p16(a, b, 7);
1454   // CHECK: st1 {{{ *v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
1455 }
1456
1457 void test_vst1q_lane_p64(poly64_t  *a, poly64x2_t b) {
1458   // CHECK-LABEL: test_vst1q_lane_p64
1459   vst1q_lane_p64(a, b, 1);
1460   // CHECK: st1 {{{ *v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
1461 }
1462
1463 void test_vst1_lane_u8(uint8_t  *a, uint8x8_t b) {
1464   // CHECK-LABEL: test_vst1_lane_u8
1465   vst1_lane_u8(a, b, 7);
1466   // CHECK: st1 {{{ *v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
1467 }
1468
1469 void test_vst1_lane_u16(uint16_t  *a, uint16x4_t b) {
1470   // CHECK-LABEL: test_vst1_lane_u16
1471   vst1_lane_u16(a, b, 3);
1472   // CHECK: st1 {{{ *v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
1473 }
1474
1475 void test_vst1_lane_u32(uint32_t  *a, uint32x2_t b) {
1476   // CHECK-LABEL: test_vst1_lane_u32
1477   vst1_lane_u32(a, b, 1);
1478   // CHECK: st1 {{{ *v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
1479 }
1480
1481 void test_vst1_lane_u64(uint64_t  *a, uint64x1_t b) {
1482   // CHECK-LABEL: test_vst1_lane_u64
1483   vst1_lane_u64(a, b, 0);
1484   // CHECK: st1 {{{ *v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
1485 }
1486
1487 void test_vst1_lane_s8(int8_t  *a, int8x8_t b) {
1488   // CHECK-LABEL: test_vst1_lane_s8
1489   vst1_lane_s8(a, b, 7);
1490   // CHECK: st1 {{{ *v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
1491 }
1492
1493 void test_vst1_lane_s16(int16_t  *a, int16x4_t b) {
1494   // CHECK-LABEL: test_vst1_lane_s16
1495   vst1_lane_s16(a, b, 3);
1496   // CHECK: st1 {{{ *v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
1497 }
1498
1499 void test_vst1_lane_s32(int32_t  *a, int32x2_t b) {
1500   // CHECK-LABEL: test_vst1_lane_s32
1501   vst1_lane_s32(a, b, 1);
1502   // CHECK: st1 {{{ *v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
1503 }
1504
1505 void test_vst1_lane_s64(int64_t  *a, int64x1_t b) {
1506   // CHECK-LABEL: test_vst1_lane_s64
1507   vst1_lane_s64(a, b, 0);
1508   // CHECK: st1 {{{ *v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
1509 }
1510
1511 void test_vst1_lane_f16(float16_t  *a, float16x4_t b) {
1512   // CHECK-LABEL: test_vst1_lane_f16
1513   vst1_lane_f16(a, b, 3);
1514   // CHECK: st1 {{{ *v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
1515 }
1516
1517 void test_vst1_lane_f32(float32_t  *a, float32x2_t b) {
1518   // CHECK-LABEL: test_vst1_lane_f32
1519   vst1_lane_f32(a, b, 1);
1520   // CHECK: st1 {{{ *v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
1521 }
1522
1523 void test_vst1_lane_f64(float64_t  *a, float64x1_t b) {
1524   // CHECK-LABEL: test_vst1_lane_f64
1525   vst1_lane_f64(a, b, 0);
1526   // CHECK: {{st1 { v[0-9]+.d }\[0]|str d[0-9]+}}, [{{x[0-9]+|sp}}]
1527 }
1528
1529 void test_vst1_lane_p8(poly8_t  *a, poly8x8_t b) {
1530   // CHECK-LABEL: test_vst1_lane_p8
1531   vst1_lane_p8(a, b, 7);
1532   // CHECK: st1 {{{ *v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
1533 }
1534
1535 void test_vst1_lane_p16(poly16_t  *a, poly16x4_t b) {
1536   // CHECK-LABEL: test_vst1_lane_p16
1537   vst1_lane_p16(a, b, 3);
1538   // CHECK: st1 {{{ *v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
1539 }
1540
1541 void test_vst1_lane_p64(poly64_t  *a, poly64x1_t b) {
1542   // CHECK-LABEL: test_vst1_lane_p64
1543   vst1_lane_p64(a, b, 0);
1544   // CHECK: st1 {{{ *v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
1545 }
1546
1547 void test_vst2q_lane_u8(uint8_t  *a, uint8x16x2_t b) {
1548   // CHECK-LABEL: test_vst2q_lane_u8
1549   vst2q_lane_u8(a, b, 15);
1550   // CHECK: st2 {{{ *v[0-9]+.b, v[0-9]+.b *}}}[15], [{{x[0-9]+|sp}}]
1551 }
1552
1553 void test_vst2q_lane_u16(uint16_t  *a, uint16x8x2_t b) {
1554   // CHECK-LABEL: test_vst2q_lane_u16
1555   vst2q_lane_u16(a, b, 7);
1556   // CHECK: st2 {{{ *v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
1557 }
1558
1559 void test_vst2q_lane_u32(uint32_t  *a, uint32x4x2_t b) {
1560   // CHECK-LABEL: test_vst2q_lane_u32
1561   vst2q_lane_u32(a, b, 3);
1562   // CHECK: st2 {{{ *v[0-9]+.s, v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
1563 }
1564
1565 void test_vst2q_lane_u64(uint64_t  *a, uint64x2x2_t b) {
1566   // CHECK-LABEL: test_vst2q_lane_u64
1567   vst2q_lane_u64(a, b, 1);
1568   // CHECK: st2 {{{ *v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
1569 }
1570
1571 void test_vst2q_lane_s8(int8_t  *a, int8x16x2_t b) {
1572   // CHECK-LABEL: test_vst2q_lane_s8
1573   vst2q_lane_s8(a, b, 15);
1574   // CHECK: st2 {{{ *v[0-9]+.b, v[0-9]+.b *}}}[15], [{{x[0-9]+|sp}}]
1575 }
1576
1577 void test_vst2q_lane_s16(int16_t  *a, int16x8x2_t b) {
1578   // CHECK-LABEL: test_vst2q_lane_s16
1579   vst2q_lane_s16(a, b, 7);
1580   // CHECK: st2 {{{ *v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
1581 }
1582
1583 void test_vst2q_lane_s32(int32_t  *a, int32x4x2_t b) {
1584   // CHECK-LABEL: test_vst2q_lane_s32
1585   vst2q_lane_s32(a, b, 3);
1586   // CHECK: st2 {{{ *v[0-9]+.s, v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
1587 }
1588
1589 void test_vst2q_lane_s64(int64_t  *a, int64x2x2_t b) {
1590   // CHECK-LABEL: test_vst2q_lane_s64
1591   vst2q_lane_s64(a, b, 1);
1592   // CHECK: st2 {{{ *v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
1593 }
1594
1595 void test_vst2q_lane_f16(float16_t  *a, float16x8x2_t b) {
1596   // CHECK-LABEL: test_vst2q_lane_f16
1597   vst2q_lane_f16(a, b, 7);
1598   // CHECK: st2 {{{ *v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
1599 }
1600
1601 void test_vst2q_lane_f32(float32_t  *a, float32x4x2_t b) {
1602   // CHECK-LABEL: test_vst2q_lane_f32
1603   vst2q_lane_f32(a, b, 3);
1604   // CHECK: st2 {{{ *v[0-9]+.s, v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
1605 }
1606
1607 void test_vst2q_lane_f64(float64_t  *a, float64x2x2_t b) {
1608   // CHECK-LABEL: test_vst2q_lane_f64
1609   vst2q_lane_f64(a, b, 1);
1610   // CHECK: st2 {{{ *v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
1611 }
1612
1613 void test_vst2q_lane_p8(poly8_t  *a, poly8x16x2_t b) {
1614   // CHECK-LABEL: test_vst2q_lane_p8
1615   vst2q_lane_p8(a, b, 15);
1616   // CHECK: st2 {{{ *v[0-9]+.b, v[0-9]+.b *}}}[15], [{{x[0-9]+|sp}}]
1617 }
1618
1619 void test_vst2q_lane_p16(poly16_t  *a, poly16x8x2_t b) {
1620   // CHECK-LABEL: test_vst2q_lane_p16
1621   vst2q_lane_p16(a, b, 7);
1622   // CHECK: st2 {{{ *v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
1623 }
1624
1625 void test_vst2q_lane_p64(poly64_t  *a, poly64x2x2_t b) {
1626   // CHECK-LABEL: test_vst2q_lane_p64
1627   vst2q_lane_p64(a, b, 1);
1628   // CHECK: st2 {{{ *v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
1629 }
1630
1631 void test_vst2_lane_u8(uint8_t  *a, uint8x8x2_t b) {
1632   // CHECK-LABEL: test_vst2_lane_u8
1633   vst2_lane_u8(a, b, 7);
1634   // CHECK: st2 {{{ *v[0-9]+.b, v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
1635 }
1636
1637 void test_vst2_lane_u16(uint16_t  *a, uint16x4x2_t b) {
1638   // CHECK-LABEL: test_vst2_lane_u16
1639   vst2_lane_u16(a, b, 3);
1640   // CHECK: st2 {{{ *v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
1641 }
1642
1643 void test_vst2_lane_u32(uint32_t  *a, uint32x2x2_t b) {
1644   // CHECK-LABEL: test_vst2_lane_u32
1645   vst2_lane_u32(a, b, 1);
1646   // CHECK: st2 {{{ *v[0-9]+.s, v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
1647 }
1648
1649 void test_vst2_lane_u64(uint64_t  *a, uint64x1x2_t b) {
1650   // CHECK-LABEL: test_vst2_lane_u64
1651   vst2_lane_u64(a, b, 0);
1652   // CHECK: st2 {{{ *v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
1653 }
1654
1655 void test_vst2_lane_s8(int8_t  *a, int8x8x2_t b) {
1656   // CHECK-LABEL: test_vst2_lane_s8
1657   vst2_lane_s8(a, b, 7);
1658   // CHECK: st2 {{{ *v[0-9]+.b, v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
1659 }
1660
1661 void test_vst2_lane_s16(int16_t  *a, int16x4x2_t b) {
1662   // CHECK-LABEL: test_vst2_lane_s16
1663   vst2_lane_s16(a, b, 3);
1664   // CHECK: st2 {{{ *v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
1665 }
1666
1667 void test_vst2_lane_s32(int32_t  *a, int32x2x2_t b) {
1668   // CHECK-LABEL: test_vst2_lane_s32
1669   vst2_lane_s32(a, b, 1);
1670   // CHECK: st2 {{{ *v[0-9]+.s, v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
1671 }
1672
1673 void test_vst2_lane_s64(int64_t  *a, int64x1x2_t b) {
1674   // CHECK-LABEL: test_vst2_lane_s64
1675   vst2_lane_s64(a, b, 0);
1676   // CHECK: st2 {{{ *v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
1677 }
1678
1679 void test_vst2_lane_f16(float16_t  *a, float16x4x2_t b) {
1680   // CHECK-LABEL: test_vst2_lane_f16
1681   vst2_lane_f16(a, b, 3);
1682   // CHECK: st2 {{{ *v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
1683 }
1684
1685 void test_vst2_lane_f32(float32_t  *a, float32x2x2_t b) {
1686   // CHECK-LABEL: test_vst2_lane_f32
1687   vst2_lane_f32(a, b, 1);
1688   // CHECK: st2 {{{ *v[0-9]+.s, v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
1689 }
1690
1691 void test_vst2_lane_f64(float64_t  *a, float64x1x2_t b) {
1692   // CHECK-LABEL: test_vst2_lane_f64
1693   vst2_lane_f64(a, b, 0);
1694   // CHECK: st2 {{{ *v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
1695 }
1696
1697 void test_vst2_lane_p8(poly8_t  *a, poly8x8x2_t b) {
1698   // CHECK-LABEL: test_vst2_lane_p8
1699   vst2_lane_p8(a, b, 7);
1700   // CHECK: st2 {{{ *v[0-9]+.b, v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
1701 }
1702
1703 void test_vst2_lane_p16(poly16_t  *a, poly16x4x2_t b) {
1704   // CHECK-LABEL: test_vst2_lane_p16
1705   vst2_lane_p16(a, b, 3);
1706   // CHECK: st2 {{{ *v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
1707 }
1708
1709 void test_vst2_lane_p64(poly64_t  *a, poly64x1x2_t b) {
1710   // CHECK-LABEL: test_vst2_lane_p64
1711   vst2_lane_p64(a, b, 0);
1712   // CHECK: st2 {{{ *v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
1713 }
1714
1715 void test_vst3q_lane_u8(uint8_t  *a, uint8x16x3_t b) {
1716   // CHECK-LABEL: test_vst3q_lane_u8
1717   vst3q_lane_u8(a, b, 15);
1718   // CHECK: st3 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[15], [{{x[0-9]+|sp}}]
1719 }
1720
1721 void test_vst3q_lane_u16(uint16_t  *a, uint16x8x3_t b) {
1722   // CHECK-LABEL: test_vst3q_lane_u16
1723   vst3q_lane_u16(a, b, 7);
1724   // CHECK: st3 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
1725 }
1726
1727 void test_vst3q_lane_u32(uint32_t  *a, uint32x4x3_t b) {
1728   // CHECK-LABEL: test_vst3q_lane_u32
1729   vst3q_lane_u32(a, b, 3);
1730   // CHECK: st3 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
1731 }
1732
1733 void test_vst3q_lane_u64(uint64_t  *a, uint64x2x3_t b) {
1734   // CHECK-LABEL: test_vst3q_lane_u64
1735   vst3q_lane_u64(a, b, 1);
1736   // CHECK: st3 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
1737 }
1738
1739 void test_vst3q_lane_s8(int8_t  *a, int8x16x3_t b) {
1740   // CHECK-LABEL: test_vst3q_lane_s8
1741   vst3q_lane_s8(a, b, 15);
1742   // CHECK: st3 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[15], [{{x[0-9]+|sp}}]
1743 }
1744
1745 void test_vst3q_lane_s16(int16_t  *a, int16x8x3_t b) {
1746   // CHECK-LABEL: test_vst3q_lane_s16
1747   vst3q_lane_s16(a, b, 7);
1748   // CHECK: st3 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
1749 }
1750
1751 void test_vst3q_lane_s32(int32_t  *a, int32x4x3_t b) {
1752   // CHECK-LABEL: test_vst3q_lane_s32
1753   vst3q_lane_s32(a, b, 3);
1754   // CHECK: st3 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
1755 }
1756
1757 void test_vst3q_lane_s64(int64_t  *a, int64x2x3_t b) {
1758   // CHECK-LABEL: test_vst3q_lane_s64
1759   vst3q_lane_s64(a, b, 1);
1760   // CHECK: st3 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
1761 }
1762
1763 void test_vst3q_lane_f16(float16_t  *a, float16x8x3_t b) {
1764   // CHECK-LABEL: test_vst3q_lane_f16
1765   vst3q_lane_f16(a, b, 7);
1766   // CHECK: st3 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
1767 }
1768
1769 void test_vst3q_lane_f32(float32_t  *a, float32x4x3_t b) {
1770   // CHECK-LABEL: test_vst3q_lane_f32
1771   vst3q_lane_f32(a, b, 3);
1772   // CHECK: st3 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
1773 }
1774
1775 void test_vst3q_lane_f64(float64_t  *a, float64x2x3_t b) {
1776   // CHECK-LABEL: test_vst3q_lane_f64
1777   vst3q_lane_f64(a, b, 1);
1778   // CHECK: st3 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
1779 }
1780
1781 void test_vst3q_lane_p8(poly8_t  *a, poly8x16x3_t b) {
1782   // CHECK-LABEL: test_vst3q_lane_p8
1783   vst3q_lane_p8(a, b, 15);
1784   // CHECK: st3 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[15], [{{x[0-9]+|sp}}]
1785 }
1786
1787 void test_vst3q_lane_p16(poly16_t  *a, poly16x8x3_t b) {
1788   // CHECK-LABEL: test_vst3q_lane_p16
1789   vst3q_lane_p16(a, b, 7);
1790   // CHECK: st3 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
1791 }
1792
1793 void test_vst3q_lane_p64(poly64_t  *a, poly64x2x3_t b) {
1794   // CHECK-LABEL: test_vst3q_lane_p64
1795   vst3q_lane_p64(a, b, 1);
1796   // CHECK: st3 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
1797 }
1798
1799 void test_vst3_lane_u8(uint8_t  *a, uint8x8x3_t b) {
1800   // CHECK-LABEL: test_vst3_lane_u8
1801   vst3_lane_u8(a, b, 7);
1802   // CHECK: st3 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
1803 }
1804
1805 void test_vst3_lane_u16(uint16_t  *a, uint16x4x3_t b) {
1806   // CHECK-LABEL: test_vst3_lane_u16
1807   vst3_lane_u16(a, b, 3);
1808   // CHECK: st3 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
1809 }
1810
1811 void test_vst3_lane_u32(uint32_t  *a, uint32x2x3_t b) {
1812   // CHECK-LABEL: test_vst3_lane_u32
1813   vst3_lane_u32(a, b, 1);
1814   // CHECK: st3 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
1815 }
1816
1817 void test_vst3_lane_u64(uint64_t  *a, uint64x1x3_t b) {
1818   // CHECK-LABEL: test_vst3_lane_u64
1819   vst3_lane_u64(a, b, 0);
1820   // CHECK: st3 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
1821 }
1822
1823 void test_vst3_lane_s8(int8_t  *a, int8x8x3_t b) {
1824   // CHECK-LABEL: test_vst3_lane_s8
1825   vst3_lane_s8(a, b, 7);
1826   // CHECK: st3 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
1827 }
1828
1829 void test_vst3_lane_s16(int16_t  *a, int16x4x3_t b) {
1830   // CHECK-LABEL: test_vst3_lane_s16
1831   vst3_lane_s16(a, b, 3);
1832   // CHECK: st3 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
1833 }
1834
1835 void test_vst3_lane_s32(int32_t  *a, int32x2x3_t b) {
1836   // CHECK-LABEL: test_vst3_lane_s32
1837   vst3_lane_s32(a, b, 1);
1838   // CHECK: st3 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
1839 }
1840
1841 void test_vst3_lane_s64(int64_t  *a, int64x1x3_t b) {
1842   // CHECK-LABEL: test_vst3_lane_s64
1843   vst3_lane_s64(a, b, 0);
1844   // CHECK: st3 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
1845 }
1846
1847 void test_vst3_lane_f16(float16_t  *a, float16x4x3_t b) {
1848   // CHECK-LABEL: test_vst3_lane_f16
1849   vst3_lane_f16(a, b, 3);
1850   // CHECK: st3 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
1851 }
1852
1853 void test_vst3_lane_f32(float32_t  *a, float32x2x3_t b) {
1854   // CHECK-LABEL: test_vst3_lane_f32
1855   vst3_lane_f32(a, b, 1);
1856   // CHECK: st3 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
1857 }
1858
1859 void test_vst3_lane_f64(float64_t  *a, float64x1x3_t b) {
1860   // CHECK-LABEL: test_vst3_lane_f64
1861   vst3_lane_f64(a, b, 0);
1862   // CHECK: st3 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
1863 }
1864
1865 void test_vst3_lane_p8(poly8_t  *a, poly8x8x3_t b) {
1866   // CHECK-LABEL: test_vst3_lane_p8
1867   vst3_lane_p8(a, b, 7);
1868   // CHECK: st3 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
1869 }
1870
1871 void test_vst3_lane_p16(poly16_t  *a, poly16x4x3_t b) {
1872   // CHECK-LABEL: test_vst3_lane_p16
1873   vst3_lane_p16(a, b, 3);
1874   // CHECK: st3 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
1875 }
1876
1877 void test_vst3_lane_p64(poly64_t  *a, poly64x1x3_t b) {
1878   // CHECK-LABEL: test_vst3_lane_p64
1879   vst3_lane_p64(a, b, 0);
1880   // CHECK: st3 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
1881 }
1882
1883 void test_vst4q_lane_u8(uint8_t  *a, uint8x16x4_t b) {
1884   // CHECK-LABEL: test_vst4q_lane_u8
1885   vst4q_lane_u8(a, b, 15);
1886   // CHECK: st4 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[15], [{{x[0-9]+|sp}}]
1887 }
1888
1889 void test_vst4q_lane_u16(uint16_t  *a, uint16x8x4_t b) {
1890   // CHECK-LABEL: test_vst4q_lane_u16
1891   vst4q_lane_u16(a, b, 7);
1892   // CHECK: st4 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
1893 }
1894
1895 void test_vst4q_lane_u32(uint32_t  *a, uint32x4x4_t b) {
1896   // CHECK-LABEL: test_vst4q_lane_u32
1897   vst4q_lane_u32(a, b, 3);
1898   // CHECK: st4 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
1899 }
1900
1901 void test_vst4q_lane_u64(uint64_t  *a, uint64x2x4_t b) {
1902   // CHECK-LABEL: test_vst4q_lane_u64
1903   vst4q_lane_u64(a, b, 1);
1904   // CHECK: st4 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
1905 }
1906
1907 void test_vst4q_lane_s8(int8_t  *a, int8x16x4_t b) {
1908   // CHECK-LABEL: test_vst4q_lane_s8
1909   vst4q_lane_s8(a, b, 15);
1910   // CHECK: st4 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[15], [{{x[0-9]+|sp}}]
1911 }
1912
1913 void test_vst4q_lane_s16(int16_t  *a, int16x8x4_t b) {
1914   // CHECK-LABEL: test_vst4q_lane_s16
1915   vst4q_lane_s16(a, b, 7);
1916   // CHECK: st4 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
1917 }
1918
1919 void test_vst4q_lane_s32(int32_t  *a, int32x4x4_t b) {
1920   // CHECK-LABEL: test_vst4q_lane_s32
1921   vst4q_lane_s32(a, b, 3);
1922   // CHECK: st4 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
1923 }
1924
1925 void test_vst4q_lane_s64(int64_t  *a, int64x2x4_t b) {
1926   // CHECK-LABEL: test_vst4q_lane_s64
1927   vst4q_lane_s64(a, b, 1);
1928   // CHECK: st4 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
1929 }
1930
1931 void test_vst4q_lane_f16(float16_t  *a, float16x8x4_t b) {
1932   // CHECK-LABEL: test_vst4q_lane_f16
1933   vst4q_lane_f16(a, b, 7);
1934   // CHECK: st4 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
1935 }
1936
1937 void test_vst4q_lane_f32(float32_t  *a, float32x4x4_t b) {
1938   // CHECK-LABEL: test_vst4q_lane_f32
1939   vst4q_lane_f32(a, b, 3);
1940   // CHECK: st4 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
1941 }
1942
1943 void test_vst4q_lane_f64(float64_t  *a, float64x2x4_t b) {
1944   // CHECK-LABEL: test_vst4q_lane_f64
1945   vst4q_lane_f64(a, b, 1);
1946   // CHECK: st4 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
1947 }
1948
1949 void test_vst4q_lane_p8(poly8_t  *a, poly8x16x4_t b) {
1950   // CHECK-LABEL: test_vst4q_lane_p8
1951   vst4q_lane_p8(a, b, 15);
1952   // CHECK: st4 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[15], [{{x[0-9]+|sp}}]
1953 }
1954
1955 void test_vst4q_lane_p16(poly16_t  *a, poly16x8x4_t b) {
1956   // CHECK-LABEL: test_vst4q_lane_p16
1957   vst4q_lane_p16(a, b, 7);
1958   // CHECK: st4 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
1959 }
1960
1961 void test_vst4q_lane_p64(poly64_t  *a, poly64x2x4_t b) {
1962   // CHECK-LABEL: test_vst4q_lane_p64
1963   vst4q_lane_p64(a, b, 1);
1964   // CHECK: st4 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
1965 }
1966
1967 void test_vst4_lane_u8(uint8_t  *a, uint8x8x4_t b) {
1968   // CHECK-LABEL: test_vst4_lane_u8
1969   vst4_lane_u8(a, b, 7);
1970   // CHECK: st4 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
1971 }
1972
1973 void test_vst4_lane_u16(uint16_t  *a, uint16x4x4_t b) {
1974   // CHECK-LABEL: test_vst4_lane_u16
1975   vst4_lane_u16(a, b, 3);
1976   // CHECK: st4 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
1977 }
1978
1979 void test_vst4_lane_u32(uint32_t  *a, uint32x2x4_t b) {
1980   // CHECK-LABEL: test_vst4_lane_u32
1981   vst4_lane_u32(a, b, 1);
1982   // CHECK: st4 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
1983 }
1984
1985 void test_vst4_lane_u64(uint64_t  *a, uint64x1x4_t b) {
1986   // CHECK-LABEL: test_vst4_lane_u64
1987   vst4_lane_u64(a, b, 0);
1988   // CHECK: st4 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
1989 }
1990
1991 void test_vst4_lane_s8(int8_t  *a, int8x8x4_t b) {
1992   // CHECK-LABEL: test_vst4_lane_s8
1993   vst4_lane_s8(a, b, 7);
1994   // CHECK: st4 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
1995 }
1996
1997 void test_vst4_lane_s16(int16_t  *a, int16x4x4_t b) {
1998   // CHECK-LABEL: test_vst4_lane_s16
1999   vst4_lane_s16(a, b, 3);
2000   // CHECK: st4 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
2001 }
2002
2003 void test_vst4_lane_s32(int32_t  *a, int32x2x4_t b) {
2004   // CHECK-LABEL: test_vst4_lane_s32
2005   vst4_lane_s32(a, b, 1);
2006   // CHECK: st4 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
2007 }
2008
2009 void test_vst4_lane_s64(int64_t  *a, int64x1x4_t b) {
2010   // CHECK-LABEL: test_vst4_lane_s64
2011   vst4_lane_s64(a, b, 0);
2012   // CHECK: st4 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
2013 }
2014
2015 void test_vst4_lane_f16(float16_t  *a, float16x4x4_t b) {
2016   // CHECK-LABEL: test_vst4_lane_f16
2017   vst4_lane_f16(a, b, 3);
2018   // CHECK: st4 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
2019 }
2020
2021 void test_vst4_lane_f32(float32_t  *a, float32x2x4_t b) {
2022   // CHECK-LABEL: test_vst4_lane_f32
2023   vst4_lane_f32(a, b, 1);
2024   // CHECK: st4 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
2025 }
2026
2027 void test_vst4_lane_f64(float64_t  *a, float64x1x4_t b) {
2028   // CHECK-LABEL: test_vst4_lane_f64
2029   vst4_lane_f64(a, b, 0);
2030   // CHECK: st4 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
2031 }
2032
2033 void test_vst4_lane_p8(poly8_t  *a, poly8x8x4_t b) {
2034   // CHECK-LABEL: test_vst4_lane_p8
2035   vst4_lane_p8(a, b, 7);
2036   // CHECK: st4 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
2037 }
2038
2039 void test_vst4_lane_p16(poly16_t  *a, poly16x4x4_t b) {
2040   // CHECK-LABEL: test_vst4_lane_p16
2041   vst4_lane_p16(a, b, 3);
2042   // CHECK: st4 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
2043 }
2044
2045 void test_vst4_lane_p64(poly64_t  *a, poly64x1x4_t b) {
2046   // CHECK-LABEL: test_vst4_lane_p64
2047   vst4_lane_p64(a, b, 0);
2048   // CHECK: st4 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
2049 }