1 // REQUIRES: aarch64-registered-target
2 // RUN: %clang_cc1 -triple aarch64-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 const *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 const *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 const *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 const *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 const *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 const *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 const *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 const *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 const *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 const *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 const *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 const *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 const *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 const *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 const *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 const *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 const *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 const *a) {
110   // CHECK-LABEL: test_vld1_dup_u64
111   return vld1_dup_u64(a);
112   // CHECK: ld1r {v{{[0-9]+}}.1d}, [{{x[0-9]+|sp}}]
113 }
114 
115 int8x8_t test_vld1_dup_s8(int8_t const *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 const *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 const *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 const *a) {
134   // CHECK-LABEL: test_vld1_dup_s64
135   return vld1_dup_s64(a);
136   // CHECK: ld1r {v{{[0-9]+}}.1d}, [{{x[0-9]+|sp}}]
137 }
138 
139 float16x4_t test_vld1_dup_f16(float16_t const *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 const *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 const *a) {
152   // CHECK-LABEL: test_vld1_dup_f64
153   return vld1_dup_f64(a);
154   // CHECK: ld1r {v{{[0-9]+}}.1d}, [{{x[0-9]+|sp}}]
155 }
156 
157 poly8x8_t test_vld1_dup_p8(poly8_t const *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 const *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 const *a) {
170   // CHECK-LABEL: test_vld1_dup_p64
171   return vld1_dup_p64(a);
172   // CHECK: ld1r {v{{[0-9]+}}.1d}, [{{x[0-9]+|sp}}]
173 }
174 
175 uint8x16x2_t test_vld2q_dup_u8(uint8_t const *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 const *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 const *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 const *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 const *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 const *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 const *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 const *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 const *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 const *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 const *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 const *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 const *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 const *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 const *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 const *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 const *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 const *a) {
278   // CHECK-LABEL: test_vld2_dup_u64
279   return vld2_dup_u64(a);
280   // CHECK: ld1 {v{{[0-9]+}}.1d, v{{[0-9]+}}.1d}, [{{x[0-9]+|sp}}]
281 }
282 
283 int8x8x2_t test_vld2_dup_s8(int8_t const *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 const *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 const *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 const *a) {
302   // CHECK-LABEL: test_vld2_dup_s64
303   return vld2_dup_s64(a);
304   // CHECK: ld1 {v{{[0-9]+}}.1d, v{{[0-9]+}}.1d}, [{{x[0-9]+|sp}}]
305 }
306 
307 float16x4x2_t test_vld2_dup_f16(float16_t const *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 const *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 const *a) {
320   // CHECK-LABEL: test_vld2_dup_f64
321   return vld2_dup_f64(a);
322   // CHECK: ld1 {v{{[0-9]+}}.1d, v{{[0-9]+}}.1d}, [{{x[0-9]+|sp}}]
323 }
324 
325 poly8x8x2_t test_vld2_dup_p8(poly8_t const *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 const *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 const *a) {
338   // CHECK-LABEL: test_vld2_dup_p64
339   return vld2_dup_p64(a);
340   // CHECK: ld1 {v{{[0-9]+}}.1d, v{{[0-9]+}}.1d}, [{{x[0-9]+|sp}}]
341 }
342 
343 uint8x16x3_t test_vld3q_dup_u8(uint8_t const *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 const *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 const *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 const *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 const *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 const *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 const *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 const *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 const *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 const *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 const *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 const *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 const *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 const *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 const *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 const *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 const *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 const *a) {
463   // CHECK-LABEL: test_vld3_dup_u64
464   return vld3_dup_u64(a);
465   // CHECK: ld1 {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 const *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 const *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 const *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 const *a) {
491   // CHECK-LABEL: test_vld3_dup_s64
492   return vld3_dup_s64(a);
493   // CHECK: ld1 {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 const *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 const *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 const *a) {
512   // CHECK-LABEL: test_vld3_dup_f64
513   return vld3_dup_f64(a);
514   // CHECK: ld1 {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 const *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 const *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 const *a) {
533   // CHECK-LABEL: test_vld3_dup_p64
534   return vld3_dup_p64(a);
535   // CHECK: ld1 {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 const *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,
543   // v{{[0-9]+}}.16b}, [{{x[0-9]+|sp}}]
544 }
545 
546 uint16x8x4_t test_vld4q_dup_u16(uint16_t const *a) {
547   // CHECK-LABEL: test_vld4q_dup_u16
548   return vld4q_dup_u16(a);
549   // CHECK: ld4r {v{{[0-9]+}}.8h, v{{[0-9]+}}.8h, v{{[0-9]+}}.8h,
550   // v{{[0-9]+}}.8h}, [{{x[0-9]+|sp}}]
551 }
552 
553 uint32x4x4_t test_vld4q_dup_u32(uint32_t const *a) {
554   // CHECK-LABEL: test_vld4q_dup_u32
555   return vld4q_dup_u32(a);
556   // CHECK: ld4r {v{{[0-9]+}}.4s, v{{[0-9]+}}.4s, v{{[0-9]+}}.4s,
557   // v{{[0-9]+}}.4s}, [{{x[0-9]+|sp}}]
558 }
559 
560 uint64x2x4_t test_vld4q_dup_u64(uint64_t const *a) {
561   // CHECK-LABEL: test_vld4q_dup_u64
562   return vld4q_dup_u64(a);
563   // CHECK: ld4r {v{{[0-9]+}}.2d, v{{[0-9]+}}.2d, v{{[0-9]+}}.2d,
564   // v{{[0-9]+}}.2d}, [{{x[0-9]+|sp}}]
565 }
566 
567 int8x16x4_t test_vld4q_dup_s8(int8_t const *a) {
568   // CHECK-LABEL: test_vld4q_dup_s8
569   return vld4q_dup_s8(a);
570   // CHECK: ld4r {v{{[0-9]+}}.16b, v{{[0-9]+}}.16b, v{{[0-9]+}}.16b,
571   // v{{[0-9]+}}.16b}, [{{x[0-9]+|sp}}]
572 }
573 
574 int16x8x4_t test_vld4q_dup_s16(int16_t const *a) {
575   // CHECK-LABEL: test_vld4q_dup_s16
576   return vld4q_dup_s16(a);
577   // CHECK: ld4r {v{{[0-9]+}}.8h, v{{[0-9]+}}.8h, v{{[0-9]+}}.8h,
578   // v{{[0-9]+}}.8h}, [{{x[0-9]+|sp}}]
579 }
580 
581 int32x4x4_t test_vld4q_dup_s32(int32_t const *a) {
582   // CHECK-LABEL: test_vld4q_dup_s32
583   return vld4q_dup_s32(a);
584   // CHECK: ld4r {v{{[0-9]+}}.4s, v{{[0-9]+}}.4s, v{{[0-9]+}}.4s,
585   // v{{[0-9]+}}.4s}, [{{x[0-9]+|sp}}]
586 }
587 
588 int64x2x4_t test_vld4q_dup_s64(int64_t const *a) {
589   // CHECK-LABEL: test_vld4q_dup_s64
590   return vld4q_dup_s64(a);
591   // CHECK: ld4r {v{{[0-9]+}}.2d, v{{[0-9]+}}.2d, v{{[0-9]+}}.2d,
592   // v{{[0-9]+}}.2d}, [{{x[0-9]+|sp}}]
593 }
594 
595 float16x8x4_t test_vld4q_dup_f16(float16_t const *a) {
596   // CHECK-LABEL: test_vld4q_dup_f16
597   return vld4q_dup_f16(a);
598   // CHECK: ld4r {v{{[0-9]+}}.8h, v{{[0-9]+}}.8h, v{{[0-9]+}}.8h,
599   // v{{[0-9]+}}.8h}, [{{x[0-9]+|sp}}]
600 }
601 
602 float32x4x4_t test_vld4q_dup_f32(float32_t const *a) {
603   // CHECK-LABEL: test_vld4q_dup_f32
604   return vld4q_dup_f32(a);
605   // CHECK: ld4r {v{{[0-9]+}}.4s, v{{[0-9]+}}.4s, v{{[0-9]+}}.4s,
606   // v{{[0-9]+}}.4s}, [{{x[0-9]+|sp}}]
607 }
608 
609 float64x2x4_t test_vld4q_dup_f64(float64_t const *a) {
610   // CHECK-LABEL: test_vld4q_dup_f64
611   return vld4q_dup_f64(a);
612   // CHECK: ld4r {v{{[0-9]+}}.2d, v{{[0-9]+}}.2d, v{{[0-9]+}}.2d,
613   // v{{[0-9]+}}.4s}, [{{x[0-9]+|sp}}]
614 }
615 
616 poly8x16x4_t test_vld4q_dup_p8(poly8_t const *a) {
617   // CHECK-LABEL: test_vld4q_dup_p8
618   return vld4q_dup_p8(a);
619   // CHECK: ld4r {v{{[0-9]+}}.16b, v{{[0-9]+}}.16b, v{{[0-9]+}}.16b,
620   // v{{[0-9]+}}.16b}, [{{x[0-9]+|sp}}]
621 }
622 
623 poly16x8x4_t test_vld4q_dup_p16(poly16_t const *a) {
624   // CHECK-LABEL: test_vld4q_dup_p16
625   return vld4q_dup_p16(a);
626   // CHECK: ld4r {v{{[0-9]+}}.8h, v{{[0-9]+}}.8h, v{{[0-9]+}}.8h,
627   // v{{[0-9]+}}.8h}, [{{x[0-9]+|sp}}]
628 }
629 
630 poly64x2x4_t test_vld4q_dup_p64(poly64_t const *a) {
631   // CHECK-LABEL: test_vld4q_dup_p64
632   return vld4q_dup_p64(a);
633   // CHECK: ld4r {v{{[0-9]+}}.2d, v{{[0-9]+}}.2d, v{{[0-9]+}}.2d,
634   // v{{[0-9]+}}.2d}, [{{x[0-9]+|sp}}]
635 }
636 
637 uint8x8x4_t test_vld4_dup_u8(uint8_t const *a) {
638   // CHECK-LABEL: test_vld4_dup_u8
639   return vld4_dup_u8(a);
640   // CHECK: ld4r {v{{[0-9]+}}.8b, v{{[0-9]+}}.8b, v{{[0-9]+}}.8b,
641   // v{{[0-9]+}}.8b}, [{{x[0-9]+|sp}}]
642 }
643 
644 uint16x4x4_t test_vld4_dup_u16(uint16_t const *a) {
645   // CHECK-LABEL: test_vld4_dup_u16
646   return vld4_dup_u16(a);
647   // CHECK: ld4r {v{{[0-9]+}}.4h, v{{[0-9]+}}.4h, v{{[0-9]+}}.4h,
648   // v{{[0-9]+}}.4h}, [{{x[0-9]+|sp}}]
649 }
650 
651 uint32x2x4_t test_vld4_dup_u32(uint32_t const *a) {
652   // CHECK-LABEL: test_vld4_dup_u32
653   return vld4_dup_u32(a);
654   // CHECK: ld4r {v{{[0-9]+}}.2s, v{{[0-9]+}}.2s, v{{[0-9]+}}.2s,
655   // v{{[0-9]+}}.2s}, [{{x[0-9]+|sp}}]
656 }
657 
658 uint64x1x4_t test_vld4_dup_u64(uint64_t const *a) {
659   // CHECK-LABEL: test_vld4_dup_u64
660   return vld4_dup_u64(a);
661   // CHECK: ld1 {v{{[0-9]+}}.1d, v{{[0-9]+}}.1d, v{{[0-9]+}}.1d,
662   // v{{[0-9]+}}.1d}, [{{x[0-9]+|sp}}]
663 }
664 
665 int8x8x4_t test_vld4_dup_s8(int8_t const *a) {
666   // CHECK-LABEL: test_vld4_dup_s8
667   return vld4_dup_s8(a);
668   // CHECK: ld4r {v{{[0-9]+}}.8b, v{{[0-9]+}}.8b, v{{[0-9]+}}.8b,
669   // v{{[0-9]+}}.8b}, [{{x[0-9]+|sp}}]
670 }
671 
672 int16x4x4_t test_vld4_dup_s16(int16_t const *a) {
673   // CHECK-LABEL: test_vld4_dup_s16
674   return vld4_dup_s16(a);
675   // CHECK: ld4r {v{{[0-9]+}}.4h, v{{[0-9]+}}.4h, v{{[0-9]+}}.4h,
676   // v{{[0-9]+}}.4h}, [{{x[0-9]+|sp}}]
677 }
678 
679 int32x2x4_t test_vld4_dup_s32(int32_t const *a) {
680   // CHECK-LABEL: test_vld4_dup_s32
681   return vld4_dup_s32(a);
682   // CHECK: ld4r {v{{[0-9]+}}.2s, v{{[0-9]+}}.2s, v{{[0-9]+}}.2s,
683   // v{{[0-9]+}}.2s}, [{{x[0-9]+|sp}}]
684 }
685 
686 int64x1x4_t test_vld4_dup_s64(int64_t const *a) {
687   // CHECK-LABEL: test_vld4_dup_s64
688   return vld4_dup_s64(a);
689   // CHECK: ld1 {v{{[0-9]+}}.1d, v{{[0-9]+}}.1d, v{{[0-9]+}}.1d,
690   // v{{[0-9]+}}.1d}, [{{x[0-9]+|sp}}]
691 }
692 
693 float16x4x4_t test_vld4_dup_f16(float16_t const *a) {
694   // CHECK-LABEL: test_vld4_dup_f16
695   return vld4_dup_f16(a);
696   // CHECK: ld4r {v{{[0-9]+}}.4h, v{{[0-9]+}}.4h, v{{[0-9]+}}.4h,
697   // v{{[0-9]+}}.4h}, [{{x[0-9]+|sp}}]
698 }
699 
700 float32x2x4_t test_vld4_dup_f32(float32_t const *a) {
701   // CHECK-LABEL: test_vld4_dup_f32
702   return vld4_dup_f32(a);
703   // CHECK: ld4r {v{{[0-9]+}}.2s, v{{[0-9]+}}.2s, v{{[0-9]+}}.2s,
704   // v{{[0-9]+}}.2s}, [{{x[0-9]+|sp}}]
705 }
706 
707 float64x1x4_t test_vld4_dup_f64(float64_t const *a) {
708   // CHECK-LABEL: test_vld4_dup_f64
709   return vld4_dup_f64(a);
710   // CHECK: ld1 {v{{[0-9]+}}.1d, v{{[0-9]+}}.1d, v{{[0-9]+}}.1d,
711   // v{{[0-9]+}}.1d}, [{{x[0-9]+|sp}}]
712 }
713 
714 poly8x8x4_t test_vld4_dup_p8(poly8_t const *a) {
715   // CHECK-LABEL: test_vld4_dup_p8
716   return vld4_dup_p8(a);
717   // CHECK: ld4r {v{{[0-9]+}}.8b, v{{[0-9]+}}.8b, v{{[0-9]+}}.8b,
718   // v{{[0-9]+}}.8b}, [{{x[0-9]+|sp}}]
719 }
720 
721 poly16x4x4_t test_vld4_dup_p16(poly16_t const *a) {
722   // CHECK-LABEL: test_vld4_dup_p16
723   return vld4_dup_p16(a);
724   // CHECK: ld4r {v{{[0-9]+}}.4h, v{{[0-9]+}}.4h, v{{[0-9]+}}.4h,
725   // v{{[0-9]+}}.4h}, [{{x[0-9]+|sp}}]
726 }
727 
728 poly64x1x4_t test_vld4_dup_p64(poly64_t const *a) {
729   // CHECK-LABEL: test_vld4_dup_p64
730   return vld4_dup_p64(a);
731   // CHECK: ld1 {v{{[0-9]+}}.1d, v{{[0-9]+}}.1d, v{{[0-9]+}}.1d,
732   // v{{[0-9]+}}.1d}, [{{x[0-9]+|sp}}]
733 }
734 
735 uint8x16_t test_vld1q_lane_u8(uint8_t const *a, uint8x16_t b) {
736   // CHECK-LABEL: test_vld1q_lane_u8
737   return vld1q_lane_u8(a, b, 15);
738   // CHECK: ld1 {v{{[0-9]+}}.b}[15], [{{x[0-9]+|sp}}]
739 }
740 
741 uint16x8_t test_vld1q_lane_u16(uint16_t const *a, uint16x8_t b) {
742   // CHECK-LABEL: test_vld1q_lane_u16
743   return vld1q_lane_u16(a, b, 7);
744   // CHECK: ld1 {v{{[0-9]+}}.h}[7], [{{x[0-9]+|sp}}]
745 }
746 
747 uint32x4_t test_vld1q_lane_u32(uint32_t const *a, uint32x4_t b) {
748   // CHECK-LABEL: test_vld1q_lane_u32
749   return vld1q_lane_u32(a, b, 3);
750   // CHECK: ld1 {v{{[0-9]+}}.s}[3], [{{x[0-9]+|sp}}]
751 }
752 
753 uint64x2_t test_vld1q_lane_u64(uint64_t const *a, uint64x2_t b) {
754   // CHECK-LABEL: test_vld1q_lane_u64
755   return vld1q_lane_u64(a, b, 1);
756   // CHECK: ld1 {v{{[0-9]+}}.d}[1], [{{x[0-9]+|sp}}]
757 }
758 
759 int8x16_t test_vld1q_lane_s8(int8_t const *a, int8x16_t b) {
760   // CHECK-LABEL: test_vld1q_lane_s8
761   return vld1q_lane_s8(a, b, 15);
762   // CHECK: ld1 {v{{[0-9]+}}.b}[15], [{{x[0-9]+|sp}}]
763 }
764 
765 int16x8_t test_vld1q_lane_s16(int16_t const *a, int16x8_t b) {
766   // CHECK-LABEL: test_vld1q_lane_s16
767   return vld1q_lane_s16(a, b, 7);
768   // CHECK: ld1 {v{{[0-9]+}}.h}[7], [{{x[0-9]+|sp}}]
769 }
770 
771 int32x4_t test_vld1q_lane_s32(int32_t const *a, int32x4_t b) {
772   // CHECK-LABEL: test_vld1q_lane_s32
773   return vld1q_lane_s32(a, b, 3);
774   // CHECK: ld1 {v{{[0-9]+}}.s}[3], [{{x[0-9]+|sp}}]
775 }
776 
777 int64x2_t test_vld1q_lane_s64(int64_t const *a, int64x2_t b) {
778   // CHECK-LABEL: test_vld1q_lane_s64
779   return vld1q_lane_s64(a, b, 1);
780   // CHECK: ld1 {v{{[0-9]+}}.d}[1], [{{x[0-9]+|sp}}]
781 }
782 
783 float16x8_t test_vld1q_lane_f16(float16_t const *a, float16x8_t b) {
784   // CHECK-LABEL: test_vld1q_lane_f16
785   return vld1q_lane_f16(a, b, 7);
786   // CHECK: ld1 {v{{[0-9]+}}.h}[7], [{{x[0-9]+|sp}}]
787 }
788 
789 float32x4_t test_vld1q_lane_f32(float32_t const *a, float32x4_t b) {
790   // CHECK-LABEL: test_vld1q_lane_f32
791   return vld1q_lane_f32(a, b, 3);
792   // CHECK: ld1 {v{{[0-9]+}}.s}[3], [{{x[0-9]+|sp}}]
793 }
794 
795 float64x2_t test_vld1q_lane_f64(float64_t const *a, float64x2_t b) {
796   // CHECK-LABEL: test_vld1q_lane_f64
797   return vld1q_lane_f64(a, b, 1);
798   // CHECK: ld1 {v{{[0-9]+}}.d}[1], [{{x[0-9]+|sp}}]
799 }
800 
801 poly8x16_t test_vld1q_lane_p8(poly8_t const *a, poly8x16_t b) {
802   // CHECK-LABEL: test_vld1q_lane_p8
803   return vld1q_lane_p8(a, b, 15);
804   // CHECK: ld1 {v{{[0-9]+}}.b}[15], [{{x[0-9]+|sp}}]
805 }
806 
807 poly16x8_t test_vld1q_lane_p16(poly16_t const *a, poly16x8_t b) {
808   // CHECK-LABEL: test_vld1q_lane_p16
809   return vld1q_lane_p16(a, b, 7);
810   // CHECK: ld1 {v{{[0-9]+}}.h}[7], [{{x[0-9]+|sp}}]
811 }
812 
813 poly64x2_t test_vld1q_lane_p64(poly64_t const *a, poly64x2_t b) {
814   // CHECK-LABEL: test_vld1q_lane_p64
815   return vld1q_lane_p64(a, b, 1);
816   // CHECK: ld1 {v{{[0-9]+}}.d}[1], [{{x[0-9]+|sp}}]
817 }
818 
819 uint8x8_t test_vld1_lane_u8(uint8_t const *a, uint8x8_t b) {
820   // CHECK-LABEL: test_vld1_lane_u8
821   return vld1_lane_u8(a, b, 7);
822   // CHECK: ld1 {v{{[0-9]+}}.b}[7], [{{x[0-9]+|sp}}]
823 }
824 
825 uint16x4_t test_vld1_lane_u16(uint16_t const *a, uint16x4_t b) {
826   // CHECK-LABEL: test_vld1_lane_u16
827   return vld1_lane_u16(a, b, 3);
828   // CHECK: ld1 {v{{[0-9]+}}.h}[3], [{{x[0-9]+|sp}}]
829 }
830 
831 uint32x2_t test_vld1_lane_u32(uint32_t const *a, uint32x2_t b) {
832   // CHECK-LABEL: test_vld1_lane_u32
833   return vld1_lane_u32(a, b, 1);
834   // CHECK: ld1 {v{{[0-9]+}}.s}[1], [{{x[0-9]+|sp}}]
835 }
836 
837 uint64x1_t test_vld1_lane_u64(uint64_t const *a, uint64x1_t b) {
838   // CHECK-LABEL: test_vld1_lane_u64
839   return vld1_lane_u64(a, b, 0);
840   // CHECK: ld1r {v{{[0-9]+}}.1d}, [{{x[0-9]+|sp}}]
841 }
842 
843 int8x8_t test_vld1_lane_s8(int8_t const *a, int8x8_t b) {
844   // CHECK-LABEL: test_vld1_lane_s8
845   return vld1_lane_s8(a, b, 7);
846   // CHECK: ld1 {v{{[0-9]+}}.b}[7], [{{x[0-9]+|sp}}]
847 }
848 
849 int16x4_t test_vld1_lane_s16(int16_t const *a, int16x4_t b) {
850   // CHECK-LABEL: test_vld1_lane_s16
851   return vld1_lane_s16(a, b, 3);
852   // CHECK: ld1 {v{{[0-9]+}}.h}[3], [{{x[0-9]+|sp}}]
853 }
854 
855 int32x2_t test_vld1_lane_s32(int32_t const *a, int32x2_t b) {
856   // CHECK-LABEL: test_vld1_lane_s32
857   return vld1_lane_s32(a, b, 1);
858   // CHECK: ld1 {v{{[0-9]+}}.s}[1], [{{x[0-9]+|sp}}]
859 }
860 
861 int64x1_t test_vld1_lane_s64(int64_t const *a, int64x1_t b) {
862   // CHECK-LABEL: test_vld1_lane_s64
863   return vld1_lane_s64(a, b, 0);
864   // CHECK: ld1r {v{{[0-9]+}}.1d}, [{{x[0-9]+|sp}}]
865 }
866 
867 float16x4_t test_vld1_lane_f16(float16_t const *a, float16x4_t b) {
868   // CHECK-LABEL: test_vld1_lane_f16
869   return vld1_lane_f16(a, b, 3);
870   // CHECK: ld1 {v{{[0-9]+}}.h}[3], [{{x[0-9]+|sp}}]
871 }
872 
873 float32x2_t test_vld1_lane_f32(float32_t const *a, float32x2_t b) {
874   // CHECK-LABEL: test_vld1_lane_f32
875   return vld1_lane_f32(a, b, 1);
876   // CHECK: ld1 {v{{[0-9]+}}.s}[1], [{{x[0-9]+|sp}}]
877 }
878 
879 float64x1_t test_vld1_lane_f64(float64_t const *a, float64x1_t b) {
880   // CHECK-LABEL: test_vld1_lane_f64
881   return vld1_lane_f64(a, b, 0);
882   // CHECK: ld1r {v{{[0-9]+}}.1d}, [{{x[0-9]+|sp}}]
883 }
884 
885 poly8x8_t test_vld1_lane_p8(poly8_t const *a, poly8x8_t b) {
886   // CHECK-LABEL: test_vld1_lane_p8
887   return vld1_lane_p8(a, b, 7);
888   // CHECK: ld1 {v{{[0-9]+}}.b}[7], [{{x[0-9]+|sp}}]
889 }
890 
891 poly16x4_t test_vld1_lane_p16(poly16_t const *a, poly16x4_t b) {
892   // CHECK-LABEL: test_vld1_lane_p16
893   return vld1_lane_p16(a, b, 3);
894   // CHECK: ld1 {v{{[0-9]+}}.h}[3], [{{x[0-9]+|sp}}]
895 }
896 
897 poly64x1_t test_vld1_lane_p64(poly64_t const *a, poly64x1_t b) {
898   // CHECK-LABEL: test_vld1_lane_p64
899   return vld1_lane_p64(a, b, 0);
900   // CHECK: ld1r {v{{[0-9]+}}.1d}, [{{x[0-9]+|sp}}]
901 }
902 
903 uint16x8x2_t test_vld2q_lane_u16(uint16_t const *a, uint16x8x2_t b) {
904   // CHECK-LABEL: test_vld2q_lane_u16
905   return vld2q_lane_u16(a, b, 7);
906   // CHECK: ld2 {v{{[0-9]+}}.h, v{{[0-9]+}}.h}[7], [{{x[0-9]+|sp}}]
907 }
908 
909 uint32x4x2_t test_vld2q_lane_u32(uint32_t const *a, uint32x4x2_t b) {
910   // CHECK-LABEL: test_vld2q_lane_u32
911   return vld2q_lane_u32(a, b, 3);
912   // CHECK: ld2 {v{{[0-9]+}}.s, v{{[0-9]+}}.s}[3], [{{x[0-9]+|sp}}]
913 }
914 
915 uint64x2x2_t test_vld2q_lane_u64(uint64_t const *a, uint64x2x2_t b) {
916   // CHECK-LABEL: test_vld2q_lane_u64
917   return vld2q_lane_u64(a, b, 1);
918   // CHECK: ld2 {v{{[0-9]+}}.d, v{{[0-9]+}}.d}[1], [{{x[0-9]+|sp}}]
919 }
920 
921 int16x8x2_t test_vld2q_lane_s16(int16_t const *a, int16x8x2_t b) {
922   // CHECK-LABEL: test_vld2q_lane_s16
923   return vld2q_lane_s16(a, b, 7);
924   // CHECK: ld2 {v{{[0-9]+}}.h, v{{[0-9]+}}.h}[7], [{{x[0-9]+|sp}}]
925 }
926 
927 int32x4x2_t test_vld2q_lane_s32(int32_t const *a, int32x4x2_t b) {
928   // CHECK-LABEL: test_vld2q_lane_s32
929   return vld2q_lane_s32(a, b, 3);
930   // CHECK: ld2 {v{{[0-9]+}}.s, v{{[0-9]+}}.s}[3], [{{x[0-9]+|sp}}]
931 }
932 
933 int64x2x2_t test_vld2q_lane_s64(int64_t const *a, int64x2x2_t b) {
934   // CHECK-LABEL: test_vld2q_lane_s64
935   return vld2q_lane_s64(a, b, 1);
936   // CHECK: ld2 {v{{[0-9]+}}.d, v{{[0-9]+}}.d}[1], [{{x[0-9]+|sp}}]
937 }
938 
939 float16x8x2_t test_vld2q_lane_f16(float16_t const *a, float16x8x2_t b) {
940   // CHECK-LABEL: test_vld2q_lane_f16
941   return vld2q_lane_f16(a, b, 7);
942   // CHECK: ld2 {v{{[0-9]+}}.h, v{{[0-9]+}}.h}[7], [{{x[0-9]+|sp}}]
943 }
944 
945 float32x4x2_t test_vld2q_lane_f32(float32_t const *a, float32x4x2_t b) {
946   // CHECK-LABEL: test_vld2q_lane_f32
947   return vld2q_lane_f32(a, b, 3);
948   // CHECK: ld2 {v{{[0-9]+}}.s, v{{[0-9]+}}.s}[3], [{{x[0-9]+|sp}}]
949 }
950 
951 float64x2x2_t test_vld2q_lane_f64(float64_t const *a, float64x2x2_t b) {
952   // CHECK-LABEL: test_vld2q_lane_f64
953   return vld2q_lane_f64(a, b, 1);
954   // CHECK: ld2 {v{{[0-9]+}}.d, v{{[0-9]+}}.d}[1], [{{x[0-9]+|sp}}]
955 }
956 
957 poly16x8x2_t test_vld2q_lane_p16(poly16_t const *a, poly16x8x2_t b) {
958   // CHECK-LABEL: test_vld2q_lane_p16
959   return vld2q_lane_p16(a, b, 7);
960   // CHECK: ld2 {v{{[0-9]+}}.h, v{{[0-9]+}}.h}[7], [{{x[0-9]+|sp}}]
961 }
962 
963 poly64x2x2_t test_vld2q_lane_p64(poly64_t const *a, poly64x2x2_t b) {
964   // CHECK-LABEL: test_vld2q_lane_p64
965   return vld2q_lane_p64(a, b, 1);
966   // CHECK: ld2 {v{{[0-9]+}}.d, v{{[0-9]+}}.d}[1], [{{x[0-9]+|sp}}]
967 }
968 
969 uint8x8x2_t test_vld2_lane_u8(uint8_t const *a, uint8x8x2_t b) {
970   // CHECK-LABEL: test_vld2_lane_u8
971   return vld2_lane_u8(a, b, 7);
972   // CHECK: ld2 {v{{[0-9]+}}.b, v{{[0-9]+}}.b}[7], [{{x[0-9]+|sp}}]
973 }
974 
975 uint16x4x2_t test_vld2_lane_u16(uint16_t const *a, uint16x4x2_t b) {
976   // CHECK-LABEL: test_vld2_lane_u16
977   return vld2_lane_u16(a, b, 3);
978   // CHECK: ld2 {v{{[0-9]+}}.h, v{{[0-9]+}}.h}[3], [{{x[0-9]+|sp}}]
979 }
980 
981 uint32x2x2_t test_vld2_lane_u32(uint32_t const *a, uint32x2x2_t b) {
982   // CHECK-LABEL: test_vld2_lane_u32
983   return vld2_lane_u32(a, b, 1);
984   // CHECK: ld2 {v{{[0-9]+}}.s, v{{[0-9]+}}.s}[1], [{{x[0-9]+|sp}}]
985 }
986 
987 uint64x1x2_t test_vld2_lane_u64(uint64_t const *a, uint64x1x2_t b) {
988   // CHECK-LABEL: test_vld2_lane_u64
989   return vld2_lane_u64(a, b, 0);
990   // CHECK: ld2 {v{{[0-9]+}}.d, v{{[0-9]+}}.d}[0], [{{x[0-9]+|sp}}]
991 }
992 
993 int8x8x2_t test_vld2_lane_s8(int8_t const *a, int8x8x2_t b) {
994   // CHECK-LABEL: test_vld2_lane_s8
995   return vld2_lane_s8(a, b, 7);
996   // CHECK: ld2 {v{{[0-9]+}}.b, v{{[0-9]+}}.b}[7], [{{x[0-9]+|sp}}]
997 }
998 
999 int16x4x2_t test_vld2_lane_s16(int16_t const *a, int16x4x2_t b) {
1000   // CHECK-LABEL: test_vld2_lane_s16
1001   return vld2_lane_s16(a, b, 3);
1002   // CHECK: ld2 {v{{[0-9]+}}.h, v{{[0-9]+}}.h}[3], [{{x[0-9]+|sp}}]
1003 }
1004 
1005 int32x2x2_t test_vld2_lane_s32(int32_t const *a, int32x2x2_t b) {
1006   // CHECK-LABEL: test_vld2_lane_s32
1007   return vld2_lane_s32(a, b, 1);
1008   // CHECK: ld2 {v{{[0-9]+}}.s, v{{[0-9]+}}.s}[1], [{{x[0-9]+|sp}}]
1009 }
1010 
1011 int64x1x2_t test_vld2_lane_s64(int64_t const *a, int64x1x2_t b) {
1012   // CHECK-LABEL: test_vld2_lane_s64
1013   return vld2_lane_s64(a, b, 0);
1014   // CHECK: ld2 {v{{[0-9]+}}.d, v{{[0-9]+}}.d}[0], [{{x[0-9]+|sp}}]
1015 }
1016 
1017 float16x4x2_t test_vld2_lane_f16(float16_t const *a, float16x4x2_t b) {
1018   // CHECK-LABEL: test_vld2_lane_f16
1019   return vld2_lane_f16(a, b, 3);
1020   // CHECK: ld2 {v{{[0-9]+}}.h, v{{[0-9]+}}.h}[3], [{{x[0-9]+|sp}}]
1021 }
1022 
1023 float32x2x2_t test_vld2_lane_f32(float32_t const *a, float32x2x2_t b) {
1024   // CHECK-LABEL: test_vld2_lane_f32
1025   return vld2_lane_f32(a, b, 1);
1026   // CHECK: ld2 {v{{[0-9]+}}.s, v{{[0-9]+}}.s}[1], [{{x[0-9]+|sp}}]
1027 }
1028 
1029 float64x1x2_t test_vld2_lane_f64(float64_t const *a, float64x1x2_t b) {
1030   // CHECK-LABEL: test_vld2_lane_f64
1031   return vld2_lane_f64(a, b, 0);
1032   // CHECK: ld2 {v{{[0-9]+}}.d, v{{[0-9]+}}.d}[0], [{{x[0-9]+|sp}}]
1033 }
1034 
1035 poly8x8x2_t test_vld2_lane_p8(poly8_t const *a, poly8x8x2_t b) {
1036   // CHECK-LABEL: test_vld2_lane_p8
1037   return vld2_lane_p8(a, b, 7);
1038   // CHECK: ld2 {v{{[0-9]+}}.b, v{{[0-9]+}}.b}[7], [{{x[0-9]+|sp}}]
1039 }
1040 
1041 poly16x4x2_t test_vld2_lane_p16(poly16_t const *a, poly16x4x2_t b) {
1042   // CHECK-LABEL: test_vld2_lane_p16
1043   return vld2_lane_p16(a, b, 3);
1044   // CHECK: ld2 {v{{[0-9]+}}.h, v{{[0-9]+}}.h}[3], [{{x[0-9]+|sp}}]
1045 }
1046 
1047 poly64x1x2_t test_vld2_lane_p64(poly64_t const *a, poly64x1x2_t b) {
1048   // CHECK-LABEL: test_vld2_lane_p64
1049   return vld2_lane_p64(a, b, 0);
1050   // CHECK: ld2 {v{{[0-9]+}}.d, v{{[0-9]+}}.d}[0], [{{x[0-9]+|sp}}]
1051 }
1052 
1053 uint16x8x3_t test_vld3q_lane_u16(uint16_t const *a, uint16x8x3_t b) {
1054   // CHECK-LABEL: test_vld3q_lane_u16
1055   return vld3q_lane_u16(a, b, 7);
1056   // CHECK: ld3 {v{{[0-9]+}}.h, v{{[0-9]+}}.h, v{{[0-9]+}}.h}[7], [{{x[0-9]+|sp}}]
1057 }
1058 
1059 uint32x4x3_t test_vld3q_lane_u32(uint32_t const *a, uint32x4x3_t b) {
1060   // CHECK-LABEL: test_vld3q_lane_u32
1061   return vld3q_lane_u32(a, b, 3);
1062   // CHECK: ld3 {v{{[0-9]+}}.s, v{{[0-9]+}}.s, v{{[0-9]+}}.s}[3], [{{x[0-9]+|sp}}]
1063 }
1064 
1065 uint64x2x3_t test_vld3q_lane_u64(uint64_t const *a, uint64x2x3_t b) {
1066   // CHECK-LABEL: test_vld3q_lane_u64
1067   return vld3q_lane_u64(a, b, 1);
1068   // CHECK: ld3 {v{{[0-9]+}}.d, v{{[0-9]+}}.d, v{{[0-9]+}}.d}[1], [{{x[0-9]+|sp}}]
1069 }
1070 
1071 int16x8x3_t test_vld3q_lane_s16(int16_t const *a, int16x8x3_t b) {
1072   // CHECK-LABEL: test_vld3q_lane_s16
1073   return vld3q_lane_s16(a, b, 7);
1074   // CHECK: ld3 {v{{[0-9]+}}.h, v{{[0-9]+}}.h, v{{[0-9]+}}.h}[7], [{{x[0-9]+|sp}}]
1075 }
1076 
1077 int32x4x3_t test_vld3q_lane_s32(int32_t const *a, int32x4x3_t b) {
1078   // CHECK-LABEL: test_vld3q_lane_s32
1079   return vld3q_lane_s32(a, b, 3);
1080   // CHECK: ld3 {v{{[0-9]+}}.s, v{{[0-9]+}}.s, v{{[0-9]+}}.s}[3], [{{x[0-9]+|sp}}]
1081 }
1082 
1083 int64x2x3_t test_vld3q_lane_s64(int64_t const *a, int64x2x3_t b) {
1084   // CHECK-LABEL: test_vld3q_lane_s64
1085   return vld3q_lane_s64(a, b, 1);
1086   // CHECK: ld3 {v{{[0-9]+}}.d, v{{[0-9]+}}.d, v{{[0-9]+}}.d}[1], [{{x[0-9]+|sp}}]
1087 }
1088 
1089 float16x8x3_t test_vld3q_lane_f16(float16_t const *a, float16x8x3_t b) {
1090   // CHECK-LABEL: test_vld3q_lane_f16
1091   return vld3q_lane_f16(a, b, 7);
1092   // CHECK: ld3 {v{{[0-9]+}}.h, v{{[0-9]+}}.h, v{{[0-9]+}}.h}[7], [{{x[0-9]+|sp}}]
1093 }
1094 
1095 float32x4x3_t test_vld3q_lane_f32(float32_t const *a, float32x4x3_t b) {
1096   // CHECK-LABEL: test_vld3q_lane_f32
1097   return vld3q_lane_f32(a, b, 3);
1098   // CHECK: ld3 {v{{[0-9]+}}.s, v{{[0-9]+}}.s, v{{[0-9]+}}.s}[3], [{{x[0-9]+|sp}}]
1099 }
1100 
1101 float64x2x3_t test_vld3q_lane_f64(float64_t const *a, float64x2x3_t b) {
1102   // CHECK-LABEL: test_vld3q_lane_f64
1103   return vld3q_lane_f64(a, b, 1);
1104   // CHECK: ld3 {v{{[0-9]+}}.d, v{{[0-9]+}}.d, v{{[0-9]+}}.d}[1], [{{x[0-9]+|sp}}]
1105 }
1106 
1107 poly8x16x3_t test_vld3q_lane_p8(poly8_t const *a, poly8x16x3_t b) {
1108   // CHECK-LABEL: test_vld3q_lane_p8
1109   return vld3q_lane_p8(a, b, 15);
1110   // CHECK: ld3 {v{{[0-9]+}}.b, v{{[0-9]+}}.b, v{{[0-9]+}}.b}[15], [{{x[0-9]+|sp}}]
1111 }
1112 
1113 poly16x8x3_t test_vld3q_lane_p16(poly16_t const *a, poly16x8x3_t b) {
1114   // CHECK-LABEL: test_vld3q_lane_p16
1115   return vld3q_lane_p16(a, b, 7);
1116   // CHECK: ld3 {v{{[0-9]+}}.h, v{{[0-9]+}}.h, v{{[0-9]+}}.h}[7], [{{x[0-9]+|sp}}]
1117 }
1118 
1119 poly64x2x3_t test_vld3q_lane_p64(poly64_t const *a, poly64x2x3_t b) {
1120   // CHECK-LABEL: test_vld3q_lane_p64
1121   return vld3q_lane_p64(a, b, 1);
1122   // CHECK: ld3 {v{{[0-9]+}}.d, v{{[0-9]+}}.d, v{{[0-9]+}}.d}[1], [{{x[0-9]+|sp}}]
1123 }
1124 
1125 uint8x8x3_t test_vld3_lane_u8(uint8_t const *a, uint8x8x3_t b) {
1126   // CHECK-LABEL: test_vld3_lane_u8
1127   return vld3_lane_u8(a, b, 7);
1128   // CHECK: ld3 {v{{[0-9]+}}.b, v{{[0-9]+}}.b, v{{[0-9]+}}.b}[7], [{{x[0-9]+|sp}}]
1129 }
1130 
1131 uint16x4x3_t test_vld3_lane_u16(uint16_t const *a, uint16x4x3_t b) {
1132   // CHECK-LABEL: test_vld3_lane_u16
1133   return vld3_lane_u16(a, b, 3);
1134   // CHECK: ld3 {v{{[0-9]+}}.h, v{{[0-9]+}}.h, v{{[0-9]+}}.h}[3], [{{x[0-9]+|sp}}]
1135 }
1136 
1137 uint32x2x3_t test_vld3_lane_u32(uint32_t const *a, uint32x2x3_t b) {
1138   // CHECK-LABEL: test_vld3_lane_u32
1139   return vld3_lane_u32(a, b, 1);
1140   // CHECK: ld3 {v{{[0-9]+}}.s, v{{[0-9]+}}.s, v{{[0-9]+}}.s}[1], [{{x[0-9]+|sp}}]
1141 }
1142 
1143 uint64x1x3_t test_vld3_lane_u64(uint64_t const *a, uint64x1x3_t b) {
1144   // CHECK-LABEL: test_vld3_lane_u64
1145   return vld3_lane_u64(a, b, 0);
1146   // CHECK: ld3 {v{{[0-9]+}}.d, v{{[0-9]+}}.d, v{{[0-9]+}}.d}[0], [{{x[0-9]+|sp}}]
1147 }
1148 
1149 int8x8x3_t test_vld3_lane_s8(int8_t const *a, int8x8x3_t b) {
1150   // CHECK-LABEL: test_vld3_lane_s8
1151   return vld3_lane_s8(a, b, 7);
1152   // CHECK: ld3 {v{{[0-9]+}}.b, v{{[0-9]+}}.b, v{{[0-9]+}}.b}[7], [{{x[0-9]+|sp}}]
1153 }
1154 
1155 int16x4x3_t test_vld3_lane_s16(int16_t const *a, int16x4x3_t b) {
1156   // CHECK-LABEL: test_vld3_lane_s16
1157   return vld3_lane_s16(a, b, 3);
1158   // CHECK: ld3 {v{{[0-9]+}}.h, v{{[0-9]+}}.h, v{{[0-9]+}}.h}[3], [{{x[0-9]+|sp}}]
1159 }
1160 
1161 int32x2x3_t test_vld3_lane_s32(int32_t const *a, int32x2x3_t b) {
1162   // CHECK-LABEL: test_vld3_lane_s32
1163   return vld3_lane_s32(a, b, 1);
1164   // CHECK: ld3 {v{{[0-9]+}}.s, v{{[0-9]+}}.s, v{{[0-9]+}}.s}[1], [{{x[0-9]+|sp}}]
1165 }
1166 
1167 int64x1x3_t test_vld3_lane_s64(int64_t const *a, int64x1x3_t b) {
1168   // CHECK-LABEL: test_vld3_lane_s64
1169   return vld3_lane_s64(a, b, 0);
1170   // CHECK: ld3 {v{{[0-9]+}}.d, v{{[0-9]+}}.d, v{{[0-9]+}}.d}[0], [{{x[0-9]+|sp}}]
1171 }
1172 
1173 float16x4x3_t test_vld3_lane_f16(float16_t const *a, float16x4x3_t b) {
1174   // CHECK-LABEL: test_vld3_lane_f16
1175   return vld3_lane_f16(a, b, 3);
1176   // CHECK: ld3 {v{{[0-9]+}}.h, v{{[0-9]+}}.h, v{{[0-9]+}}.h}[3], [{{x[0-9]+|sp}}]
1177 }
1178 
1179 float32x2x3_t test_vld3_lane_f32(float32_t const *a, float32x2x3_t b) {
1180   // CHECK-LABEL: test_vld3_lane_f32
1181   return vld3_lane_f32(a, b, 1);
1182   // CHECK: ld3 {v{{[0-9]+}}.s, v{{[0-9]+}}.s, v{{[0-9]+}}.s}[1], [{{x[0-9]+|sp}}]
1183 }
1184 
1185 float64x1x3_t test_vld3_lane_f64(float64_t const *a, float64x1x3_t b) {
1186   // CHECK-LABEL: test_vld3_lane_f64
1187   return vld3_lane_f64(a, b, 0);
1188   // CHECK: ld3 {v{{[0-9]+}}.d, v{{[0-9]+}}.d, v{{[0-9]+}}.d}[0], [{{x[0-9]+|sp}}]
1189 }
1190 
1191 poly8x8x3_t test_vld3_lane_p8(poly8_t const *a, poly8x8x3_t b) {
1192   // CHECK-LABEL: test_vld3_lane_p8
1193   return vld3_lane_p8(a, b, 7);
1194   // CHECK: ld3 {v{{[0-9]+}}.b, v{{[0-9]+}}.b, v{{[0-9]+}}.b}[7], [{{x[0-9]+|sp}}]
1195 }
1196 
1197 poly16x4x3_t test_vld3_lane_p16(poly16_t const *a, poly16x4x3_t b) {
1198   // CHECK-LABEL: test_vld3_lane_p16
1199   return vld3_lane_p16(a, b, 3);
1200   // CHECK: ld3 {v{{[0-9]+}}.h, v{{[0-9]+}}.h, v{{[0-9]+}}.h}[3], [{{x[0-9]+|sp}}]
1201 }
1202 
1203 poly64x1x3_t test_vld3_lane_p64(poly64_t const *a, poly64x1x3_t b) {
1204   // CHECK-LABEL: test_vld3_lane_p64
1205   return vld3_lane_p64(a, b, 0);
1206   // CHECK: ld3 {v{{[0-9]+}}.d, v{{[0-9]+}}.d, v{{[0-9]+}}.d}[0], [{{x[0-9]+|sp}}]
1207 }
1208 
1209 uint8x16x4_t test_vld4q_lane_u8(uint8_t const *a, uint8x16x4_t b) {
1210   // CHECK-LABEL: test_vld4q_lane_u8
1211   return vld4q_lane_u8(a, b, 15);
1212   // CHECK: ld4 {v{{[0-9]+}}.b, v{{[0-9]+}}.b, v{{[0-9]+}}.b, v{{[0-9]+}}.b}[15], [{{x[0-9]+|sp}}]
1213 }
1214 
1215 uint16x8x4_t test_vld4q_lane_u16(uint16_t const *a, uint16x8x4_t b) {
1216   // CHECK-LABEL: test_vld4q_lane_u16
1217   return vld4q_lane_u16(a, b, 7);
1218   // CHECK: ld4 {v{{[0-9]+}}.h, v{{[0-9]+}}.h, v{{[0-9]+}}.h, v{{[0-9]+}}.h}[7], [{{x[0-9]+|sp}}]
1219 }
1220 
1221 uint32x4x4_t test_vld4q_lane_u32(uint32_t const *a, uint32x4x4_t b) {
1222   // CHECK-LABEL: test_vld4q_lane_u32
1223   return vld4q_lane_u32(a, b, 3);
1224   // CHECK: ld4 {v{{[0-9]+}}.s, v{{[0-9]+}}.s, v{{[0-9]+}}.s, v{{[0-9]+}}.s}[3], [{{x[0-9]+|sp}}]
1225 }
1226 
1227 uint64x2x4_t test_vld4q_lane_u64(uint64_t const *a, uint64x2x4_t b) {
1228   // CHECK-LABEL: test_vld4q_lane_u64
1229   return vld4q_lane_u64(a, b, 1);
1230   // CHECK: ld4 {v{{[0-9]+}}.d, v{{[0-9]+}}.d, v{{[0-9]+}}.d, v{{[0-9]+}}.d}[1], [{{x[0-9]+|sp}}]
1231 }
1232 
1233 int8x16x4_t test_vld4q_lane_s8(int8_t const *a, int8x16x4_t b) {
1234   // CHECK-LABEL: test_vld4q_lane_s8
1235   return vld4q_lane_s8(a, b, 15);
1236   // CHECK: ld4 {v{{[0-9]+}}.b, v{{[0-9]+}}.b, v{{[0-9]+}}.b, v{{[0-9]+}}.b}[15], [{{x[0-9]+|sp}}]
1237 }
1238 
1239 int16x8x4_t test_vld4q_lane_s16(int16_t const *a, int16x8x4_t b) {
1240   // CHECK-LABEL: test_vld4q_lane_s16
1241   return vld4q_lane_s16(a, b, 7);
1242   // CHECK: ld4 {v{{[0-9]+}}.h, v{{[0-9]+}}.h, v{{[0-9]+}}.h, v{{[0-9]+}}.h}[7], [{{x[0-9]+|sp}}]
1243 }
1244 
1245 int32x4x4_t test_vld4q_lane_s32(int32_t const *a, int32x4x4_t b) {
1246   // CHECK-LABEL: test_vld4q_lane_s32
1247   return vld4q_lane_s32(a, b, 3);
1248   // CHECK: ld4 {v{{[0-9]+}}.s, v{{[0-9]+}}.s, v{{[0-9]+}}.s, v{{[0-9]+}}.s}[3], [{{x[0-9]+|sp}}]
1249 }
1250 
1251 int64x2x4_t test_vld4q_lane_s64(int64_t const *a, int64x2x4_t b) {
1252   // CHECK-LABEL: test_vld4q_lane_s64
1253   return vld4q_lane_s64(a, b, 1);
1254   // CHECK: ld4 {v{{[0-9]+}}.d, v{{[0-9]+}}.d, v{{[0-9]+}}.d, v{{[0-9]+}}.d}[1], [{{x[0-9]+|sp}}]
1255 }
1256 
1257 float16x8x4_t test_vld4q_lane_f16(float16_t const *a, float16x8x4_t b) {
1258   // CHECK-LABEL: test_vld4q_lane_f16
1259   return vld4q_lane_f16(a, b, 7);
1260   // CHECK: ld4 {v{{[0-9]+}}.h, v{{[0-9]+}}.h, v{{[0-9]+}}.h, v{{[0-9]+}}.h}[7], [{{x[0-9]+|sp}}]
1261 }
1262 
1263 float32x4x4_t test_vld4q_lane_f32(float32_t const *a, float32x4x4_t b) {
1264   // CHECK-LABEL: test_vld4q_lane_f32
1265   return vld4q_lane_f32(a, b, 3);
1266   // CHECK: ld4 {v{{[0-9]+}}.s, v{{[0-9]+}}.s, v{{[0-9]+}}.s, v{{[0-9]+}}.s}[3], [{{x[0-9]+|sp}}]
1267 }
1268 
1269 float64x2x4_t test_vld4q_lane_f64(float64_t const *a, float64x2x4_t b) {
1270   // CHECK-LABEL: test_vld4q_lane_f64
1271   return vld4q_lane_f64(a, b, 1);
1272   // CHECK: ld4 {v{{[0-9]+}}.d, v{{[0-9]+}}.d, v{{[0-9]+}}.d, v{{[0-9]+}}.d}[1], [{{x[0-9]+|sp}}]
1273 }
1274 
1275 poly8x16x4_t test_vld4q_lane_p8(poly8_t const *a, poly8x16x4_t b) {
1276   // CHECK-LABEL: test_vld4q_lane_p8
1277   return vld4q_lane_p8(a, b, 15);
1278   // CHECK: ld4 {v{{[0-9]+}}.b, v{{[0-9]+}}.b, v{{[0-9]+}}.b, v{{[0-9]+}}.b}[15], [{{x[0-9]+|sp}}]
1279 }
1280 
1281 poly16x8x4_t test_vld4q_lane_p16(poly16_t const *a, poly16x8x4_t b) {
1282   // CHECK-LABEL: test_vld4q_lane_p16
1283   return vld4q_lane_p16(a, b, 7);
1284   // CHECK: ld4 {v{{[0-9]+}}.h, v{{[0-9]+}}.h, v{{[0-9]+}}.h, v{{[0-9]+}}.h}[7], [{{x[0-9]+|sp}}]
1285 }
1286 
1287 poly64x2x4_t test_vld4q_lane_p64(poly64_t const *a, poly64x2x4_t b) {
1288   // CHECK-LABEL: test_vld4q_lane_p64
1289   return vld4q_lane_p64(a, b, 1);
1290   // CHECK: ld4 {v{{[0-9]+}}.d, v{{[0-9]+}}.d, v{{[0-9]+}}.d, v{{[0-9]+}}.d}[1], [{{x[0-9]+|sp}}]
1291 }
1292 
1293 uint8x8x4_t test_vld4_lane_u8(uint8_t const *a, uint8x8x4_t b) {
1294   // CHECK-LABEL: test_vld4_lane_u8
1295   return vld4_lane_u8(a, b, 7);
1296   // CHECK: ld4 {v{{[0-9]+}}.b, v{{[0-9]+}}.b, v{{[0-9]+}}.b, v{{[0-9]+}}.b}[7], [{{x[0-9]+|sp}}]
1297 }
1298 
1299 uint16x4x4_t test_vld4_lane_u16(uint16_t const *a, uint16x4x4_t b) {
1300   // CHECK-LABEL: test_vld4_lane_u16
1301   return vld4_lane_u16(a, b, 3);
1302   // CHECK: ld4 {v{{[0-9]+}}.h, v{{[0-9]+}}.h, v{{[0-9]+}}.h, v{{[0-9]+}}.h}[3], [{{x[0-9]+|sp}}]
1303 }
1304 
1305 uint32x2x4_t test_vld4_lane_u32(uint32_t const *a, uint32x2x4_t b) {
1306   // CHECK-LABEL: test_vld4_lane_u32
1307   return vld4_lane_u32(a, b, 1);
1308   // CHECK: ld4 {v{{[0-9]+}}.s, v{{[0-9]+}}.s, v{{[0-9]+}}.s, v{{[0-9]+}}.s}[1], [{{x[0-9]+|sp}}]
1309 }
1310 
1311 uint64x1x4_t test_vld4_lane_u64(uint64_t const *a, uint64x1x4_t b) {
1312   // CHECK-LABEL: test_vld4_lane_u64
1313   return vld4_lane_u64(a, b, 0);
1314   // CHECK: ld4 {v{{[0-9]+}}.d, v{{[0-9]+}}.d, v{{[0-9]+}}.d, v{{[0-9]+}}.d}[0], [{{x[0-9]+|sp}}]
1315 }
1316 
1317 int8x8x4_t test_vld4_lane_s8(int8_t const *a, int8x8x4_t b) {
1318   // CHECK-LABEL: test_vld4_lane_s8
1319   return vld4_lane_s8(a, b, 7);
1320   // CHECK: ld4 {v{{[0-9]+}}.b, v{{[0-9]+}}.b, v{{[0-9]+}}.b, v{{[0-9]+}}.b}[7], [{{x[0-9]+|sp}}]
1321 }
1322 
1323 int16x4x4_t test_vld4_lane_s16(int16_t const *a, int16x4x4_t b) {
1324   // CHECK-LABEL: test_vld4_lane_s16
1325   return vld4_lane_s16(a, b, 3);
1326   // CHECK: ld4 {v{{[0-9]+}}.h, v{{[0-9]+}}.h, v{{[0-9]+}}.h, v{{[0-9]+}}.h}[3], [{{x[0-9]+|sp}}]
1327 }
1328 
1329 int32x2x4_t test_vld4_lane_s32(int32_t const *a, int32x2x4_t b) {
1330   // CHECK-LABEL: test_vld4_lane_s32
1331   return vld4_lane_s32(a, b, 1);
1332   // CHECK: ld4 {v{{[0-9]+}}.s, v{{[0-9]+}}.s, v{{[0-9]+}}.s, v{{[0-9]+}}.s}[1], [{{x[0-9]+|sp}}]
1333 }
1334 
1335 int64x1x4_t test_vld4_lane_s64(int64_t const *a, int64x1x4_t b) {
1336   // CHECK-LABEL: test_vld4_lane_s64
1337   return vld4_lane_s64(a, b, 0);
1338   // CHECK: ld4 {v{{[0-9]+}}.d, v{{[0-9]+}}.d, v{{[0-9]+}}.d, v{{[0-9]+}}.d}[0], [{{x[0-9]+|sp}}]
1339 }
1340 
1341 float16x4x4_t test_vld4_lane_f16(float16_t const *a, float16x4x4_t b) {
1342   // CHECK-LABEL: test_vld4_lane_f16
1343   return vld4_lane_f16(a, b, 3);
1344   // CHECK: ld4 {v{{[0-9]+}}.h, v{{[0-9]+}}.h, v{{[0-9]+}}.h, v{{[0-9]+}}.h}[3], [{{x[0-9]+|sp}}]
1345 }
1346 
1347 float32x2x4_t test_vld4_lane_f32(float32_t const *a, float32x2x4_t b) {
1348   // CHECK-LABEL: test_vld4_lane_f32
1349   return vld4_lane_f32(a, b, 1);
1350   // CHECK: ld4 {v{{[0-9]+}}.s, v{{[0-9]+}}.s, v{{[0-9]+}}.s, v{{[0-9]+}}.s}[1], [{{x[0-9]+|sp}}]
1351 }
1352 
1353 float64x1x4_t test_vld4_lane_f64(float64_t const *a, float64x1x4_t b) {
1354   // CHECK-LABEL: test_vld4_lane_f64
1355   return vld4_lane_f64(a, b, 0);
1356   // CHECK: ld4 {v{{[0-9]+}}.d, v{{[0-9]+}}.d, v{{[0-9]+}}.d, v{{[0-9]+}}.d}[0], [{{x[0-9]+|sp}}]
1357 }
1358 
1359 poly8x8x4_t test_vld4_lane_p8(poly8_t const *a, poly8x8x4_t b) {
1360   // CHECK-LABEL: test_vld4_lane_p8
1361   return vld4_lane_p8(a, b, 7);
1362   // CHECK: ld4 {v{{[0-9]+}}.b, v{{[0-9]+}}.b, v{{[0-9]+}}.b, v{{[0-9]+}}.b}[7], [{{x[0-9]+|sp}}]
1363 }
1364 
1365 poly16x4x4_t test_vld4_lane_p16(poly16_t const *a, poly16x4x4_t b) {
1366   // CHECK-LABEL: test_vld4_lane_p16
1367   return vld4_lane_p16(a, b, 3);
1368   // CHECK: ld4 {v{{[0-9]+}}.h, v{{[0-9]+}}.h, v{{[0-9]+}}.h, v{{[0-9]+}}.h}[3], [{{x[0-9]+|sp}}]
1369 }
1370 
1371 poly64x1x4_t test_vld4_lane_p64(poly64_t const *a, poly64x1x4_t b) {
1372   // CHECK-LABEL: test_vld4_lane_p64
1373   return vld4_lane_p64(a, b, 0);
1374   // CHECK: ld4 {v{{[0-9]+}}.d, v{{[0-9]+}}.d, v{{[0-9]+}}.d, v{{[0-9]+}}.d}[0], [{{x[0-9]+|sp}}]
1375 }
1376 
1377 void test_vst1q_lane_u8(uint8_t const *a, uint8x16_t b) {
1378   // CHECK-LABEL: test_vst1q_lane_u8
1379   vst1q_lane_u8(a, b, 15);
1380   // CHECK: st1 {v{{[0-9]+}}.b}[15], [{{x[0-9]+|sp}}]
1381 }
1382 
1383 void test_vst1q_lane_u16(uint16_t const *a, uint16x8_t b) {
1384   // CHECK-LABEL: test_vst1q_lane_u16
1385   vst1q_lane_u16(a, b, 7);
1386   // CHECK: st1 {v{{[0-9]+}}.h}[7], [{{x[0-9]+|sp}}]
1387 }
1388 
1389 void test_vst1q_lane_u32(uint32_t const *a, uint32x4_t b) {
1390   // CHECK-LABEL: test_vst1q_lane_u32
1391   vst1q_lane_u32(a, b, 3);
1392   // CHECK: st1 {v{{[0-9]+}}.s}[3], [{{x[0-9]+|sp}}]
1393 }
1394 
1395 void test_vst1q_lane_u64(uint64_t const *a, uint64x2_t b) {
1396   // CHECK-LABEL: test_vst1q_lane_u64
1397   vst1q_lane_u64(a, b, 1);
1398   // CHECK: st1 {v{{[0-9]+}}.d}[1], [{{x[0-9]+|sp}}]
1399 }
1400 
1401 void test_vst1q_lane_s8(int8_t const *a, int8x16_t b) {
1402   // CHECK-LABEL: test_vst1q_lane_s8
1403   vst1q_lane_s8(a, b, 15);
1404   // CHECK: st1 {v{{[0-9]+}}.b}[15], [{{x[0-9]+|sp}}]
1405 }
1406 
1407 void test_vst1q_lane_s16(int16_t const *a, int16x8_t b) {
1408   // CHECK-LABEL: test_vst1q_lane_s16
1409   vst1q_lane_s16(a, b, 7);
1410   // CHECK: st1 {v{{[0-9]+}}.h}[7], [{{x[0-9]+|sp}}]
1411 }
1412 
1413 void test_vst1q_lane_s32(int32_t const *a, int32x4_t b) {
1414   // CHECK-LABEL: test_vst1q_lane_s32
1415   vst1q_lane_s32(a, b, 3);
1416   // CHECK: st1 {v{{[0-9]+}}.s}[3], [{{x[0-9]+|sp}}]
1417 }
1418 
1419 void test_vst1q_lane_s64(int64_t const *a, int64x2_t b) {
1420   // CHECK-LABEL: test_vst1q_lane_s64
1421   vst1q_lane_s64(a, b, 1);
1422   // CHECK: st1 {v{{[0-9]+}}.d}[1], [{{x[0-9]+|sp}}]
1423 }
1424 
1425 void test_vst1q_lane_f16(float16_t const *a, float16x8_t b) {
1426   // CHECK-LABEL: test_vst1q_lane_f16
1427   vst1q_lane_f16(a, b, 7);
1428   // CHECK: st1 {v{{[0-9]+}}.h}[7], [{{x[0-9]+|sp}}]
1429 }
1430 
1431 void test_vst1q_lane_f32(float32_t const *a, float32x4_t b) {
1432   // CHECK-LABEL: test_vst1q_lane_f32
1433   vst1q_lane_f32(a, b, 3);
1434   // CHECK: st1 {v{{[0-9]+}}.s}[3], [{{x[0-9]+|sp}}]
1435 }
1436 
1437 void test_vst1q_lane_f64(float64_t const *a, float64x2_t b) {
1438   // CHECK-LABEL: test_vst1q_lane_f64
1439   vst1q_lane_f64(a, b, 1);
1440   // CHECK: st1 {v{{[0-9]+}}.d}[1], [{{x[0-9]+|sp}}]
1441 }
1442 
1443 poly8x16_t test_vst1q_lane_p8(poly8_t const *a, poly8x16_t b) {
1444   // CHECK-LABEL: test_vst1q_lane_p8
1445   vst1q_lane_p8(a, b, 15);
1446   // CHECK: st1 {v{{[0-9]+}}.b}[15], [{{x[0-9]+|sp}}]
1447 }
1448 
1449 void test_vst1q_lane_p16(poly16_t const *a, poly16x8_t b) {
1450   // CHECK-LABEL: test_vst1q_lane_p16
1451   vst1q_lane_p16(a, b, 7);
1452   // CHECK: st1 {v{{[0-9]+}}.h}[7], [{{x[0-9]+|sp}}]
1453 }
1454 
1455 void test_vst1q_lane_p64(poly64_t const *a, poly64x2_t b) {
1456   // CHECK-LABEL: test_vst1q_lane_p64
1457   vst1q_lane_p64(a, b, 1);
1458   // CHECK: st1 {v{{[0-9]+}}.d}[1], [{{x[0-9]+|sp}}]
1459 }
1460 
1461 void test_vst1_lane_u8(uint8_t const *a, uint8x8_t b) {
1462   // CHECK-LABEL: test_vst1_lane_u8
1463   vst1_lane_u8(a, b, 7);
1464   // CHECK: st1 {v{{[0-9]+}}.b}[7], [{{x[0-9]+|sp}}]
1465 }
1466 
1467 void test_vst1_lane_u16(uint16_t const *a, uint16x4_t b) {
1468   // CHECK-LABEL: test_vst1_lane_u16
1469   vst1_lane_u16(a, b, 3);
1470   // CHECK: st1 {v{{[0-9]+}}.h}[3], [{{x[0-9]+|sp}}]
1471 }
1472 
1473 void test_vst1_lane_u32(uint32_t const *a, uint32x2_t b) {
1474   // CHECK-LABEL: test_vst1_lane_u32
1475   vst1_lane_u32(a, b, 1);
1476   // CHECK: st1 {v{{[0-9]+}}.s}[1], [{{x[0-9]+|sp}}]
1477 }
1478 
1479 void test_vst1_lane_u64(uint64_t const *a, uint64x1_t b) {
1480   // CHECK-LABEL: test_vst1_lane_u64
1481   vst1_lane_u64(a, b, 0);
1482   // CHECK: st1 {v{{[0-9]+}}.d}[0], [{{x[0-9]+|sp}}]
1483 }
1484 
1485 void test_vst1_lane_s8(int8_t const *a, int8x8_t b) {
1486   // CHECK-LABEL: test_vst1_lane_s8
1487   vst1_lane_s8(a, b, 7);
1488   // CHECK: st1 {v{{[0-9]+}}.b}[7], [{{x[0-9]+|sp}}]
1489 }
1490 
1491 void test_vst1_lane_s16(int16_t const *a, int16x4_t b) {
1492   // CHECK-LABEL: test_vst1_lane_s16
1493   vst1_lane_s16(a, b, 3);
1494   // CHECK: st1 {v{{[0-9]+}}.h}[3], [{{x[0-9]+|sp}}]
1495 }
1496 
1497 void test_vst1_lane_s32(int32_t const *a, int32x2_t b) {
1498   // CHECK-LABEL: test_vst1_lane_s32
1499   vst1_lane_s32(a, b, 1);
1500   // CHECK: st1 {v{{[0-9]+}}.s}[1], [{{x[0-9]+|sp}}]
1501 }
1502 
1503 void test_vst1_lane_s64(int64_t const *a, int64x1_t b) {
1504   // CHECK-LABEL: test_vst1_lane_s64
1505   vst1_lane_s64(a, b, 0);
1506   // CHECK: st1 {v{{[0-9]+}}.d}[0], [{{x[0-9]+|sp}}]
1507 }
1508 
1509 void test_vst1_lane_f16(float16_t const *a, float16x4_t b) {
1510   // CHECK-LABEL: test_vst1_lane_f16
1511   vst1_lane_f16(a, b, 3);
1512   // CHECK: st1 {v{{[0-9]+}}.h}[3], [{{x[0-9]+|sp}}]
1513 }
1514 
1515 void test_vst1_lane_f32(float32_t const *a, float32x2_t b) {
1516   // CHECK-LABEL: test_vst1_lane_f32
1517   vst1_lane_f32(a, b, 1);
1518   // CHECK: st1 {v{{[0-9]+}}.s}[1], [{{x[0-9]+|sp}}]
1519 }
1520 
1521 void test_vst1_lane_f64(float64_t const *a, float64x1_t b) {
1522   // CHECK-LABEL: test_vst1_lane_f64
1523   vst1_lane_f64(a, b, 0);
1524   // CHECK: st1 {v{{[0-9]+}}.d}[0], [{{x[0-9]+|sp}}]
1525 }
1526 
1527 void test_vst1_lane_p8(poly8_t const *a, poly8x8_t b) {
1528   // CHECK-LABEL: test_vst1_lane_p8
1529   vst1_lane_p8(a, b, 7);
1530   // CHECK: st1 {v{{[0-9]+}}.b}[7], [{{x[0-9]+|sp}}]
1531 }
1532 
1533 void test_vst1_lane_p16(poly16_t const *a, poly16x4_t b) {
1534   // CHECK-LABEL: test_vst1_lane_p16
1535   vst1_lane_p16(a, b, 3);
1536   // CHECK: st1 {v{{[0-9]+}}.h}[3], [{{x[0-9]+|sp}}]
1537 }
1538 
1539 void test_vst1_lane_p64(poly64_t const *a, poly64x1_t b) {
1540   // CHECK-LABEL: test_vst1_lane_p64
1541   vst1_lane_p64(a, b, 0);
1542   // CHECK: st1 {v{{[0-9]+}}.d}[0], [{{x[0-9]+|sp}}]
1543 }
1544 
1545 void test_vst2q_lane_u8(uint8_t const *a, uint8x16x2_t b) {
1546   // CHECK-LABEL: test_vst2q_lane_u8
1547   vst2q_lane_u8(a, b, 15);
1548   // CHECK: st2 {v{{[0-9]+}}.b, v{{[0-9]+}}.b}[15], [{{x[0-9]+|sp}}]
1549 }
1550 
1551 void test_vst2q_lane_u16(uint16_t const *a, uint16x8x2_t b) {
1552   // CHECK-LABEL: test_vst2q_lane_u16
1553   vst2q_lane_u16(a, b, 7);
1554   // CHECK: st2 {v{{[0-9]+}}.h, v{{[0-9]+}}.h}[7], [{{x[0-9]+|sp}}]
1555 }
1556 
1557 void test_vst2q_lane_u32(uint32_t const *a, uint32x4x2_t b) {
1558   // CHECK-LABEL: test_vst2q_lane_u32
1559   vst2q_lane_u32(a, b, 3);
1560   // CHECK: st2 {v{{[0-9]+}}.s, v{{[0-9]+}}.s}[3], [{{x[0-9]+|sp}}]
1561 }
1562 
1563 void test_vst2q_lane_u64(uint64_t const *a, uint64x2x2_t b) {
1564   // CHECK-LABEL: test_vst2q_lane_u64
1565   vst2q_lane_u64(a, b, 1);
1566   // CHECK: st2 {v{{[0-9]+}}.d, v{{[0-9]+}}.d}[1], [{{x[0-9]+|sp}}]
1567 }
1568 
1569 void test_vst2q_lane_s8(int8_t const *a, int8x16x2_t b) {
1570   // CHECK-LABEL: test_vst2q_lane_s8
1571   vst2q_lane_s8(a, b, 15);
1572   // CHECK: st2 {v{{[0-9]+}}.b, v{{[0-9]+}}.b}[15], [{{x[0-9]+|sp}}]
1573 }
1574 
1575 void test_vst2q_lane_s16(int16_t const *a, int16x8x2_t b) {
1576   // CHECK-LABEL: test_vst2q_lane_s16
1577   vst2q_lane_s16(a, b, 7);
1578   // CHECK: st2 {v{{[0-9]+}}.h, v{{[0-9]+}}.h}[7], [{{x[0-9]+|sp}}]
1579 }
1580 
1581 void test_vst2q_lane_s32(int32_t const *a, int32x4x2_t b) {
1582   // CHECK-LABEL: test_vst2q_lane_s32
1583   vst2q_lane_s32(a, b, 3);
1584   // CHECK: st2 {v{{[0-9]+}}.s, v{{[0-9]+}}.s}[3], [{{x[0-9]+|sp}}]
1585 }
1586 
1587 void test_vst2q_lane_s64(int64_t const *a, int64x2x2_t b) {
1588   // CHECK-LABEL: test_vst2q_lane_s64
1589   vst2q_lane_s64(a, b, 1);
1590   // CHECK: st2 {v{{[0-9]+}}.d, v{{[0-9]+}}.d}[1], [{{x[0-9]+|sp}}]
1591 }
1592 
1593 void test_vst2q_lane_f16(float16_t const *a, float16x8x2_t b) {
1594   // CHECK-LABEL: test_vst2q_lane_f16
1595   vst2q_lane_f16(a, b, 7);
1596   // CHECK: st2 {v{{[0-9]+}}.h, v{{[0-9]+}}.h}[7], [{{x[0-9]+|sp}}]
1597 }
1598 
1599 void test_vst2q_lane_f32(float32_t const *a, float32x4x2_t b) {
1600   // CHECK-LABEL: test_vst2q_lane_f32
1601   vst2q_lane_f32(a, b, 3);
1602   // CHECK: st2 {v{{[0-9]+}}.s, v{{[0-9]+}}.s}[3], [{{x[0-9]+|sp}}]
1603 }
1604 
1605 void test_vst2q_lane_f64(float64_t const *a, float64x2x2_t b) {
1606   // CHECK-LABEL: test_vst2q_lane_f64
1607   vst2q_lane_f64(a, b, 1);
1608   // CHECK: st2 {v{{[0-9]+}}.d, v{{[0-9]+}}.d}[1], [{{x[0-9]+|sp}}]
1609 }
1610 
1611 void test_vst2q_lane_p8(poly8_t const *a, poly8x16x2_t b) {
1612   // CHECK-LABEL: test_vst2q_lane_p8
1613   vst2q_lane_p8(a, b, 15);
1614   // CHECK: st2 {v{{[0-9]+}}.b, v{{[0-9]+}}.b}[15], [{{x[0-9]+|sp}}]
1615 }
1616 
1617 void test_vst2q_lane_p16(poly16_t const *a, poly16x8x2_t b) {
1618   // CHECK-LABEL: test_vst2q_lane_p16
1619   vst2q_lane_p16(a, b, 7);
1620   // CHECK: st2 {v{{[0-9]+}}.h, v{{[0-9]+}}.h}[7], [{{x[0-9]+|sp}}]
1621 }
1622 
1623 void test_vst2q_lane_p64(poly64_t const *a, poly64x2x2_t b) {
1624   // CHECK-LABEL: test_vst2q_lane_p64
1625   vst2q_lane_p64(a, b, 1);
1626   // CHECK: st2 {v{{[0-9]+}}.d, v{{[0-9]+}}.d}[1], [{{x[0-9]+|sp}}]
1627 }
1628 
1629 void test_vst2_lane_u8(uint8_t const *a, uint8x8x2_t b) {
1630   // CHECK-LABEL: test_vst2_lane_u8
1631   vst2_lane_u8(a, b, 7);
1632   // CHECK: st2 {v{{[0-9]+}}.b, v{{[0-9]+}}.b}[7], [{{x[0-9]+|sp}}]
1633 }
1634 
1635 void test_vst2_lane_u16(uint16_t const *a, uint16x4x2_t b) {
1636   // CHECK-LABEL: test_vst2_lane_u16
1637   vst2_lane_u16(a, b, 3);
1638   // CHECK: st2 {v{{[0-9]+}}.h, v{{[0-9]+}}.h}[3], [{{x[0-9]+|sp}}]
1639 }
1640 
1641 void test_vst2_lane_u32(uint32_t const *a, uint32x2x2_t b) {
1642   // CHECK-LABEL: test_vst2_lane_u32
1643   vst2_lane_u32(a, b, 1);
1644   // CHECK: st2 {v{{[0-9]+}}.s, v{{[0-9]+}}.s}[1], [{{x[0-9]+|sp}}]
1645 }
1646 
1647 void test_vst2_lane_u64(uint64_t const *a, uint64x1x2_t b) {
1648   // CHECK-LABEL: test_vst2_lane_u64
1649   vst2_lane_u64(a, b, 0);
1650   // CHECK: st2 {v{{[0-9]+}}.d, v{{[0-9]+}}.d}[0], [{{x[0-9]+|sp}}]
1651 }
1652 
1653 void test_vst2_lane_s8(int8_t const *a, int8x8x2_t b) {
1654   // CHECK-LABEL: test_vst2_lane_s8
1655   vst2_lane_s8(a, b, 7);
1656   // CHECK: st2 {v{{[0-9]+}}.b, v{{[0-9]+}}.b}[7], [{{x[0-9]+|sp}}]
1657 }
1658 
1659 void test_vst2_lane_s16(int16_t const *a, int16x4x2_t b) {
1660   // CHECK-LABEL: test_vst2_lane_s16
1661   vst2_lane_s16(a, b, 3);
1662   // CHECK: st2 {v{{[0-9]+}}.h, v{{[0-9]+}}.h}[3], [{{x[0-9]+|sp}}]
1663 }
1664 
1665 void test_vst2_lane_s32(int32_t const *a, int32x2x2_t b) {
1666   // CHECK-LABEL: test_vst2_lane_s32
1667   vst2_lane_s32(a, b, 1);
1668   // CHECK: st2 {v{{[0-9]+}}.s, v{{[0-9]+}}.s}[1], [{{x[0-9]+|sp}}]
1669 }
1670 
1671 void test_vst2_lane_s64(int64_t const *a, int64x1x2_t b) {
1672   // CHECK-LABEL: test_vst2_lane_s64
1673   vst2_lane_s64(a, b, 0);
1674   // CHECK: st2 {v{{[0-9]+}}.d, v{{[0-9]+}}.d}[0], [{{x[0-9]+|sp}}]
1675 }
1676 
1677 void test_vst2_lane_f16(float16_t const *a, float16x4x2_t b) {
1678   // CHECK-LABEL: test_vst2_lane_f16
1679   vst2_lane_f16(a, b, 3);
1680   // CHECK: st2 {v{{[0-9]+}}.h, v{{[0-9]+}}.h}[3], [{{x[0-9]+|sp}}]
1681 }
1682 
1683 void test_vst2_lane_f32(float32_t const *a, float32x2x2_t b) {
1684   // CHECK-LABEL: test_vst2_lane_f32
1685   vst2_lane_f32(a, b, 1);
1686   // CHECK: st2 {v{{[0-9]+}}.s, v{{[0-9]+}}.s}[1], [{{x[0-9]+|sp}}]
1687 }
1688 
1689 void test_vst2_lane_f64(float64_t const *a, float64x1x2_t b) {
1690   // CHECK-LABEL: test_vst2_lane_f64
1691   vst2_lane_f64(a, b, 0);
1692   // CHECK: st2 {v{{[0-9]+}}.d, v{{[0-9]+}}.d}[0], [{{x[0-9]+|sp}}]
1693 }
1694 
1695 void test_vst2_lane_p8(poly8_t const *a, poly8x8x2_t b) {
1696   // CHECK-LABEL: test_vst2_lane_p8
1697   vst2_lane_p8(a, b, 7);
1698   // CHECK: st2 {v{{[0-9]+}}.b, v{{[0-9]+}}.b}[7], [{{x[0-9]+|sp}}]
1699 }
1700 
1701 void test_vst2_lane_p16(poly16_t const *a, poly16x4x2_t b) {
1702   // CHECK-LABEL: test_vst2_lane_p16
1703   vst2_lane_p16(a, b, 3);
1704   // CHECK: st2 {v{{[0-9]+}}.h, v{{[0-9]+}}.h}[3], [{{x[0-9]+|sp}}]
1705 }
1706 
1707 void test_vst2_lane_p64(poly64_t const *a, poly64x1x2_t b) {
1708   // CHECK-LABEL: test_vst2_lane_p64
1709   vst2_lane_p64(a, b, 0);
1710   // CHECK: st2 {v{{[0-9]+}}.d, v{{[0-9]+}}.d}[0], [{{x[0-9]+|sp}}]
1711 }
1712 
1713 void test_vst3q_lane_u8(uint8_t const *a, uint8x16x3_t b) {
1714   // CHECK-LABEL: test_vst3q_lane_u8
1715   vst3q_lane_u8(a, b, 15);
1716   // CHECK: st3 {v{{[0-9]+}}.b, v{{[0-9]+}}.b, v{{[0-9]+}}.b}[15], [{{x[0-9]+|sp}}]
1717 }
1718 
1719 void test_vst3q_lane_u16(uint16_t const *a, uint16x8x3_t b) {
1720   // CHECK-LABEL: test_vst3q_lane_u16
1721   vst3q_lane_u16(a, b, 7);
1722   // CHECK: st3 {v{{[0-9]+}}.h, v{{[0-9]+}}.h, v{{[0-9]+}}.h}[7], [{{x[0-9]+|sp}}]
1723 }
1724 
1725 void test_vst3q_lane_u32(uint32_t const *a, uint32x4x3_t b) {
1726   // CHECK-LABEL: test_vst3q_lane_u32
1727   vst3q_lane_u32(a, b, 3);
1728   // CHECK: st3 {v{{[0-9]+}}.s, v{{[0-9]+}}.s, v{{[0-9]+}}.s}[3], [{{x[0-9]+|sp}}]
1729 }
1730 
1731 void test_vst3q_lane_u64(uint64_t const *a, uint64x2x3_t b) {
1732   // CHECK-LABEL: test_vst3q_lane_u64
1733   vst3q_lane_u64(a, b, 1);
1734   // CHECK: st3 {v{{[0-9]+}}.d, v{{[0-9]+}}.d, v{{[0-9]+}}.d}[1], [{{x[0-9]+|sp}}]
1735 }
1736 
1737 void test_vst3q_lane_s8(int8_t const *a, int8x16x3_t b) {
1738   // CHECK-LABEL: test_vst3q_lane_s8
1739   vst3q_lane_s8(a, b, 15);
1740   // CHECK: st3 {v{{[0-9]+}}.b, v{{[0-9]+}}.b, v{{[0-9]+}}.b}[15], [{{x[0-9]+|sp}}]
1741 }
1742 
1743 void test_vst3q_lane_s16(int16_t const *a, int16x8x3_t b) {
1744   // CHECK-LABEL: test_vst3q_lane_s16
1745   vst3q_lane_s16(a, b, 7);
1746   // CHECK: st3 {v{{[0-9]+}}.h, v{{[0-9]+}}.h, v{{[0-9]+}}.h}[7], [{{x[0-9]+|sp}}]
1747 }
1748 
1749 void test_vst3q_lane_s32(int32_t const *a, int32x4x3_t b) {
1750   // CHECK-LABEL: test_vst3q_lane_s32
1751   vst3q_lane_s32(a, b, 3);
1752   // CHECK: st3 {v{{[0-9]+}}.s, v{{[0-9]+}}.s, v{{[0-9]+}}.s}[3], [{{x[0-9]+|sp}}]
1753 }
1754 
1755 void test_vst3q_lane_s64(int64_t const *a, int64x2x3_t b) {
1756   // CHECK-LABEL: test_vst3q_lane_s64
1757   vst3q_lane_s64(a, b, 1);
1758   // CHECK: st3 {v{{[0-9]+}}.d, v{{[0-9]+}}.d, v{{[0-9]+}}.d}[1], [{{x[0-9]+|sp}}]
1759 }
1760 
1761 void test_vst3q_lane_f16(float16_t const *a, float16x8x3_t b) {
1762   // CHECK-LABEL: test_vst3q_lane_f16
1763   vst3q_lane_f16(a, b, 7);
1764   // CHECK: st3 {v{{[0-9]+}}.h, v{{[0-9]+}}.h, v{{[0-9]+}}.h}[7], [{{x[0-9]+|sp}}]
1765 }
1766 
1767 void test_vst3q_lane_f32(float32_t const *a, float32x4x3_t b) {
1768   // CHECK-LABEL: test_vst3q_lane_f32
1769   vst3q_lane_f32(a, b, 3);
1770   // CHECK: st3 {v{{[0-9]+}}.s, v{{[0-9]+}}.s, v{{[0-9]+}}.s}[3], [{{x[0-9]+|sp}}]
1771 }
1772 
1773 void test_vst3q_lane_f64(float64_t const *a, float64x2x3_t b) {
1774   // CHECK-LABEL: test_vst3q_lane_f64
1775   vst3q_lane_f64(a, b, 1);
1776   // CHECK: st3 {v{{[0-9]+}}.d, v{{[0-9]+}}.d, v{{[0-9]+}}.d}[1], [{{x[0-9]+|sp}}]
1777 }
1778 
1779 void test_vst3q_lane_p8(poly8_t const *a, poly8x16x3_t b) {
1780   // CHECK-LABEL: test_vst3q_lane_p8
1781   vst3q_lane_p8(a, b, 15);
1782   // CHECK: st3 {v{{[0-9]+}}.b, v{{[0-9]+}}.b, v{{[0-9]+}}.b}[15], [{{x[0-9]+|sp}}]
1783 }
1784 
1785 void test_vst3q_lane_p16(poly16_t const *a, poly16x8x3_t b) {
1786   // CHECK-LABEL: test_vst3q_lane_p16
1787   vst3q_lane_p16(a, b, 7);
1788   // CHECK: st3 {v{{[0-9]+}}.h, v{{[0-9]+}}.h, v{{[0-9]+}}.h}[7], [{{x[0-9]+|sp}}]
1789 }
1790 
1791 void test_vst3q_lane_p64(poly64_t const *a, poly64x2x3_t b) {
1792   // CHECK-LABEL: test_vst3q_lane_p64
1793   vst3q_lane_p64(a, b, 1);
1794   // CHECK: st3 {v{{[0-9]+}}.d, v{{[0-9]+}}.d, v{{[0-9]+}}.d}[1], [{{x[0-9]+|sp}}]
1795 }
1796 
1797 void test_vst3_lane_u8(uint8_t const *a, uint8x8x3_t b) {
1798   // CHECK-LABEL: test_vst3_lane_u8
1799   vst3_lane_u8(a, b, 7);
1800   // CHECK: st3 {v{{[0-9]+}}.b, v{{[0-9]+}}.b, v{{[0-9]+}}.b}[7], [{{x[0-9]+|sp}}]
1801 }
1802 
1803 void test_vst3_lane_u16(uint16_t const *a, uint16x4x3_t b) {
1804   // CHECK-LABEL: test_vst3_lane_u16
1805   vst3_lane_u16(a, b, 3);
1806   // CHECK: st3 {v{{[0-9]+}}.h, v{{[0-9]+}}.h, v{{[0-9]+}}.h}[3], [{{x[0-9]+|sp}}]
1807 }
1808 
1809 void test_vst3_lane_u32(uint32_t const *a, uint32x2x3_t b) {
1810   // CHECK-LABEL: test_vst3_lane_u32
1811   vst3_lane_u32(a, b, 1);
1812   // CHECK: st3 {v{{[0-9]+}}.s, v{{[0-9]+}}.s, v{{[0-9]+}}.s}[1], [{{x[0-9]+|sp}}]
1813 }
1814 
1815 void test_vst3_lane_u64(uint64_t const *a, uint64x1x3_t b) {
1816   // CHECK-LABEL: test_vst3_lane_u64
1817   vst3_lane_u64(a, b, 0);
1818   // CHECK: st3 {v{{[0-9]+}}.d, v{{[0-9]+}}.d, v{{[0-9]+}}.d}[0], [{{x[0-9]+|sp}}]
1819 }
1820 
1821 void test_vst3_lane_s8(int8_t const *a, int8x8x3_t b) {
1822   // CHECK-LABEL: test_vst3_lane_s8
1823   vst3_lane_s8(a, b, 7);
1824   // CHECK: st3 {v{{[0-9]+}}.b, v{{[0-9]+}}.b, v{{[0-9]+}}.b}[7], [{{x[0-9]+|sp}}]
1825 }
1826 
1827 void test_vst3_lane_s16(int16_t const *a, int16x4x3_t b) {
1828   // CHECK-LABEL: test_vst3_lane_s16
1829   vst3_lane_s16(a, b, 3);
1830   // CHECK: st3 {v{{[0-9]+}}.h, v{{[0-9]+}}.h, v{{[0-9]+}}.h}[3], [{{x[0-9]+|sp}}]
1831 }
1832 
1833 void test_vst3_lane_s32(int32_t const *a, int32x2x3_t b) {
1834   // CHECK-LABEL: test_vst3_lane_s32
1835   vst3_lane_s32(a, b, 1);
1836   // CHECK: st3 {v{{[0-9]+}}.s, v{{[0-9]+}}.s, v{{[0-9]+}}.s}[1], [{{x[0-9]+|sp}}]
1837 }
1838 
1839 void test_vst3_lane_s64(int64_t const *a, int64x1x3_t b) {
1840   // CHECK-LABEL: test_vst3_lane_s64
1841   vst3_lane_s64(a, b, 0);
1842   // CHECK: st3 {v{{[0-9]+}}.d, v{{[0-9]+}}.d, v{{[0-9]+}}.d}[0], [{{x[0-9]+|sp}}]
1843 }
1844 
1845 void test_vst3_lane_f16(float16_t const *a, float16x4x3_t b) {
1846   // CHECK-LABEL: test_vst3_lane_f16
1847   vst3_lane_f16(a, b, 3);
1848   // CHECK: st3 {v{{[0-9]+}}.h, v{{[0-9]+}}.h, v{{[0-9]+}}.h}[3], [{{x[0-9]+|sp}}]
1849 }
1850 
1851 void test_vst3_lane_f32(float32_t const *a, float32x2x3_t b) {
1852   // CHECK-LABEL: test_vst3_lane_f32
1853   vst3_lane_f32(a, b, 1);
1854   // CHECK: st3 {v{{[0-9]+}}.s, v{{[0-9]+}}.s, v{{[0-9]+}}.s}[1], [{{x[0-9]+|sp}}]
1855 }
1856 
1857 void test_vst3_lane_f64(float64_t const *a, float64x1x3_t b) {
1858   // CHECK-LABEL: test_vst3_lane_f64
1859   vst3_lane_f64(a, b, 0);
1860   // CHECK: st3 {v{{[0-9]+}}.d, v{{[0-9]+}}.d, v{{[0-9]+}}.d}[0], [{{x[0-9]+|sp}}]
1861 }
1862 
1863 void test_vst3_lane_p8(poly8_t const *a, poly8x8x3_t b) {
1864   // CHECK-LABEL: test_vst3_lane_p8
1865   vst3_lane_p8(a, b, 7);
1866   // CHECK: st3 {v{{[0-9]+}}.b, v{{[0-9]+}}.b, v{{[0-9]+}}.b}[7], [{{x[0-9]+|sp}}]
1867 }
1868 
1869 void test_vst3_lane_p16(poly16_t const *a, poly16x4x3_t b) {
1870   // CHECK-LABEL: test_vst3_lane_p16
1871   vst3_lane_p16(a, b, 3);
1872   // CHECK: st3 {v{{[0-9]+}}.h, v{{[0-9]+}}.h, v{{[0-9]+}}.h}[3], [{{x[0-9]+|sp}}]
1873 }
1874 
1875 void test_vst3_lane_p64(poly64_t const *a, poly64x1x3_t b) {
1876   // CHECK-LABEL: test_vst3_lane_p64
1877   vst3_lane_p64(a, b, 0);
1878   // CHECK: st3 {v{{[0-9]+}}.d, v{{[0-9]+}}.d, v{{[0-9]+}}.d}[0], [{{x[0-9]+|sp}}]
1879 }
1880 
1881 void test_vst4q_lane_u8(uint16_t const *a, uint8x16x4_t b) {
1882   // CHECK-LABEL: test_vst4q_lane_u8
1883   vst4q_lane_u8(a, b, 15);
1884   // CHECK: st4 {v{{[0-9]+}}.b, v{{[0-9]+}}.b, v{{[0-9]+}}.b, v{{[0-9]+}}.b}[15], [{{x[0-9]+|sp}}]
1885 }
1886 
1887 void test_vst4q_lane_u16(uint16_t const *a, uint16x8x4_t b) {
1888   // CHECK-LABEL: test_vst4q_lane_u16
1889   vst4q_lane_u16(a, b, 7);
1890   // CHECK: st4 {v{{[0-9]+}}.h, v{{[0-9]+}}.h, v{{[0-9]+}}.h, v{{[0-9]+}}.h}[7], [{{x[0-9]+|sp}}]
1891 }
1892 
1893 void test_vst4q_lane_u32(uint32_t const *a, uint32x4x4_t b) {
1894   // CHECK-LABEL: test_vst4q_lane_u32
1895   vst4q_lane_u32(a, b, 3);
1896   // CHECK: st4 {v{{[0-9]+}}.s, v{{[0-9]+}}.s, v{{[0-9]+}}.s, v{{[0-9]+}}.s}[3], [{{x[0-9]+|sp}}]
1897 }
1898 
1899 void test_vst4q_lane_u64(uint64_t const *a, uint64x2x4_t b) {
1900   // CHECK-LABEL: test_vst4q_lane_u64
1901   vst4q_lane_u64(a, b, 1);
1902   // CHECK: st4 {v{{[0-9]+}}.d, v{{[0-9]+}}.d, v{{[0-9]+}}.d, v{{[0-9]+}}.d}[1], [{{x[0-9]+|sp}}]
1903 }
1904 
1905 void test_vst4q_lane_s8(int16_t const *a, int8x16x4_t b) {
1906   // CHECK-LABEL: test_vst4q_lane_s8
1907   vst4q_lane_s8(a, b, 15);
1908   // CHECK: st4 {v{{[0-9]+}}.b, v{{[0-9]+}}.b, v{{[0-9]+}}.b, v{{[0-9]+}}.b}[15], [{{x[0-9]+|sp}}]
1909 }
1910 
1911 void test_vst4q_lane_s16(int16_t const *a, int16x8x4_t b) {
1912   // CHECK-LABEL: test_vst4q_lane_s16
1913   vst4q_lane_s16(a, b, 7);
1914   // CHECK: st4 {v{{[0-9]+}}.h, v{{[0-9]+}}.h, v{{[0-9]+}}.h, v{{[0-9]+}}.h}[7], [{{x[0-9]+|sp}}]
1915 }
1916 
1917 void test_vst4q_lane_s32(int32_t const *a, int32x4x4_t b) {
1918   // CHECK-LABEL: test_vst4q_lane_s32
1919   vst4q_lane_s32(a, b, 3);
1920   // CHECK: st4 {v{{[0-9]+}}.s, v{{[0-9]+}}.s, v{{[0-9]+}}.s, v{{[0-9]+}}.s}[3], [{{x[0-9]+|sp}}]
1921 }
1922 
1923 void test_vst4q_lane_s64(int64_t const *a, int64x2x4_t b) {
1924   // CHECK-LABEL: test_vst4q_lane_s64
1925   vst4q_lane_s64(a, b, 1);
1926   // CHECK: st4 {v{{[0-9]+}}.d, v{{[0-9]+}}.d, v{{[0-9]+}}.d, v{{[0-9]+}}.d}[1], [{{x[0-9]+|sp}}]
1927 }
1928 
1929 void test_vst4q_lane_f16(float16_t const *a, float16x8x4_t b) {
1930   // CHECK-LABEL: test_vst4q_lane_f16
1931   vst4q_lane_f16(a, b, 7);
1932   // CHECK: st4 {v{{[0-9]+}}.h, v{{[0-9]+}}.h, v{{[0-9]+}}.h, v{{[0-9]+}}.h}[7], [{{x[0-9]+|sp}}]
1933 }
1934 
1935 void test_vst4q_lane_f32(float32_t const *a, float32x4x4_t b) {
1936   // CHECK-LABEL: test_vst4q_lane_f32
1937   vst4q_lane_f32(a, b, 3);
1938   // CHECK: st4 {v{{[0-9]+}}.s, v{{[0-9]+}}.s, v{{[0-9]+}}.s, v{{[0-9]+}}.s}[3], [{{x[0-9]+|sp}}]
1939 }
1940 
1941 void test_vst4q_lane_f64(float64_t const *a, float64x2x4_t b) {
1942   // CHECK-LABEL: test_vst4q_lane_f64
1943   vst4q_lane_f64(a, b, 1);
1944   // CHECK: st4 {v{{[0-9]+}}.d, v{{[0-9]+}}.d, v{{[0-9]+}}.d, v{{[0-9]+}}.d}[1], [{{x[0-9]+|sp}}]
1945 }
1946 
1947 void test_vst4q_lane_p8(poly16_t const *a, poly8x16x4_t b) {
1948   // CHECK-LABEL: test_vst4q_lane_p8
1949   vst4q_lane_p8(a, b, 15);
1950   // CHECK: st4 {v{{[0-9]+}}.b, v{{[0-9]+}}.b, v{{[0-9]+}}.b, v{{[0-9]+}}.b}[15], [{{x[0-9]+|sp}}]
1951 }
1952 
1953 void test_vst4q_lane_p16(poly16_t const *a, poly16x8x4_t b) {
1954   // CHECK-LABEL: test_vst4q_lane_p16
1955   vst4q_lane_p16(a, b, 7);
1956   // CHECK: st4 {v{{[0-9]+}}.h, v{{[0-9]+}}.h, v{{[0-9]+}}.h, v{{[0-9]+}}.h}[7], [{{x[0-9]+|sp}}]
1957 }
1958 
1959 void test_vst4q_lane_p64(poly64_t const *a, poly64x2x4_t b) {
1960   // CHECK-LABEL: test_vst4q_lane_p64
1961   vst4q_lane_p64(a, b, 1);
1962   // CHECK: st4 {v{{[0-9]+}}.d, v{{[0-9]+}}.d, v{{[0-9]+}}.d, v{{[0-9]+}}.d}[1], [{{x[0-9]+|sp}}]
1963 }
1964 
1965 void test_vst4_lane_u8(uint8_t const *a, uint8x8x4_t b) {
1966   // CHECK-LABEL: test_vst4_lane_u8
1967   vst4_lane_u8(a, b, 7);
1968   // CHECK: st4 {v{{[0-9]+}}.b, v{{[0-9]+}}.b, v{{[0-9]+}}.b, v{{[0-9]+}}.b}[7], [{{x[0-9]+|sp}}]
1969 }
1970 
1971 void test_vst4_lane_u16(uint16_t const *a, uint16x4x4_t b) {
1972   // CHECK-LABEL: test_vst4_lane_u16
1973   vst4_lane_u16(a, b, 3);
1974   // CHECK: st4 {v{{[0-9]+}}.h, v{{[0-9]+}}.h, v{{[0-9]+}}.h, v{{[0-9]+}}.h}[3], [{{x[0-9]+|sp}}]
1975 }
1976 
1977 void test_vst4_lane_u32(uint32_t const *a, uint32x2x4_t b) {
1978   // CHECK-LABEL: test_vst4_lane_u32
1979   vst4_lane_u32(a, b, 1);
1980   // CHECK: st4 {v{{[0-9]+}}.s, v{{[0-9]+}}.s, v{{[0-9]+}}.s, v{{[0-9]+}}.s}[1], [{{x[0-9]+|sp}}]
1981 }
1982 
1983 void test_vst4_lane_u64(uint64_t const *a, uint64x1x4_t b) {
1984   // CHECK-LABEL: test_vst4_lane_u64
1985   vst4_lane_u64(a, b, 0);
1986   // CHECK: st4 {v{{[0-9]+}}.d, v{{[0-9]+}}.d, v{{[0-9]+}}.d, v{{[0-9]+}}.d}[0], [{{x[0-9]+|sp}}]
1987 }
1988 
1989 void test_vst4_lane_s8(int8_t const *a, int8x8x4_t b) {
1990   // CHECK-LABEL: test_vst4_lane_s8
1991   vst4_lane_s8(a, b, 7);
1992   // CHECK: st4 {v{{[0-9]+}}.b, v{{[0-9]+}}.b, v{{[0-9]+}}.b, v{{[0-9]+}}.b}[7], [{{x[0-9]+|sp}}]
1993 }
1994 
1995 void test_vst4_lane_s16(int16_t const *a, int16x4x4_t b) {
1996   // CHECK-LABEL: test_vst4_lane_s16
1997   vst4_lane_s16(a, b, 3);
1998   // CHECK: st4 {v{{[0-9]+}}.h, v{{[0-9]+}}.h, v{{[0-9]+}}.h, v{{[0-9]+}}.h}[3], [{{x[0-9]+|sp}}]
1999 }
2000 
2001 void test_vst4_lane_s32(int32_t const *a, int32x2x4_t b) {
2002   // CHECK-LABEL: test_vst4_lane_s32
2003   vst4_lane_s32(a, b, 1);
2004   // CHECK: st4 {v{{[0-9]+}}.s, v{{[0-9]+}}.s, v{{[0-9]+}}.s, v{{[0-9]+}}.s}[1], [{{x[0-9]+|sp}}]
2005 }
2006 
2007 void test_vst4_lane_s64(int64_t const *a, int64x1x4_t b) {
2008   // CHECK-LABEL: test_vst4_lane_s64
2009   vst4_lane_s64(a, b, 0);
2010   // CHECK: st4 {v{{[0-9]+}}.d, v{{[0-9]+}}.d, v{{[0-9]+}}.d, v{{[0-9]+}}.d}[0], [{{x[0-9]+|sp}}]
2011 }
2012 
2013 void test_vst4_lane_f16(float16_t const *a, float16x4x4_t b) {
2014   // CHECK-LABEL: test_vst4_lane_f16
2015   vst4_lane_f16(a, b, 3);
2016   // CHECK: st4 {v{{[0-9]+}}.h, v{{[0-9]+}}.h, v{{[0-9]+}}.h, v{{[0-9]+}}.h}[3], [{{x[0-9]+|sp}}]
2017 }
2018 
2019 void test_vst4_lane_f32(float32_t const *a, float32x2x4_t b) {
2020   // CHECK-LABEL: test_vst4_lane_f32
2021   vst4_lane_f32(a, b, 1);
2022   // CHECK: st4 {v{{[0-9]+}}.s, v{{[0-9]+}}.s, v{{[0-9]+}}.s, v{{[0-9]+}}.s}[1], [{{x[0-9]+|sp}}]
2023 }
2024 
2025 void test_vst4_lane_f64(float64_t const *a, float64x1x4_t b) {
2026   // CHECK-LABEL: test_vst4_lane_f64
2027   vst4_lane_f64(a, b, 0);
2028   // CHECK: st4 {v{{[0-9]+}}.d, v{{[0-9]+}}.d, v{{[0-9]+}}.d, v{{[0-9]+}}.d}[0], [{{x[0-9]+|sp}}]
2029 }
2030 
2031 void test_vst4_lane_p8(poly8_t const *a, poly8x8x4_t b) {
2032   // CHECK-LABEL: test_vst4_lane_p8
2033   vst4_lane_p8(a, b, 7);
2034   // CHECK: st4 {v{{[0-9]+}}.b, v{{[0-9]+}}.b, v{{[0-9]+}}.b, v{{[0-9]+}}.b}[7], [{{x[0-9]+|sp}}]
2035 }
2036 
2037 void test_vst4_lane_p16(poly16_t const *a, poly16x4x4_t b) {
2038   // CHECK-LABEL: test_vst4_lane_p16
2039   vst4_lane_p16(a, b, 3);
2040   // CHECK: st4 {v{{[0-9]+}}.h, v{{[0-9]+}}.h, v{{[0-9]+}}.h, v{{[0-9]+}}.h}[3], [{{x[0-9]+|sp}}]
2041 }
2042 
2043 void test_vst4_lane_p64(poly64_t const *a, poly64x1x4_t b) {
2044   // CHECK-LABEL: test_vst4_lane_p64
2045   vst4_lane_p64(a, b, 0);
2046   // CHECK: st4 {v{{[0-9]+}}.d, v{{[0-9]+}}.d, v{{[0-9]+}}.d, v{{[0-9]+}}.d}[0], [{{x[0-9]+|sp}}]
2047 }
2048