1 /* { dg-do compile } */
2 /* { dg-require-effective-target arm_neon_ok } */
3 /* { dg-options "-O2" } */
4 /* { dg-add-options arm_neon } */
5 
6 #include <arm_neon.h>
7 
8 uint16x4_t
tst_vrev642_u16(uint16x4_t __a)9 tst_vrev642_u16 (uint16x4_t __a)
10 {
11   uint16x4_t __rv;
12   uint16x4_t __mask1 = { 3, 2, 1, 0};
13   return __builtin_shuffle ( __a, __mask1) ;
14 }
15 
16 uint16x8_t
tst_vrev64q2_u16(uint16x8_t __a)17 tst_vrev64q2_u16 (uint16x8_t __a)
18 {
19   uint16x8_t __rv;
20   uint16x8_t __mask1 = {3, 2, 1, 0, 7, 6, 5, 4 };
21   return __builtin_shuffle ( __a, __mask1) ;
22 }
23 
24 uint8x8_t
tst_vrev642_u8(uint8x8_t __a)25 tst_vrev642_u8 (uint8x8_t __a)
26 {
27   uint8x8_t __rv;
28   uint8x8_t __mask1 = { 7, 6, 5, 4, 3, 2, 1, 0};
29   return __builtin_shuffle ( __a, __mask1) ;
30 }
31 
32 uint8x16_t
tst_vrev64q2_u8(uint8x16_t __a)33 tst_vrev64q2_u8 (uint8x16_t __a)
34 {
35   uint8x16_t __rv;
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) ;
38 
39 }
40 
41 uint32x2_t
tst_vrev642_u32(uint32x2_t __a)42 tst_vrev642_u32 (uint32x2_t __a)
43 {
44   uint32x2_t __rv;
45   uint32x2_t __mask1 = {1, 0};
46   return __builtin_shuffle ( __a, __mask1) ;
47 
48 }
49 
50 uint32x4_t
tst_vrev64q2_u32(uint32x4_t __a)51 tst_vrev64q2_u32 (uint32x4_t __a)
52 {
53   uint32x4_t __rv;
54   uint32x4_t __mask1 = {1, 0, 3, 2};
55   return __builtin_shuffle ( __a, __mask1) ;
56 }
57 
58 uint16x4_t
tst_vrev322_u16(uint16x4_t __a)59 tst_vrev322_u16 (uint16x4_t __a)
60 {
61   uint16x4_t __mask1 = { 1, 0, 3, 2 };
62   return __builtin_shuffle (__a, __mask1);
63 }
64 
65 uint16x8_t
tst_vrev32q2_u16(uint16x8_t __a)66 tst_vrev32q2_u16 (uint16x8_t __a)
67 {
68   uint16x8_t __mask1 = { 1, 0, 3, 2, 5, 4, 7, 6 };
69   return __builtin_shuffle (__a, __mask1);
70 }
71 
72 uint8x8_t
tst_vrev322_u8(uint8x8_t __a)73 tst_vrev322_u8 (uint8x8_t __a)
74 {
75   uint8x8_t __mask1 = { 3, 2, 1, 0, 7, 6, 5, 4};
76   return __builtin_shuffle (__a, __mask1);
77 }
78 
79 uint8x16_t
tst_vrev32q2_u8(uint8x16_t __a)80 tst_vrev32q2_u8 (uint8x16_t __a)
81 {
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);
84 }
85 
86 uint8x8_t
tst_vrev162_u8(uint8x8_t __a)87 tst_vrev162_u8 (uint8x8_t __a)
88 {
89   uint8x8_t __mask = { 1, 0, 3, 2, 5, 4, 7, 6};
90   return __builtin_shuffle (__a, __mask);
91 }
92 
93 uint8x16_t
tst_vrev16q2_u8(uint8x16_t __a)94 tst_vrev16q2_u8 (uint8x16_t __a)
95 {
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);
98 }
99 
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} }  */
106