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