PR inline-asm/84742
[official-gcc.git] / gcc / testsuite / gcc.c-torture / execute / ashrdi-1.c
blobc032b0c18be04da35c29192058d2c71d3e2aef27
1 #include <limits.h>
3 extern void abort(void);
4 extern void exit(int);
6 #if __LONG_LONG_MAX__ == 9223372036854775807LL
7 #define BITS 64
9 static long long const zext[64] = {
10 0x7654321fedcba980LL,
11 0x3b2a190ff6e5d4c0LL,
12 0x1d950c87fb72ea60LL,
13 0xeca8643fdb97530LL,
14 0x7654321fedcba98LL,
15 0x3b2a190ff6e5d4cLL,
16 0x1d950c87fb72ea6LL,
17 0xeca8643fdb9753LL,
18 0x7654321fedcba9LL,
19 0x3b2a190ff6e5d4LL,
20 0x1d950c87fb72eaLL,
21 0xeca8643fdb975LL,
22 0x7654321fedcbaLL,
23 0x3b2a190ff6e5dLL,
24 0x1d950c87fb72eLL,
25 0xeca8643fdb97LL,
26 0x7654321fedcbLL,
27 0x3b2a190ff6e5LL,
28 0x1d950c87fb72LL,
29 0xeca8643fdb9LL,
30 0x7654321fedcLL,
31 0x3b2a190ff6eLL,
32 0x1d950c87fb7LL,
33 0xeca8643fdbLL,
34 0x7654321fedLL,
35 0x3b2a190ff6LL,
36 0x1d950c87fbLL,
37 0xeca8643fdLL,
38 0x7654321feLL,
39 0x3b2a190ffLL,
40 0x1d950c87fLL,
41 0xeca8643fLL,
42 0x7654321fLL,
43 0x3b2a190fLL,
44 0x1d950c87LL,
45 0xeca8643LL,
46 0x7654321LL,
47 0x3b2a190LL,
48 0x1d950c8LL,
49 0xeca864LL,
50 0x765432LL,
51 0x3b2a19LL,
52 0x1d950cLL,
53 0xeca86LL,
54 0x76543LL,
55 0x3b2a1LL,
56 0x1d950LL,
57 0xeca8LL,
58 0x7654LL,
59 0x3b2aLL,
60 0x1d95LL,
61 0xecaLL,
62 0x765LL,
63 0x3b2LL,
64 0x1d9LL,
65 0xecLL,
66 0x76LL,
67 0x3bLL,
68 0x1dLL,
69 0xeLL,
70 0x7LL,
71 0x3LL,
72 0x1LL,
73 0LL
76 static long long const sext[64] = {
77 0x8edcba9f76543210LL,
78 0xc76e5d4fbb2a1908LL,
79 0xe3b72ea7dd950c84LL,
80 0xf1db9753eeca8642LL,
81 0xf8edcba9f7654321LL,
82 0xfc76e5d4fbb2a190LL,
83 0xfe3b72ea7dd950c8LL,
84 0xff1db9753eeca864LL,
85 0xff8edcba9f765432LL,
86 0xffc76e5d4fbb2a19LL,
87 0xffe3b72ea7dd950cLL,
88 0xfff1db9753eeca86LL,
89 0xfff8edcba9f76543LL,
90 0xfffc76e5d4fbb2a1LL,
91 0xfffe3b72ea7dd950LL,
92 0xffff1db9753eeca8LL,
93 0xffff8edcba9f7654LL,
94 0xffffc76e5d4fbb2aLL,
95 0xffffe3b72ea7dd95LL,
96 0xfffff1db9753eecaLL,
97 0xfffff8edcba9f765LL,
98 0xfffffc76e5d4fbb2LL,
99 0xfffffe3b72ea7dd9LL,
100 0xffffff1db9753eecLL,
101 0xffffff8edcba9f76LL,
102 0xffffffc76e5d4fbbLL,
103 0xffffffe3b72ea7ddLL,
104 0xfffffff1db9753eeLL,
105 0xfffffff8edcba9f7LL,
106 0xfffffffc76e5d4fbLL,
107 0xfffffffe3b72ea7dLL,
108 0xffffffff1db9753eLL,
109 0xffffffff8edcba9fLL,
110 0xffffffffc76e5d4fLL,
111 0xffffffffe3b72ea7LL,
112 0xfffffffff1db9753LL,
113 0xfffffffff8edcba9LL,
114 0xfffffffffc76e5d4LL,
115 0xfffffffffe3b72eaLL,
116 0xffffffffff1db975LL,
117 0xffffffffff8edcbaLL,
118 0xffffffffffc76e5dLL,
119 0xffffffffffe3b72eLL,
120 0xfffffffffff1db97LL,
121 0xfffffffffff8edcbLL,
122 0xfffffffffffc76e5LL,
123 0xfffffffffffe3b72LL,
124 0xffffffffffff1db9LL,
125 0xffffffffffff8edcLL,
126 0xffffffffffffc76eLL,
127 0xffffffffffffe3b7LL,
128 0xfffffffffffff1dbLL,
129 0xfffffffffffff8edLL,
130 0xfffffffffffffc76LL,
131 0xfffffffffffffe3bLL,
132 0xffffffffffffff1dLL,
133 0xffffffffffffff8eLL,
134 0xffffffffffffffc7LL,
135 0xffffffffffffffe3LL,
136 0xfffffffffffffff1LL,
137 0xfffffffffffffff8LL,
138 0xfffffffffffffffcLL,
139 0xfffffffffffffffeLL,
140 0xffffffffffffffffLL
143 #elif __LONG_LONG_MAX__ == 2147483647LL
144 #define BITS 32
146 static long long const zext[32] = {
147 0x76543218LL,
148 0x3b2a190cLL,
149 0x1d950c86LL,
150 0xeca8643LL,
151 0x7654321LL,
152 0x3b2a190LL,
153 0x1d950c8LL,
154 0xeca864LL,
155 0x765432LL,
156 0x3b2a19LL,
157 0x1d950cLL,
158 0xeca86LL,
159 0x76543LL,
160 0x3b2a1LL,
161 0x1d950LL,
162 0xeca8LL,
163 0x7654LL,
164 0x3b2aLL,
165 0x1d95LL,
166 0xecaLL,
167 0x765LL,
168 0x3b2LL,
169 0x1d9LL,
170 0xecLL,
171 0x76LL,
172 0x3bLL,
173 0x1dLL,
174 0xeLL,
175 0x7LL,
176 0x3LL,
177 0x1LL,
181 static long long const sext[64] = {
182 0x87654321LL,
183 0xc3b2a190LL,
184 0xe1d950c8LL,
185 0xf0eca864LL,
186 0xf8765432LL,
187 0xfc3b2a19LL,
188 0xfe1d950cLL,
189 0xff0eca86LL,
190 0xff876543LL,
191 0xffc3b2a1LL,
192 0xffe1d950LL,
193 0xfff0eca8LL,
194 0xfff87654LL,
195 0xfffc3b2aLL,
196 0xfffe1d95LL,
197 0xffff0ecaLL,
198 0xffff8765LL,
199 0xffffc3b2LL,
200 0xffffe1d9LL,
201 0xfffff0ecLL,
202 0xfffff876LL,
203 0xfffffc3bLL,
204 0xfffffe1dLL,
205 0xffffff0eLL,
206 0xffffff87LL,
207 0xffffffc3LL,
208 0xffffffe1LL,
209 0xfffffff0LL,
210 0xfffffff8LL,
211 0xfffffffcLL,
212 0xfffffffeLL,
213 0xffffffffLL
216 #else
217 #error "Update the test case."
218 #endif
220 static long long
221 variable_shift(long long x, int i)
223 return x >> i;
226 static long long
227 constant_shift(long long x, int i)
229 switch (i)
231 case 0: x = x >> 0; break;
232 case 1: x = x >> 1; break;
233 case 2: x = x >> 2; break;
234 case 3: x = x >> 3; break;
235 case 4: x = x >> 4; break;
236 case 5: x = x >> 5; break;
237 case 6: x = x >> 6; break;
238 case 7: x = x >> 7; break;
239 case 8: x = x >> 8; break;
240 case 9: x = x >> 9; break;
241 case 10: x = x >> 10; break;
242 case 11: x = x >> 11; break;
243 case 12: x = x >> 12; break;
244 case 13: x = x >> 13; break;
245 case 14: x = x >> 14; break;
246 case 15: x = x >> 15; break;
247 case 16: x = x >> 16; break;
248 case 17: x = x >> 17; break;
249 case 18: x = x >> 18; break;
250 case 19: x = x >> 19; break;
251 case 20: x = x >> 20; break;
252 case 21: x = x >> 21; break;
253 case 22: x = x >> 22; break;
254 case 23: x = x >> 23; break;
255 case 24: x = x >> 24; break;
256 case 25: x = x >> 25; break;
257 case 26: x = x >> 26; break;
258 case 27: x = x >> 27; break;
259 case 28: x = x >> 28; break;
260 case 29: x = x >> 29; break;
261 case 30: x = x >> 30; break;
262 case 31: x = x >> 31; break;
263 #if BITS > 32
264 case 32: x = x >> 32; break;
265 case 33: x = x >> 33; break;
266 case 34: x = x >> 34; break;
267 case 35: x = x >> 35; break;
268 case 36: x = x >> 36; break;
269 case 37: x = x >> 37; break;
270 case 38: x = x >> 38; break;
271 case 39: x = x >> 39; break;
272 case 40: x = x >> 40; break;
273 case 41: x = x >> 41; break;
274 case 42: x = x >> 42; break;
275 case 43: x = x >> 43; break;
276 case 44: x = x >> 44; break;
277 case 45: x = x >> 45; break;
278 case 46: x = x >> 46; break;
279 case 47: x = x >> 47; break;
280 case 48: x = x >> 48; break;
281 case 49: x = x >> 49; break;
282 case 50: x = x >> 50; break;
283 case 51: x = x >> 51; break;
284 case 52: x = x >> 52; break;
285 case 53: x = x >> 53; break;
286 case 54: x = x >> 54; break;
287 case 55: x = x >> 55; break;
288 case 56: x = x >> 56; break;
289 case 57: x = x >> 57; break;
290 case 58: x = x >> 58; break;
291 case 59: x = x >> 59; break;
292 case 60: x = x >> 60; break;
293 case 61: x = x >> 61; break;
294 case 62: x = x >> 62; break;
295 case 63: x = x >> 63; break;
296 #endif
298 default:
299 abort ();
301 return x;
305 main()
307 int i;
309 for (i = 0; i < BITS; ++i)
311 long long y = variable_shift (zext[0], i);
312 if (y != zext[i])
313 abort ();
315 for (i = 0; i < BITS; ++i)
317 long long y = variable_shift (sext[0], i);
318 if (y != sext[i])
319 abort ();
321 for (i = 0; i < BITS; ++i)
323 long long y = constant_shift (zext[0], i);
324 if (y != zext[i])
325 abort ();
327 for (i = 0; i < BITS; ++i)
329 long long y = constant_shift (sext[0], i);
330 if (y != sext[i])
331 abort ();
334 exit (0);