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 (uint64x1_t a
, uint64x1_t b
)
17 return vaddd_u64 (a
, b
);
21 test_vaddd_s64 (int64x1_t a
, int64x1_t b
)
23 return vaddd_s64 (a
, b
);
26 /* { dg-final { scan-assembler-times "\\tadd\\td\[0-9\]+" 1 } } */
29 test_vaddd_s64_2 (int64x1_t a
, int64x1_t b
, int64x1_t c
, int64x1_t d
)
31 return vqaddd_s64 (vaddd_s64 (vqaddd_s64 (a
, b
), vqaddd_s64 (c
, d
)),
35 /* { dg-final { scan-assembler-times "\\tabs\\td\[0-9\]+, d\[0-9\]+" 1 } } */
38 test_vabs_s64 (int64x1_t a
)
47 /* { dg-final { scan-assembler-times "\\tcmeq\\td\[0-9\]+, d\[0-9\]+, d\[0-9\]+" 1 } } */
50 test_vceqd_s64 (int64x1_t a
, int64x1_t b
)
55 res
= vceqd_s64 (a
, b
);
60 /* { dg-final { scan-assembler-times "\\tcmeq\\td\[0-9\]+, d\[0-9\]+, #?0" 1 } } */
63 test_vceqzd_s64 (int64x1_t a
)
72 /* { dg-final { scan-assembler-times "\\tcmge\\td\[0-9\]+, d\[0-9\]+, d\[0-9\]+" 2 } } */
75 test_vcged_s64 (int64x1_t a
, int64x1_t b
)
80 res
= vcged_s64 (a
, b
);
86 test_vcled_s64 (int64x1_t a
, int64x1_t b
)
91 res
= vcled_s64 (a
, b
);
96 /* Idiom recognition will cause this testcase not to generate
97 the expected cmge instruction, so do not check for it. */
100 test_vcgezd_s64 (int64x1_t a
)
104 res
= vcgezd_s64 (a
);
109 /* { dg-final { scan-assembler-times "\\tcmhs\\td\[0-9\]+, d\[0-9\]+, d\[0-9\]+" 1 } } */
112 test_vcged_u64 (uint64x1_t a
, uint64x1_t b
)
117 res
= vcged_u64 (a
, b
);
122 /* { dg-final { scan-assembler-times "\\tcmgt\\td\[0-9\]+, d\[0-9\]+, d\[0-9\]+" 2 } } */
125 test_vcgtd_s64 (int64x1_t a
, int64x1_t b
)
130 res
= vcgtd_s64 (a
, b
);
136 test_vcltd_s64 (int64x1_t a
, int64x1_t b
)
141 res
= vcltd_s64 (a
, b
);
146 /* { dg-final { scan-assembler-times "\\tcmgt\\td\[0-9\]+, d\[0-9\]+, #?0" 1 } } */
149 test_vcgtzd_s64 (int64x1_t a
)
153 res
= vcgtzd_s64 (a
);
158 /* { dg-final { scan-assembler-times "\\tcmhi\\td\[0-9\]+, d\[0-9\]+, d\[0-9\]+" 1 } } */
161 test_vcgtd_u64 (uint64x1_t a
, uint64x1_t b
)
166 res
= vcgtd_u64 (a
, b
);
171 /* { dg-final { scan-assembler-times "\\tcmle\\td\[0-9\]+, d\[0-9\]+, #?0" 1 } } */
174 test_vclezd_s64 (int64x1_t a
)
178 res
= vclezd_s64 (a
);
183 /* Idiom recognition will cause this testcase not to generate
184 the expected cmlt instruction, so do not check for it. */
187 test_vcltzd_s64 (int64x1_t a
)
191 res
= vcltzd_s64 (a
);
196 /* { dg-final { scan-assembler-times "aarch64_get_lanev16qi" 2 } } */
199 test_vdupb_lane_s8 (int8x16_t a
)
203 res
= vdupb_laneq_s8 (a
, 2);
209 test_vdupb_lane_u8 (uint8x16_t a
)
213 res
= vdupb_laneq_u8 (a
, 2);
218 /* { dg-final { scan-assembler-times "aarch64_get_lanev8hi" 2 } } */
221 test_vduph_lane_s16 (int16x8_t a
)
225 res
= vduph_laneq_s16 (a
, 2);
231 test_vduph_lane_u16 (uint16x8_t a
)
235 res
= vduph_laneq_u16 (a
, 2);
240 /* { dg-final { scan-assembler-times "aarch64_get_lanev4si" 2 } } */
243 test_vdups_lane_s32 (int32x4_t a
)
247 res
= vdups_laneq_s32 (a
, 2);
253 test_vdups_lane_u32 (uint32x4_t a
)
257 res
= vdups_laneq_u32 (a
, 2);
262 /* { dg-final { scan-assembler-times "aarch64_get_lanev2di" 2 } } */
265 test_vdupd_lane_s64 (int64x2_t a
)
269 res
= vdupd_laneq_s64 (a
, 1);
275 test_vdupd_lane_u64 (uint64x2_t a
)
279 res
= vdupd_laneq_u64 (a
, 1);
284 /* { dg-final { scan-assembler-times "\\tcmtst\\td\[0-9\]+, d\[0-9\]+, d\[0-9\]+" 2 } } */
287 test_vtst_s64 (int64x1_t a
, int64x1_t b
)
292 res
= vtstd_s64 (a
, b
);
298 test_vtst_u64 (uint64x1_t a
, uint64x1_t b
)
303 res
= vtstd_s64 (a
, b
);
308 /* { dg-final { scan-assembler-times "\\taddp\\td\[0-9\]+, v\[0-9\]+\.2d" 1 } } */
310 test_vpaddd_s64 (int64x2_t a
)
312 return vpaddd_s64 (a
);
315 /* { dg-final { scan-assembler-times "\\tuqadd\\td\[0-9\]+" 1 } } */
318 test_vqaddd_u64 (uint64x1_t a
, uint64x1_t b
)
320 return vqaddd_u64 (a
, b
);
323 /* { dg-final { scan-assembler-times "\\tuqadd\\ts\[0-9\]+" 1 } } */
326 test_vqadds_u32 (uint32x1_t a
, uint32x1_t b
)
328 return vqadds_u32 (a
, b
);
331 /* { dg-final { scan-assembler-times "\\tuqadd\\th\[0-9\]+" 1 } } */
334 test_vqaddh_u16 (uint16x1_t a
, uint16x1_t b
)
336 return vqaddh_u16 (a
, b
);
339 /* { dg-final { scan-assembler-times "\\tuqadd\\tb\[0-9\]+" 1 } } */
342 test_vqaddb_u8 (uint8x1_t a
, uint8x1_t b
)
344 return vqaddb_u8 (a
, b
);
347 /* { dg-final { scan-assembler-times "\\tsqadd\\td\[0-9\]+" 5 } } */
350 test_vqaddd_s64 (int64x1_t a
, int64x1_t b
)
352 return vqaddd_s64 (a
, b
);
355 /* { dg-final { scan-assembler-times "\\tsqadd\\ts\[0-9\]+, s\[0-9\]+" 1 } } */
358 test_vqadds_s32 (int32x1_t a
, int32x1_t b
)
360 return vqadds_s32 (a
, b
);
363 /* { dg-final { scan-assembler-times "\\tsqadd\\th\[0-9\]+, h\[0-9\]+" 1 } } */
366 test_vqaddh_s16 (int16x1_t a
, int16x1_t b
)
368 return vqaddh_s16 (a
, b
);
371 /* { dg-final { scan-assembler-times "\\tsqadd\\tb\[0-9\]+, b\[0-9\]+" 1 } } */
374 test_vqaddb_s8 (int8x1_t a
, int8x1_t b
)
376 return vqaddb_s8 (a
, b
);
379 /* { dg-final { scan-assembler-times "\\tsqdmlal\\ts\[0-9\]+, h\[0-9\]+, h\[0-9\]+" 1 } } */
382 test_vqdmlalh_s16 (int32x1_t a
, int16x1_t b
, int16x1_t c
)
384 return vqdmlalh_s16 (a
, b
, c
);
387 /* { dg-final { scan-assembler-times "\\tsqdmlal\\ts\[0-9\]+, h\[0-9\]+, v" 1 } } */
390 test_vqdmlalh_lane_s16 (int32x1_t a
, int16x1_t b
, int16x8_t c
)
392 return vqdmlalh_lane_s16 (a
, b
, c
, 3);
395 /* { dg-final { scan-assembler-times "\\tsqdmlal\\td\[0-9\]+, s\[0-9\]+, s\[0-9\]+" 1 } } */
398 test_vqdmlals_s32 (int64x1_t a
, int32x1_t b
, int32x1_t c
)
400 return vqdmlals_s32 (a
, b
, c
);
403 /* { dg-final { scan-assembler-times "\\tsqdmlal\\td\[0-9\]+, s\[0-9\]+, v" 1 } } */
406 test_vqdmlals_lane_s32 (int64x1_t a
, int32x1_t b
, int32x4_t c
)
408 return vqdmlals_lane_s32 (a
, b
, c
, 1);
411 /* { dg-final { scan-assembler-times "\\tsqdmlsl\\ts\[0-9\]+, h\[0-9\]+, h\[0-9\]+" 1 } } */
414 test_vqdmlslh_s16 (int32x1_t a
, int16x1_t b
, int16x1_t c
)
416 return vqdmlslh_s16 (a
, b
, c
);
419 /* { dg-final { scan-assembler-times "\\tsqdmlsl\\ts\[0-9\]+, h\[0-9\]+, v" 1 } } */
422 test_vqdmlslh_lane_s16 (int32x1_t a
, int16x1_t b
, int16x8_t c
)
424 return vqdmlslh_lane_s16 (a
, b
, c
, 3);
427 /* { dg-final { scan-assembler-times "\\tsqdmlsl\\td\[0-9\]+, s\[0-9\]+, s\[0-9\]+" 1 } } */
430 test_vqdmlsls_s32 (int64x1_t a
, int32x1_t b
, int32x1_t c
)
432 return vqdmlsls_s32 (a
, b
, c
);
435 /* { dg-final { scan-assembler-times "\\tsqdmlsl\\td\[0-9\]+, s\[0-9\]+, v" 1 } } */
438 test_vqdmlsls_lane_s32 (int64x1_t a
, int32x1_t b
, int32x4_t c
)
440 return vqdmlsls_lane_s32 (a
, b
, c
, 1);
443 /* { dg-final { scan-assembler-times "\\tsqdmulh\\th\[0-9\]+, h\[0-9\]+, h\[0-9\]+" 1 } } */
446 test_vqdmulhh_s16 (int16x1_t a
, int16x1_t b
)
448 return vqdmulhh_s16 (a
, b
);
451 /* { dg-final { scan-assembler-times "\\tsqdmulh\\th\[0-9\]+, h\[0-9\]+, v" 1 } } */
454 test_vqdmulhh_lane_s16 (int16x1_t a
, int16x8_t b
)
456 return vqdmulhh_lane_s16 (a
, b
, 3);
459 /* { dg-final { scan-assembler-times "\\tsqdmulh\\ts\[0-9\]+, s\[0-9\]+, s\[0-9\]+" 1 } } */
462 test_vqdmulhs_s32 (int32x1_t a
, int32x1_t b
)
464 return vqdmulhs_s32 (a
, b
);
467 /* { dg-final { scan-assembler-times "\\tsqdmulh\\ts\[0-9\]+, s\[0-9\]+, v" 1 } } */
470 test_vqdmulhs_lane_s32 (int32x1_t a
, int32x4_t b
)
472 return vqdmulhs_lane_s32 (a
, b
, 3);
475 /* { dg-final { scan-assembler-times "\\tsqdmull\\ts\[0-9\]+, h\[0-9\]+, h\[0-9\]+" 1 } } */
478 test_vqdmullh_s16 (int16x1_t a
, int16x1_t b
)
480 return vqdmullh_s16 (a
, b
);
483 /* { dg-final { scan-assembler-times "\\tsqdmull\\ts\[0-9\]+, h\[0-9\]+, v" 1 } } */
486 test_vqdmullh_lane_s16 (int16x1_t a
, int16x8_t b
)
488 return vqdmullh_lane_s16 (a
, b
, 3);
491 /* { dg-final { scan-assembler-times "\\tsqdmull\\td\[0-9\]+, s\[0-9\]+, s\[0-9\]+" 1 } } */
494 test_vqdmulls_s32 (int32x1_t a
, int32x1_t b
)
496 return vqdmulls_s32 (a
, b
);
499 /* { dg-final { scan-assembler-times "\\tsqdmull\\td\[0-9\]+, s\[0-9\]+, v" 1 } } */
502 test_vqdmulls_lane_s32 (int32x1_t a
, int32x4_t b
)
504 return vqdmulls_lane_s32 (a
, b
, 1);
507 /* { dg-final { scan-assembler-times "\\tsqrdmulh\\th\[0-9\]+, h\[0-9\]+, h\[0-9\]+" 1 } } */
510 test_vqrdmulhh_s16 (int16x1_t a
, int16x1_t b
)
512 return vqrdmulhh_s16 (a
, b
);
515 /* { dg-final { scan-assembler-times "\\tsqrdmulh\\th\[0-9\]+, h\[0-9\]+, v" 1 } } */
518 test_vqrdmulhh_lane_s16 (int16x1_t a
, int16x8_t b
)
520 return vqrdmulhh_lane_s16 (a
, b
, 6);
523 /* { dg-final { scan-assembler-times "\\tsqrdmulh\\ts\[0-9\]+, s\[0-9\]+, s\[0-9\]+" 1 } } */
526 test_vqrdmulhs_s32 (int32x1_t a
, int32x1_t b
)
528 return vqrdmulhs_s32 (a
, b
);
531 /* { dg-final { scan-assembler-times "\\tsqrdmulh\\ts\[0-9\]+, s\[0-9\]+, v" 1 } } */
534 test_vqrdmulhs_lane_s32 (int32x1_t a
, int32x4_t b
)
536 return vqrdmulhs_lane_s32 (a
, b
, 2);
539 /* { dg-final { scan-assembler-times "\\tsuqadd\\tb\[0-9\]+" 1 } } */
542 test_vuqaddb_s8 (int8x1_t a
, int8x1_t b
)
544 return vuqaddb_s8 (a
, b
);
547 /* { dg-final { scan-assembler-times "\\tsuqadd\\th\[0-9\]+" 1 } } */
550 test_vuqaddh_s16 (int16x1_t a
, int8x1_t b
)
552 return vuqaddh_s16 (a
, b
);
555 /* { dg-final { scan-assembler-times "\\tsuqadd\\ts\[0-9\]+" 1 } } */
558 test_vuqadds_s32 (int32x1_t a
, int8x1_t b
)
560 return vuqadds_s32 (a
, b
);
563 /* { dg-final { scan-assembler-times "\\tsuqadd\\td\[0-9\]+" 1 } } */
566 test_vuqaddd_s64 (int64x1_t a
, int8x1_t b
)
568 return vuqaddd_s64 (a
, b
);
571 /* { dg-final { scan-assembler-times "\\tusqadd\\tb\[0-9\]+" 1 } } */
574 test_vsqaddb_u8 (uint8x1_t a
, int8x1_t b
)
576 return vsqaddb_u8 (a
, b
);
579 /* { dg-final { scan-assembler-times "\\tusqadd\\th\[0-9\]+" 1 } } */
582 test_vsqaddh_u16 (uint16x1_t a
, int8x1_t b
)
584 return vsqaddh_u16 (a
, b
);
587 /* { dg-final { scan-assembler-times "\\tusqadd\\ts\[0-9\]+" 1 } } */
590 test_vsqadds_u32 (uint32x1_t a
, int8x1_t b
)
592 return vsqadds_u32 (a
, b
);
595 /* { dg-final { scan-assembler-times "\\tusqadd\\td\[0-9\]+" 1 } } */
598 test_vsqaddd_u64 (uint64x1_t a
, int8x1_t b
)
600 return vsqaddd_u64 (a
, b
);
603 /* { dg-final { scan-assembler-times "\\tsqabs\\tb\[0-9\]+" 1 } } */
606 test_vqabsb_s8 (int8x1_t a
)
608 return vqabsb_s8 (a
);
611 /* { dg-final { scan-assembler-times "\\tsqabs\\th\[0-9\]+" 1 } } */
614 test_vqabsh_s16 (int16x1_t a
)
616 return vqabsh_s16 (a
);
619 /* { dg-final { scan-assembler-times "\\tsqabs\\ts\[0-9\]+" 1 } } */
622 test_vqabss_s32 (int32x1_t a
)
624 return vqabss_s32 (a
);
627 /* { dg-final { scan-assembler-times "\\tsqneg\\tb\[0-9\]+" 1 } } */
630 test_vqnegb_s8 (int8x1_t a
)
632 return vqnegb_s8 (a
);
635 /* { dg-final { scan-assembler-times "\\tsqneg\\th\[0-9\]+" 1 } } */
638 test_vqnegh_s16 (int16x1_t a
)
640 return vqnegh_s16 (a
);
643 /* { dg-final { scan-assembler-times "\\tsqneg\\ts\[0-9\]+" 1 } } */
646 test_vqnegs_s32 (int32x1_t a
)
648 return vqnegs_s32 (a
);
651 /* { dg-final { scan-assembler-times "\\tsqxtun\\tb\[0-9\]+" 1 } } */
654 test_vqmovunh_s16 (int16x1_t a
)
656 return vqmovunh_s16 (a
);
659 /* { dg-final { scan-assembler-times "\\tsqxtun\\th\[0-9\]+" 1 } } */
662 test_vqmovuns_s32 (int32x1_t a
)
664 return vqmovuns_s32 (a
);
667 /* { dg-final { scan-assembler-times "\\tsqxtun\\ts\[0-9\]+" 1 } } */
670 test_vqmovund_s64 (int64x1_t a
)
672 return vqmovund_s64 (a
);
675 /* { dg-final { scan-assembler-times "\\tsqxtn\\tb\[0-9\]+" 1 } } */
678 test_vqmovnh_s16 (int16x1_t a
)
680 return vqmovnh_s16 (a
);
683 /* { dg-final { scan-assembler-times "\\tsqxtn\\th\[0-9\]+" 1 } } */
686 test_vqmovns_s32 (int32x1_t a
)
688 return vqmovns_s32 (a
);
691 /* { dg-final { scan-assembler-times "\\tsqxtn\\ts\[0-9\]+" 1 } } */
694 test_vqmovnd_s64 (int64x1_t a
)
696 return vqmovnd_s64 (a
);
699 /* { dg-final { scan-assembler-times "\\tuqxtn\\tb\[0-9\]+" 1 } } */
702 test_vqmovnh_u16 (uint16x1_t a
)
704 return vqmovnh_u16 (a
);
707 /* { dg-final { scan-assembler-times "\\tuqxtn\\th\[0-9\]+" 1 } } */
710 test_vqmovns_u32 (uint32x1_t a
)
712 return vqmovns_u32 (a
);
715 /* { dg-final { scan-assembler-times "\\tuqxtn\\ts\[0-9\]+" 1 } } */
718 test_vqmovnd_u64 (uint64x1_t a
)
720 return vqmovnd_u64 (a
);
723 /* { dg-final { scan-assembler-times "\\tsub\\tx\[0-9\]+" 2 } } */
726 test_vsubd_u64 (uint64x1_t a
, uint64x1_t b
)
728 return vsubd_u64 (a
, b
);
732 test_vsubd_s64 (int64x1_t a
, int64x1_t b
)
734 return vsubd_s64 (a
, b
);
737 /* { dg-final { scan-assembler-times "\\tsub\\td\[0-9\]+" 1 } } */
740 test_vsubd_s64_2 (int64x1_t a
, int64x1_t b
, int64x1_t c
, int64x1_t d
)
742 return vqsubd_s64 (vsubd_s64 (vqsubd_s64 (a
, b
), vqsubd_s64 (c
, d
)),
746 /* { dg-final { scan-assembler-times "\\tuqsub\\td\[0-9\]+" 1 } } */
749 test_vqsubd_u64 (uint64x1_t a
, uint64x1_t b
)
751 return vqsubd_u64 (a
, b
);
754 /* { dg-final { scan-assembler-times "\\tuqsub\\ts\[0-9\]+" 1 } } */
757 test_vqsubs_u32 (uint32x1_t a
, uint32x1_t b
)
759 return vqsubs_u32 (a
, b
);
762 /* { dg-final { scan-assembler-times "\\tuqsub\\th\[0-9\]+" 1 } } */
765 test_vqsubh_u16 (uint16x1_t a
, uint16x1_t b
)
767 return vqsubh_u16 (a
, b
);
770 /* { dg-final { scan-assembler-times "\\tuqsub\\tb\[0-9\]+" 1 } } */
773 test_vqsubb_u8 (uint8x1_t a
, uint8x1_t b
)
775 return vqsubb_u8 (a
, b
);
778 /* { dg-final { scan-assembler-times "\\tsqsub\\td\[0-9\]+" 5 } } */
781 test_vqsubd_s64 (int64x1_t a
, int64x1_t b
)
783 return vqsubd_s64 (a
, b
);
786 /* { dg-final { scan-assembler-times "\\tsqsub\\ts\[0-9\]+" 1 } } */
789 test_vqsubs_s32 (int32x1_t a
, int32x1_t b
)
791 return vqsubs_s32 (a
, b
);
794 /* { dg-final { scan-assembler-times "\\tsqsub\\th\[0-9\]+" 1 } } */
797 test_vqsubh_s16 (int16x1_t a
, int16x1_t b
)
799 return vqsubh_s16 (a
, b
);
802 /* { dg-final { scan-assembler-times "\\tsqsub\\tb\[0-9\]+" 1 } } */
805 test_vqsubb_s8 (int8x1_t a
, int8x1_t b
)
807 return vqsubb_s8 (a
, b
);
810 /* { dg-final { scan-assembler-times "\\tsshl\\td\[0-9\]+" 1 } } */
813 test_vshld_s64 (int64x1_t a
, int64x1_t b
)
815 return vshld_s64 (a
, b
);
818 /* { dg-final { scan-assembler-times "\\tushl\\td\[0-9\]+" 1 } } */
821 test_vshld_u64 (uint64x1_t a
, uint64x1_t b
)
823 return vshld_u64 (a
, b
);
826 /* { dg-final { scan-assembler-times "\\tsrshl\\td\[0-9\]+" 1 } } */
829 test_vrshld_s64 (int64x1_t a
, int64x1_t b
)
831 return vrshld_s64 (a
, b
);
834 /* { dg-final { scan-assembler-times "\\turshl\\td\[0-9\]+" 1 } } */
837 test_vrshld_u64 (uint64x1_t a
, uint64x1_t b
)
839 return vrshld_u64 (a
, b
);
842 /* Other intrinsics can generate an asr instruction (vcltzd, vcgezd),
843 so we cannot check scan-assembler-times. */
845 /* { dg-final { scan-assembler "\\tasr\\tx\[0-9\]+" } } */
848 test_vshrd_n_s64 (int64x1_t a
)
850 return vshrd_n_s64 (a
, 5);
853 /* { dg-final { scan-assembler-times "\\tlsr\\tx\[0-9\]+" 1 } } */
856 test_vshrd_n_u64 (uint64x1_t a
)
858 return vshrd_n_u64 (a
, 3);
861 /* { dg-final { scan-assembler-times "\\tssra\\td\[0-9\]+" 1 } } */
864 test_vsrad_n_s64 (int64x1_t a
, int64x1_t b
)
866 return vsrad_n_s64 (a
, b
, 2);
869 /* { dg-final { scan-assembler-times "\\tusra\\td\[0-9\]+" 1 } } */
872 test_vsrad_n_u64 (uint64x1_t a
, uint64x1_t b
)
874 return vsrad_n_u64 (a
, b
, 5);
877 /* { dg-final { scan-assembler-times "\\tsrshr\\td\[0-9\]+" 1 } } */
880 test_vrshrd_n_s64 (int64x1_t a
)
882 return vrshrd_n_s64 (a
, 5);
885 /* { dg-final { scan-assembler-times "\\turshr\\td\[0-9\]+" 1 } } */
888 test_vrshrd_n_u64 (uint64x1_t a
)
890 return vrshrd_n_u64 (a
, 3);
893 /* { dg-final { scan-assembler-times "\\tsrsra\\td\[0-9\]+" 1 } } */
896 test_vrsrad_n_s64 (int64x1_t a
, int64x1_t b
)
898 return vrsrad_n_s64 (a
, b
, 3);
901 /* { dg-final { scan-assembler-times "\\tsrsra\\td\[0-9\]+" 1 } } */
904 test_vrsrad_n_u64 (uint64x1_t a
, uint64x1_t b
)
906 return vrsrad_n_u64 (a
, b
, 4);
909 /* { dg-final { scan-assembler-times "\\tsqrshl\\tb\[0-9\]+" 1 } } */
912 test_vqrshlb_s8 (int8x1_t a
, int8x1_t b
)
914 return vqrshlb_s8 (a
, b
);
917 /* { dg-final { scan-assembler-times "\\tsqrshl\\th\[0-9\]+" 1 } } */
920 test_vqrshlh_s16 (int16x1_t a
, int16x1_t b
)
922 return vqrshlh_s16 (a
, b
);
925 /* { dg-final { scan-assembler-times "\\tsqrshl\\ts\[0-9\]+" 1 } } */
928 test_vqrshls_s32 (int32x1_t a
, int32x1_t b
)
930 return vqrshls_s32 (a
, b
);
933 /* { dg-final { scan-assembler-times "\\tsqrshl\\td\[0-9\]+" 1 } } */
936 test_vqrshld_s64 (int64x1_t a
, int64x1_t b
)
938 return vqrshld_s64 (a
, b
);
941 /* { dg-final { scan-assembler-times "\\tuqrshl\\tb\[0-9\]+" 1 } } */
944 test_vqrshlb_u8 (uint8x1_t a
, uint8x1_t b
)
946 return vqrshlb_u8 (a
, b
);
949 /* { dg-final { scan-assembler-times "\\tuqrshl\\th\[0-9\]+" 1 } } */
952 test_vqrshlh_u16 (uint16x1_t a
, uint16x1_t b
)
954 return vqrshlh_u16 (a
, b
);
957 /* { dg-final { scan-assembler-times "\\tuqrshl\\ts\[0-9\]+" 1 } } */
960 test_vqrshls_u32 (uint32x1_t a
, uint32x1_t b
)
962 return vqrshls_u32 (a
, b
);
965 /* { dg-final { scan-assembler-times "\\tuqrshl\\td\[0-9\]+" 1 } } */
968 test_vqrshld_u64 (uint64x1_t a
, uint64x1_t b
)
970 return vqrshld_u64 (a
, b
);
973 /* { dg-final { scan-assembler-times "\\tsqshlu\\tb\[0-9\]+" 1 } } */
976 test_vqshlub_n_s8 (int8x1_t a
)
978 return vqshlub_n_s8 (a
, 3);
981 /* { dg-final { scan-assembler-times "\\tsqshlu\\th\[0-9\]+" 1 } } */
984 test_vqshluh_n_s16 (int16x1_t a
)
986 return vqshluh_n_s16 (a
, 4);
989 /* { dg-final { scan-assembler-times "\\tsqshlu\\ts\[0-9\]+" 1 } } */
992 test_vqshlus_n_s32 (int32x1_t a
)
994 return vqshlus_n_s32 (a
, 5);
997 /* { dg-final { scan-assembler-times "\\tsqshlu\\td\[0-9\]+" 1 } } */
1000 test_vqshlud_n_s64 (int64x1_t a
)
1002 return vqshlud_n_s64 (a
, 6);
1005 /* { dg-final { scan-assembler-times "\\tsqshl\\tb\[0-9\]+" 2 } } */
1008 test_vqshlb_s8 (int8x1_t a
, int8x1_t b
)
1010 return vqshlb_s8 (a
, b
);
1014 test_vqshlb_n_s8 (int8x1_t a
)
1016 return vqshlb_n_s8 (a
, 2);
1019 /* { dg-final { scan-assembler-times "\\tsqshl\\th\[0-9\]+" 2 } } */
1022 test_vqshlh_s16 (int16x1_t a
, int16x1_t b
)
1024 return vqshlh_s16 (a
, b
);
1028 test_vqshlh_n_s16 (int16x1_t a
)
1030 return vqshlh_n_s16 (a
, 3);
1033 /* { dg-final { scan-assembler-times "\\tsqshl\\ts\[0-9\]+" 2 } } */
1036 test_vqshls_s32 (int32x1_t a
, int32x1_t b
)
1038 return vqshls_s32 (a
, b
);
1042 test_vqshls_n_s32 (int32x1_t a
)
1044 return vqshls_n_s32 (a
, 4);
1047 /* { dg-final { scan-assembler-times "\\tsqshl\\td\[0-9\]+" 2 } } */
1050 test_vqshld_s64 (int64x1_t a
, int64x1_t b
)
1052 return vqshld_s64 (a
, b
);
1056 test_vqshld_n_s64 (int64x1_t a
)
1058 return vqshld_n_s64 (a
, 5);
1061 /* { dg-final { scan-assembler-times "\\tuqshl\\tb\[0-9\]+" 2 } } */
1064 test_vqshlb_u8 (uint8x1_t a
, uint8x1_t b
)
1066 return vqshlb_u8 (a
, b
);
1070 test_vqshlb_n_u8 (uint8x1_t a
)
1072 return vqshlb_n_u8 (a
, 2);
1075 /* { dg-final { scan-assembler-times "\\tuqshl\\th\[0-9\]+" 2 } } */
1078 test_vqshlh_u16 (uint16x1_t a
, uint16x1_t b
)
1080 return vqshlh_u16 (a
, b
);
1084 test_vqshlh_n_u16 (uint16x1_t a
)
1086 return vqshlh_n_u16 (a
, 3);
1089 /* { dg-final { scan-assembler-times "\\tuqshl\\ts\[0-9\]+" 2 } } */
1092 test_vqshls_u32 (uint32x1_t a
, uint32x1_t b
)
1094 return vqshls_u32 (a
, b
);
1098 test_vqshls_n_u32 (uint32x1_t a
)
1100 return vqshls_n_u32 (a
, 4);
1103 /* { dg-final { scan-assembler-times "\\tuqshl\\td\[0-9\]+" 2 } } */
1106 test_vqshld_u64 (uint64x1_t a
, uint64x1_t b
)
1108 return vqshld_u64 (a
, b
);
1112 test_vqshld_n_u64 (uint64x1_t a
)
1114 return vqshld_n_u64 (a
, 5);
1117 /* { dg-final { scan-assembler-times "\\tsqshrun\\tb\[0-9\]+" 1 } } */
1120 test_vqshrunh_n_s16 (int16x1_t a
)
1122 return vqshrunh_n_s16 (a
, 2);
1125 /* { dg-final { scan-assembler-times "\\tsqshrun\\th\[0-9\]+" 1 } } */
1128 test_vqshruns_n_s32 (int32x1_t a
)
1130 return vqshruns_n_s32 (a
, 3);
1133 /* { dg-final { scan-assembler-times "\\tsqshrun\\ts\[0-9\]+" 1 } } */
1136 test_vqshrund_n_s64 (int64x1_t a
)
1138 return vqshrund_n_s64 (a
, 4);
1141 /* { dg-final { scan-assembler-times "\\tsqrshrun\\tb\[0-9\]+" 1 } } */
1144 test_vqrshrunh_n_s16 (int16x1_t a
)
1146 return vqrshrunh_n_s16 (a
, 2);
1149 /* { dg-final { scan-assembler-times "\\tsqrshrun\\th\[0-9\]+" 1 } } */
1152 test_vqrshruns_n_s32 (int32x1_t a
)
1154 return vqrshruns_n_s32 (a
, 3);
1157 /* { dg-final { scan-assembler-times "\\tsqrshrun\\ts\[0-9\]+" 1 } } */
1160 test_vqrshrund_n_s64 (int64x1_t a
)
1162 return vqrshrund_n_s64 (a
, 4);
1165 /* { dg-final { scan-assembler-times "\\tsqshrn\\tb\[0-9\]+" 1 } } */
1168 test_vqshrnh_n_s16 (int16x1_t a
)
1170 return vqshrnh_n_s16 (a
, 2);
1173 /* { dg-final { scan-assembler-times "\\tsqshrn\\th\[0-9\]+" 1 } } */
1176 test_vqshrns_n_s32 (int32x1_t a
)
1178 return vqshrns_n_s32 (a
, 3);
1181 /* { dg-final { scan-assembler-times "\\tsqshrn\\ts\[0-9\]+" 1 } } */
1184 test_vqshrnd_n_s64 (int64x1_t a
)
1186 return vqshrnd_n_s64 (a
, 4);
1189 /* { dg-final { scan-assembler-times "\\tuqshrn\\tb\[0-9\]+" 1 } } */
1192 test_vqshrnh_n_u16 (uint16x1_t a
)
1194 return vqshrnh_n_u16 (a
, 2);
1197 /* { dg-final { scan-assembler-times "\\tuqshrn\\th\[0-9\]+" 1 } } */
1200 test_vqshrns_n_u32 (uint32x1_t a
)
1202 return vqshrns_n_u32 (a
, 3);
1205 /* { dg-final { scan-assembler-times "\\tuqshrn\\ts\[0-9\]+" 1 } } */
1208 test_vqshrnd_n_u64 (uint64x1_t a
)
1210 return vqshrnd_n_u64 (a
, 4);
1213 /* { dg-final { scan-assembler-times "\\tsqrshrn\\tb\[0-9\]+" 1 } } */
1216 test_vqrshrnh_n_s16 (int16x1_t a
)
1218 return vqrshrnh_n_s16 (a
, 2);
1221 /* { dg-final { scan-assembler-times "\\tsqrshrn\\th\[0-9\]+" 1 } } */
1224 test_vqrshrns_n_s32 (int32x1_t a
)
1226 return vqrshrns_n_s32 (a
, 3);
1229 /* { dg-final { scan-assembler-times "\\tsqrshrn\\ts\[0-9\]+" 1 } } */
1232 test_vqrshrnd_n_s64 (int64x1_t a
)
1234 return vqrshrnd_n_s64 (a
, 4);
1237 /* { dg-final { scan-assembler-times "\\tuqrshrn\\tb\[0-9\]+" 1 } } */
1240 test_vqrshrnh_n_u16 (uint16x1_t a
)
1242 return vqrshrnh_n_u16 (a
, 2);
1245 /* { dg-final { scan-assembler-times "\\tuqrshrn\\th\[0-9\]+" 1 } } */
1248 test_vqrshrns_n_u32 (uint32x1_t a
)
1250 return vqrshrns_n_u32 (a
, 3);
1253 /* { dg-final { scan-assembler-times "\\tuqrshrn\\ts\[0-9\]+" 1 } } */
1256 test_vqrshrnd_n_u64 (uint64x1_t a
)
1258 return vqrshrnd_n_u64 (a
, 4);
1261 /* { dg-final { scan-assembler-times "\\tlsl\\tx\[0-9\]+" 2 } } */
1264 test_vshl_n_s64 (int64x1_t a
)
1266 return vshld_n_s64 (a
, 9);
1270 test_vshl_n_u64 (uint64x1_t a
)
1272 return vshld_n_u64 (a
, 9);
1275 /* { dg-final { scan-assembler-times "\\tsli\\td\[0-9\]+" 2 } } */
1278 test_vsli_n_s64 (int64x1_t a
, int64x1_t b
)
1280 return vslid_n_s64 (a
, b
, 9);
1284 test_vsli_n_u64 (uint64x1_t a
, uint64x1_t b
)
1286 return vslid_n_u64 (a
, b
, 9);
1289 /* { dg-final { scan-assembler-times "\\tsri\\td\[0-9\]+" 2 } } */
1292 test_vsri_n_s64 (int64x1_t a
, int64x1_t b
)
1294 return vsrid_n_s64 (a
, b
, 9);
1298 test_vsri_n_u64 (uint64x1_t a
, uint64x1_t b
)
1300 return vsrid_n_u64 (a
, b
, 9);