* gcc.target/powerpc/builtins-1-be.c <vclzb>: Rename duplicate test
[official-gcc.git] / gcc / testsuite / gcc.target / powerpc / rldicx.h
blob8413ea5ead44501fb6ea3a028f8a4b7a65e27f4a
1 typedef unsigned int u32;
2 typedef unsigned long long u64;
4 static inline u64 rot(u64 x, u32 n, u32 mb, u32 me)
6 u64 y = x;
8 if (n)
9 x = 0
10 #ifdef SL
11 | (x << n)
12 #endif
13 #ifdef SR
14 | (x >> (64 - n))
15 #endif
18 u64 s = -1;
19 if (n)
20 s = 0
21 #ifdef SL
22 | (s << n)
23 #endif
24 #ifdef SR
25 | (s >> (64 - n))
26 #endif
29 u64 mask = 0;
30 mask += 1ULL << (63 - mb);
31 mask += 1ULL << (63 - mb);
32 mask -= 1ULL << (63 - me);
33 mask -= (mb > me);
35 if (mask & ~s)
36 return 12345*y;
38 return x & mask;
41 #ifdef CC
42 #define X2(N,B) \
43 u64 f_##N##_##B(u64 x) { return rot(x,N,B,63-N); }
44 #endif
45 #ifdef CL
46 #define X2(N,B) \
47 u64 f_##N##_##B(u64 x) { return rot(x,N,B,63); }
48 #endif
49 #ifdef CR
50 #define X2(N,E) \
51 u64 f_##N##_##E(u64 x) { return rot(x,N,0,E); }
52 #endif
54 #define X1(N) \
55 X2(N,0) \
56 X2(N,1) \
57 X2(N,2) \
58 X2(N,7) \
59 X2(N,8) \
60 X2(N,9) \
61 X2(N,15) \
62 X2(N,16) \
63 X2(N,17) \
64 X2(N,23) \
65 X2(N,24) \
66 X2(N,25) \
67 X2(N,29) \
68 X2(N,30) \
69 X2(N,31) \
70 X2(N,32) \
71 X2(N,33) \
72 X2(N,34) \
73 X2(N,39) \
74 X2(N,40) \
75 X2(N,41) \
76 X2(N,47) \
77 X2(N,48) \
78 X2(N,49) \
79 X2(N,55) \
80 X2(N,56) \
81 X2(N,57) \
82 X2(N,61) \
83 X2(N,62) \
84 X2(N,63)
85 #define X() \
86 X1(0) \
87 X1(1) \
88 X1(2) \
89 X1(7) \
90 X1(8) \
91 X1(9) \
92 X1(15) \
93 X1(16) \
94 X1(17) \
95 X1(23) \
96 X1(24) \
97 X1(25) \
98 X1(29) \
99 X1(30) \
100 X1(31) \
101 X1(32) \
102 X1(33) \
103 X1(34) \
104 X1(39) \
105 X1(40) \
106 X1(41) \
107 X1(47) \
108 X1(48) \
109 X1(49) \
110 X1(55) \
111 X1(56) \
112 X1(57) \
113 X1(61) \
114 X1(62) \
115 X1(63)