1 /* { dg-do compile } */
2 /* { dg-require-effective-target arm_neon_ok } */
3 /* { dg-options "-O2" } */
4 /* { dg-add-options arm_neon } */
9 tst_vrev642_u16 (uint16x4_t __a
)
12 uint16x4_t __mask1
= { 3, 2, 1, 0};
13 return __builtin_shuffle ( __a
, __mask1
) ;
17 tst_vrev64q2_u16 (uint16x8_t __a
)
20 uint16x8_t __mask1
= {3, 2, 1, 0, 7, 6, 5, 4 };
21 return __builtin_shuffle ( __a
, __mask1
) ;
25 tst_vrev642_u8 (uint8x8_t __a
)
28 uint8x8_t __mask1
= { 7, 6, 5, 4, 3, 2, 1, 0};
29 return __builtin_shuffle ( __a
, __mask1
) ;
33 tst_vrev64q2_u8 (uint8x16_t __a
)
36 uint8x16_t __mask1
= {7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8};
37 return __builtin_shuffle ( __a
, __mask1
) ;
42 tst_vrev642_u32 (uint32x2_t __a
)
45 uint32x2_t __mask1
= {1, 0};
46 return __builtin_shuffle ( __a
, __mask1
) ;
51 tst_vrev64q2_u32 (uint32x4_t __a
)
54 uint32x4_t __mask1
= {1, 0, 3, 2};
55 return __builtin_shuffle ( __a
, __mask1
) ;
59 tst_vrev322_u16 (uint16x4_t __a
)
61 uint16x4_t __mask1
= { 1, 0, 3, 2 };
62 return __builtin_shuffle (__a
, __mask1
);
66 tst_vrev32q2_u16 (uint16x8_t __a
)
68 uint16x8_t __mask1
= { 1, 0, 3, 2, 5, 4, 7, 6 };
69 return __builtin_shuffle (__a
, __mask1
);
73 tst_vrev322_u8 (uint8x8_t __a
)
75 uint8x8_t __mask1
= { 3, 2, 1, 0, 7, 6, 5, 4};
76 return __builtin_shuffle (__a
, __mask1
);
80 tst_vrev32q2_u8 (uint8x16_t __a
)
82 uint8x16_t __mask1
= { 3, 2, 1, 0, 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12};
83 return __builtin_shuffle (__a
, __mask1
);
87 tst_vrev162_u8 (uint8x8_t __a
)
89 uint8x8_t __mask
= { 1, 0, 3, 2, 5, 4, 7, 6};
90 return __builtin_shuffle (__a
, __mask
);
94 tst_vrev16q2_u8 (uint8x16_t __a
)
96 uint8x16_t __mask
= { 1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14};
97 return __builtin_shuffle (__a
, __mask
);
100 /* { dg-final {scan-assembler-times "vrev32\.16\\t" 2} } */
101 /* { dg-final {scan-assembler-times "vrev32\.8\\t" 2} } */
102 /* { dg-final {scan-assembler-times "vrev16\.8\\t" 2} } */
103 /* { dg-final {scan-assembler-times "vrev64\.8\\t" 2} } */
104 /* { dg-final {scan-assembler-times "vrev64\.32\\t" 2} } */
105 /* { dg-final {scan-assembler-times "vrev64\.16\\t" 2} } */