2014-04-15 Richard Biener <rguenther@suse.de>
[official-gcc.git] / gcc / testsuite / gcc.target / aarch64 / vector_intrinsics.c
blobaffb8a8a13a31efb3e25a095c87c962950ca756a
1 /* { dg-do compile } */
2 /* { dg-options "-O2" } */
4 #include "../../../config/aarch64/arm_neon.h"
7 /* { dg-final { scan-assembler-times "\\tfmax\\tv\[0-9\]+\.2s, v\[0-9\].2s, v\[0-9\].2s" 1 } } */
9 float32x2_t
10 test_vmax_f32 (float32x2_t __a, float32x2_t __b)
12 return vmax_f32(__a, __b);
15 /* { dg-final { scan-assembler-times "\\tsmax\\tv\[0-9\]+\.8b, v\[0-9\].8b, v\[0-9\].8b" 1 } } */
17 int8x8_t
18 test_vmax_s8 (int8x8_t __a, int8x8_t __b)
20 return vmax_s8(__a, __b);
23 /* { dg-final { scan-assembler-times "\\tumax\\tv\[0-9\]+\.8b, v\[0-9\].8b, v\[0-9\].8b" 1 } } */
25 uint8x8_t
26 test_vmax_u8 (uint8x8_t __a, uint8x8_t __b)
28 return vmax_u8(__a, __b);
31 /* { dg-final { scan-assembler-times "\\tsmax\\tv\[0-9\]+\.4h, v\[0-9\].4h, v\[0-9\].4h" 1 } } */
33 int16x4_t
34 test_vmax_s16 (int16x4_t __a, int16x4_t __b)
36 return vmax_s16(__a, __b);
39 /* { dg-final { scan-assembler-times "\\tumax\\tv\[0-9\]+\.4h, v\[0-9\].4h, v\[0-9\].4h" 1 } } */
41 uint16x4_t
42 test_vmax_u16 (uint16x4_t __a, uint16x4_t __b)
44 return vmax_u16(__a, __b);
47 /* { dg-final { scan-assembler-times "\\tsmax\\tv\[0-9\]+\.2s, v\[0-9\].2s, v\[0-9\].2s" 1 } } */
49 int32x2_t
50 test_vmax_s32 (int32x2_t __a, int32x2_t __b)
52 return vmax_s32(__a, __b);
55 /* { dg-final { scan-assembler-times "\\tumax\\tv\[0-9\]+\.2s, v\[0-9\].2s, v\[0-9\].2s" 1 } } */
57 uint32x2_t
58 test_vmax_u32 (uint32x2_t __a, uint32x2_t __b)
60 return vmax_u32(__a, __b);
63 /* { dg-final { scan-assembler-times "\\tfmax\\tv\[0-9\]+\.4s, v\[0-9\].4s, v\[0-9\].4s" 1 } } */
65 float32x4_t
66 test_vmaxq_f32 (float32x4_t __a, float32x4_t __b)
68 return vmaxq_f32(__a, __b);
71 /* { dg-final { scan-assembler-times "\\tfmax\\tv\[0-9\]+\.2d, v\[0-9\].2d, v\[0-9\].2d" 1 } } */
73 float64x2_t
74 test_vmaxq_f64 (float64x2_t __a, float64x2_t __b)
76 return vmaxq_f64(__a, __b);
79 /* { dg-final { scan-assembler-times "\\tsmax\\tv\[0-9\]+\.16b, v\[0-9\].16b, v\[0-9\].16b" 1 } } */
81 int8x16_t
82 test_vmaxq_s8 (int8x16_t __a, int8x16_t __b)
84 return vmaxq_s8(__a, __b);
87 /* { dg-final { scan-assembler-times "\\tumax\\tv\[0-9\]+\.16b, v\[0-9\].16b, v\[0-9\].16b" 1 } } */
89 uint8x16_t
90 test_vmaxq_u8 (uint8x16_t __a, uint8x16_t __b)
92 return vmaxq_u8(__a, __b);
95 /* { dg-final { scan-assembler-times "\\tsmax\\tv\[0-9\]+\.8h, v\[0-9\].8h, v\[0-9\].8h" 1 } } */
97 int16x8_t
98 test_vmaxq_s16 (int16x8_t __a, int16x8_t __b)
100 return vmaxq_s16(__a, __b);
103 /* { dg-final { scan-assembler-times "\\tumax\\tv\[0-9\]+\.8h, v\[0-9\].8h, v\[0-9\].8h" 1 } } */
105 uint16x8_t
106 test_vmaxq_u16 (uint16x8_t __a, uint16x8_t __b)
108 return vmaxq_u16(__a, __b);
111 /* { dg-final { scan-assembler-times "\\tsmax\\tv\[0-9\]+\.4s, v\[0-9\].4s, v\[0-9\].4s" 1 } } */
113 int32x4_t
114 test_vmaxq_s32 (int32x4_t __a, int32x4_t __b)
116 return vmaxq_s32(__a, __b);
119 /* { dg-final { scan-assembler-times "\\tumax\\tv\[0-9\]+\.4s, v\[0-9\].4s, v\[0-9\].4s" 1 } } */
121 uint32x4_t
122 test_vmaxq_u32 (uint32x4_t __a, uint32x4_t __b)
124 return vmaxq_u32(__a, __b);
127 /* { dg-final { scan-assembler-times "\\tfmin\\tv\[0-9\]+\.2s, v\[0-9\].2s, v\[0-9\].2s" 1 } } */
129 float32x2_t
130 test_vmin_f32 (float32x2_t __a, float32x2_t __b)
132 return vmin_f32(__a, __b);
135 /* { dg-final { scan-assembler-times "\\tsmin\\tv\[0-9\]+\.8b, v\[0-9\].8b, v\[0-9\].8b" 1 } } */
137 int8x8_t
138 test_vmin_s8 (int8x8_t __a, int8x8_t __b)
140 return vmin_s8(__a, __b);
143 /* { dg-final { scan-assembler-times "\\tumin\\tv\[0-9\]+\.8b, v\[0-9\].8b, v\[0-9\].8b" 1 } } */
145 uint8x8_t
146 test_vmin_u8 (uint8x8_t __a, uint8x8_t __b)
148 return vmin_u8(__a, __b);
151 /* { dg-final { scan-assembler-times "\\tsmin\\tv\[0-9\]+\.4h, v\[0-9\].4h, v\[0-9\].4h" 1 } } */
153 int16x4_t
154 test_vmin_s16 (int16x4_t __a, int16x4_t __b)
156 return vmin_s16(__a, __b);
159 /* { dg-final { scan-assembler-times "\\tumin\\tv\[0-9\]+\.4h, v\[0-9\].4h, v\[0-9\].4h" 1 } } */
161 uint16x4_t
162 test_vmin_u16 (uint16x4_t __a, uint16x4_t __b)
164 return vmin_u16(__a, __b);
167 /* { dg-final { scan-assembler-times "\\tsmin\\tv\[0-9\]+\.2s, v\[0-9\].2s, v\[0-9\].2s" 1 } } */
169 int32x2_t
170 test_vmin_s32 (int32x2_t __a, int32x2_t __b)
172 return vmin_s32(__a, __b);
175 /* { dg-final { scan-assembler-times "\\tumin\\tv\[0-9\]+\.2s, v\[0-9\].2s, v\[0-9\].2s" 1 } } */
177 uint32x2_t
178 test_vmin_u32 (uint32x2_t __a, uint32x2_t __b)
180 return vmin_u32(__a, __b);
183 /* { dg-final { scan-assembler-times "\\tfmin\\tv\[0-9\]+\.4s, v\[0-9\].4s, v\[0-9\].4s" 1 } } */
185 float32x4_t
186 test_vminq_f32 (float32x4_t __a, float32x4_t __b)
188 return vminq_f32(__a, __b);
191 /* { dg-final { scan-assembler-times "\\tfmin\\tv\[0-9\]+\.2d, v\[0-9\].2d, v\[0-9\].2d" 1 } } */
193 float64x2_t
194 test_vminq_f64 (float64x2_t __a, float64x2_t __b)
196 return vminq_f64(__a, __b);
199 /* { dg-final { scan-assembler-times "\\tsmin\\tv\[0-9\]+\.16b, v\[0-9\].16b, v\[0-9\].16b" 1 } } */
201 int8x16_t
202 test_vminq_s8 (int8x16_t __a, int8x16_t __b)
204 return vminq_s8(__a, __b);
207 /* { dg-final { scan-assembler-times "\\tumin\\tv\[0-9\]+\.16b, v\[0-9\].16b, v\[0-9\].16b" 1 } } */
209 uint8x16_t
210 test_vminq_u8 (uint8x16_t __a, uint8x16_t __b)
212 return vminq_u8(__a, __b);
215 /* { dg-final { scan-assembler-times "\\tsmin\\tv\[0-9\]+\.8h, v\[0-9\].8h, v\[0-9\].8h" 1 } } */
217 int16x8_t
218 test_vminq_s16 (int16x8_t __a, int16x8_t __b)
220 return vminq_s16(__a, __b);
223 /* { dg-final { scan-assembler-times "\\tumin\\tv\[0-9\]+\.8h, v\[0-9\].8h, v\[0-9\].8h" 1 } } */
225 uint16x8_t
226 test_vminq_u16 (uint16x8_t __a, uint16x8_t __b)
228 return vminq_u16(__a, __b);
231 /* { dg-final { scan-assembler-times "\\tsmin\\tv\[0-9\]+\.4s, v\[0-9\].4s, v\[0-9\].4s" 1 } } */
233 int32x4_t
234 test_vminq_s32 (int32x4_t __a, int32x4_t __b)
236 return vminq_s32(__a, __b);
239 /* { dg-final { scan-assembler-times "\\tumin\\tv\[0-9\]+\.4s, v\[0-9\].4s, v\[0-9\].4s" 1 } } */
241 uint32x4_t
242 test_vminq_u32 (uint32x4_t __a, uint32x4_t __b)
244 return vminq_u32(__a, __b);
247 /* { dg-final { scan-assembler-times "\\taddp\\tv\[0-9\]+\.8b, v\[0-9\].8b, v\[0-9\].8b" 2 } } */
249 int8x8_t
250 test_vpadd_s8 (int8x8_t __a, int8x8_t __b)
252 return vpadd_s8(__a, __b);
255 uint8x8_t
256 test_vpadd_u8 (uint8x8_t __a, uint8x8_t __b)
258 return vpadd_u8(__a, __b);
261 /* { dg-final { scan-assembler-times "\\taddp\\tv\[0-9\]+\.4h, v\[0-9\].4h, v\[0-9\].4h" 2 } } */
263 int16x4_t
264 test_vpadd_s16 (int16x4_t __a, int16x4_t __b)
266 return vpadd_s16(__a, __b);
269 uint16x4_t
270 test_vpadd_u16 (uint16x4_t __a, uint16x4_t __b)
272 return vpadd_u16(__a, __b);
275 /* { dg-final { scan-assembler-times "\\taddp\\tv\[0-9\]+\.2s, v\[0-9\].2s, v\[0-9\].2s" 2 } } */
277 int32x2_t
278 test_vpadd_s32 (int32x2_t __a, int32x2_t __b)
280 return vpadd_s32(__a, __b);
283 uint32x2_t
284 test_vpadd_u32 (uint32x2_t __a, uint32x2_t __b)
286 return vpadd_u32(__a, __b);
289 /* { dg-final { scan-assembler-times "\\tsqdmlal\\tv\[0-9\]+\.4s, v\[0-9\]+\.4h, v\[0-9\]+\.4h" 1 } } */
291 int32x4_t
292 test_vqdmlal_s16 (int32x4_t __a, int16x4_t __b, int16x4_t __c)
294 return vqdmlal_s16 (__a, __b, __c);
297 /* { dg-final { scan-assembler-times "\\tsqdmlal2\\tv\[0-9\]+\.4s, v\[0-9\]+\.8h, v\[0-9\]+\.8h" 1 } } */
299 int32x4_t
300 test_vqdmlal_high_s16 (int32x4_t __a, int16x8_t __b, int16x8_t __c)
302 return vqdmlal_high_s16 (__a, __b, __c);
305 /* { dg-final { scan-assembler-times "\\tsqdmlal2\\tv\[0-9\]+\.4s, v\[0-9\]+\.8h, v\[0-9\]+\.h" 3 } } */
307 int32x4_t
308 test_vqdmlal_high_lane_s16 (int32x4_t a, int16x8_t b, int16x8_t c)
310 return vqdmlal_high_lane_s16 (a, b, c, 3);
313 int32x4_t
314 test_vqdmlal_high_laneq_s16 (int32x4_t a, int16x8_t b, int16x8_t c)
316 return vqdmlal_high_laneq_s16 (a, b, c, 6);
319 int32x4_t
320 test_vqdmlal_high_n_s16 (int32x4_t __a, int16x8_t __b, int16_t __c)
322 return vqdmlal_high_n_s16 (__a, __b, __c);
325 /* { dg-final { scan-assembler-times "\\tsqdmlal\\tv\[0-9\]+\.4s, v\[0-9\]+\.4h, v\[0-9\]+\.h" 3 } } */
327 int32x4_t
328 test_vqdmlal_lane_s16 (int32x4_t a, int16x4_t b, int16x4_t c)
330 return vqdmlal_lane_s16 (a, b, c, 3);
333 int32x4_t
334 test_vqdmlal_laneq_s16 (int32x4_t a, int16x4_t b, int16x8_t c)
336 return vqdmlal_laneq_s16 (a, b, c, 6);
339 int32x4_t
340 test_vqdmlal_n_s16 (int32x4_t __a, int16x4_t __b, int16_t __c)
342 return vqdmlal_n_s16 (__a, __b, __c);
345 /* { dg-final { scan-assembler-times "\\tsqdmlal\\tv\[0-9\]+\.2d, v\[0-9\]+\.2s, v\[0-9\]+\.2s" 1 } } */
347 int64x2_t
348 test_vqdmlal_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __c)
350 return vqdmlal_s32 (__a, __b, __c);
353 /* { dg-final { scan-assembler-times "\\tsqdmlal2\\tv\[0-9\]+\.2d, v\[0-9\]+\.4s, v\[0-9\]+\.4s" 1 } } */
355 int64x2_t
356 test_vqdmlal_high_s32 (int64x2_t __a, int32x4_t __b, int32x4_t __c)
358 return vqdmlal_high_s32 (__a, __b, __c);
361 /* { dg-final { scan-assembler-times "\\tsqdmlal2\\tv\[0-9\]+\.2d, v\[0-9\]+\.4s, v\[0-9\]+\.s" 3 } } */
363 int64x2_t
364 test_vqdmlal_high_lane_s32 (int64x2_t __a, int32x4_t __b, int32x4_t __c)
366 return vqdmlal_high_lane_s32 (__a, __b, __c, 1);
369 int64x2_t
370 test_vqdmlal_high_laneq_s32 (int64x2_t __a, int32x4_t __b, int32x4_t __c)
372 return vqdmlal_high_laneq_s32 (__a, __b, __c, 3);
375 int64x2_t
376 test_vqdmlal_high_n_s32 (int64x2_t __a, int32x4_t __b, int32_t __c)
378 return vqdmlal_high_n_s32 (__a, __b, __c);
381 /* { dg-final { scan-assembler-times "\\tsqdmlal\\tv\[0-9\]+\.2d, v\[0-9\]+\.2s, v\[0-9\]+\.s" 3 } } */
383 int64x2_t
384 test_vqdmlal_lane_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __c)
386 return vqdmlal_lane_s32 (__a, __b, __c, 1);
389 int64x2_t
390 test_vqdmlal_laneq_s32 (int64x2_t __a, int32x2_t __b, int32x4_t __c)
392 return vqdmlal_laneq_s32 (__a, __b, __c, 3);
395 int64x2_t
396 test_vqdmlal_n_s32 (int64x2_t __a, int32x2_t __b, int32_t __c)
398 return vqdmlal_n_s32 (__a, __b, __c);
401 /* { dg-final { scan-assembler-times "\\tsqdmlsl\\tv\[0-9\]+\.4s, v\[0-9\]+\.4h, v\[0-9\]+\.4h" 1 } } */
403 int32x4_t
404 test_vqdmlsl_s16 (int32x4_t __a, int16x4_t __b, int16x4_t __c)
406 return vqdmlsl_s16 (__a, __b, __c);
409 /* { dg-final { scan-assembler-times "\\tsqdmlsl2\\tv\[0-9\]+\.4s, v\[0-9\]+\.8h, v\[0-9\]+\.8h" 1 } } */
411 int32x4_t
412 test_vqdmlsl_high_s16 (int32x4_t __a, int16x8_t __b, int16x8_t __c)
414 return vqdmlsl_high_s16 (__a, __b, __c);
417 /* { dg-final { scan-assembler-times "\\tsqdmlsl2\\tv\[0-9\]+\.4s, v\[0-9\]+\.8h, v\[0-9\]+\.h" 3 } } */
419 int32x4_t
420 test_vqdmlsl_high_lane_s16 (int32x4_t a, int16x8_t b, int16x8_t c)
422 return vqdmlsl_high_lane_s16 (a, b, c, 3);
425 int32x4_t
426 test_vqdmlsl_high_laneq_s16 (int32x4_t a, int16x8_t b, int16x8_t c)
428 return vqdmlsl_high_laneq_s16 (a, b, c, 6);
431 int32x4_t
432 test_vqdmlsl_high_n_s16 (int32x4_t __a, int16x8_t __b, int16_t __c)
434 return vqdmlsl_high_n_s16 (__a, __b, __c);
437 /* { dg-final { scan-assembler-times "\\tsqdmlsl\\tv\[0-9\]+\.4s, v\[0-9\]+\.4h, v\[0-9\]+\.h" 3 } } */
439 int32x4_t
440 test_vqdmlsl_lane_s16 (int32x4_t a, int16x4_t b, int16x4_t c)
442 return vqdmlsl_lane_s16 (a, b, c, 3);
445 int32x4_t
446 test_vqdmlsl_laneq_s16 (int32x4_t a, int16x4_t b, int16x8_t c)
448 return vqdmlsl_laneq_s16 (a, b, c, 6);
451 int32x4_t
452 test_vqdmlsl_n_s16 (int32x4_t __a, int16x4_t __b, int16_t __c)
454 return vqdmlsl_n_s16 (__a, __b, __c);
457 /* { dg-final { scan-assembler-times "\\tsqdmlsl\\tv\[0-9\]+\.2d, v\[0-9\]+\.2s, v\[0-9\]+\.2s" 1 } } */
459 int64x2_t
460 test_vqdmlsl_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __c)
462 return vqdmlsl_s32 (__a, __b, __c);
465 /* { dg-final { scan-assembler-times "\\tsqdmlsl2\\tv\[0-9\]+\.2d, v\[0-9\]+\.4s, v\[0-9\]+\.4s" 1 } } */
467 int64x2_t
468 test_vqdmlsl_high_s32 (int64x2_t __a, int32x4_t __b, int32x4_t __c)
470 return vqdmlsl_high_s32 (__a, __b, __c);
473 /* { dg-final { scan-assembler-times "\\tsqdmlsl2\\tv\[0-9\]+\.2d, v\[0-9\]+\.4s, v\[0-9\]+\.s" 3 } } */
475 int64x2_t
476 test_vqdmlsl_high_lane_s32 (int64x2_t __a, int32x4_t __b, int32x4_t __c)
478 return vqdmlsl_high_lane_s32 (__a, __b, __c, 1);
481 int64x2_t
482 test_vqdmlsl_high_laneq_s32 (int64x2_t __a, int32x4_t __b, int32x4_t __c)
484 return vqdmlsl_high_laneq_s32 (__a, __b, __c, 3);
487 int64x2_t
488 test_vqdmlsl_high_n_s32 (int64x2_t __a, int32x4_t __b, int32_t __c)
490 return vqdmlsl_high_n_s32 (__a, __b, __c);
493 /* { dg-final { scan-assembler-times "\\tsqdmlsl\\tv\[0-9\]+\.2d, v\[0-9\]+\.2s, v\[0-9\]+\.s" 3 } } */
495 int64x2_t
496 test_vqdmlsl_lane_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __c)
498 return vqdmlsl_lane_s32 (__a, __b, __c, 1);
501 int64x2_t
502 test_vqdmlsl_laneq_s32 (int64x2_t __a, int32x2_t __b, int32x4_t __c)
504 return vqdmlsl_laneq_s32 (__a, __b, __c, 3);
507 int64x2_t
508 test_vqdmlsl_n_s32 (int64x2_t __a, int32x2_t __b, int32_t __c)
510 return vqdmlsl_n_s32 (__a, __b, __c);
513 /* { dg-final { scan-assembler-times "\\tsqdmull\\tv\[0-9\]+\.4s, v\[0-9\]+\.4h, v\[0-9\]+\.4h" 1 } } */
515 int32x4_t
516 test_vqdmull_s16 (int16x4_t __a, int16x4_t __b)
518 return vqdmull_s16 (__a, __b);
521 /* { dg-final { scan-assembler-times "\\tsqdmull2\\tv\[0-9\]+\.4s, v\[0-9\]+\.8h, v\[0-9\]+\.8h" 1 } } */
523 int32x4_t
524 test_vqdmull_high_s16 (int16x8_t __a, int16x8_t __b)
526 return vqdmull_high_s16 (__a, __b);
529 /* { dg-final { scan-assembler-times "\\tsqdmull2\\tv\[0-9\]+\.4s, v\[0-9\]+\.8h, v\[0-9\]+\.h" 3 } } */
531 int32x4_t
532 test_vqdmull_high_lane_s16 (int16x8_t a, int16x8_t b)
534 return vqdmull_high_lane_s16 (a, b, 3);
537 int32x4_t
538 test_vqdmull_high_laneq_s16 (int16x8_t a, int16x8_t b)
540 return vqdmull_high_laneq_s16 (a, b, 6);
543 int32x4_t
544 test_vqdmull_high_n_s16 (int16x8_t __a, int16_t __b)
546 return vqdmull_high_n_s16 (__a, __b);
549 /* { dg-final { scan-assembler-times "\\tsqdmull\\tv\[0-9\]+\.4s, v\[0-9\]+\.4h, v\[0-9\]+\.h" 3 } } */
551 int32x4_t
552 test_vqdmull_lane_s16 (int16x4_t a, int16x4_t b)
554 return vqdmull_lane_s16 (a, b, 3);
557 int32x4_t
558 test_vqdmull_laneq_s16 (int16x4_t a, int16x8_t b)
560 return vqdmull_laneq_s16 (a, b, 6);
563 int32x4_t
564 test_vqdmull_n_s16 (int16x4_t __a, int16_t __b)
566 return vqdmull_n_s16 (__a, __b);
569 /* { dg-final { scan-assembler-times "\\tsqdmull\\tv\[0-9\]+\.2d, v\[0-9\]+\.2s, v\[0-9\]+\.2s" 1 } } */
571 int64x2_t
572 test_vqdmull_s32 (int32x2_t __a, int32x2_t __b)
574 return vqdmull_s32 (__a, __b);
577 /* { dg-final { scan-assembler-times "\\tsqdmull2\\tv\[0-9\]+\.2d, v\[0-9\]+\.4s, v\[0-9\]+\.4s" 1 } } */
579 int64x2_t
580 test_vqdmull_high_s32 (int32x4_t __a, int32x4_t __b)
582 return vqdmull_high_s32 (__a, __b);
585 /* { dg-final { scan-assembler-times "\\tsqdmull2\\tv\[0-9\]+\.2d, v\[0-9\]+\.4s, v\[0-9\]+\.s" 3 } } */
587 int64x2_t
588 test_vqdmull_high_lane_s32 (int32x4_t __a, int32x4_t __b)
590 return vqdmull_high_lane_s32 (__a, __b, 1);
593 int64x2_t
594 test_vqdmull_high_laneq_s32 (int32x4_t __a, int32x4_t __b)
596 return vqdmull_high_laneq_s32 (__a, __b, 3);
599 int64x2_t
600 test_vqdmull_high_n_s32 (int32x4_t __a, int32_t __b)
602 return vqdmull_high_n_s32 (__a, __b);
605 /* { dg-final { scan-assembler-times "\\tsqdmull\\tv\[0-9\]+\.2d, v\[0-9\]+\.2s, v\[0-9\]+\.s" 3 } } */
607 int64x2_t
608 test_vqdmull_lane_s32 (int32x2_t __a, int32x2_t __b)
610 return vqdmull_lane_s32 (__a, __b, 1);
613 int64x2_t
614 test_vqdmull_laneq_s32 (int32x2_t __a, int32x4_t __b)
616 return vqdmull_laneq_s32 (__a, __b, 1);
619 int64x2_t
620 test_vqdmull_n_s32 (int32x2_t __a, int32_t __b)
622 return vqdmull_n_s32 (__a, __b);
625 /* { dg-final { scan-assembler-times "\\tsshll\\tv\[0-9\]+\.2d" 1 } } */
627 int64x2_t
628 test_vshll_n_s32 (int32x2_t __a)
630 return vshll_n_s32 (__a, 9);
633 /* { dg-final { scan-assembler-times "\\tushll\\tv\[0-9\]+\.2d" 1 } } */
635 uint64x2_t
636 test_vshll_n_u32 (uint32x2_t __a)
638 return vshll_n_u32 (__a, 9);
641 /* { dg-final { scan-assembler-times "\\tshll\\tv\[0-9\]+\.2d" 2 } } */
643 int64x2_t
644 test_vshll_n_s32_2 (int32x2_t __a)
646 return vshll_n_s32 (__a, 32);
649 uint64x2_t
650 test_vshll_n_u32_2 (uint32x2_t __a)
652 return vshll_n_u32 (__a, 32);
655 /* { dg-final { scan-assembler-times "\\tsshll\\tv\[0-9\]+\.4s" 1 } } */
657 int32x4_t
658 test_vshll_n_s16 (int16x4_t __a)
660 return vshll_n_s16 (__a, 3);
663 /* { dg-final { scan-assembler-times "\\tushll\\tv\[0-9\]+\.4s" 1 } } */
665 uint32x4_t
666 test_vshll_n_u16 (uint16x4_t __a)
668 return vshll_n_u16 (__a, 3);
671 /* { dg-final { scan-assembler-times "\\tshll\\tv\[0-9\]+\.4s" 2 } } */
673 int32x4_t
674 test_vshll_n_s16_2 (int16x4_t __a)
676 return vshll_n_s16 (__a, 16);
679 uint32x4_t
680 test_vshll_n_u16_2 (uint16x4_t __a)
682 return vshll_n_u16 (__a, 16);
685 /* { dg-final { scan-assembler-times "\\tsshll\\tv\[0-9\]+\.8h" 1 } } */
687 int16x8_t
688 test_vshll_n_s8 (int8x8_t __a)
690 return vshll_n_s8 (__a, 3);
693 /* { dg-final { scan-assembler-times "\\tushll\\tv\[0-9\]+\.8h" 1 } } */
695 uint16x8_t
696 test_vshll_n_u8 (uint8x8_t __a)
698 return vshll_n_u8 (__a, 3);
701 /* { dg-final { scan-assembler-times "\\tshll\\tv\[0-9\]+\.8h" 2 } } */
703 int16x8_t
704 test_vshll_n_s8_2 (int8x8_t __a)
706 return vshll_n_s8 (__a, 8);
709 uint16x8_t
710 test_vshll_n_u8_2 (uint8x8_t __a)
712 return vshll_n_u8 (__a, 8);
715 /* { dg-final { scan-assembler-times "\\tsshll2\\tv\[0-9\]+\.2d" 1 } } */
717 int64x2_t
718 test_vshll_high_n_s32 (int32x4_t __a)
720 return vshll_high_n_s32 (__a, 9);
723 /* { dg-final { scan-assembler-times "\\tushll2\\tv\[0-9\]+\.2d" 1 } } */
725 uint64x2_t
726 test_vshll_high_n_u32 (uint32x4_t __a)
728 return vshll_high_n_u32 (__a, 9);
731 /* { dg-final { scan-assembler-times "\\tshll2\\tv\[0-9\]+\.2d" 2 } } */
733 int64x2_t
734 test_vshll_high_n_s32_2 (int32x4_t __a)
736 return vshll_high_n_s32 (__a, 32);
739 uint64x2_t
740 test_vshll_high_n_u32_2 (uint32x4_t __a)
742 return vshll_high_n_u32 (__a, 32);
745 /* { dg-final { scan-assembler-times "\\tsshll2\\tv\[0-9\]+\.4s" 1 } } */
747 int32x4_t
748 test_vshll_high_n_s16 (int16x8_t __a)
750 return vshll_high_n_s16 (__a, 3);
753 /* { dg-final { scan-assembler-times "\\tushll2\\tv\[0-9\]+\.4s" 1 } } */
755 uint32x4_t
756 test_vshll_high_n_u16 (uint16x8_t __a)
758 return vshll_high_n_u16 (__a, 3);
761 /* { dg-final { scan-assembler-times "\\tshll2\\tv\[0-9\]+\.4s" 2 } } */
763 int32x4_t
764 test_vshll_high_n_s16_2 (int16x8_t __a)
766 return vshll_high_n_s16 (__a, 16);
769 uint32x4_t
770 test_vshll_high_n_u16_2 (uint16x8_t __a)
772 return vshll_high_n_u16 (__a, 16);
775 /* { dg-final { scan-assembler-times "\\tsshll2\\tv\[0-9\]+\.8h" 1 } } */
777 int16x8_t
778 test_vshll_high_n_s8 (int8x16_t __a)
780 return vshll_high_n_s8 (__a, 3);
783 /* { dg-final { scan-assembler-times "\\tushll2\\tv\[0-9\]+\.8h" 1 } } */
785 uint16x8_t
786 test_vshll_high_n_u8 (uint8x16_t __a)
788 return vshll_high_n_u8 (__a, 3);
791 /* { dg-final { scan-assembler-times "\\tshll2\\tv\[0-9\]+\.8h" 2 } } */
793 int16x8_t
794 test_vshll_high_n_s8_2 (int8x16_t __a)
796 return vshll_high_n_s8 (__a, 8);
799 uint16x8_t
800 test_vshll_high_n_u8_2 (uint8x16_t __a)
802 return vshll_high_n_u8 (__a, 8);