1 /* { dg-do compile } */
2 /* { dg-options "-O2 -dp" } */
6 /* Used to force a variable to a SIMD register. */
7 #define force_simd(V1) asm volatile ("mov %d0, %1.d[0]" \
12 /* { dg-final { scan-assembler-times "\\tadd\\tx\[0-9\]+" 2 } } */
15 test_vaddd_u64 (uint64_t a
, uint64_t b
)
17 return vaddd_u64 (a
, b
);
21 test_vaddd_s64 (int64_t a
, int64_t b
)
23 return vaddd_s64 (a
, b
);
26 /* { dg-final { scan-assembler-times "\\tadd\\td\[0-9\]+" 1 } } */
29 test_vaddd_s64_2 (int64_t a
, int64_t b
)
34 res
= vaddd_s64 (a
, b
);
39 /* { dg-final { scan-assembler-times "\\tcmeq\\td\[0-9\]+, d\[0-9\]+, d\[0-9\]+" 1 } } */
42 test_vceqd_s64 (int64_t a
, int64_t b
)
47 res
= vceqd_s64 (a
, b
);
52 /* { dg-final { scan-assembler-times "\\tcmeq\\td\[0-9\]+, d\[0-9\]+, #?0" 1 } } */
55 test_vceqzd_s64 (int64_t a
)
64 /* { dg-final { scan-assembler-times "\\tcmge\\td\[0-9\]+, d\[0-9\]+, d\[0-9\]+" 2 } } */
67 test_vcged_s64 (int64_t a
, int64_t b
)
72 res
= vcged_s64 (a
, b
);
78 test_vcled_s64 (int64_t a
, int64_t b
)
83 res
= vcled_s64 (a
, b
);
88 /* Idiom recognition will cause this testcase not to generate
89 the expected cmge instruction, so do not check for it. */
92 test_vcgezd_s64 (int64_t a
)
101 /* { dg-final { scan-assembler-times "\\tcmhs\\td\[0-9\]+, d\[0-9\]+, d\[0-9\]+" 1 } } */
104 test_vcged_u64 (uint64_t a
, uint64_t b
)
109 res
= vcged_u64 (a
, b
);
114 /* { dg-final { scan-assembler-times "\\tcmgt\\td\[0-9\]+, d\[0-9\]+, d\[0-9\]+" 2 } } */
117 test_vcgtd_s64 (int64_t a
, int64_t b
)
122 res
= vcgtd_s64 (a
, b
);
128 test_vcltd_s64 (int64_t a
, int64_t b
)
133 res
= vcltd_s64 (a
, b
);
138 /* { dg-final { scan-assembler-times "\\tcmgt\\td\[0-9\]+, d\[0-9\]+, #?0" 1 } } */
141 test_vcgtzd_s64 (int64_t a
)
145 res
= vcgtzd_s64 (a
);
150 /* { dg-final { scan-assembler-times "\\tcmhi\\td\[0-9\]+, d\[0-9\]+, d\[0-9\]+" 1 } } */
153 test_vcgtd_u64 (uint64_t a
, uint64_t b
)
158 res
= vcgtd_u64 (a
, b
);
163 /* { dg-final { scan-assembler-times "\\tcmle\\td\[0-9\]+, d\[0-9\]+, #?0" 1 } } */
166 test_vclezd_s64 (int64_t a
)
170 res
= vclezd_s64 (a
);
175 /* Idiom recognition will cause this testcase not to generate
176 the expected cmlt instruction, so do not check for it. */
179 test_vcltzd_s64 (int64_t a
)
183 res
= vcltzd_s64 (a
);
188 /* { dg-final { scan-assembler-times "aarch64_get_lanev16qi" 2 } } */
191 test_vdupb_lane_s8 (int8x16_t a
)
195 res
= vdupb_laneq_s8 (a
, 2);
201 test_vdupb_lane_u8 (uint8x16_t a
)
205 res
= vdupb_laneq_u8 (a
, 2);
210 /* { dg-final { scan-assembler-times "aarch64_get_lanev8hi" 2 } } */
213 test_vduph_lane_s16 (int16x8_t a
)
217 res
= vduph_laneq_s16 (a
, 2);
223 test_vduph_lane_u16 (uint16x8_t a
)
227 res
= vduph_laneq_u16 (a
, 2);
232 /* { dg-final { scan-assembler-times "aarch64_get_lanev4si" 2 } } */
235 test_vdups_lane_s32 (int32x4_t a
)
239 res
= vdups_laneq_s32 (a
, 2);
245 test_vdups_lane_u32 (uint32x4_t a
)
249 res
= vdups_laneq_u32 (a
, 2);
254 /* { dg-final { scan-assembler-times "aarch64_get_lanev2di" 2 } } */
257 test_vdupd_laneq_s64 (int64x2_t a
)
259 int64_t res
= vdupd_laneq_s64 (a
, 1);
265 test_vdupd_laneq_u64 (uint64x2_t a
)
267 uint64_t res
= vdupd_laneq_u64 (a
, 1);
272 /* { dg-final { scan-assembler-times "\\tcmtst\\td\[0-9\]+, d\[0-9\]+, d\[0-9\]+" 2 } } */
275 test_vtstd_s64 (int64_t a
, int64_t b
)
280 res
= vtstd_s64 (a
, b
);
286 test_vtstd_u64 (uint64_t a
, uint64_t b
)
291 res
= vtstd_u64 (a
, b
);
296 /* { dg-final { scan-assembler-times "\\tfaddp\\td\[0-9\]+, v\[0-9\]+\.2d" 1 } } */
299 test_vpaddd_f64 (float64x2_t a
)
301 return vpaddd_f64 (a
);
304 /* { dg-final { scan-assembler-times "\\taddp\\td\[0-9\]+, v\[0-9\]+\.2d" 2 } } */
307 test_vpaddd_s64 (int64x2_t a
)
309 return vpaddd_s64 (a
);
313 test_vpaddd_u64 (uint64x2_t a
)
315 return vpaddd_u64 (a
);
318 /* { dg-final { scan-assembler-times "\\tuqadd\\td\[0-9\]+" 1 } } */
321 test_vqaddd_u64 (uint64_t a
, uint64_t b
)
323 return vqaddd_u64 (a
, b
);
326 /* { dg-final { scan-assembler-times "\\tuqadd\\ts\[0-9\]+" 1 } } */
329 test_vqadds_u32 (uint32x1_t a
, uint32x1_t b
)
331 return vqadds_u32 (a
, b
);
334 /* { dg-final { scan-assembler-times "\\tuqadd\\th\[0-9\]+" 1 } } */
337 test_vqaddh_u16 (uint16x1_t a
, uint16x1_t b
)
339 return vqaddh_u16 (a
, b
);
342 /* { dg-final { scan-assembler-times "\\tuqadd\\tb\[0-9\]+" 1 } } */
345 test_vqaddb_u8 (uint8x1_t a
, uint8x1_t b
)
347 return vqaddb_u8 (a
, b
);
350 /* { dg-final { scan-assembler-times "\\tsqadd\\td\[0-9\]+" 1 } } */
353 test_vqaddd_s64 (int64_t a
, int64_t b
)
355 return vqaddd_s64 (a
, b
);
358 /* { dg-final { scan-assembler-times "\\tsqadd\\ts\[0-9\]+, s\[0-9\]+" 1 } } */
361 test_vqadds_s32 (int32x1_t a
, int32x1_t b
)
363 return vqadds_s32 (a
, b
);
366 /* { dg-final { scan-assembler-times "\\tsqadd\\th\[0-9\]+, h\[0-9\]+" 1 } } */
369 test_vqaddh_s16 (int16x1_t a
, int16x1_t b
)
371 return vqaddh_s16 (a
, b
);
374 /* { dg-final { scan-assembler-times "\\tsqadd\\tb\[0-9\]+, b\[0-9\]+" 1 } } */
377 test_vqaddb_s8 (int8x1_t a
, int8x1_t b
)
379 return vqaddb_s8 (a
, b
);
382 /* { dg-final { scan-assembler-times "\\tsqdmlal\\ts\[0-9\]+, h\[0-9\]+, h\[0-9\]+" 1 } } */
385 test_vqdmlalh_s16 (int32x1_t a
, int16x1_t b
, int16x1_t c
)
387 return vqdmlalh_s16 (a
, b
, c
);
390 /* { dg-final { scan-assembler-times "\\tsqdmlal\\ts\[0-9\]+, h\[0-9\]+, v" 1 } } */
393 test_vqdmlalh_lane_s16 (int32x1_t a
, int16x1_t b
, int16x4_t c
)
395 return vqdmlalh_lane_s16 (a
, b
, c
, 3);
398 /* { dg-final { scan-assembler-times "\\tsqdmlal\\td\[0-9\]+, s\[0-9\]+, s\[0-9\]+" 1 } } */
401 test_vqdmlals_s32 (int64_t a
, int32x1_t b
, int32x1_t c
)
403 return vqdmlals_s32 (a
, b
, c
);
406 /* { dg-final { scan-assembler-times "\\tsqdmlal\\td\[0-9\]+, s\[0-9\]+, v" 1 } } */
409 test_vqdmlals_lane_s32 (int64_t a
, int32_t b
, int32x2_t c
)
411 return vqdmlals_lane_s32 (a
, b
, c
, 1);
414 /* { dg-final { scan-assembler-times "\\tsqdmlsl\\ts\[0-9\]+, h\[0-9\]+, h\[0-9\]+" 1 } } */
417 test_vqdmlslh_s16 (int32x1_t a
, int16x1_t b
, int16x1_t c
)
419 return vqdmlslh_s16 (a
, b
, c
);
422 /* { dg-final { scan-assembler-times "\\tsqdmlsl\\ts\[0-9\]+, h\[0-9\]+, v" 1 } } */
425 test_vqdmlslh_lane_s16 (int32x1_t a
, int16x1_t b
, int16x4_t c
)
427 return vqdmlslh_lane_s16 (a
, b
, c
, 3);
430 /* { dg-final { scan-assembler-times "\\tsqdmlsl\\td\[0-9\]+, s\[0-9\]+, s\[0-9\]+" 1 } } */
433 test_vqdmlsls_s32 (int64_t a
, int32x1_t b
, int32x1_t c
)
435 return vqdmlsls_s32 (a
, b
, c
);
438 /* { dg-final { scan-assembler-times "\\tsqdmlsl\\td\[0-9\]+, s\[0-9\]+, v" 1 } } */
441 test_vqdmlsls_lane_s32 (int64_t a
, int32_t b
, int32x2_t c
)
443 return vqdmlsls_lane_s32 (a
, b
, c
, 1);
446 /* { dg-final { scan-assembler-times "\\tsqdmulh\\th\[0-9\]+, h\[0-9\]+, h\[0-9\]+" 1 } } */
449 test_vqdmulhh_s16 (int16x1_t a
, int16x1_t b
)
451 return vqdmulhh_s16 (a
, b
);
454 /* { dg-final { scan-assembler-times "\\tsqdmulh\\th\[0-9\]+, h\[0-9\]+, v" 1 } } */
457 test_vqdmulhh_lane_s16 (int16x1_t a
, int16x4_t b
)
459 return vqdmulhh_lane_s16 (a
, b
, 3);
462 /* { dg-final { scan-assembler-times "\\tsqdmulh\\ts\[0-9\]+, s\[0-9\]+, s\[0-9\]+" 1 } } */
465 test_vqdmulhs_s32 (int32x1_t a
, int32x1_t b
)
467 return vqdmulhs_s32 (a
, b
);
470 /* { dg-final { scan-assembler-times "\\tsqdmulh\\ts\[0-9\]+, s\[0-9\]+, v" 1 } } */
473 test_vqdmulhs_lane_s32 (int32x1_t a
, int32x2_t b
)
475 return vqdmulhs_lane_s32 (a
, b
, 1);
478 /* { dg-final { scan-assembler-times "\\tsqdmull\\ts\[0-9\]+, h\[0-9\]+, h\[0-9\]+" 1 } } */
481 test_vqdmullh_s16 (int16x1_t a
, int16x1_t b
)
483 return vqdmullh_s16 (a
, b
);
486 /* { dg-final { scan-assembler-times "\\tsqdmull\\ts\[0-9\]+, h\[0-9\]+, v" 1 } } */
489 test_vqdmullh_lane_s16 (int16x1_t a
, int16x4_t b
)
491 return vqdmullh_lane_s16 (a
, b
, 3);
494 /* { dg-final { scan-assembler-times "\\tsqdmull\\td\[0-9\]+, s\[0-9\]+, s\[0-9\]+" 1 } } */
497 test_vqdmulls_s32 (int32x1_t a
, int32x1_t b
)
499 return vqdmulls_s32 (a
, b
);
502 /* { dg-final { scan-assembler-times "\\tsqdmull\\td\[0-9\]+, s\[0-9\]+, v" 1 } } */
505 test_vqdmulls_lane_s32 (int32x1_t a
, int32x2_t b
)
507 return vqdmulls_lane_s32 (a
, b
, 1);
510 /* { dg-final { scan-assembler-times "\\tsqrdmulh\\th\[0-9\]+, h\[0-9\]+, h\[0-9\]+" 1 } } */
513 test_vqrdmulhh_s16 (int16x1_t a
, int16x1_t b
)
515 return vqrdmulhh_s16 (a
, b
);
518 /* { dg-final { scan-assembler-times "\\tsqrdmulh\\th\[0-9\]+, h\[0-9\]+, v" 1 } } */
521 test_vqrdmulhh_lane_s16 (int16x1_t a
, int16x4_t b
)
523 return vqrdmulhh_lane_s16 (a
, b
, 3);
526 /* { dg-final { scan-assembler-times "\\tsqrdmulh\\ts\[0-9\]+, s\[0-9\]+, s\[0-9\]+" 1 } } */
529 test_vqrdmulhs_s32 (int32x1_t a
, int32x1_t b
)
531 return vqrdmulhs_s32 (a
, b
);
534 /* { dg-final { scan-assembler-times "\\tsqrdmulh\\ts\[0-9\]+, s\[0-9\]+, v" 1 } } */
537 test_vqrdmulhs_lane_s32 (int32x1_t a
, int32x2_t b
)
539 return vqrdmulhs_lane_s32 (a
, b
, 1);
542 /* { dg-final { scan-assembler-times "\\tsuqadd\\tb\[0-9\]+" 1 } } */
545 test_vuqaddb_s8 (int8x1_t a
, int8x1_t b
)
547 return vuqaddb_s8 (a
, b
);
550 /* { dg-final { scan-assembler-times "\\tsuqadd\\th\[0-9\]+" 1 } } */
553 test_vuqaddh_s16 (int16x1_t a
, int8x1_t b
)
555 return vuqaddh_s16 (a
, b
);
558 /* { dg-final { scan-assembler-times "\\tsuqadd\\ts\[0-9\]+" 1 } } */
561 test_vuqadds_s32 (int32x1_t a
, int8x1_t b
)
563 return vuqadds_s32 (a
, b
);
566 /* { dg-final { scan-assembler-times "\\tsuqadd\\td\[0-9\]+" 1 } } */
569 test_vuqaddd_s64 (int64_t a
, uint64_t b
)
571 return vuqaddd_s64 (a
, b
);
574 /* { dg-final { scan-assembler-times "\\tusqadd\\tb\[0-9\]+" 1 } } */
577 test_vsqaddb_u8 (uint8x1_t a
, int8x1_t b
)
579 return vsqaddb_u8 (a
, b
);
582 /* { dg-final { scan-assembler-times "\\tusqadd\\th\[0-9\]+" 1 } } */
585 test_vsqaddh_u16 (uint16x1_t a
, int8x1_t b
)
587 return vsqaddh_u16 (a
, b
);
590 /* { dg-final { scan-assembler-times "\\tusqadd\\ts\[0-9\]+" 1 } } */
593 test_vsqadds_u32 (uint32x1_t a
, int8x1_t b
)
595 return vsqadds_u32 (a
, b
);
598 /* { dg-final { scan-assembler-times "\\tusqadd\\td\[0-9\]+" 1 } } */
601 test_vsqaddd_u64 (uint64_t a
, int64_t b
)
603 return vsqaddd_u64 (a
, b
);
606 /* { dg-final { scan-assembler-times "\\tsqabs\\tb\[0-9\]+" 1 } } */
609 test_vqabsb_s8 (int8x1_t a
)
611 return vqabsb_s8 (a
);
614 /* { dg-final { scan-assembler-times "\\tsqabs\\th\[0-9\]+" 1 } } */
617 test_vqabsh_s16 (int16x1_t a
)
619 return vqabsh_s16 (a
);
622 /* { dg-final { scan-assembler-times "\\tsqabs\\ts\[0-9\]+" 1 } } */
625 test_vqabss_s32 (int32x1_t a
)
627 return vqabss_s32 (a
);
630 /* { dg-final { scan-assembler-times "\\tsqneg\\tb\[0-9\]+" 1 } } */
633 test_vqnegb_s8 (int8x1_t a
)
635 return vqnegb_s8 (a
);
638 /* { dg-final { scan-assembler-times "\\tsqneg\\th\[0-9\]+" 1 } } */
641 test_vqnegh_s16 (int16x1_t a
)
643 return vqnegh_s16 (a
);
646 /* { dg-final { scan-assembler-times "\\tsqneg\\ts\[0-9\]+" 1 } } */
649 test_vqnegs_s32 (int32x1_t a
)
651 return vqnegs_s32 (a
);
654 /* { dg-final { scan-assembler-times "\\tsqxtun\\tb\[0-9\]+" 1 } } */
657 test_vqmovunh_s16 (int16x1_t a
)
659 return vqmovunh_s16 (a
);
662 /* { dg-final { scan-assembler-times "\\tsqxtun\\th\[0-9\]+" 1 } } */
665 test_vqmovuns_s32 (int32x1_t a
)
667 return vqmovuns_s32 (a
);
670 /* { dg-final { scan-assembler-times "\\tsqxtun\\ts\[0-9\]+" 1 } } */
673 test_vqmovund_s64 (int64_t a
)
675 return vqmovund_s64 (a
);
678 /* { dg-final { scan-assembler-times "\\tsqxtn\\tb\[0-9\]+" 1 } } */
681 test_vqmovnh_s16 (int16x1_t a
)
683 return vqmovnh_s16 (a
);
686 /* { dg-final { scan-assembler-times "\\tsqxtn\\th\[0-9\]+" 1 } } */
689 test_vqmovns_s32 (int32x1_t a
)
691 return vqmovns_s32 (a
);
694 /* { dg-final { scan-assembler-times "\\tsqxtn\\ts\[0-9\]+" 1 } } */
697 test_vqmovnd_s64 (int64_t a
)
699 return vqmovnd_s64 (a
);
702 /* { dg-final { scan-assembler-times "\\tuqxtn\\tb\[0-9\]+" 1 } } */
705 test_vqmovnh_u16 (uint16x1_t a
)
707 return vqmovnh_u16 (a
);
710 /* { dg-final { scan-assembler-times "\\tuqxtn\\th\[0-9\]+" 1 } } */
713 test_vqmovns_u32 (uint32x1_t a
)
715 return vqmovns_u32 (a
);
718 /* { dg-final { scan-assembler-times "\\tuqxtn\\ts\[0-9\]+" 1 } } */
721 test_vqmovnd_u64 (uint64_t a
)
723 return vqmovnd_u64 (a
);
726 /* { dg-final { scan-assembler-times "\\tsub\\tx\[0-9\]+" 2 } } */
729 test_vsubd_u64 (uint64_t a
, uint64_t b
)
731 return vsubd_u64 (a
, b
);
735 test_vsubd_s64 (int64_t a
, int64_t b
)
737 return vsubd_s64 (a
, b
);
740 /* { dg-final { scan-assembler-times "\\tsub\\td\[0-9\]+" 1 } } */
743 test_vsubd_s64_2 (int64_t a
, int64_t b
)
748 res
= vsubd_s64 (a
, b
);
753 /* { dg-final { scan-assembler-times "\\tuqsub\\td\[0-9\]+" 1 } } */
756 test_vqsubd_u64 (uint64_t a
, uint64_t b
)
758 return vqsubd_u64 (a
, b
);
761 /* { dg-final { scan-assembler-times "\\tuqsub\\ts\[0-9\]+" 1 } } */
764 test_vqsubs_u32 (uint32x1_t a
, uint32x1_t b
)
766 return vqsubs_u32 (a
, b
);
769 /* { dg-final { scan-assembler-times "\\tuqsub\\th\[0-9\]+" 1 } } */
772 test_vqsubh_u16 (uint16x1_t a
, uint16x1_t b
)
774 return vqsubh_u16 (a
, b
);
777 /* { dg-final { scan-assembler-times "\\tuqsub\\tb\[0-9\]+" 1 } } */
780 test_vqsubb_u8 (uint8x1_t a
, uint8x1_t b
)
782 return vqsubb_u8 (a
, b
);
785 /* { dg-final { scan-assembler-times "\\tsqsub\\td\[0-9\]+" 1 } } */
788 test_vqsubd_s64 (int64_t a
, int64_t b
)
790 return vqsubd_s64 (a
, b
);
793 /* { dg-final { scan-assembler-times "\\tsqsub\\ts\[0-9\]+" 1 } } */
796 test_vqsubs_s32 (int32x1_t a
, int32x1_t b
)
798 return vqsubs_s32 (a
, b
);
801 /* { dg-final { scan-assembler-times "\\tsqsub\\th\[0-9\]+" 1 } } */
804 test_vqsubh_s16 (int16x1_t a
, int16x1_t b
)
806 return vqsubh_s16 (a
, b
);
809 /* { dg-final { scan-assembler-times "\\tsqsub\\tb\[0-9\]+" 1 } } */
812 test_vqsubb_s8 (int8x1_t a
, int8x1_t b
)
814 return vqsubb_s8 (a
, b
);
817 /* { dg-final { scan-assembler-times "\\tsshl\\td\[0-9\]+" 1 } } */
820 test_vshld_s64 (int64_t a
, int64_t b
)
822 return vshld_s64 (a
, b
);
825 /* { dg-final { scan-assembler-times "\\tushl\\td\[0-9\]+" 1 } } */
828 test_vshld_u64 (uint64_t a
, uint64_t b
)
830 return vshld_u64 (a
, b
);
833 /* { dg-final { scan-assembler-times "\\tsrshl\\td\[0-9\]+" 1 } } */
836 test_vrshld_s64 (int64_t a
, int64_t b
)
838 return vrshld_s64 (a
, b
);
841 /* { dg-final { scan-assembler-times "\\turshl\\td\[0-9\]+" 1 } } */
844 test_vrshld_u64 (uint64_t a
, int64_t b
)
846 return vrshld_u64 (a
, b
);
849 /* Other intrinsics can generate an asr instruction (vcltzd, vcgezd),
850 so we cannot check scan-assembler-times. */
852 /* { dg-final { scan-assembler "\\tasr\\tx\[0-9\]+" } } */
855 test_vshrd_n_s64 (int64_t a
)
857 return vshrd_n_s64 (a
, 5);
860 /* { dg-final { scan-assembler-times "\\tlsr\\tx\[0-9\]+" 1 } } */
863 test_vshrd_n_u64 (uint64_t a
)
865 return vshrd_n_u64 (a
, 3);
868 /* { dg-final { scan-assembler-times "\\tssra\\td\[0-9\]+" 1 } } */
871 test_vsrad_n_s64 (int64_t a
, int64_t b
)
873 return vsrad_n_s64 (a
, b
, 2);
876 /* { dg-final { scan-assembler-times "\\tusra\\td\[0-9\]+" 1 } } */
879 test_vsrad_n_u64 (uint64_t a
, uint64_t b
)
881 return vsrad_n_u64 (a
, b
, 5);
884 /* { dg-final { scan-assembler-times "\\tsrshr\\td\[0-9\]+" 1 } } */
887 test_vrshrd_n_s64 (int64_t a
)
889 return vrshrd_n_s64 (a
, 5);
892 /* { dg-final { scan-assembler-times "\\turshr\\td\[0-9\]+" 1 } } */
895 test_vrshrd_n_u64 (uint64_t a
)
897 return vrshrd_n_u64 (a
, 3);
900 /* { dg-final { scan-assembler-times "\\tsrsra\\td\[0-9\]+" 1 } } */
903 test_vrsrad_n_s64 (int64_t a
, int64_t b
)
905 return vrsrad_n_s64 (a
, b
, 3);
908 /* { dg-final { scan-assembler-times "\\tsrsra\\td\[0-9\]+" 1 } } */
911 test_vrsrad_n_u64 (uint64_t a
, uint64_t b
)
913 return vrsrad_n_u64 (a
, b
, 4);
916 /* { dg-final { scan-assembler-times "\\tsqrshl\\tb\[0-9\]+" 1 } } */
919 test_vqrshlb_s8 (int8x1_t a
, int8x1_t b
)
921 return vqrshlb_s8 (a
, b
);
924 /* { dg-final { scan-assembler-times "\\tsqrshl\\th\[0-9\]+" 1 } } */
927 test_vqrshlh_s16 (int16x1_t a
, int16x1_t b
)
929 return vqrshlh_s16 (a
, b
);
932 /* { dg-final { scan-assembler-times "\\tsqrshl\\ts\[0-9\]+" 1 } } */
935 test_vqrshls_s32 (int32x1_t a
, int32x1_t b
)
937 return vqrshls_s32 (a
, b
);
940 /* { dg-final { scan-assembler-times "\\tsqrshl\\td\[0-9\]+" 1 } } */
943 test_vqrshld_s64 (int64_t a
, int64_t b
)
945 return vqrshld_s64 (a
, b
);
948 /* { dg-final { scan-assembler-times "\\tuqrshl\\tb\[0-9\]+" 1 } } */
951 test_vqrshlb_u8 (uint8x1_t a
, uint8x1_t b
)
953 return vqrshlb_u8 (a
, b
);
956 /* { dg-final { scan-assembler-times "\\tuqrshl\\th\[0-9\]+" 1 } } */
959 test_vqrshlh_u16 (uint16x1_t a
, uint16x1_t b
)
961 return vqrshlh_u16 (a
, b
);
964 /* { dg-final { scan-assembler-times "\\tuqrshl\\ts\[0-9\]+" 1 } } */
967 test_vqrshls_u32 (uint32x1_t a
, uint32x1_t b
)
969 return vqrshls_u32 (a
, b
);
972 /* { dg-final { scan-assembler-times "\\tuqrshl\\td\[0-9\]+" 1 } } */
975 test_vqrshld_u64 (uint64_t a
, uint64_t b
)
977 return vqrshld_u64 (a
, b
);
980 /* { dg-final { scan-assembler-times "\\tsqshlu\\tb\[0-9\]+" 1 } } */
983 test_vqshlub_n_s8 (int8x1_t a
)
985 return vqshlub_n_s8 (a
, 3);
988 /* { dg-final { scan-assembler-times "\\tsqshlu\\th\[0-9\]+" 1 } } */
991 test_vqshluh_n_s16 (int16x1_t a
)
993 return vqshluh_n_s16 (a
, 4);
996 /* { dg-final { scan-assembler-times "\\tsqshlu\\ts\[0-9\]+" 1 } } */
999 test_vqshlus_n_s32 (int32x1_t a
)
1001 return vqshlus_n_s32 (a
, 5);
1004 /* { dg-final { scan-assembler-times "\\tsqshlu\\td\[0-9\]+" 1 } } */
1007 test_vqshlud_n_s64 (int64_t a
)
1009 return vqshlud_n_s64 (a
, 6);
1012 /* { dg-final { scan-assembler-times "\\tsqshl\\tb\[0-9\]+" 2 } } */
1015 test_vqshlb_s8 (int8x1_t a
, int8x1_t b
)
1017 return vqshlb_s8 (a
, b
);
1021 test_vqshlb_n_s8 (int8x1_t a
)
1023 return vqshlb_n_s8 (a
, 2);
1026 /* { dg-final { scan-assembler-times "\\tsqshl\\th\[0-9\]+" 2 } } */
1029 test_vqshlh_s16 (int16x1_t a
, int16x1_t b
)
1031 return vqshlh_s16 (a
, b
);
1035 test_vqshlh_n_s16 (int16x1_t a
)
1037 return vqshlh_n_s16 (a
, 3);
1040 /* { dg-final { scan-assembler-times "\\tsqshl\\ts\[0-9\]+" 2 } } */
1043 test_vqshls_s32 (int32x1_t a
, int32x1_t b
)
1045 return vqshls_s32 (a
, b
);
1049 test_vqshls_n_s32 (int32x1_t a
)
1051 return vqshls_n_s32 (a
, 4);
1054 /* { dg-final { scan-assembler-times "\\tsqshl\\td\[0-9\]+" 2 } } */
1057 test_vqshld_s64 (int64_t a
, int64_t b
)
1059 return vqshld_s64 (a
, b
);
1063 test_vqshld_n_s64 (int64_t a
)
1065 return vqshld_n_s64 (a
, 5);
1068 /* { dg-final { scan-assembler-times "\\tuqshl\\tb\[0-9\]+" 2 } } */
1071 test_vqshlb_u8 (uint8x1_t a
, uint8x1_t b
)
1073 return vqshlb_u8 (a
, b
);
1077 test_vqshlb_n_u8 (uint8x1_t a
)
1079 return vqshlb_n_u8 (a
, 2);
1082 /* { dg-final { scan-assembler-times "\\tuqshl\\th\[0-9\]+" 2 } } */
1085 test_vqshlh_u16 (uint16x1_t a
, uint16x1_t b
)
1087 return vqshlh_u16 (a
, b
);
1091 test_vqshlh_n_u16 (uint16x1_t a
)
1093 return vqshlh_n_u16 (a
, 3);
1096 /* { dg-final { scan-assembler-times "\\tuqshl\\ts\[0-9\]+" 2 } } */
1099 test_vqshls_u32 (uint32x1_t a
, uint32x1_t b
)
1101 return vqshls_u32 (a
, b
);
1105 test_vqshls_n_u32 (uint32x1_t a
)
1107 return vqshls_n_u32 (a
, 4);
1110 /* { dg-final { scan-assembler-times "\\tuqshl\\td\[0-9\]+" 2 } } */
1113 test_vqshld_u64 (uint64_t a
, int64_t b
)
1115 return vqshld_u64 (a
, b
);
1119 test_vqshld_n_u64 (uint64_t a
)
1121 return vqshld_n_u64 (a
, 5);
1124 /* { dg-final { scan-assembler-times "\\tsqshrun\\tb\[0-9\]+" 1 } } */
1127 test_vqshrunh_n_s16 (int16x1_t a
)
1129 return vqshrunh_n_s16 (a
, 2);
1132 /* { dg-final { scan-assembler-times "\\tsqshrun\\th\[0-9\]+" 1 } } */
1135 test_vqshruns_n_s32 (int32x1_t a
)
1137 return vqshruns_n_s32 (a
, 3);
1140 /* { dg-final { scan-assembler-times "\\tsqshrun\\ts\[0-9\]+" 1 } } */
1143 test_vqshrund_n_s64 (int64_t a
)
1145 return vqshrund_n_s64 (a
, 4);
1148 /* { dg-final { scan-assembler-times "\\tsqrshrun\\tb\[0-9\]+" 1 } } */
1151 test_vqrshrunh_n_s16 (int16x1_t a
)
1153 return vqrshrunh_n_s16 (a
, 2);
1156 /* { dg-final { scan-assembler-times "\\tsqrshrun\\th\[0-9\]+" 1 } } */
1159 test_vqrshruns_n_s32 (int32x1_t a
)
1161 return vqrshruns_n_s32 (a
, 3);
1164 /* { dg-final { scan-assembler-times "\\tsqrshrun\\ts\[0-9\]+" 1 } } */
1167 test_vqrshrund_n_s64 (int64_t a
)
1169 return vqrshrund_n_s64 (a
, 4);
1172 /* { dg-final { scan-assembler-times "\\tsqshrn\\tb\[0-9\]+" 1 } } */
1175 test_vqshrnh_n_s16 (int16x1_t a
)
1177 return vqshrnh_n_s16 (a
, 2);
1180 /* { dg-final { scan-assembler-times "\\tsqshrn\\th\[0-9\]+" 1 } } */
1183 test_vqshrns_n_s32 (int32x1_t a
)
1185 return vqshrns_n_s32 (a
, 3);
1188 /* { dg-final { scan-assembler-times "\\tsqshrn\\ts\[0-9\]+" 1 } } */
1191 test_vqshrnd_n_s64 (int64_t a
)
1193 return vqshrnd_n_s64 (a
, 4);
1196 /* { dg-final { scan-assembler-times "\\tuqshrn\\tb\[0-9\]+" 1 } } */
1199 test_vqshrnh_n_u16 (uint16x1_t a
)
1201 return vqshrnh_n_u16 (a
, 2);
1204 /* { dg-final { scan-assembler-times "\\tuqshrn\\th\[0-9\]+" 1 } } */
1207 test_vqshrns_n_u32 (uint32x1_t a
)
1209 return vqshrns_n_u32 (a
, 3);
1212 /* { dg-final { scan-assembler-times "\\tuqshrn\\ts\[0-9\]+" 1 } } */
1215 test_vqshrnd_n_u64 (uint64_t a
)
1217 return vqshrnd_n_u64 (a
, 4);
1220 /* { dg-final { scan-assembler-times "\\tsqrshrn\\tb\[0-9\]+" 1 } } */
1223 test_vqrshrnh_n_s16 (int16x1_t a
)
1225 return vqrshrnh_n_s16 (a
, 2);
1228 /* { dg-final { scan-assembler-times "\\tsqrshrn\\th\[0-9\]+" 1 } } */
1231 test_vqrshrns_n_s32 (int32x1_t a
)
1233 return vqrshrns_n_s32 (a
, 3);
1236 /* { dg-final { scan-assembler-times "\\tsqrshrn\\ts\[0-9\]+" 1 } } */
1239 test_vqrshrnd_n_s64 (int64_t a
)
1241 return vqrshrnd_n_s64 (a
, 4);
1244 /* { dg-final { scan-assembler-times "\\tuqrshrn\\tb\[0-9\]+" 1 } } */
1247 test_vqrshrnh_n_u16 (uint16x1_t a
)
1249 return vqrshrnh_n_u16 (a
, 2);
1252 /* { dg-final { scan-assembler-times "\\tuqrshrn\\th\[0-9\]+" 1 } } */
1255 test_vqrshrns_n_u32 (uint32x1_t a
)
1257 return vqrshrns_n_u32 (a
, 3);
1260 /* { dg-final { scan-assembler-times "\\tuqrshrn\\ts\[0-9\]+" 1 } } */
1263 test_vqrshrnd_n_u64 (uint64_t a
)
1265 return vqrshrnd_n_u64 (a
, 4);
1268 /* { dg-final { scan-assembler-times "\\tlsl\\tx\[0-9\]+" 2 } } */
1271 test_vshld_n_s64 (int64_t a
)
1273 return vshld_n_s64 (a
, 9);
1277 test_vshdl_n_u64 (uint64_t a
)
1279 return vshld_n_u64 (a
, 9);
1282 /* { dg-final { scan-assembler-times "\\tsli\\td\[0-9\]+" 2 } } */
1285 test_vslid_n_s64 (int64_t a
, int64_t b
)
1287 return vslid_n_s64 (a
, b
, 9);
1291 test_vslid_n_u64 (uint64_t a
, uint64_t b
)
1293 return vslid_n_u64 (a
, b
, 9);
1296 /* { dg-final { scan-assembler-times "\\tsri\\td\[0-9\]+" 2 } } */
1299 test_vsrid_n_s64 (int64_t a
, int64_t b
)
1301 return vsrid_n_s64 (a
, b
, 9);
1305 test_vsrid_n_u64 (uint64_t a
, uint64_t b
)
1307 return vsrid_n_u64 (a
, b
, 9);