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
7 uint8x16_t test_vld1q_dup_u8(uint8_t *a) {
8 // CHECK-LABEL: test_vld1q_dup_u8
9 return vld1q_dup_u8(a);
10 // CHECK: ld1r {{{ *v[0-9]+.16b *}}}, [{{x[0-9]+|sp}}]
13 uint16x8_t test_vld1q_dup_u16(uint16_t *a) {
14 // CHECK-LABEL: test_vld1q_dup_u16
15 return vld1q_dup_u16(a);
16 // CHECK: ld1r {{{ *v[0-9]+.8h *}}}, [{{x[0-9]+|sp}}]
19 uint32x4_t test_vld1q_dup_u32(uint32_t *a) {
20 // CHECK-LABEL: test_vld1q_dup_u32
21 return vld1q_dup_u32(a);
22 // CHECK: ld1r {{{ *v[0-9]+.4s *}}}, [{{x[0-9]+|sp}}]
25 uint64x2_t test_vld1q_dup_u64(uint64_t *a) {
26 // CHECK-LABEL: test_vld1q_dup_u64
27 return vld1q_dup_u64(a);
28 // CHECK: ld1r {{{ *v[0-9]+.2d *}}}, [{{x[0-9]+|sp}}]
31 int8x16_t test_vld1q_dup_s8(int8_t *a) {
32 // CHECK-LABEL: test_vld1q_dup_s8
33 return vld1q_dup_s8(a);
34 // CHECK: ld1r {{{ *v[0-9]+.16b *}}}, [{{x[0-9]+|sp}}]
37 int16x8_t test_vld1q_dup_s16(int16_t *a) {
38 // CHECK-LABEL: test_vld1q_dup_s16
39 return vld1q_dup_s16(a);
40 // CHECK: ld1r {{{ *v[0-9]+.8h *}}}, [{{x[0-9]+|sp}}]
43 int32x4_t test_vld1q_dup_s32(int32_t *a) {
44 // CHECK-LABEL: test_vld1q_dup_s32
45 return vld1q_dup_s32(a);
46 // CHECK: ld1r {{{ *v[0-9]+.4s *}}}, [{{x[0-9]+|sp}}]
49 int64x2_t test_vld1q_dup_s64(int64_t *a) {
50 // CHECK-LABEL: test_vld1q_dup_s64
51 return vld1q_dup_s64(a);
52 // CHECK: ld1r {{{ *v[0-9]+.2d *}}}, [{{x[0-9]+|sp}}]
55 float16x8_t test_vld1q_dup_f16(float16_t *a) {
56 // CHECK-LABEL: test_vld1q_dup_f16
57 return vld1q_dup_f16(a);
58 // CHECK: ld1r {{{ *v[0-9]+.8h *}}}, [{{x[0-9]+|sp}}]
61 float32x4_t test_vld1q_dup_f32(float32_t *a) {
62 // CHECK-LABEL: test_vld1q_dup_f32
63 return vld1q_dup_f32(a);
64 // CHECK: ld1r {{{ *v[0-9]+.4s *}}}, [{{x[0-9]+|sp}}]
67 float64x2_t test_vld1q_dup_f64(float64_t *a) {
68 // CHECK-LABEL: test_vld1q_dup_f64
69 return vld1q_dup_f64(a);
70 // CHECK: ld1r {{{ *v[0-9]+.2d *}}}, [{{x[0-9]+|sp}}]
73 poly8x16_t test_vld1q_dup_p8(poly8_t *a) {
74 // CHECK-LABEL: test_vld1q_dup_p8
75 return vld1q_dup_p8(a);
76 // CHECK: ld1r {{{ *v[0-9]+.16b *}}}, [{{x[0-9]+|sp}}]
79 poly16x8_t test_vld1q_dup_p16(poly16_t *a) {
80 // CHECK-LABEL: test_vld1q_dup_p16
81 return vld1q_dup_p16(a);
82 // CHECK: ld1r {{{ *v[0-9]+.8h *}}}, [{{x[0-9]+|sp}}]
85 poly64x2_t test_vld1q_dup_p64(poly64_t *a) {
86 // CHECK-LABEL: test_vld1q_dup_p64
87 return vld1q_dup_p64(a);
88 // CHECK: ld1r {{{ *v[0-9]+.2d *}}}, [{{x[0-9]+|sp}}]
91 uint8x8_t test_vld1_dup_u8(uint8_t *a) {
92 // CHECK-LABEL: test_vld1_dup_u8
93 return vld1_dup_u8(a);
94 // CHECK: ld1r {{{ *v[0-9]+.8b *}}}, [{{x[0-9]+|sp}}]
97 uint16x4_t test_vld1_dup_u16(uint16_t *a) {
98 // CHECK-LABEL: test_vld1_dup_u16
99 return vld1_dup_u16(a);
100 // CHECK: ld1r {{{ *v[0-9]+.4h *}}}, [{{x[0-9]+|sp}}]
103 uint32x2_t test_vld1_dup_u32(uint32_t *a) {
104 // CHECK-LABEL: test_vld1_dup_u32
105 return vld1_dup_u32(a);
106 // CHECK: ld1r {{{ *v[0-9]+.2s *}}}, [{{x[0-9]+|sp}}]
109 uint64x1_t test_vld1_dup_u64(uint64_t *a) {
110 // CHECK-LABEL: test_vld1_dup_u64
111 return vld1_dup_u64(a);
112 // CHECK: {{ld1r { v[0-9]+.1d }|ldr d[0-9]+}}, [{{x[0-9]+|sp}}]
115 int8x8_t test_vld1_dup_s8(int8_t *a) {
116 // CHECK-LABEL: test_vld1_dup_s8
117 return vld1_dup_s8(a);
118 // CHECK: ld1r {{{ *v[0-9]+.8b *}}}, [{{x[0-9]+|sp}}]
121 int16x4_t test_vld1_dup_s16(int16_t *a) {
122 // CHECK-LABEL: test_vld1_dup_s16
123 return vld1_dup_s16(a);
124 // CHECK: ld1r {{{ *v[0-9]+.4h *}}}, [{{x[0-9]+|sp}}]
127 int32x2_t test_vld1_dup_s32(int32_t *a) {
128 // CHECK-LABEL: test_vld1_dup_s32
129 return vld1_dup_s32(a);
130 // CHECK: ld1r {{{ *v[0-9]+.2s *}}}, [{{x[0-9]+|sp}}]
133 int64x1_t test_vld1_dup_s64(int64_t *a) {
134 // CHECK-LABEL: test_vld1_dup_s64
135 return vld1_dup_s64(a);
136 // CHECK: {{ld1r { v[0-9]+.1d }|ldr d[0-9]+}}, [{{x[0-9]+|sp}}]
139 float16x4_t test_vld1_dup_f16(float16_t *a) {
140 // CHECK-LABEL: test_vld1_dup_f16
141 return vld1_dup_f16(a);
142 // CHECK: ld1r {{{ *v[0-9]+.4h *}}}, [{{x[0-9]+|sp}}]
145 float32x2_t test_vld1_dup_f32(float32_t *a) {
146 // CHECK-LABEL: test_vld1_dup_f32
147 return vld1_dup_f32(a);
148 // CHECK: ld1r {{{ *v[0-9]+.2s *}}}, [{{x[0-9]+|sp}}]
151 float64x1_t test_vld1_dup_f64(float64_t *a) {
152 // CHECK-LABEL: test_vld1_dup_f64
153 return vld1_dup_f64(a);
154 // CHECK: {{ld1r { v[0-9]+.1d }|ldr d[0-9]+}}, [{{x[0-9]+|sp}}]
157 poly8x8_t test_vld1_dup_p8(poly8_t *a) {
158 // CHECK-LABEL: test_vld1_dup_p8
159 return vld1_dup_p8(a);
160 // CHECK: ld1r {{{ *v[0-9]+.8b *}}}, [{{x[0-9]+|sp}}]
163 poly16x4_t test_vld1_dup_p16(poly16_t *a) {
164 // CHECK-LABEL: test_vld1_dup_p16
165 return vld1_dup_p16(a);
166 // CHECK: ld1r {{{ *v[0-9]+.4h *}}}, [{{x[0-9]+|sp}}]
169 poly64x1_t test_vld1_dup_p64(poly64_t *a) {
170 // CHECK-LABEL: test_vld1_dup_p64
171 return vld1_dup_p64(a);
172 // CHECK: {{ld1r { v[0-9]+.1d }|ldr d[0-9]+}}, [{{x[0-9]+|sp}}]
175 uint8x16x2_t test_vld2q_dup_u8(uint8_t *a) {
176 // CHECK-LABEL: test_vld2q_dup_u8
177 return vld2q_dup_u8(a);
178 // CHECK: ld2r {{{ *v[0-9]+.16b, v[0-9]+.16b *}}}, [{{x[0-9]+|sp}}]
181 uint16x8x2_t test_vld2q_dup_u16(uint16_t *a) {
182 // CHECK-LABEL: test_vld2q_dup_u16
183 return vld2q_dup_u16(a);
184 // CHECK: ld2r {{{ *v[0-9]+.8h, v[0-9]+.8h *}}}, [{{x[0-9]+|sp}}]
187 uint32x4x2_t test_vld2q_dup_u32(uint32_t *a) {
188 // CHECK-LABEL: test_vld2q_dup_u32
189 return vld2q_dup_u32(a);
190 // CHECK: ld2r {{{ *v[0-9]+.4s, v[0-9]+.4s *}}}, [{{x[0-9]+|sp}}]
193 uint64x2x2_t test_vld2q_dup_u64(uint64_t *a) {
194 // CHECK-LABEL: test_vld2q_dup_u64
195 return vld2q_dup_u64(a);
196 // CHECK: ld2r {{{ *v[0-9]+.2d, v[0-9]+.2d *}}}, [{{x[0-9]+|sp}}]
199 int8x16x2_t test_vld2q_dup_s8(int8_t *a) {
200 // CHECK-LABEL: test_vld2q_dup_s8
201 return vld2q_dup_s8(a);
202 // CHECK: ld2r {{{ *v[0-9]+.16b, v[0-9]+.16b *}}}, [{{x[0-9]+|sp}}]
205 int16x8x2_t test_vld2q_dup_s16(int16_t *a) {
206 // CHECK-LABEL: test_vld2q_dup_s16
207 return vld2q_dup_s16(a);
208 // CHECK: ld2r {{{ *v[0-9]+.8h, v[0-9]+.8h *}}}, [{{x[0-9]+|sp}}]
211 int32x4x2_t test_vld2q_dup_s32(int32_t *a) {
212 // CHECK-LABEL: test_vld2q_dup_s32
213 return vld2q_dup_s32(a);
214 // CHECK: ld2r {{{ *v[0-9]+.4s, v[0-9]+.4s *}}}, [{{x[0-9]+|sp}}]
217 int64x2x2_t test_vld2q_dup_s64(int64_t *a) {
218 // CHECK-LABEL: test_vld2q_dup_s64
219 return vld2q_dup_s64(a);
220 // CHECK: ld2r {{{ *v[0-9]+.2d, v[0-9]+.2d *}}}, [{{x[0-9]+|sp}}]
223 float16x8x2_t test_vld2q_dup_f16(float16_t *a) {
224 // CHECK-LABEL: test_vld2q_dup_f16
225 return vld2q_dup_f16(a);
226 // CHECK: ld2r {{{ *v[0-9]+.8h, v[0-9]+.8h *}}}, [{{x[0-9]+|sp}}]
229 float32x4x2_t test_vld2q_dup_f32(float32_t *a) {
230 // CHECK-LABEL: test_vld2q_dup_f32
231 return vld2q_dup_f32(a);
232 // CHECK: ld2r {{{ *v[0-9]+.4s, v[0-9]+.4s *}}}, [{{x[0-9]+|sp}}]
235 float64x2x2_t test_vld2q_dup_f64(float64_t *a) {
236 // CHECK-LABEL: test_vld2q_dup_f64
237 return vld2q_dup_f64(a);
238 // CHECK: ld2r {{{ *v[0-9]+.2d, v[0-9]+.2d *}}}, [{{x[0-9]+|sp}}]
241 poly8x16x2_t test_vld2q_dup_p8(poly8_t *a) {
242 // CHECK-LABEL: test_vld2q_dup_p8
243 return vld2q_dup_p8(a);
244 // CHECK: ld2r {{{ *v[0-9]+.16b, v[0-9]+.16b *}}}, [{{x[0-9]+|sp}}]
247 poly16x8x2_t test_vld2q_dup_p16(poly16_t *a) {
248 // CHECK-LABEL: test_vld2q_dup_p16
249 return vld2q_dup_p16(a);
250 // CHECK: ld2r {{{ *v[0-9]+.8h, v[0-9]+.8h *}}}, [{{x[0-9]+|sp}}]
253 poly64x2x2_t test_vld2q_dup_p64(poly64_t *a) {
254 // CHECK-LABEL: test_vld2q_dup_p64
255 return vld2q_dup_p64(a);
256 // CHECK: ld2r {{{ *v[0-9]+.2d, v[0-9]+.2d *}}}, [{{x[0-9]+|sp}}]
259 uint8x8x2_t test_vld2_dup_u8(uint8_t *a) {
260 // CHECK-LABEL: test_vld2_dup_u8
261 return vld2_dup_u8(a);
262 // CHECK: ld2r {{{ *v[0-9]+.8b, v[0-9]+.8b *}}}, [{{x[0-9]+|sp}}]
265 uint16x4x2_t test_vld2_dup_u16(uint16_t *a) {
266 // CHECK-LABEL: test_vld2_dup_u16
267 return vld2_dup_u16(a);
268 // CHECK: ld2r {{{ *v[0-9]+.4h, v[0-9]+.4h *}}}, [{{x[0-9]+|sp}}]
271 uint32x2x2_t test_vld2_dup_u32(uint32_t *a) {
272 // CHECK-LABEL: test_vld2_dup_u32
273 return vld2_dup_u32(a);
274 // CHECK: ld2r {{{ *v[0-9]+.2s, v[0-9]+.2s *}}}, [{{x[0-9]+|sp}}]
277 uint64x1x2_t test_vld2_dup_u64(uint64_t *a) {
278 // CHECK-LABEL: test_vld2_dup_u64
279 return vld2_dup_u64(a);
280 // CHECK: {{ld1|ld2r}} {{{ *v[0-9]+.1d, v[0-9]+.1d *}}}, [{{x[0-9]+|sp}}]
283 int8x8x2_t test_vld2_dup_s8(int8_t *a) {
284 // CHECK-LABEL: test_vld2_dup_s8
285 return vld2_dup_s8(a);
286 // CHECK: ld2r {{{ *v[0-9]+.8b, v[0-9]+.8b *}}}, [{{x[0-9]+|sp}}]
289 int16x4x2_t test_vld2_dup_s16(int16_t *a) {
290 // CHECK-LABEL: test_vld2_dup_s16
291 return vld2_dup_s16(a);
292 // CHECK: ld2r {{{ *v[0-9]+.4h, v[0-9]+.4h *}}}, [{{x[0-9]+|sp}}]
295 int32x2x2_t test_vld2_dup_s32(int32_t *a) {
296 // CHECK-LABEL: test_vld2_dup_s32
297 return vld2_dup_s32(a);
298 // CHECK: ld2r {{{ *v[0-9]+.2s, v[0-9]+.2s *}}}, [{{x[0-9]+|sp}}]
301 int64x1x2_t test_vld2_dup_s64(int64_t *a) {
302 // CHECK-LABEL: test_vld2_dup_s64
303 return vld2_dup_s64(a);
304 // CHECK: {{ld1|ld2r}} {{{ *v[0-9]+.1d, v[0-9]+.1d *}}}, [{{x[0-9]+|sp}}]
307 float16x4x2_t test_vld2_dup_f16(float16_t *a) {
308 // CHECK-LABEL: test_vld2_dup_f16
309 return vld2_dup_f16(a);
310 // CHECK: ld2r {{{ *v[0-9]+.4h, v[0-9]+.4h *}}}, [{{x[0-9]+|sp}}]
313 float32x2x2_t test_vld2_dup_f32(float32_t *a) {
314 // CHECK-LABEL: test_vld2_dup_f32
315 return vld2_dup_f32(a);
316 // CHECK: ld2r {{{ *v[0-9]+.2s, v[0-9]+.2s *}}}, [{{x[0-9]+|sp}}]
319 float64x1x2_t test_vld2_dup_f64(float64_t *a) {
320 // CHECK-LABEL: test_vld2_dup_f64
321 return vld2_dup_f64(a);
322 // CHECK: {{ld1|ld2r}} {{{ *v[0-9]+.1d, v[0-9]+.1d *}}}, [{{x[0-9]+|sp}}]
325 poly8x8x2_t test_vld2_dup_p8(poly8_t *a) {
326 // CHECK-LABEL: test_vld2_dup_p8
327 return vld2_dup_p8(a);
328 // CHECK: ld2r {{{ *v[0-9]+.8b, v[0-9]+.8b *}}}, [{{x[0-9]+|sp}}]
331 poly16x4x2_t test_vld2_dup_p16(poly16_t *a) {
332 // CHECK-LABEL: test_vld2_dup_p16
333 return vld2_dup_p16(a);
334 // CHECK: ld2r {{{ *v[0-9]+.4h, v[0-9]+.4h *}}}, [{{x[0-9]+|sp}}]
337 poly64x1x2_t test_vld2_dup_p64(poly64_t *a) {
338 // CHECK-LABEL: test_vld2_dup_p64
339 return vld2_dup_p64(a);
340 // CHECK: {{ld1|ld2r}} {{{ *v[0-9]+.1d, v[0-9]+.1d *}}}, [{{x[0-9]+|sp}}]
343 uint8x16x3_t test_vld3q_dup_u8(uint8_t *a) {
344 // CHECK-LABEL: test_vld3q_dup_u8
345 return vld3q_dup_u8(a);
346 // CHECK: ld3r {{{ *v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b *}}},
350 uint16x8x3_t test_vld3q_dup_u16(uint16_t *a) {
351 // CHECK-LABEL: test_vld3q_dup_u16
352 return vld3q_dup_u16(a);
353 // CHECK: ld3r {{{ *v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h *}}},
357 uint32x4x3_t test_vld3q_dup_u32(uint32_t *a) {
358 // CHECK-LABEL: test_vld3q_dup_u32
359 return vld3q_dup_u32(a);
360 // CHECK: ld3r {{{ *v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s *}}},
364 uint64x2x3_t test_vld3q_dup_u64(uint64_t *a) {
365 // CHECK-LABEL: test_vld3q_dup_u64
366 return vld3q_dup_u64(a);
367 // CHECK: ld3r {{{ *v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d *}}},
371 int8x16x3_t test_vld3q_dup_s8(int8_t *a) {
372 // CHECK-LABEL: test_vld3q_dup_s8
373 return vld3q_dup_s8(a);
374 // CHECK: ld3r {{{ *v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b *}}},
378 int16x8x3_t test_vld3q_dup_s16(int16_t *a) {
379 // CHECK-LABEL: test_vld3q_dup_s16
380 return vld3q_dup_s16(a);
381 // CHECK: ld3r {{{ *v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h *}}},
385 int32x4x3_t test_vld3q_dup_s32(int32_t *a) {
386 // CHECK-LABEL: test_vld3q_dup_s32
387 return vld3q_dup_s32(a);
388 // CHECK: ld3r {{{ *v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s *}}},
392 int64x2x3_t test_vld3q_dup_s64(int64_t *a) {
393 // CHECK-LABEL: test_vld3q_dup_s64
394 return vld3q_dup_s64(a);
395 // CHECK: ld3r {{{ *v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d *}}},
399 float16x8x3_t test_vld3q_dup_f16(float16_t *a) {
400 // CHECK-LABEL: test_vld3q_dup_f16
401 return vld3q_dup_f16(a);
402 // CHECK: ld3r {{{ *v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h *}}},
406 float32x4x3_t test_vld3q_dup_f32(float32_t *a) {
407 // CHECK-LABEL: test_vld3q_dup_f32
408 return vld3q_dup_f32(a);
409 // CHECK: ld3r {{{ *v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s *}}},
413 float64x2x3_t test_vld3q_dup_f64(float64_t *a) {
414 // CHECK-LABEL: test_vld3q_dup_f64
415 return vld3q_dup_f64(a);
416 // CHECK: ld3r {{{ *v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d *}}},
420 poly8x16x3_t test_vld3q_dup_p8(poly8_t *a) {
421 // CHECK-LABEL: test_vld3q_dup_p8
422 return vld3q_dup_p8(a);
423 // CHECK: ld3r {{{ *v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b *}}},
427 poly16x8x3_t test_vld3q_dup_p16(poly16_t *a) {
428 // CHECK-LABEL: test_vld3q_dup_p16
429 return vld3q_dup_p16(a);
430 // CHECK: ld3r {{{ *v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h *}}},
434 poly64x2x3_t test_vld3q_dup_p64(poly64_t *a) {
435 // CHECK-LABEL: test_vld3q_dup_p64
436 return vld3q_dup_p64(a);
437 // CHECK: ld3r {{{ *v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d *}}},
441 uint8x8x3_t test_vld3_dup_u8(uint8_t *a) {
442 // CHECK-LABEL: test_vld3_dup_u8
443 return vld3_dup_u8(a);
444 // CHECK: ld3r {{{ *v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b *}}},
448 uint16x4x3_t test_vld3_dup_u16(uint16_t *a) {
449 // CHECK-LABEL: test_vld3_dup_u16
450 return vld3_dup_u16(a);
451 // CHECK: ld3r {{{ *v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h *}}},
455 uint32x2x3_t test_vld3_dup_u32(uint32_t *a) {
456 // CHECK-LABEL: test_vld3_dup_u32
457 return vld3_dup_u32(a);
458 // CHECK: ld3r {{{ *v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s *}}},
462 uint64x1x3_t test_vld3_dup_u64(uint64_t *a) {
463 // CHECK-LABEL: test_vld3_dup_u64
464 return vld3_dup_u64(a);
465 // CHECK: {{ld1|ld3r}} {{{ *v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d *}}},
469 int8x8x3_t test_vld3_dup_s8(int8_t *a) {
470 // CHECK-LABEL: test_vld3_dup_s8
471 return vld3_dup_s8(a);
472 // CHECK: ld3r {{{ *v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b *}}},
476 int16x4x3_t test_vld3_dup_s16(int16_t *a) {
477 // CHECK-LABEL: test_vld3_dup_s16
478 return vld3_dup_s16(a);
479 // CHECK: ld3r {{{ *v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h *}}},
483 int32x2x3_t test_vld3_dup_s32(int32_t *a) {
484 // CHECK-LABEL: test_vld3_dup_s32
485 return vld3_dup_s32(a);
486 // CHECK: ld3r {{{ *v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s *}}},
490 int64x1x3_t test_vld3_dup_s64(int64_t *a) {
491 // CHECK-LABEL: test_vld3_dup_s64
492 return vld3_dup_s64(a);
493 // CHECK: {{ld1|ld3r}} {{{ *v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d *}}},
497 float16x4x3_t test_vld3_dup_f16(float16_t *a) {
498 // CHECK-LABEL: test_vld3_dup_f16
499 return vld3_dup_f16(a);
500 // CHECK: ld3r {{{ *v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h *}}},
504 float32x2x3_t test_vld3_dup_f32(float32_t *a) {
505 // CHECK-LABEL: test_vld3_dup_f32
506 return vld3_dup_f32(a);
507 // CHECK: ld3r {{{ *v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s *}}},
511 float64x1x3_t test_vld3_dup_f64(float64_t *a) {
512 // CHECK-LABEL: test_vld3_dup_f64
513 return vld3_dup_f64(a);
514 // CHECK: {{ld1|ld3r}} {{{ *v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d *}}},
518 poly8x8x3_t test_vld3_dup_p8(poly8_t *a) {
519 // CHECK-LABEL: test_vld3_dup_p8
520 return vld3_dup_p8(a);
521 // CHECK: ld3r {{{ *v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b *}}},
525 poly16x4x3_t test_vld3_dup_p16(poly16_t *a) {
526 // CHECK-LABEL: test_vld3_dup_p16
527 return vld3_dup_p16(a);
528 // CHECK: ld3r {{{ *v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h *}}},
532 poly64x1x3_t test_vld3_dup_p64(poly64_t *a) {
533 // CHECK-LABEL: test_vld3_dup_p64
534 return vld3_dup_p64(a);
535 // CHECK: {{ld1|ld3r}} {{{ *v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d *}}},
539 uint8x16x4_t test_vld4q_dup_u8(uint8_t *a) {
540 // CHECK-LABEL: test_vld4q_dup_u8
541 return vld4q_dup_u8(a);
542 // CHECK: ld4r {{{ *v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b *}}}, [{{x[0-9]+|sp}}]
545 uint16x8x4_t test_vld4q_dup_u16(uint16_t *a) {
546 // CHECK-LABEL: test_vld4q_dup_u16
547 return vld4q_dup_u16(a);
548 // CHECK: ld4r {{{ *v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h *}}}, [{{x[0-9]+|sp}}]
551 uint32x4x4_t test_vld4q_dup_u32(uint32_t *a) {
552 // CHECK-LABEL: test_vld4q_dup_u32
553 return vld4q_dup_u32(a);
554 // CHECK: ld4r {{{ *v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s *}}}, [{{x[0-9]+|sp}}]
557 uint64x2x4_t test_vld4q_dup_u64(uint64_t *a) {
558 // CHECK-LABEL: test_vld4q_dup_u64
559 return vld4q_dup_u64(a);
560 // CHECK: ld4r {{{ *v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d *}}}, [{{x[0-9]+|sp}}]
563 int8x16x4_t test_vld4q_dup_s8(int8_t *a) {
564 // CHECK-LABEL: test_vld4q_dup_s8
565 return vld4q_dup_s8(a);
566 // CHECK: ld4r {{{ *v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b *}}}, [{{x[0-9]+|sp}}]
569 int16x8x4_t test_vld4q_dup_s16(int16_t *a) {
570 // CHECK-LABEL: test_vld4q_dup_s16
571 return vld4q_dup_s16(a);
572 // CHECK: ld4r {{{ *v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h *}}}, [{{x[0-9]+|sp}}]
575 int32x4x4_t test_vld4q_dup_s32(int32_t *a) {
576 // CHECK-LABEL: test_vld4q_dup_s32
577 return vld4q_dup_s32(a);
578 // CHECK: ld4r {{{ *v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s *}}}, [{{x[0-9]+|sp}}]
581 int64x2x4_t test_vld4q_dup_s64(int64_t *a) {
582 // CHECK-LABEL: test_vld4q_dup_s64
583 return vld4q_dup_s64(a);
584 // CHECK: ld4r {{{ *v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d *}}}, [{{x[0-9]+|sp}}]
587 float16x8x4_t test_vld4q_dup_f16(float16_t *a) {
588 // CHECK-LABEL: test_vld4q_dup_f16
589 return vld4q_dup_f16(a);
590 // CHECK: ld4r {{{ *v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h *}}}, [{{x[0-9]+|sp}}]
593 float32x4x4_t test_vld4q_dup_f32(float32_t *a) {
594 // CHECK-LABEL: test_vld4q_dup_f32
595 return vld4q_dup_f32(a);
596 // CHECK: ld4r {{{ *v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s *}}}, [{{x[0-9]+|sp}}]
599 float64x2x4_t test_vld4q_dup_f64(float64_t *a) {
600 // CHECK-LABEL: test_vld4q_dup_f64
601 return vld4q_dup_f64(a);
602 // CHECK: ld4r {{{ *v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d *}}}, [{{x[0-9]+|sp}}]
605 poly8x16x4_t test_vld4q_dup_p8(poly8_t *a) {
606 // CHECK-LABEL: test_vld4q_dup_p8
607 return vld4q_dup_p8(a);
608 // CHECK: ld4r {{{ *v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b *}}}, [{{x[0-9]+|sp}}]
611 poly16x8x4_t test_vld4q_dup_p16(poly16_t *a) {
612 // CHECK-LABEL: test_vld4q_dup_p16
613 return vld4q_dup_p16(a);
614 // CHECK: ld4r {{{ *v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h *}}}, [{{x[0-9]+|sp}}]
617 poly64x2x4_t test_vld4q_dup_p64(poly64_t *a) {
618 // CHECK-LABEL: test_vld4q_dup_p64
619 return vld4q_dup_p64(a);
620 // CHECK: ld4r {{{ *v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d *}}}, [{{x[0-9]+|sp}}]
623 uint8x8x4_t test_vld4_dup_u8(uint8_t *a) {
624 // CHECK-LABEL: test_vld4_dup_u8
625 return vld4_dup_u8(a);
626 // CHECK: ld4r {{{ *v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b *}}}, [{{x[0-9]+|sp}}]
629 uint16x4x4_t test_vld4_dup_u16(uint16_t *a) {
630 // CHECK-LABEL: test_vld4_dup_u16
631 return vld4_dup_u16(a);
632 // CHECK: ld4r {{{ *v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h *}}}, [{{x[0-9]+|sp}}]
635 uint32x2x4_t test_vld4_dup_u32(uint32_t *a) {
636 // CHECK-LABEL: test_vld4_dup_u32
637 return vld4_dup_u32(a);
638 // CHECK: ld4r {{{ *v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s *}}}, [{{x[0-9]+|sp}}]
641 uint64x1x4_t test_vld4_dup_u64(uint64_t *a) {
642 // CHECK-LABEL: test_vld4_dup_u64
643 return vld4_dup_u64(a);
644 // CHECK: {{ld1|ld4r}} {{{ *v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d *}}}, [{{x[0-9]+|sp}}]
647 int8x8x4_t test_vld4_dup_s8(int8_t *a) {
648 // CHECK-LABEL: test_vld4_dup_s8
649 return vld4_dup_s8(a);
650 // CHECK: ld4r {{{ *v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b *}}}, [{{x[0-9]+|sp}}]
653 int16x4x4_t test_vld4_dup_s16(int16_t *a) {
654 // CHECK-LABEL: test_vld4_dup_s16
655 return vld4_dup_s16(a);
656 // CHECK: ld4r {{{ *v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h *}}}, [{{x[0-9]+|sp}}]
659 int32x2x4_t test_vld4_dup_s32(int32_t *a) {
660 // CHECK-LABEL: test_vld4_dup_s32
661 return vld4_dup_s32(a);
662 // CHECK: ld4r {{{ *v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s *}}}, [{{x[0-9]+|sp}}]
665 int64x1x4_t test_vld4_dup_s64(int64_t *a) {
666 // CHECK-LABEL: test_vld4_dup_s64
667 return vld4_dup_s64(a);
668 // CHECK: {{ld1|ld4r}} {{{ *v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d *}}}, [{{x[0-9]+|sp}}]
671 float16x4x4_t test_vld4_dup_f16(float16_t *a) {
672 // CHECK-LABEL: test_vld4_dup_f16
673 return vld4_dup_f16(a);
674 // CHECK: ld4r {{{ *v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h *}}}, [{{x[0-9]+|sp}}]
677 float32x2x4_t test_vld4_dup_f32(float32_t *a) {
678 // CHECK-LABEL: test_vld4_dup_f32
679 return vld4_dup_f32(a);
680 // CHECK: ld4r {{{ *v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s *}}}, [{{x[0-9]+|sp}}]
683 float64x1x4_t test_vld4_dup_f64(float64_t *a) {
684 // CHECK-LABEL: test_vld4_dup_f64
685 return vld4_dup_f64(a);
686 // CHECK: {{ld1|ld4r}} {{{ *v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d *}}}, [{{x[0-9]+|sp}}]
689 poly8x8x4_t test_vld4_dup_p8(poly8_t *a) {
690 // CHECK-LABEL: test_vld4_dup_p8
691 return vld4_dup_p8(a);
692 // CHECK: ld4r {{{ *v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b *}}}, [{{x[0-9]+|sp}}]
695 poly16x4x4_t test_vld4_dup_p16(poly16_t *a) {
696 // CHECK-LABEL: test_vld4_dup_p16
697 return vld4_dup_p16(a);
698 // CHECK: ld4r {{{ *v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h *}}}, [{{x[0-9]+|sp}}]
701 poly64x1x4_t test_vld4_dup_p64(poly64_t *a) {
702 // CHECK-LABEL: test_vld4_dup_p64
703 return vld4_dup_p64(a);
704 // CHECK: {{ld1|ld4r}} {{{ *v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d *}}}, [{{x[0-9]+|sp}}]
707 uint8x16_t test_vld1q_lane_u8(uint8_t *a, uint8x16_t b) {
708 // CHECK-LABEL: test_vld1q_lane_u8
709 return vld1q_lane_u8(a, b, 15);
710 // CHECK: ld1 {{{ *v[0-9]+.b *}}}[15], [{{x[0-9]+|sp}}]
713 uint16x8_t test_vld1q_lane_u16(uint16_t *a, uint16x8_t b) {
714 // CHECK-LABEL: test_vld1q_lane_u16
715 return vld1q_lane_u16(a, b, 7);
716 // CHECK: ld1 {{{ *v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
719 uint32x4_t test_vld1q_lane_u32(uint32_t *a, uint32x4_t b) {
720 // CHECK-LABEL: test_vld1q_lane_u32
721 return vld1q_lane_u32(a, b, 3);
722 // CHECK: ld1 {{{ *v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
725 uint64x2_t test_vld1q_lane_u64(uint64_t *a, uint64x2_t b) {
726 // CHECK-LABEL: test_vld1q_lane_u64
727 return vld1q_lane_u64(a, b, 1);
728 // CHECK: ld1 {{{ *v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
731 int8x16_t test_vld1q_lane_s8(int8_t *a, int8x16_t b) {
732 // CHECK-LABEL: test_vld1q_lane_s8
733 return vld1q_lane_s8(a, b, 15);
734 // CHECK: ld1 {{{ *v[0-9]+.b *}}}[15], [{{x[0-9]+|sp}}]
737 int16x8_t test_vld1q_lane_s16(int16_t *a, int16x8_t b) {
738 // CHECK-LABEL: test_vld1q_lane_s16
739 return vld1q_lane_s16(a, b, 7);
740 // CHECK: ld1 {{{ *v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
743 int32x4_t test_vld1q_lane_s32(int32_t *a, int32x4_t b) {
744 // CHECK-LABEL: test_vld1q_lane_s32
745 return vld1q_lane_s32(a, b, 3);
746 // CHECK: ld1 {{{ *v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
749 int64x2_t test_vld1q_lane_s64(int64_t *a, int64x2_t b) {
750 // CHECK-LABEL: test_vld1q_lane_s64
751 return vld1q_lane_s64(a, b, 1);
752 // CHECK: ld1 {{{ *v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
755 float16x8_t test_vld1q_lane_f16(float16_t *a, float16x8_t b) {
756 // CHECK-LABEL: test_vld1q_lane_f16
757 return vld1q_lane_f16(a, b, 7);
758 // CHECK: ld1 {{{ *v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
761 float32x4_t test_vld1q_lane_f32(float32_t *a, float32x4_t b) {
762 // CHECK-LABEL: test_vld1q_lane_f32
763 return vld1q_lane_f32(a, b, 3);
764 // CHECK: ld1 {{{ *v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
767 float64x2_t test_vld1q_lane_f64(float64_t *a, float64x2_t b) {
768 // CHECK-LABEL: test_vld1q_lane_f64
769 return vld1q_lane_f64(a, b, 1);
770 // CHECK: ld1 {{{ *v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
773 poly8x16_t test_vld1q_lane_p8(poly8_t *a, poly8x16_t b) {
774 // CHECK-LABEL: test_vld1q_lane_p8
775 return vld1q_lane_p8(a, b, 15);
776 // CHECK: ld1 {{{ *v[0-9]+.b *}}}[15], [{{x[0-9]+|sp}}]
779 poly16x8_t test_vld1q_lane_p16(poly16_t *a, poly16x8_t b) {
780 // CHECK-LABEL: test_vld1q_lane_p16
781 return vld1q_lane_p16(a, b, 7);
782 // CHECK: ld1 {{{ *v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
785 poly64x2_t test_vld1q_lane_p64(poly64_t *a, poly64x2_t b) {
786 // CHECK-LABEL: test_vld1q_lane_p64
787 return vld1q_lane_p64(a, b, 1);
788 // CHECK: ld1 {{{ *v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
791 uint8x8_t test_vld1_lane_u8(uint8_t *a, uint8x8_t b) {
792 // CHECK-LABEL: test_vld1_lane_u8
793 return vld1_lane_u8(a, b, 7);
794 // CHECK: ld1 {{{ *v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
797 uint16x4_t test_vld1_lane_u16(uint16_t *a, uint16x4_t b) {
798 // CHECK-LABEL: test_vld1_lane_u16
799 return vld1_lane_u16(a, b, 3);
800 // CHECK: ld1 {{{ *v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
803 uint32x2_t test_vld1_lane_u32(uint32_t *a, uint32x2_t b) {
804 // CHECK-LABEL: test_vld1_lane_u32
805 return vld1_lane_u32(a, b, 1);
806 // CHECK: ld1 {{{ *v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
809 uint64x1_t test_vld1_lane_u64(uint64_t *a, uint64x1_t b) {
810 // CHECK-LABEL: test_vld1_lane_u64
811 return vld1_lane_u64(a, b, 0);
812 // CHECK: {{ld1r { v[0-9]+.1d }|ldr d[0-9]+}}, [{{x[0-9]+|sp}}]
815 int8x8_t test_vld1_lane_s8(int8_t *a, int8x8_t b) {
816 // CHECK-LABEL: test_vld1_lane_s8
817 return vld1_lane_s8(a, b, 7);
818 // CHECK: ld1 {{{ *v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
821 int16x4_t test_vld1_lane_s16(int16_t *a, int16x4_t b) {
822 // CHECK-LABEL: test_vld1_lane_s16
823 return vld1_lane_s16(a, b, 3);
824 // CHECK: ld1 {{{ *v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
827 int32x2_t test_vld1_lane_s32(int32_t *a, int32x2_t b) {
828 // CHECK-LABEL: test_vld1_lane_s32
829 return vld1_lane_s32(a, b, 1);
830 // CHECK: ld1 {{{ *v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
833 int64x1_t test_vld1_lane_s64(int64_t *a, int64x1_t b) {
834 // CHECK-LABEL: test_vld1_lane_s64
835 return vld1_lane_s64(a, b, 0);
836 // CHECK: {{ld1r { v[0-9]+.1d }|ldr d[0-9]+}}, [{{x[0-9]+|sp}}]
839 float16x4_t test_vld1_lane_f16(float16_t *a, float16x4_t b) {
840 // CHECK-LABEL: test_vld1_lane_f16
841 return vld1_lane_f16(a, b, 3);
842 // CHECK: ld1 {{{ *v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
845 float32x2_t test_vld1_lane_f32(float32_t *a, float32x2_t b) {
846 // CHECK-LABEL: test_vld1_lane_f32
847 return vld1_lane_f32(a, b, 1);
848 // CHECK: ld1 {{{ *v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
851 float64x1_t test_vld1_lane_f64(float64_t *a, float64x1_t b) {
852 // CHECK-LABEL: test_vld1_lane_f64
853 return vld1_lane_f64(a, b, 0);
854 // CHECK: {{ld1r { v[0-9]+.1d }|ldr d[0-9]+}}, [{{x[0-9]+|sp}}]
857 poly8x8_t test_vld1_lane_p8(poly8_t *a, poly8x8_t b) {
858 // CHECK-LABEL: test_vld1_lane_p8
859 return vld1_lane_p8(a, b, 7);
860 // CHECK: ld1 {{{ *v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
863 poly16x4_t test_vld1_lane_p16(poly16_t *a, poly16x4_t b) {
864 // CHECK-LABEL: test_vld1_lane_p16
865 return vld1_lane_p16(a, b, 3);
866 // CHECK: ld1 {{{ *v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
869 poly64x1_t test_vld1_lane_p64(poly64_t *a, poly64x1_t b) {
870 // CHECK-LABEL: test_vld1_lane_p64
871 return vld1_lane_p64(a, b, 0);
872 // CHECK: {{ld1r { v[0-9]+.1d }|ldr d[0-9]+}}, [{{x[0-9]+|sp}}]
875 int8x16x2_t test_vld2q_lane_s8(int8_t const * ptr, int8x16x2_t src) {
876 // CHECK-LABEL: test_vld2q_lane_s8
877 return vld2q_lane_s8(ptr, src, 15);
878 // CHECK: ld2 {{{ *v[0-9]+.b, v[0-9]+.b *}}}[15], [x0]
881 uint8x16x2_t test_vld2q_lane_u8(uint8_t const * ptr, uint8x16x2_t src) {
882 // CHECK-LABEL: test_vld2q_lane_u8
883 return vld2q_lane_u8(ptr, src, 15);
884 // CHECK: ld2 {{{ *v[0-9]+.b, v[0-9]+.b *}}}[15], [x0]
887 poly8x16x2_t test_vld2q_lane_p8(poly8_t const * ptr, poly8x16x2_t src) {
888 // CHECK-LABEL: test_vld2q_lane_p8
889 return vld2q_lane_p8(ptr, src, 15);
890 // CHECK: ld2 {{{ *v[0-9]+.b, v[0-9]+.b *}}}[15], [x0]
893 int8x16x3_t test_vld3q_lane_s8(int8_t const * ptr, int8x16x3_t src) {
894 // CHECK-LABEL: test_vld3q_lane_s8
895 return vld3q_lane_s8(ptr, src, 15);
896 // CHECK: ld3 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[15], [x0]
899 uint8x16x3_t test_vld3q_lane_u8(uint8_t const * ptr, uint8x16x3_t src) {
900 // CHECK-LABEL: test_vld3q_lane_u8
901 return vld3q_lane_u8(ptr, src, 15);
902 // CHECK: ld3 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[15], [x0]
905 uint16x8x2_t test_vld2q_lane_u16(uint16_t *a, uint16x8x2_t b) {
906 // CHECK-LABEL: test_vld2q_lane_u16
907 return vld2q_lane_u16(a, b, 7);
908 // CHECK: ld2 {{{ *v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
911 uint32x4x2_t test_vld2q_lane_u32(uint32_t *a, uint32x4x2_t b) {
912 // CHECK-LABEL: test_vld2q_lane_u32
913 return vld2q_lane_u32(a, b, 3);
914 // CHECK: ld2 {{{ *v[0-9]+.s, v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
917 uint64x2x2_t test_vld2q_lane_u64(uint64_t *a, uint64x2x2_t b) {
918 // CHECK-LABEL: test_vld2q_lane_u64
919 return vld2q_lane_u64(a, b, 1);
920 // CHECK: ld2 {{{ *v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
923 int16x8x2_t test_vld2q_lane_s16(int16_t *a, int16x8x2_t b) {
924 // CHECK-LABEL: test_vld2q_lane_s16
925 return vld2q_lane_s16(a, b, 7);
926 // CHECK: ld2 {{{ *v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
929 int32x4x2_t test_vld2q_lane_s32(int32_t *a, int32x4x2_t b) {
930 // CHECK-LABEL: test_vld2q_lane_s32
931 return vld2q_lane_s32(a, b, 3);
932 // CHECK: ld2 {{{ *v[0-9]+.s, v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
935 int64x2x2_t test_vld2q_lane_s64(int64_t *a, int64x2x2_t b) {
936 // CHECK-LABEL: test_vld2q_lane_s64
937 return vld2q_lane_s64(a, b, 1);
938 // CHECK: ld2 {{{ *v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
941 float16x8x2_t test_vld2q_lane_f16(float16_t *a, float16x8x2_t b) {
942 // CHECK-LABEL: test_vld2q_lane_f16
943 return vld2q_lane_f16(a, b, 7);
944 // CHECK: ld2 {{{ *v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
947 float32x4x2_t test_vld2q_lane_f32(float32_t *a, float32x4x2_t b) {
948 // CHECK-LABEL: test_vld2q_lane_f32
949 return vld2q_lane_f32(a, b, 3);
950 // CHECK: ld2 {{{ *v[0-9]+.s, v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
953 float64x2x2_t test_vld2q_lane_f64(float64_t *a, float64x2x2_t b) {
954 // CHECK-LABEL: test_vld2q_lane_f64
955 return vld2q_lane_f64(a, b, 1);
956 // CHECK: ld2 {{{ *v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
959 poly16x8x2_t test_vld2q_lane_p16(poly16_t *a, poly16x8x2_t b) {
960 // CHECK-LABEL: test_vld2q_lane_p16
961 return vld2q_lane_p16(a, b, 7);
962 // CHECK: ld2 {{{ *v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
965 poly64x2x2_t test_vld2q_lane_p64(poly64_t *a, poly64x2x2_t b) {
966 // CHECK-LABEL: test_vld2q_lane_p64
967 return vld2q_lane_p64(a, b, 1);
968 // CHECK: ld2 {{{ *v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
971 uint8x8x2_t test_vld2_lane_u8(uint8_t *a, uint8x8x2_t b) {
972 // CHECK-LABEL: test_vld2_lane_u8
973 return vld2_lane_u8(a, b, 7);
974 // CHECK: ld2 {{{ *v[0-9]+.b, v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
977 uint16x4x2_t test_vld2_lane_u16(uint16_t *a, uint16x4x2_t b) {
978 // CHECK-LABEL: test_vld2_lane_u16
979 return vld2_lane_u16(a, b, 3);
980 // CHECK: ld2 {{{ *v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
983 uint32x2x2_t test_vld2_lane_u32(uint32_t *a, uint32x2x2_t b) {
984 // CHECK-LABEL: test_vld2_lane_u32
985 return vld2_lane_u32(a, b, 1);
986 // CHECK: ld2 {{{ *v[0-9]+.s, v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
989 uint64x1x2_t test_vld2_lane_u64(uint64_t *a, uint64x1x2_t b) {
990 // CHECK-LABEL: test_vld2_lane_u64
991 return vld2_lane_u64(a, b, 0);
992 // CHECK: ld2 {{{ *v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
995 int8x8x2_t test_vld2_lane_s8(int8_t *a, int8x8x2_t b) {
996 // CHECK-LABEL: test_vld2_lane_s8
997 return vld2_lane_s8(a, b, 7);
998 // CHECK: ld2 {{{ *v[0-9]+.b, v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
1001 int16x4x2_t test_vld2_lane_s16(int16_t *a, int16x4x2_t b) {
1002 // CHECK-LABEL: test_vld2_lane_s16
1003 return vld2_lane_s16(a, b, 3);
1004 // CHECK: ld2 {{{ *v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
1007 int32x2x2_t test_vld2_lane_s32(int32_t *a, int32x2x2_t b) {
1008 // CHECK-LABEL: test_vld2_lane_s32
1009 return vld2_lane_s32(a, b, 1);
1010 // CHECK: ld2 {{{ *v[0-9]+.s, v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
1013 int64x1x2_t test_vld2_lane_s64(int64_t *a, int64x1x2_t b) {
1014 // CHECK-LABEL: test_vld2_lane_s64
1015 return vld2_lane_s64(a, b, 0);
1016 // CHECK: ld2 {{{ *v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
1019 float16x4x2_t test_vld2_lane_f16(float16_t *a, float16x4x2_t b) {
1020 // CHECK-LABEL: test_vld2_lane_f16
1021 return vld2_lane_f16(a, b, 3);
1022 // CHECK: ld2 {{{ *v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
1025 float32x2x2_t test_vld2_lane_f32(float32_t *a, float32x2x2_t b) {
1026 // CHECK-LABEL: test_vld2_lane_f32
1027 return vld2_lane_f32(a, b, 1);
1028 // CHECK: ld2 {{{ *v[0-9]+.s, v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
1031 float64x1x2_t test_vld2_lane_f64(float64_t *a, float64x1x2_t b) {
1032 // CHECK-LABEL: test_vld2_lane_f64
1033 return vld2_lane_f64(a, b, 0);
1034 // CHECK: ld2 {{{ *v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
1037 poly8x8x2_t test_vld2_lane_p8(poly8_t *a, poly8x8x2_t b) {
1038 // CHECK-LABEL: test_vld2_lane_p8
1039 return vld2_lane_p8(a, b, 7);
1040 // CHECK: ld2 {{{ *v[0-9]+.b, v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
1043 poly16x4x2_t test_vld2_lane_p16(poly16_t *a, poly16x4x2_t b) {
1044 // CHECK-LABEL: test_vld2_lane_p16
1045 return vld2_lane_p16(a, b, 3);
1046 // CHECK: ld2 {{{ *v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
1049 poly64x1x2_t test_vld2_lane_p64(poly64_t *a, poly64x1x2_t b) {
1050 // CHECK-LABEL: test_vld2_lane_p64
1051 return vld2_lane_p64(a, b, 0);
1052 // CHECK: ld2 {{{ *v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
1055 uint16x8x3_t test_vld3q_lane_u16(uint16_t *a, uint16x8x3_t b) {
1056 // CHECK-LABEL: test_vld3q_lane_u16
1057 return vld3q_lane_u16(a, b, 7);
1058 // CHECK: ld3 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
1061 uint32x4x3_t test_vld3q_lane_u32(uint32_t *a, uint32x4x3_t b) {
1062 // CHECK-LABEL: test_vld3q_lane_u32
1063 return vld3q_lane_u32(a, b, 3);
1064 // CHECK: ld3 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
1067 uint64x2x3_t test_vld3q_lane_u64(uint64_t *a, uint64x2x3_t b) {
1068 // CHECK-LABEL: test_vld3q_lane_u64
1069 return vld3q_lane_u64(a, b, 1);
1070 // CHECK: ld3 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
1073 int16x8x3_t test_vld3q_lane_s16(int16_t *a, int16x8x3_t b) {
1074 // CHECK-LABEL: test_vld3q_lane_s16
1075 return vld3q_lane_s16(a, b, 7);
1076 // CHECK: ld3 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
1079 int32x4x3_t test_vld3q_lane_s32(int32_t *a, int32x4x3_t b) {
1080 // CHECK-LABEL: test_vld3q_lane_s32
1081 return vld3q_lane_s32(a, b, 3);
1082 // CHECK: ld3 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
1085 int64x2x3_t test_vld3q_lane_s64(int64_t *a, int64x2x3_t b) {
1086 // CHECK-LABEL: test_vld3q_lane_s64
1087 return vld3q_lane_s64(a, b, 1);
1088 // CHECK: ld3 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
1091 float16x8x3_t test_vld3q_lane_f16(float16_t *a, float16x8x3_t b) {
1092 // CHECK-LABEL: test_vld3q_lane_f16
1093 return vld3q_lane_f16(a, b, 7);
1094 // CHECK: ld3 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
1097 float32x4x3_t test_vld3q_lane_f32(float32_t *a, float32x4x3_t b) {
1098 // CHECK-LABEL: test_vld3q_lane_f32
1099 return vld3q_lane_f32(a, b, 3);
1100 // CHECK: ld3 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
1103 float64x2x3_t test_vld3q_lane_f64(float64_t *a, float64x2x3_t b) {
1104 // CHECK-LABEL: test_vld3q_lane_f64
1105 return vld3q_lane_f64(a, b, 1);
1106 // CHECK: ld3 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
1109 poly8x16x3_t test_vld3q_lane_p8(poly8_t *a, poly8x16x3_t b) {
1110 // CHECK-LABEL: test_vld3q_lane_p8
1111 return vld3q_lane_p8(a, b, 15);
1112 // CHECK: ld3 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[15], [{{x[0-9]+|sp}}]
1115 poly16x8x3_t test_vld3q_lane_p16(poly16_t *a, poly16x8x3_t b) {
1116 // CHECK-LABEL: test_vld3q_lane_p16
1117 return vld3q_lane_p16(a, b, 7);
1118 // CHECK: ld3 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
1121 poly64x2x3_t test_vld3q_lane_p64(poly64_t *a, poly64x2x3_t b) {
1122 // CHECK-LABEL: test_vld3q_lane_p64
1123 return vld3q_lane_p64(a, b, 1);
1124 // CHECK: ld3 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
1127 uint8x8x3_t test_vld3_lane_u8(uint8_t *a, uint8x8x3_t b) {
1128 // CHECK-LABEL: test_vld3_lane_u8
1129 return vld3_lane_u8(a, b, 7);
1130 // CHECK: ld3 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
1133 uint16x4x3_t test_vld3_lane_u16(uint16_t *a, uint16x4x3_t b) {
1134 // CHECK-LABEL: test_vld3_lane_u16
1135 return vld3_lane_u16(a, b, 3);
1136 // CHECK: ld3 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
1139 uint32x2x3_t test_vld3_lane_u32(uint32_t *a, uint32x2x3_t b) {
1140 // CHECK-LABEL: test_vld3_lane_u32
1141 return vld3_lane_u32(a, b, 1);
1142 // CHECK: ld3 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
1145 uint64x1x3_t test_vld3_lane_u64(uint64_t *a, uint64x1x3_t b) {
1146 // CHECK-LABEL: test_vld3_lane_u64
1147 return vld3_lane_u64(a, b, 0);
1148 // CHECK: ld3 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
1151 int8x8x3_t test_vld3_lane_s8(int8_t *a, int8x8x3_t b) {
1152 // CHECK-LABEL: test_vld3_lane_s8
1153 return vld3_lane_s8(a, b, 7);
1154 // CHECK: ld3 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
1157 int16x4x3_t test_vld3_lane_s16(int16_t *a, int16x4x3_t b) {
1158 // CHECK-LABEL: test_vld3_lane_s16
1159 return vld3_lane_s16(a, b, 3);
1160 // CHECK: ld3 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
1163 int32x2x3_t test_vld3_lane_s32(int32_t *a, int32x2x3_t b) {
1164 // CHECK-LABEL: test_vld3_lane_s32
1165 return vld3_lane_s32(a, b, 1);
1166 // CHECK: ld3 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
1169 int64x1x3_t test_vld3_lane_s64(int64_t *a, int64x1x3_t b) {
1170 // CHECK-LABEL: test_vld3_lane_s64
1171 return vld3_lane_s64(a, b, 0);
1172 // CHECK: ld3 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
1175 float16x4x3_t test_vld3_lane_f16(float16_t *a, float16x4x3_t b) {
1176 // CHECK-LABEL: test_vld3_lane_f16
1177 return vld3_lane_f16(a, b, 3);
1178 // CHECK: ld3 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
1181 float32x2x3_t test_vld3_lane_f32(float32_t *a, float32x2x3_t b) {
1182 // CHECK-LABEL: test_vld3_lane_f32
1183 return vld3_lane_f32(a, b, 1);
1184 // CHECK: ld3 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
1187 float64x1x3_t test_vld3_lane_f64(float64_t *a, float64x1x3_t b) {
1188 // CHECK-LABEL: test_vld3_lane_f64
1189 return vld3_lane_f64(a, b, 0);
1190 // CHECK: ld3 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
1193 poly8x8x3_t test_vld3_lane_p8(poly8_t *a, poly8x8x3_t b) {
1194 // CHECK-LABEL: test_vld3_lane_p8
1195 return vld3_lane_p8(a, b, 7);
1196 // CHECK: ld3 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
1199 poly16x4x3_t test_vld3_lane_p16(poly16_t *a, poly16x4x3_t b) {
1200 // CHECK-LABEL: test_vld3_lane_p16
1201 return vld3_lane_p16(a, b, 3);
1202 // CHECK: ld3 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
1205 poly64x1x3_t test_vld3_lane_p64(poly64_t *a, poly64x1x3_t b) {
1206 // CHECK-LABEL: test_vld3_lane_p64
1207 return vld3_lane_p64(a, b, 0);
1208 // CHECK: ld3 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
1211 uint8x16x4_t test_vld4q_lane_u8(uint8_t *a, uint8x16x4_t b) {
1212 // CHECK-LABEL: test_vld4q_lane_u8
1213 return vld4q_lane_u8(a, b, 15);
1214 // CHECK: ld4 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[15], [{{x[0-9]+|sp}}]
1217 uint16x8x4_t test_vld4q_lane_u16(uint16_t *a, uint16x8x4_t b) {
1218 // CHECK-LABEL: test_vld4q_lane_u16
1219 return vld4q_lane_u16(a, b, 7);
1220 // CHECK: ld4 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
1223 uint32x4x4_t test_vld4q_lane_u32(uint32_t *a, uint32x4x4_t b) {
1224 // CHECK-LABEL: test_vld4q_lane_u32
1225 return vld4q_lane_u32(a, b, 3);
1226 // CHECK: ld4 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
1229 uint64x2x4_t test_vld4q_lane_u64(uint64_t *a, uint64x2x4_t b) {
1230 // CHECK-LABEL: test_vld4q_lane_u64
1231 return vld4q_lane_u64(a, b, 1);
1232 // CHECK: ld4 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
1235 int8x16x4_t test_vld4q_lane_s8(int8_t *a, int8x16x4_t b) {
1236 // CHECK-LABEL: test_vld4q_lane_s8
1237 return vld4q_lane_s8(a, b, 15);
1238 // CHECK: ld4 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[15], [{{x[0-9]+|sp}}]
1241 int16x8x4_t test_vld4q_lane_s16(int16_t *a, int16x8x4_t b) {
1242 // CHECK-LABEL: test_vld4q_lane_s16
1243 return vld4q_lane_s16(a, b, 7);
1244 // CHECK: ld4 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
1247 int32x4x4_t test_vld4q_lane_s32(int32_t *a, int32x4x4_t b) {
1248 // CHECK-LABEL: test_vld4q_lane_s32
1249 return vld4q_lane_s32(a, b, 3);
1250 // CHECK: ld4 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
1253 int64x2x4_t test_vld4q_lane_s64(int64_t *a, int64x2x4_t b) {
1254 // CHECK-LABEL: test_vld4q_lane_s64
1255 return vld4q_lane_s64(a, b, 1);
1256 // CHECK: ld4 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
1259 float16x8x4_t test_vld4q_lane_f16(float16_t *a, float16x8x4_t b) {
1260 // CHECK-LABEL: test_vld4q_lane_f16
1261 return vld4q_lane_f16(a, b, 7);
1262 // CHECK: ld4 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
1265 float32x4x4_t test_vld4q_lane_f32(float32_t *a, float32x4x4_t b) {
1266 // CHECK-LABEL: test_vld4q_lane_f32
1267 return vld4q_lane_f32(a, b, 3);
1268 // CHECK: ld4 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
1271 float64x2x4_t test_vld4q_lane_f64(float64_t *a, float64x2x4_t b) {
1272 // CHECK-LABEL: test_vld4q_lane_f64
1273 return vld4q_lane_f64(a, b, 1);
1274 // CHECK: ld4 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
1277 poly8x16x4_t test_vld4q_lane_p8(poly8_t *a, poly8x16x4_t b) {
1278 // CHECK-LABEL: test_vld4q_lane_p8
1279 return vld4q_lane_p8(a, b, 15);
1280 // CHECK: ld4 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[15], [{{x[0-9]+|sp}}]
1283 poly16x8x4_t test_vld4q_lane_p16(poly16_t *a, poly16x8x4_t b) {
1284 // CHECK-LABEL: test_vld4q_lane_p16
1285 return vld4q_lane_p16(a, b, 7);
1286 // CHECK: ld4 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
1289 poly64x2x4_t test_vld4q_lane_p64(poly64_t *a, poly64x2x4_t b) {
1290 // CHECK-LABEL: test_vld4q_lane_p64
1291 return vld4q_lane_p64(a, b, 1);
1292 // CHECK: ld4 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
1295 uint8x8x4_t test_vld4_lane_u8(uint8_t *a, uint8x8x4_t b) {
1296 // CHECK-LABEL: test_vld4_lane_u8
1297 return vld4_lane_u8(a, b, 7);
1298 // CHECK: ld4 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
1301 uint16x4x4_t test_vld4_lane_u16(uint16_t *a, uint16x4x4_t b) {
1302 // CHECK-LABEL: test_vld4_lane_u16
1303 return vld4_lane_u16(a, b, 3);
1304 // CHECK: ld4 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
1307 uint32x2x4_t test_vld4_lane_u32(uint32_t *a, uint32x2x4_t b) {
1308 // CHECK-LABEL: test_vld4_lane_u32
1309 return vld4_lane_u32(a, b, 1);
1310 // CHECK: ld4 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
1313 uint64x1x4_t test_vld4_lane_u64(uint64_t *a, uint64x1x4_t b) {
1314 // CHECK-LABEL: test_vld4_lane_u64
1315 return vld4_lane_u64(a, b, 0);
1316 // CHECK: ld4 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
1319 int8x8x4_t test_vld4_lane_s8(int8_t *a, int8x8x4_t b) {
1320 // CHECK-LABEL: test_vld4_lane_s8
1321 return vld4_lane_s8(a, b, 7);
1322 // CHECK: ld4 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
1325 int16x4x4_t test_vld4_lane_s16(int16_t *a, int16x4x4_t b) {
1326 // CHECK-LABEL: test_vld4_lane_s16
1327 return vld4_lane_s16(a, b, 3);
1328 // CHECK: ld4 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
1331 int32x2x4_t test_vld4_lane_s32(int32_t *a, int32x2x4_t b) {
1332 // CHECK-LABEL: test_vld4_lane_s32
1333 return vld4_lane_s32(a, b, 1);
1334 // CHECK: ld4 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
1337 int64x1x4_t test_vld4_lane_s64(int64_t *a, int64x1x4_t b) {
1338 // CHECK-LABEL: test_vld4_lane_s64
1339 return vld4_lane_s64(a, b, 0);
1340 // CHECK: ld4 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
1343 float16x4x4_t test_vld4_lane_f16(float16_t *a, float16x4x4_t b) {
1344 // CHECK-LABEL: test_vld4_lane_f16
1345 return vld4_lane_f16(a, b, 3);
1346 // CHECK: ld4 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
1349 float32x2x4_t test_vld4_lane_f32(float32_t *a, float32x2x4_t b) {
1350 // CHECK-LABEL: test_vld4_lane_f32
1351 return vld4_lane_f32(a, b, 1);
1352 // CHECK: ld4 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
1355 float64x1x4_t test_vld4_lane_f64(float64_t *a, float64x1x4_t b) {
1356 // CHECK-LABEL: test_vld4_lane_f64
1357 return vld4_lane_f64(a, b, 0);
1358 // CHECK: ld4 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
1361 poly8x8x4_t test_vld4_lane_p8(poly8_t *a, poly8x8x4_t b) {
1362 // CHECK-LABEL: test_vld4_lane_p8
1363 return vld4_lane_p8(a, b, 7);
1364 // CHECK: ld4 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
1367 poly16x4x4_t test_vld4_lane_p16(poly16_t *a, poly16x4x4_t b) {
1368 // CHECK-LABEL: test_vld4_lane_p16
1369 return vld4_lane_p16(a, b, 3);
1370 // CHECK: ld4 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
1373 poly64x1x4_t test_vld4_lane_p64(poly64_t *a, poly64x1x4_t b) {
1374 // CHECK-LABEL: test_vld4_lane_p64
1375 return vld4_lane_p64(a, b, 0);
1376 // CHECK: ld4 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
1379 void test_vst1q_lane_u8(uint8_t *a, uint8x16_t b) {
1380 // CHECK-LABEL: test_vst1q_lane_u8
1381 vst1q_lane_u8(a, b, 15);
1382 // CHECK: st1 {{{ *v[0-9]+.b *}}}[15], [{{x[0-9]+|sp}}]
1385 void test_vst1q_lane_u16(uint16_t *a, uint16x8_t b) {
1386 // CHECK-LABEL: test_vst1q_lane_u16
1387 vst1q_lane_u16(a, b, 7);
1388 // CHECK: st1 {{{ *v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
1391 void test_vst1q_lane_u32(uint32_t *a, uint32x4_t b) {
1392 // CHECK-LABEL: test_vst1q_lane_u32
1393 vst1q_lane_u32(a, b, 3);
1394 // CHECK: st1 {{{ *v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
1397 void test_vst1q_lane_u64(uint64_t *a, uint64x2_t b) {
1398 // CHECK-LABEL: test_vst1q_lane_u64
1399 vst1q_lane_u64(a, b, 1);
1400 // CHECK: st1 {{{ *v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
1403 void test_vst1q_lane_s8(int8_t *a, int8x16_t b) {
1404 // CHECK-LABEL: test_vst1q_lane_s8
1405 vst1q_lane_s8(a, b, 15);
1406 // CHECK: st1 {{{ *v[0-9]+.b *}}}[15], [{{x[0-9]+|sp}}]
1409 void test_vst1q_lane_s16(int16_t *a, int16x8_t b) {
1410 // CHECK-LABEL: test_vst1q_lane_s16
1411 vst1q_lane_s16(a, b, 7);
1412 // CHECK: st1 {{{ *v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
1415 void test_vst1q_lane_s32(int32_t *a, int32x4_t b) {
1416 // CHECK-LABEL: test_vst1q_lane_s32
1417 vst1q_lane_s32(a, b, 3);
1418 // CHECK: st1 {{{ *v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
1421 void test_vst1q_lane_s64(int64_t *a, int64x2_t b) {
1422 // CHECK-LABEL: test_vst1q_lane_s64
1423 vst1q_lane_s64(a, b, 1);
1424 // CHECK: st1 {{{ *v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
1427 void test_vst1q_lane_f16(float16_t *a, float16x8_t b) {
1428 // CHECK-LABEL: test_vst1q_lane_f16
1429 vst1q_lane_f16(a, b, 7);
1430 // CHECK: st1 {{{ *v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
1433 void test_vst1q_lane_f32(float32_t *a, float32x4_t b) {
1434 // CHECK-LABEL: test_vst1q_lane_f32
1435 vst1q_lane_f32(a, b, 3);
1436 // CHECK: st1 {{{ *v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
1439 void test_vst1q_lane_f64(float64_t *a, float64x2_t b) {
1440 // CHECK-LABEL: test_vst1q_lane_f64
1441 vst1q_lane_f64(a, b, 1);
1442 // CHECK: st1 {{{ *v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
1445 void test_vst1q_lane_p8(poly8_t *a, poly8x16_t b) {
1446 // CHECK-LABEL: test_vst1q_lane_p8
1447 vst1q_lane_p8(a, b, 15);
1448 // CHECK: st1 {{{ *v[0-9]+.b *}}}[15], [{{x[0-9]+|sp}}]
1451 void test_vst1q_lane_p16(poly16_t *a, poly16x8_t b) {
1452 // CHECK-LABEL: test_vst1q_lane_p16
1453 vst1q_lane_p16(a, b, 7);
1454 // CHECK: st1 {{{ *v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
1457 void test_vst1q_lane_p64(poly64_t *a, poly64x2_t b) {
1458 // CHECK-LABEL: test_vst1q_lane_p64
1459 vst1q_lane_p64(a, b, 1);
1460 // CHECK: st1 {{{ *v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
1463 void test_vst1_lane_u8(uint8_t *a, uint8x8_t b) {
1464 // CHECK-LABEL: test_vst1_lane_u8
1465 vst1_lane_u8(a, b, 7);
1466 // CHECK: st1 {{{ *v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
1469 void test_vst1_lane_u16(uint16_t *a, uint16x4_t b) {
1470 // CHECK-LABEL: test_vst1_lane_u16
1471 vst1_lane_u16(a, b, 3);
1472 // CHECK: st1 {{{ *v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
1475 void test_vst1_lane_u32(uint32_t *a, uint32x2_t b) {
1476 // CHECK-LABEL: test_vst1_lane_u32
1477 vst1_lane_u32(a, b, 1);
1478 // CHECK: st1 {{{ *v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
1481 void test_vst1_lane_u64(uint64_t *a, uint64x1_t b) {
1482 // CHECK-LABEL: test_vst1_lane_u64
1483 vst1_lane_u64(a, b, 0);
1484 // CHECK: st1 {{{ *v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
1487 void test_vst1_lane_s8(int8_t *a, int8x8_t b) {
1488 // CHECK-LABEL: test_vst1_lane_s8
1489 vst1_lane_s8(a, b, 7);
1490 // CHECK: st1 {{{ *v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
1493 void test_vst1_lane_s16(int16_t *a, int16x4_t b) {
1494 // CHECK-LABEL: test_vst1_lane_s16
1495 vst1_lane_s16(a, b, 3);
1496 // CHECK: st1 {{{ *v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
1499 void test_vst1_lane_s32(int32_t *a, int32x2_t b) {
1500 // CHECK-LABEL: test_vst1_lane_s32
1501 vst1_lane_s32(a, b, 1);
1502 // CHECK: st1 {{{ *v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
1505 void test_vst1_lane_s64(int64_t *a, int64x1_t b) {
1506 // CHECK-LABEL: test_vst1_lane_s64
1507 vst1_lane_s64(a, b, 0);
1508 // CHECK: st1 {{{ *v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
1511 void test_vst1_lane_f16(float16_t *a, float16x4_t b) {
1512 // CHECK-LABEL: test_vst1_lane_f16
1513 vst1_lane_f16(a, b, 3);
1514 // CHECK: st1 {{{ *v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
1517 void test_vst1_lane_f32(float32_t *a, float32x2_t b) {
1518 // CHECK-LABEL: test_vst1_lane_f32
1519 vst1_lane_f32(a, b, 1);
1520 // CHECK: st1 {{{ *v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
1523 void test_vst1_lane_f64(float64_t *a, float64x1_t b) {
1524 // CHECK-LABEL: test_vst1_lane_f64
1525 vst1_lane_f64(a, b, 0);
1526 // CHECK: {{st1 { v[0-9]+.d }\[0]|str d[0-9]+}}, [{{x[0-9]+|sp}}]
1529 void test_vst1_lane_p8(poly8_t *a, poly8x8_t b) {
1530 // CHECK-LABEL: test_vst1_lane_p8
1531 vst1_lane_p8(a, b, 7);
1532 // CHECK: st1 {{{ *v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
1535 void test_vst1_lane_p16(poly16_t *a, poly16x4_t b) {
1536 // CHECK-LABEL: test_vst1_lane_p16
1537 vst1_lane_p16(a, b, 3);
1538 // CHECK: st1 {{{ *v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
1541 void test_vst1_lane_p64(poly64_t *a, poly64x1_t b) {
1542 // CHECK-LABEL: test_vst1_lane_p64
1543 vst1_lane_p64(a, b, 0);
1544 // CHECK: st1 {{{ *v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
1547 void test_vst2q_lane_u8(uint8_t *a, uint8x16x2_t b) {
1548 // CHECK-LABEL: test_vst2q_lane_u8
1549 vst2q_lane_u8(a, b, 15);
1550 // CHECK: st2 {{{ *v[0-9]+.b, v[0-9]+.b *}}}[15], [{{x[0-9]+|sp}}]
1553 void test_vst2q_lane_u16(uint16_t *a, uint16x8x2_t b) {
1554 // CHECK-LABEL: test_vst2q_lane_u16
1555 vst2q_lane_u16(a, b, 7);
1556 // CHECK: st2 {{{ *v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
1559 void test_vst2q_lane_u32(uint32_t *a, uint32x4x2_t b) {
1560 // CHECK-LABEL: test_vst2q_lane_u32
1561 vst2q_lane_u32(a, b, 3);
1562 // CHECK: st2 {{{ *v[0-9]+.s, v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
1565 void test_vst2q_lane_u64(uint64_t *a, uint64x2x2_t b) {
1566 // CHECK-LABEL: test_vst2q_lane_u64
1567 vst2q_lane_u64(a, b, 1);
1568 // CHECK: st2 {{{ *v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
1571 void test_vst2q_lane_s8(int8_t *a, int8x16x2_t b) {
1572 // CHECK-LABEL: test_vst2q_lane_s8
1573 vst2q_lane_s8(a, b, 15);
1574 // CHECK: st2 {{{ *v[0-9]+.b, v[0-9]+.b *}}}[15], [{{x[0-9]+|sp}}]
1577 void test_vst2q_lane_s16(int16_t *a, int16x8x2_t b) {
1578 // CHECK-LABEL: test_vst2q_lane_s16
1579 vst2q_lane_s16(a, b, 7);
1580 // CHECK: st2 {{{ *v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
1583 void test_vst2q_lane_s32(int32_t *a, int32x4x2_t b) {
1584 // CHECK-LABEL: test_vst2q_lane_s32
1585 vst2q_lane_s32(a, b, 3);
1586 // CHECK: st2 {{{ *v[0-9]+.s, v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
1589 void test_vst2q_lane_s64(int64_t *a, int64x2x2_t b) {
1590 // CHECK-LABEL: test_vst2q_lane_s64
1591 vst2q_lane_s64(a, b, 1);
1592 // CHECK: st2 {{{ *v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
1595 void test_vst2q_lane_f16(float16_t *a, float16x8x2_t b) {
1596 // CHECK-LABEL: test_vst2q_lane_f16
1597 vst2q_lane_f16(a, b, 7);
1598 // CHECK: st2 {{{ *v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
1601 void test_vst2q_lane_f32(float32_t *a, float32x4x2_t b) {
1602 // CHECK-LABEL: test_vst2q_lane_f32
1603 vst2q_lane_f32(a, b, 3);
1604 // CHECK: st2 {{{ *v[0-9]+.s, v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
1607 void test_vst2q_lane_f64(float64_t *a, float64x2x2_t b) {
1608 // CHECK-LABEL: test_vst2q_lane_f64
1609 vst2q_lane_f64(a, b, 1);
1610 // CHECK: st2 {{{ *v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
1613 void test_vst2q_lane_p8(poly8_t *a, poly8x16x2_t b) {
1614 // CHECK-LABEL: test_vst2q_lane_p8
1615 vst2q_lane_p8(a, b, 15);
1616 // CHECK: st2 {{{ *v[0-9]+.b, v[0-9]+.b *}}}[15], [{{x[0-9]+|sp}}]
1619 void test_vst2q_lane_p16(poly16_t *a, poly16x8x2_t b) {
1620 // CHECK-LABEL: test_vst2q_lane_p16
1621 vst2q_lane_p16(a, b, 7);
1622 // CHECK: st2 {{{ *v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
1625 void test_vst2q_lane_p64(poly64_t *a, poly64x2x2_t b) {
1626 // CHECK-LABEL: test_vst2q_lane_p64
1627 vst2q_lane_p64(a, b, 1);
1628 // CHECK: st2 {{{ *v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
1631 void test_vst2_lane_u8(uint8_t *a, uint8x8x2_t b) {
1632 // CHECK-LABEL: test_vst2_lane_u8
1633 vst2_lane_u8(a, b, 7);
1634 // CHECK: st2 {{{ *v[0-9]+.b, v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
1637 void test_vst2_lane_u16(uint16_t *a, uint16x4x2_t b) {
1638 // CHECK-LABEL: test_vst2_lane_u16
1639 vst2_lane_u16(a, b, 3);
1640 // CHECK: st2 {{{ *v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
1643 void test_vst2_lane_u32(uint32_t *a, uint32x2x2_t b) {
1644 // CHECK-LABEL: test_vst2_lane_u32
1645 vst2_lane_u32(a, b, 1);
1646 // CHECK: st2 {{{ *v[0-9]+.s, v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
1649 void test_vst2_lane_u64(uint64_t *a, uint64x1x2_t b) {
1650 // CHECK-LABEL: test_vst2_lane_u64
1651 vst2_lane_u64(a, b, 0);
1652 // CHECK: st2 {{{ *v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
1655 void test_vst2_lane_s8(int8_t *a, int8x8x2_t b) {
1656 // CHECK-LABEL: test_vst2_lane_s8
1657 vst2_lane_s8(a, b, 7);
1658 // CHECK: st2 {{{ *v[0-9]+.b, v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
1661 void test_vst2_lane_s16(int16_t *a, int16x4x2_t b) {
1662 // CHECK-LABEL: test_vst2_lane_s16
1663 vst2_lane_s16(a, b, 3);
1664 // CHECK: st2 {{{ *v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
1667 void test_vst2_lane_s32(int32_t *a, int32x2x2_t b) {
1668 // CHECK-LABEL: test_vst2_lane_s32
1669 vst2_lane_s32(a, b, 1);
1670 // CHECK: st2 {{{ *v[0-9]+.s, v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
1673 void test_vst2_lane_s64(int64_t *a, int64x1x2_t b) {
1674 // CHECK-LABEL: test_vst2_lane_s64
1675 vst2_lane_s64(a, b, 0);
1676 // CHECK: st2 {{{ *v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
1679 void test_vst2_lane_f16(float16_t *a, float16x4x2_t b) {
1680 // CHECK-LABEL: test_vst2_lane_f16
1681 vst2_lane_f16(a, b, 3);
1682 // CHECK: st2 {{{ *v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
1685 void test_vst2_lane_f32(float32_t *a, float32x2x2_t b) {
1686 // CHECK-LABEL: test_vst2_lane_f32
1687 vst2_lane_f32(a, b, 1);
1688 // CHECK: st2 {{{ *v[0-9]+.s, v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
1691 void test_vst2_lane_f64(float64_t *a, float64x1x2_t b) {
1692 // CHECK-LABEL: test_vst2_lane_f64
1693 vst2_lane_f64(a, b, 0);
1694 // CHECK: st2 {{{ *v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
1697 void test_vst2_lane_p8(poly8_t *a, poly8x8x2_t b) {
1698 // CHECK-LABEL: test_vst2_lane_p8
1699 vst2_lane_p8(a, b, 7);
1700 // CHECK: st2 {{{ *v[0-9]+.b, v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
1703 void test_vst2_lane_p16(poly16_t *a, poly16x4x2_t b) {
1704 // CHECK-LABEL: test_vst2_lane_p16
1705 vst2_lane_p16(a, b, 3);
1706 // CHECK: st2 {{{ *v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
1709 void test_vst2_lane_p64(poly64_t *a, poly64x1x2_t b) {
1710 // CHECK-LABEL: test_vst2_lane_p64
1711 vst2_lane_p64(a, b, 0);
1712 // CHECK: st2 {{{ *v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
1715 void test_vst3q_lane_u8(uint8_t *a, uint8x16x3_t b) {
1716 // CHECK-LABEL: test_vst3q_lane_u8
1717 vst3q_lane_u8(a, b, 15);
1718 // CHECK: st3 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[15], [{{x[0-9]+|sp}}]
1721 void test_vst3q_lane_u16(uint16_t *a, uint16x8x3_t b) {
1722 // CHECK-LABEL: test_vst3q_lane_u16
1723 vst3q_lane_u16(a, b, 7);
1724 // CHECK: st3 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
1727 void test_vst3q_lane_u32(uint32_t *a, uint32x4x3_t b) {
1728 // CHECK-LABEL: test_vst3q_lane_u32
1729 vst3q_lane_u32(a, b, 3);
1730 // CHECK: st3 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
1733 void test_vst3q_lane_u64(uint64_t *a, uint64x2x3_t b) {
1734 // CHECK-LABEL: test_vst3q_lane_u64
1735 vst3q_lane_u64(a, b, 1);
1736 // CHECK: st3 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
1739 void test_vst3q_lane_s8(int8_t *a, int8x16x3_t b) {
1740 // CHECK-LABEL: test_vst3q_lane_s8
1741 vst3q_lane_s8(a, b, 15);
1742 // CHECK: st3 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[15], [{{x[0-9]+|sp}}]
1745 void test_vst3q_lane_s16(int16_t *a, int16x8x3_t b) {
1746 // CHECK-LABEL: test_vst3q_lane_s16
1747 vst3q_lane_s16(a, b, 7);
1748 // CHECK: st3 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
1751 void test_vst3q_lane_s32(int32_t *a, int32x4x3_t b) {
1752 // CHECK-LABEL: test_vst3q_lane_s32
1753 vst3q_lane_s32(a, b, 3);
1754 // CHECK: st3 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
1757 void test_vst3q_lane_s64(int64_t *a, int64x2x3_t b) {
1758 // CHECK-LABEL: test_vst3q_lane_s64
1759 vst3q_lane_s64(a, b, 1);
1760 // CHECK: st3 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
1763 void test_vst3q_lane_f16(float16_t *a, float16x8x3_t b) {
1764 // CHECK-LABEL: test_vst3q_lane_f16
1765 vst3q_lane_f16(a, b, 7);
1766 // CHECK: st3 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
1769 void test_vst3q_lane_f32(float32_t *a, float32x4x3_t b) {
1770 // CHECK-LABEL: test_vst3q_lane_f32
1771 vst3q_lane_f32(a, b, 3);
1772 // CHECK: st3 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
1775 void test_vst3q_lane_f64(float64_t *a, float64x2x3_t b) {
1776 // CHECK-LABEL: test_vst3q_lane_f64
1777 vst3q_lane_f64(a, b, 1);
1778 // CHECK: st3 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
1781 void test_vst3q_lane_p8(poly8_t *a, poly8x16x3_t b) {
1782 // CHECK-LABEL: test_vst3q_lane_p8
1783 vst3q_lane_p8(a, b, 15);
1784 // CHECK: st3 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[15], [{{x[0-9]+|sp}}]
1787 void test_vst3q_lane_p16(poly16_t *a, poly16x8x3_t b) {
1788 // CHECK-LABEL: test_vst3q_lane_p16
1789 vst3q_lane_p16(a, b, 7);
1790 // CHECK: st3 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
1793 void test_vst3q_lane_p64(poly64_t *a, poly64x2x3_t b) {
1794 // CHECK-LABEL: test_vst3q_lane_p64
1795 vst3q_lane_p64(a, b, 1);
1796 // CHECK: st3 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
1799 void test_vst3_lane_u8(uint8_t *a, uint8x8x3_t b) {
1800 // CHECK-LABEL: test_vst3_lane_u8
1801 vst3_lane_u8(a, b, 7);
1802 // CHECK: st3 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
1805 void test_vst3_lane_u16(uint16_t *a, uint16x4x3_t b) {
1806 // CHECK-LABEL: test_vst3_lane_u16
1807 vst3_lane_u16(a, b, 3);
1808 // CHECK: st3 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
1811 void test_vst3_lane_u32(uint32_t *a, uint32x2x3_t b) {
1812 // CHECK-LABEL: test_vst3_lane_u32
1813 vst3_lane_u32(a, b, 1);
1814 // CHECK: st3 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
1817 void test_vst3_lane_u64(uint64_t *a, uint64x1x3_t b) {
1818 // CHECK-LABEL: test_vst3_lane_u64
1819 vst3_lane_u64(a, b, 0);
1820 // CHECK: st3 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
1823 void test_vst3_lane_s8(int8_t *a, int8x8x3_t b) {
1824 // CHECK-LABEL: test_vst3_lane_s8
1825 vst3_lane_s8(a, b, 7);
1826 // CHECK: st3 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
1829 void test_vst3_lane_s16(int16_t *a, int16x4x3_t b) {
1830 // CHECK-LABEL: test_vst3_lane_s16
1831 vst3_lane_s16(a, b, 3);
1832 // CHECK: st3 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
1835 void test_vst3_lane_s32(int32_t *a, int32x2x3_t b) {
1836 // CHECK-LABEL: test_vst3_lane_s32
1837 vst3_lane_s32(a, b, 1);
1838 // CHECK: st3 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
1841 void test_vst3_lane_s64(int64_t *a, int64x1x3_t b) {
1842 // CHECK-LABEL: test_vst3_lane_s64
1843 vst3_lane_s64(a, b, 0);
1844 // CHECK: st3 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
1847 void test_vst3_lane_f16(float16_t *a, float16x4x3_t b) {
1848 // CHECK-LABEL: test_vst3_lane_f16
1849 vst3_lane_f16(a, b, 3);
1850 // CHECK: st3 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
1853 void test_vst3_lane_f32(float32_t *a, float32x2x3_t b) {
1854 // CHECK-LABEL: test_vst3_lane_f32
1855 vst3_lane_f32(a, b, 1);
1856 // CHECK: st3 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
1859 void test_vst3_lane_f64(float64_t *a, float64x1x3_t b) {
1860 // CHECK-LABEL: test_vst3_lane_f64
1861 vst3_lane_f64(a, b, 0);
1862 // CHECK: st3 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
1865 void test_vst3_lane_p8(poly8_t *a, poly8x8x3_t b) {
1866 // CHECK-LABEL: test_vst3_lane_p8
1867 vst3_lane_p8(a, b, 7);
1868 // CHECK: st3 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
1871 void test_vst3_lane_p16(poly16_t *a, poly16x4x3_t b) {
1872 // CHECK-LABEL: test_vst3_lane_p16
1873 vst3_lane_p16(a, b, 3);
1874 // CHECK: st3 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
1877 void test_vst3_lane_p64(poly64_t *a, poly64x1x3_t b) {
1878 // CHECK-LABEL: test_vst3_lane_p64
1879 vst3_lane_p64(a, b, 0);
1880 // CHECK: st3 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
1883 void test_vst4q_lane_u8(uint8_t *a, uint8x16x4_t b) {
1884 // CHECK-LABEL: test_vst4q_lane_u8
1885 vst4q_lane_u8(a, b, 15);
1886 // CHECK: st4 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[15], [{{x[0-9]+|sp}}]
1889 void test_vst4q_lane_u16(uint16_t *a, uint16x8x4_t b) {
1890 // CHECK-LABEL: test_vst4q_lane_u16
1891 vst4q_lane_u16(a, b, 7);
1892 // CHECK: st4 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
1895 void test_vst4q_lane_u32(uint32_t *a, uint32x4x4_t b) {
1896 // CHECK-LABEL: test_vst4q_lane_u32
1897 vst4q_lane_u32(a, b, 3);
1898 // CHECK: st4 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
1901 void test_vst4q_lane_u64(uint64_t *a, uint64x2x4_t b) {
1902 // CHECK-LABEL: test_vst4q_lane_u64
1903 vst4q_lane_u64(a, b, 1);
1904 // CHECK: st4 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
1907 void test_vst4q_lane_s8(int8_t *a, int8x16x4_t b) {
1908 // CHECK-LABEL: test_vst4q_lane_s8
1909 vst4q_lane_s8(a, b, 15);
1910 // CHECK: st4 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[15], [{{x[0-9]+|sp}}]
1913 void test_vst4q_lane_s16(int16_t *a, int16x8x4_t b) {
1914 // CHECK-LABEL: test_vst4q_lane_s16
1915 vst4q_lane_s16(a, b, 7);
1916 // CHECK: st4 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
1919 void test_vst4q_lane_s32(int32_t *a, int32x4x4_t b) {
1920 // CHECK-LABEL: test_vst4q_lane_s32
1921 vst4q_lane_s32(a, b, 3);
1922 // CHECK: st4 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
1925 void test_vst4q_lane_s64(int64_t *a, int64x2x4_t b) {
1926 // CHECK-LABEL: test_vst4q_lane_s64
1927 vst4q_lane_s64(a, b, 1);
1928 // CHECK: st4 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
1931 void test_vst4q_lane_f16(float16_t *a, float16x8x4_t b) {
1932 // CHECK-LABEL: test_vst4q_lane_f16
1933 vst4q_lane_f16(a, b, 7);
1934 // CHECK: st4 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
1937 void test_vst4q_lane_f32(float32_t *a, float32x4x4_t b) {
1938 // CHECK-LABEL: test_vst4q_lane_f32
1939 vst4q_lane_f32(a, b, 3);
1940 // CHECK: st4 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
1943 void test_vst4q_lane_f64(float64_t *a, float64x2x4_t b) {
1944 // CHECK-LABEL: test_vst4q_lane_f64
1945 vst4q_lane_f64(a, b, 1);
1946 // CHECK: st4 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
1949 void test_vst4q_lane_p8(poly8_t *a, poly8x16x4_t b) {
1950 // CHECK-LABEL: test_vst4q_lane_p8
1951 vst4q_lane_p8(a, b, 15);
1952 // CHECK: st4 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[15], [{{x[0-9]+|sp}}]
1955 void test_vst4q_lane_p16(poly16_t *a, poly16x8x4_t b) {
1956 // CHECK-LABEL: test_vst4q_lane_p16
1957 vst4q_lane_p16(a, b, 7);
1958 // CHECK: st4 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
1961 void test_vst4q_lane_p64(poly64_t *a, poly64x2x4_t b) {
1962 // CHECK-LABEL: test_vst4q_lane_p64
1963 vst4q_lane_p64(a, b, 1);
1964 // CHECK: st4 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
1967 void test_vst4_lane_u8(uint8_t *a, uint8x8x4_t b) {
1968 // CHECK-LABEL: test_vst4_lane_u8
1969 vst4_lane_u8(a, b, 7);
1970 // CHECK: st4 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
1973 void test_vst4_lane_u16(uint16_t *a, uint16x4x4_t b) {
1974 // CHECK-LABEL: test_vst4_lane_u16
1975 vst4_lane_u16(a, b, 3);
1976 // CHECK: st4 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
1979 void test_vst4_lane_u32(uint32_t *a, uint32x2x4_t b) {
1980 // CHECK-LABEL: test_vst4_lane_u32
1981 vst4_lane_u32(a, b, 1);
1982 // CHECK: st4 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
1985 void test_vst4_lane_u64(uint64_t *a, uint64x1x4_t b) {
1986 // CHECK-LABEL: test_vst4_lane_u64
1987 vst4_lane_u64(a, b, 0);
1988 // CHECK: st4 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
1991 void test_vst4_lane_s8(int8_t *a, int8x8x4_t b) {
1992 // CHECK-LABEL: test_vst4_lane_s8
1993 vst4_lane_s8(a, b, 7);
1994 // CHECK: st4 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
1997 void test_vst4_lane_s16(int16_t *a, int16x4x4_t b) {
1998 // CHECK-LABEL: test_vst4_lane_s16
1999 vst4_lane_s16(a, b, 3);
2000 // CHECK: st4 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
2003 void test_vst4_lane_s32(int32_t *a, int32x2x4_t b) {
2004 // CHECK-LABEL: test_vst4_lane_s32
2005 vst4_lane_s32(a, b, 1);
2006 // CHECK: st4 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
2009 void test_vst4_lane_s64(int64_t *a, int64x1x4_t b) {
2010 // CHECK-LABEL: test_vst4_lane_s64
2011 vst4_lane_s64(a, b, 0);
2012 // CHECK: st4 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
2015 void test_vst4_lane_f16(float16_t *a, float16x4x4_t b) {
2016 // CHECK-LABEL: test_vst4_lane_f16
2017 vst4_lane_f16(a, b, 3);
2018 // CHECK: st4 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
2021 void test_vst4_lane_f32(float32_t *a, float32x2x4_t b) {
2022 // CHECK-LABEL: test_vst4_lane_f32
2023 vst4_lane_f32(a, b, 1);
2024 // CHECK: st4 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
2027 void test_vst4_lane_f64(float64_t *a, float64x1x4_t b) {
2028 // CHECK-LABEL: test_vst4_lane_f64
2029 vst4_lane_f64(a, b, 0);
2030 // CHECK: st4 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
2033 void test_vst4_lane_p8(poly8_t *a, poly8x8x4_t b) {
2034 // CHECK-LABEL: test_vst4_lane_p8
2035 vst4_lane_p8(a, b, 7);
2036 // CHECK: st4 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
2039 void test_vst4_lane_p16(poly16_t *a, poly16x4x4_t b) {
2040 // CHECK-LABEL: test_vst4_lane_p16
2041 vst4_lane_p16(a, b, 3);
2042 // CHECK: st4 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
2045 void test_vst4_lane_p64(poly64_t *a, poly64x1x4_t b) {
2046 // CHECK-LABEL: test_vst4_lane_p64
2047 vst4_lane_p64(a, b, 0);
2048 // CHECK: st4 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]