PR/61062 Fix arm_neon.h ZIP/UZP/TRN for bigendian.
[official-gcc.git] / gcc / testsuite / gcc.target / arm / neon-vrev.c
blob10f41bc32bbe24c0a2e9b2034cee2e249dacb10a
1 /* { dg-do compile } */
2 /* { dg-require-effective-target arm_neon_ok } */
3 /* { dg-options "-O2" } */
4 /* { dg-add-options arm_neon } */
6 #include <arm_neon.h>
8 uint16x4_t
9 tst_vrev642_u16 (uint16x4_t __a)
11 uint16x4_t __rv;
12 uint16x4_t __mask1 = { 3, 2, 1, 0};
13 return __builtin_shuffle ( __a, __mask1) ;
16 uint16x8_t
17 tst_vrev64q2_u16 (uint16x8_t __a)
19 uint16x8_t __rv;
20 uint16x8_t __mask1 = {3, 2, 1, 0, 7, 6, 5, 4 };
21 return __builtin_shuffle ( __a, __mask1) ;
24 uint8x8_t
25 tst_vrev642_u8 (uint8x8_t __a)
27 uint8x8_t __rv;
28 uint8x8_t __mask1 = { 7, 6, 5, 4, 3, 2, 1, 0};
29 return __builtin_shuffle ( __a, __mask1) ;
32 uint8x16_t
33 tst_vrev64q2_u8 (uint8x16_t __a)
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) ;
41 uint32x2_t
42 tst_vrev642_u32 (uint32x2_t __a)
44 uint32x2_t __rv;
45 uint32x2_t __mask1 = {1, 0};
46 return __builtin_shuffle ( __a, __mask1) ;
50 uint32x4_t
51 tst_vrev64q2_u32 (uint32x4_t __a)
53 uint32x4_t __rv;
54 uint32x4_t __mask1 = {1, 0, 3, 2};
55 return __builtin_shuffle ( __a, __mask1) ;
58 uint16x4_t
59 tst_vrev322_u16 (uint16x4_t __a)
61 uint16x4_t __mask1 = { 1, 0, 3, 2 };
62 return __builtin_shuffle (__a, __mask1);
65 uint16x8_t
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);
72 uint8x8_t
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);
79 uint8x16_t
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);
86 uint8x8_t
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);
93 uint8x16_t
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} } */