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