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
7uint8x16_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
13uint16x8_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
19uint32x4_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
25uint64x2_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
31int8x16_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
37int16x8_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
43int32x4_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
49int64x2_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
55float16x8_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
61float32x4_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
67float64x2_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
73poly8x16_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
79poly16x8_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
85poly64x2_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
91uint8x8_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
97uint16x4_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
103uint32x2_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
109uint64x1_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
115int8x8_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
121int16x4_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
127int32x2_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
133int64x1_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
139float16x4_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
145float32x2_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
151float64x1_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
157poly8x8_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
163poly16x4_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
169poly64x1_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
175uint8x16x2_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
181uint16x8x2_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
187uint32x4x2_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
193uint64x2x2_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
199int8x16x2_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
205int16x8x2_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
211int32x4x2_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
217int64x2x2_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
223float16x8x2_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
229float32x4x2_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
235float64x2x2_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
241poly8x16x2_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
247poly16x8x2_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
253poly64x2x2_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
259uint8x8x2_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
265uint16x4x2_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
271uint32x2x2_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
277uint64x1x2_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
283int8x8x2_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
289int16x4x2_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
295int32x2x2_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
301int64x1x2_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
307float16x4x2_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
313float32x2x2_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
319float64x1x2_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
325poly8x8x2_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
331poly16x4x2_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
337poly64x1x2_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
343uint8x16x3_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
350uint16x8x3_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
357uint32x4x3_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
364uint64x2x3_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
371int8x16x3_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
378int16x8x3_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
385int32x4x3_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
392int64x2x3_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
399float16x8x3_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
406float32x4x3_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
413float64x2x3_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
420poly8x16x3_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
427poly16x8x3_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
434poly64x2x3_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
441uint8x8x3_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
448uint16x4x3_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
455uint32x2x3_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
462uint64x1x3_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
469int8x8x3_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
476int16x4x3_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
483int32x2x3_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
490int64x1x3_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
497float16x4x3_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
504float32x2x3_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
511float64x1x3_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
518poly8x8x3_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
525poly16x4x3_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
532poly64x1x3_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
539uint8x16x4_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
545uint16x8x4_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
551uint32x4x4_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
557uint64x2x4_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
563int8x16x4_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
569int16x8x4_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
575int32x4x4_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
581int64x2x4_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
587float16x8x4_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
593float32x4x4_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
599float64x2x4_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
605poly8x16x4_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
611poly16x8x4_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
617poly64x2x4_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
623uint8x8x4_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
629uint16x4x4_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
635uint32x2x4_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
641uint64x1x4_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
647int8x8x4_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
653int16x4x4_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
659int32x2x4_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
665int64x1x4_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
671float16x4x4_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
677float32x2x4_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
683float64x1x4_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
689poly8x8x4_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
695poly16x4x4_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
701poly64x1x4_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
707uint8x16_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
713uint16x8_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
719uint32x4_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
725uint64x2_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
731int8x16_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
737int16x8_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
743int32x4_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
749int64x2_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
755float16x8_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
761float32x4_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
767float64x2_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
773poly8x16_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
779poly16x8_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
785poly64x2_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
791uint8x8_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
797uint16x4_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
803uint32x2_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
809uint64x1_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
815int8x8_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
821int16x4_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
827int32x2_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
833int64x1_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
839float16x4_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
845float32x2_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
851float64x1_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
857poly8x8_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
863poly16x4_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
869poly64x1_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
875int8x16x2_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
881uint8x16x2_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
887poly8x16x2_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
893int8x16x3_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
899uint8x16x3_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
905uint16x8x2_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
911uint32x4x2_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
917uint64x2x2_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
923int16x8x2_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
929int32x4x2_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
935int64x2x2_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
941float16x8x2_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
947float32x4x2_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
953float64x2x2_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
959poly16x8x2_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
965poly64x2x2_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
971uint8x8x2_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
977uint16x4x2_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
983uint32x2x2_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
989uint64x1x2_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
995int8x8x2_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
1001int16x4x2_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
1007int32x2x2_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
1013int64x1x2_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
1019float16x4x2_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
1025float32x2x2_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
1031float64x1x2_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
1037poly8x8x2_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
1043poly16x4x2_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
1049poly64x1x2_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
1055uint16x8x3_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
1061uint32x4x3_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
1067uint64x2x3_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
1073int16x8x3_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
1079int32x4x3_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
1085int64x2x3_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
1091float16x8x3_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
1097float32x4x3_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
1103float64x2x3_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
1109poly8x16x3_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
1115poly16x8x3_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
1121poly64x2x3_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
1127uint8x8x3_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
1133uint16x4x3_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
1139uint32x2x3_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
1145uint64x1x3_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
1151int8x8x3_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
1157int16x4x3_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
1163int32x2x3_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
1169int64x1x3_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
1175float16x4x3_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
1181float32x2x3_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
1187float64x1x3_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
1193poly8x8x3_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
1199poly16x4x3_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
1205poly64x1x3_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
1211uint8x16x4_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
1217uint16x8x4_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
1223uint32x4x4_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
1229uint64x2x4_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
1235int8x16x4_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
1241int16x8x4_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
1247int32x4x4_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
1253int64x2x4_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
1259float16x8x4_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
1265float32x4x4_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
1271float64x2x4_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
1277poly8x16x4_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
1283poly16x8x4_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
1289poly64x2x4_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
1295uint8x8x4_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
1301uint16x4x4_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
1307uint32x2x4_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
1313uint64x1x4_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
1319int8x8x4_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
1325int16x4x4_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
1331int32x2x4_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
1337int64x1x4_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
1343float16x4x4_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
1349float32x2x4_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
1355float64x1x4_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
1361poly8x8x4_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
1367poly16x4x4_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
1373poly64x1x4_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
1379void 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
1385void 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
1391void 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
1397void 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
1403void 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
1409void 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
1415void 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
1421void 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
1427void 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
1433void 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
1439void 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
1445void 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
1451void 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
1457void 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
1463void 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
1469void 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
1475void 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
1481void 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
1487void 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
1493void 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
1499void 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
1505void 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
1511void 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
1517void 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
1523void 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
1529void 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
1535void 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
1541void 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
1547void 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
1553void 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
1559void 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
1565void 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
1571void 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
1577void 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
1583void 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
1589void 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
1595void 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
1601void 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
1607void 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
1613void 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
1619void 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
1625void 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
1631void 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
1637void 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
1643void 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
1649void 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
1655void 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
1661void 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
1667void 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
1673void 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
1679void 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
1685void 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
1691void 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
1697void 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
1703void 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
1709void 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
1715void 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
1721void 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
1727void 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
1733void 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
1739void 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
1745void 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
1751void 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
1757void 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
1763void 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
1769void 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
1775void 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
1781void 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
1787void 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
1793void 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
1799void 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
1805void 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
1811void 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
1817void 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
1823void 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
1829void 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
1835void 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
1841void 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
1847void 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
1853void 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
1859void 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
1865void 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
1871void 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
1877void 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
1883void 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
1889void 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
1895void 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
1901void 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
1907void 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
1913void 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
1919void 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
1925void 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
1931void 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
1937void 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
1943void 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
1949void 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
1955void 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
1961void 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
1967void 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
1973void 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
1979void 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
1985void 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
1991void 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
1997void 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
2003void 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
2009void 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
2015void 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
2021void 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
2027void 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
2033void 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
2039void 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
2045void 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}
2050