PR testsuite/52641
[official-gcc.git] / gcc / testsuite / gcc.dg / tree-ssa / vrp66-int16-sw.c
blobb194d2370e03128db2ac968c27b4df8f02bf9f30
1 /* PR tree-optimization/52267 */
2 /* { dg-do run { target { int16 } } } */
3 /* { dg-options "-O2" } */
5 extern void abort (void);
7 #define BITSM1 (sizeof (int) * __CHAR_BIT__ - 1)
8 #define BITSH ((sizeof (int) - sizeof (short)) * __CHAR_BIT__)
10 void
11 f1 (unsigned int s)
13 if ((s & (7U << (BITSM1 - 2))) != 0)
15 if (s == (0xc000U << BITSH) - 1 || s == (0xf000U << BITSH) - 1
16 || s == (0x9000U << BITSH) - 1 || s == (0xa031U << BITSH) - 1
17 || s == (0xbfbfU << BITSH) || s == (0xc000U << BITSH)
18 || s == (0xf000U << BITSH) || s == (0x9000U << BITSH)
19 || s == (0xc000U << BITSH) + 1 || s == -1U || s == -15U
20 || s == 0x3cbf || s == 0x3cc0
21 || s == -15550U || s == -15552U || s == (0x7000 << BITSH) - 1
22 || s == (0x7000 << BITSH) || s == (1 << (BITSM1 - 2))
23 || s == 1U + __INT_MAX__ || s == -32U
24 || s == (3 << (BITSM1 - 2)) + 2 || s == -5U || s == -63U
25 || s == -64U || s == -65U || s == 6U + __INT_MAX__ || s == -8189U
26 || s == -8191U || s == -8192U || s == -8193U || s == -8250U
27 || s == -8255U || s == -8256U || s == -8257U || s == __INT_MAX__
28 || s == __INT_MAX__ + 9U)
29 return;
31 else
33 if (s == 0 || s == 0x1cbf || s == 0x1cc0 || s == 0x1fff || s == 0x2000
34 || s == 0x20 || s == 0x3f || s == 1
35 || s == (1 << (BITSM1 - 2)) - 1 || s == 2 || s == 24 || s == 5)
36 return;
38 abort ();
41 void
42 f2 (int s)
44 if ((s & (7U << (BITSM1 - 2))) == 0)
46 if (s == 0 || s == 0x1cbf || s == 0x1cc0 || s == 0x1fff || s == 0x2000
47 || s == 0x20 || s == 0x3f || s == 1
48 || s == (1 << (BITSM1 - 2)) - 1 || s == 2 || s == 24 || s == 5)
49 return;
51 else
53 if (s == (-0x4000 << BITSH) - 1 || s == (-0x1000 << BITSH) - 1
54 || s == (-0x7000 << BITSH) - 1 || s == (-0x5fcf << BITSH) - 1
55 || s == (-0x4041 << BITSH) || s == (-0x4000 << BITSH)
56 || s == (-0x1000 << BITSH) || s == (-0x7000 << BITSH)
57 || s == (-0x4000 << BITSH) + 1 || s == -1 || s == -15 || s == -15550
58 || s == 0x3cbf || s == 0x3cc0
59 || s == -15552 || s == (0x7000 << BITSH) - 1
60 || s == (0x7000 << BITSH) || s == (1 << (BITSM1 - 2))
61 || s == -__INT_MAX__ - 1 || s == -32 || s == (3 << (BITSM1 - 2)) + 2
62 || s == -5 || s == -63 || s == -64 || s == -65
63 || s == -__INT_MAX__ + 4 || s == -8189 || s == -8191 || s == -8192
64 || s == -8193 || s == -8250 || s == -8255 || s == -8256
65 || s == -8257 || s == __INT_MAX__ || s == -__INT_MAX__ + 7)
66 return;
68 abort ();
71 void
72 f3 (unsigned int s)
74 if ((s & 0x3cc0) == 0)
76 if (s == 0 || s == 0x20 || s == 0x3f
77 || s == (0xc000U << BITSH)
78 || s == (0xc000U << BITSH) + 1 || s == 1
79 || s == 1U + __INT_MAX__ || s == 2 || s == 24
80 || s == 5 || s == 6U + __INT_MAX__
81 || s == __INT_MAX__ + 9U)
82 return;
84 else
86 if (s == 0x1cbf || s == 0x1cc0 || s == 0x1fff || s == 0x2000
87 || s == (0xbfbfU << BITSH) || s == (0xf000U << BITSH)
88 || s == (0x9000U << BITSH)
89 || s == (0x7000 << BITSH) || s == (1 << (BITSM1 - 2))
90 || s == (3 << (BITSM1 - 2)) + 2
91 || s == 0x3cbf || s == 0x3cc0 || s == (0xc000U << BITSH) - 1
92 || s == (0xf000U << BITSH) - 1 || s == (0x9000U << BITSH) - 1
93 || s == (0xa031U << BITSH) - 1 || s == -1U || s == -15U
94 || s == -15550U || s == -15552U || s == (0x7000 << BITSH) - 1
95 || s == (1 << (BITSM1 - 2)) - 1 || s == -32U || s == -5U
96 || s == -63U || s == -64U || s == -65U || s == -8189U || s == -8191U
97 || s == -8192U || s == -8193U || s == -8250U || s == -8255U
98 || s == -8256U || s == -8257U || s == __INT_MAX__)
99 return;
101 abort ();
104 void
105 f4 (int s)
107 if ((s & 0x3cc0) == 0)
109 if (s == 0 || s == 0x20 || s == 0x3f
110 || s == (-0x4000 << BITSH)
111 || s == (-0x4000 << BITSH) + 1 || s == 1
112 || s == -__INT_MAX__ - 1 || s == 2 || s == 24
113 || s == 5 || s == -__INT_MAX__ + 4
114 || s == -__INT_MAX__ + 7)
115 return;
117 else
119 if (s == 0x1cbf || s == 0x1cc0 || s == 0x1fff || s == 0x2000
120 || s == (-0x4041 << BITSH) || s == (-0x1000 << BITSH)
121 || s == (-0x7000 << BITSH)
122 || s == (0x7000 << BITSH) || s == (1 << (BITSM1 - 2))
123 || s == (3 << (BITSM1 - 2)) + 2
124 || s == 0x3cbf || s == 0x3cc0 || s == (-0x4000 << BITSH) - 1
125 || s == (-0x1000 << BITSH) - 1 || s == (-0x7000 << BITSH) - 1
126 || s == (-0x5fcf << BITSH) - 1 || s == -1 || s == -15 || s == -15550
127 || s == -15552 || s == (0x7000 << BITSH) - 1
128 || s == (1 << (BITSM1 - 2)) - 1 || s == -32 || s == -5 || s == -63
129 || s == -64 || s == -65 || s == -8189 || s == -8191 || s == -8192
130 || s == -8193 || s == -8250 || s == -8255 || s == -8256
131 || s == -8257 || s == __INT_MAX__)
132 return;
134 abort ();
137 void
138 f5 (int s)
140 if ((s & 0x3cc0U) == 0)
142 if (s == 0 || s == 0x20 || s == 0x3f
143 || s == (-0x4000 << BITSH)
144 || s == (-0x4000 << BITSH) + 1 || s == 1
145 || s == -__INT_MAX__ - 1 || s == 2 || s == 24
146 || s == 5 || s == -__INT_MAX__ + 4
147 || s == -__INT_MAX__ + 7)
148 return;
150 else
152 if (s == 0x1cbf || s == 0x1cc0 || s == 0x1fff || s == 0x2000
153 || s == (-0x4041 << BITSH) || s == (-0x1000 << BITSH)
154 || s == (-0x7000 << BITSH)
155 || s == (0x7000 << BITSH) || s == (1 << (BITSM1 - 2))
156 || s == (3 << (BITSM1 - 2)) + 2
157 || s == 0x3cbf || s == 0x3cc0 || s == (-0x4000 << BITSH) - 1
158 || s == (-0x1000 << BITSH) - 1 || s == (-0x7000 << BITSH) - 1
159 || s == (-0x5fcf << BITSH) - 1 || s == -1 || s == -15 || s == -15550
160 || s == -15552 || s == (0x7000 << BITSH) - 1
161 || s == (1 << (BITSM1 - 2)) - 1 || s == -32 || s == -5 || s == -63
162 || s == -64 || s == -65 || s == -8189 || s == -8191 || s == -8192
163 || s == -8193 || s == -8250 || s == -8255 || s == -8256
164 || s == -8257 || s == __INT_MAX__)
165 return;
167 abort ();
170 void
171 f6 (unsigned int s)
173 if ((s & 0x3cc0) == 0x3cc0)
175 if (s == 0x3cc0 || s == (0xc000U << BITSH) - 1
176 || s == -1U || s == -15U
177 || s == (1 << (BITSM1 - 2)) - 1
178 || s == -32U || s == -5U || s == -63U || s == -64U
179 || s == __INT_MAX__)
180 return;
182 else
184 if (s == 0 || s == 0x1cbf || s == 0x1cc0 || s == 0x1fff || s == 0x2000
185 || s == (0xf000U << BITSH) - 1 || s == (0x9000U << BITSH) - 1
186 || s == (0xa031U << BITSH) - 1
187 || s == (0x7000 << BITSH) - 1
188 || s == 0x20 || s == 0x3cbf || s == 0x3f || s == (0xbfbfU << BITSH)
189 || s == (0xc000U << BITSH) || s == (0xf000U << BITSH)
190 || s == (0x9000U << BITSH) || s == (0xc000U << BITSH) + 1 || s == 1
191 || s == -15550U || s == -15552U || s == (0x7000 << BITSH)
192 || s == (1 << (BITSM1 - 2)) || s == 1U + __INT_MAX__ || s == 2
193 || s == 24 || s == (3 << (BITSM1 - 2)) + 2 || s == 5 || s == -65U
194 || s == 6U + __INT_MAX__ || s == -8189U || s == -8191U
195 || s == -8192U || s == -8193U || s == -8250U || s == -8255U
196 || s == -8256U || s == -8257U || s == __INT_MAX__ + 9U)
197 return;
199 abort ();
202 void
203 f7 (int s)
205 if ((s & 0x3cc0) == 0x3cc0)
207 if (s == 0x3cc0 || s == (-0x4000 << BITSH) - 1
208 || s == -1 || s == -15
209 || s == (1 << (BITSM1 - 2)) - 1
210 || s == -32 || s == -5 || s == -63 || s == -64 || s == __INT_MAX__)
211 return;
213 else
215 if (s == 0 || s == 0x1cbf || s == 0x1cc0 || s == 0x1fff || s == 0x2000
216 || s == (-0x1000 << BITSH) - 1 || s == (-0x7000 << BITSH) - 1
217 || s == (-0x5fcf << BITSH) - 1
218 || s == (0x7000 << BITSH) - 1
219 || s == 0x20 || s == 0x3cbf || s == 0x3f || s == (-0x4041 << BITSH)
220 || s == (-0x4000 << BITSH) || s == (-0x1000 << BITSH)
221 || s == (-0x7000 << BITSH) || s == (-0x4000 << BITSH) + 1 || s == 1
222 || s == -15550 || s == -15552 || s == (0x7000 << BITSH)
223 || s == (1 << (BITSM1 - 2)) || s == -__INT_MAX__ - 1 || s == 2
224 || s == 24 || s == (3 << (BITSM1 - 2)) + 2 || s == 5 || s == -65
225 || s == -__INT_MAX__ + 4 || s == -8189 || s == -8191 || s == -8192
226 || s == -8193 || s == -8250 || s == -8255 || s == -8256
227 || s == -8257 || s == -__INT_MAX__ + 7)
228 return;
230 abort ();
233 void
234 f8 (int s)
236 if ((s & 0x3cc0U) == 0x3cc0)
238 if (s == 0x3cc0 || s == (-0x4000 << BITSH) - 1
239 || s == -1 || s == -15
240 || s == (1 << (BITSM1 - 2)) - 1
241 || s == -32 || s == -5 || s == -63 || s == -64 || s == __INT_MAX__)
242 return;
244 else
246 if (s == 0 || s == 0x1cbf || s == 0x1cc0 || s == 0x1fff || s == 0x2000
247 || s == (-0x1000 << BITSH) - 1 || s == (-0x7000 << BITSH) - 1
248 || s == (-0x5fcf << BITSH) - 1
249 || s == (0x7000 << BITSH) - 1
250 || s == 0x20 || s == 0x3cbf || s == 0x3f || s == (-0x4041 << BITSH)
251 || s == (-0x4000 << BITSH) || s == (-0x1000 << BITSH)
252 || s == (-0x7000 << BITSH) || s == (-0x4000 << BITSH) + 1 || s == 1
253 || s == -15550 || s == -15552 || s == (0x7000 << BITSH)
254 || s == (1 << (BITSM1 - 2)) || s == -__INT_MAX__ - 1 || s == 2
255 || s == 24 || s == (3 << (BITSM1 - 2)) + 2 || s == 5 || s == -65
256 || s == -__INT_MAX__ + 4 || s == -8189 || s == -8191 || s == -8192
257 || s == -8193 || s == -8250 || s == -8255 || s == -8256
258 || s == -8257 || s == -__INT_MAX__ + 7)
259 return;
261 abort ();
264 void
265 f9 (unsigned int s)
267 if ((s & 0x3cc0) >= 0x1cc0)
269 if (s == 0x1cc0 || s == 0x1fff || s == 0x2000 || s == 0x3cbf
270 || s == 0x3cc0 || s == (0xc000U << BITSH) - 1
271 || s == (0xf000U << BITSH) - 1
272 || s == (0xbfbfU << BITSH) || s == (0xf000U << BITSH)
273 || s == (0x7000 << BITSH)
274 || s == (1 << (BITSM1 - 2)) || s == (3 << (BITSM1 - 2)) + 2
275 || s == (0xa031U << BITSH) - 1 || s == -1U || s == -15U
276 || s == (0x7000 << BITSH) - 1 || s == (1 << (BITSM1 - 2)) - 1
277 || s == -32U || s == -5U || s == -63U || s == -64U || s == -65U
278 || s == -8189U || s == -8191U || s == -8192U || s == -8193U
279 || s == -8250U || s == -8255U || s == -8256U || s == __INT_MAX__)
280 return;
282 else
284 if (s == 0 || s == 0x1cbf || s == 0x20 || s == 0x3f
285 || s == (0x9000U << BITSH) - 1 || s == (0xc000U << BITSH)
286 || s == (0x9000U << BITSH)
287 || s == (0xc000U << BITSH) + 1 || s == 1 || s == -15550U
288 || s == -15552U
289 || s == 1U + __INT_MAX__ || s == 2
290 || s == 24 || s == 5
291 || s == 6U + __INT_MAX__ || s == -8257U || s == __INT_MAX__ + 9U)
292 return;
294 abort ();
297 void
298 f10 (unsigned int s)
300 if ((s & 0x3cc0) > 0x1cc0)
302 if (s == 0x2000 || s == 0x3cbf || s == 0x3cc0
303 || s == (0xc000U << BITSH) - 1 || s == (0xf000U << BITSH) - 1
304 || s == (0xbfbfU << BITSH) || s == (0xa031U << BITSH) - 1
305 || s == (0xf000U << BITSH)
306 || s == -1U || s == -15U || s == (0x7000 << BITSH) - 1
307 || s == (0x7000 << BITSH) || s == (1 << (BITSM1 - 2))
308 || s == -32U || s == (3 << (BITSM1 - 2)) + 2 || s == -5U
309 || s == -63U || s == -64U || s == -65U || s == -8189U || s == -8191U
310 || s == -8192U || s == __INT_MAX__)
311 return;
313 else
315 if (s == 0 || s == 0x1cbf || s == 0x1cc0 || s == 0x1fff || s == 0x20
316 || s == 0x3f || s == (0x9000U << BITSH) - 1
317 || s == (0xc000U << BITSH) || s == (0x9000U << BITSH)
318 || s == (0xc000U << BITSH) + 1 || s == 1 || s == -15550U
319 || s == -15552U || s == (1 << (BITSM1 - 2)) - 1
320 || s == 1U + __INT_MAX__ || s == 2
321 || s == 24 || s == 5
322 || s == 6U + __INT_MAX__ || s == -8193U || s == -8250U
323 || s == -8255U || s == -8256U || s == -8257U
324 || s == __INT_MAX__ + 9U)
325 return;
327 abort ();
330 void
331 f11 (int s)
333 if ((s & 0x3cc0) >= 0x1cc0)
335 if (s == 0x1cc0 || s == 0x1fff || s == 0x2000 || s == 0x3cbf
336 || s == 0x3cc0 || s == (-0x4000 << BITSH) - 1
337 || s == (-0x1000 << BITSH) - 1
338 || s == (-0x4041 << BITSH)
339 || s == (-0x1000 << BITSH)
340 || s == (0x7000 << BITSH) || s == (1 << (BITSM1 - 2))
341 || s == (3 << (BITSM1 - 2)) + 2
342 || s == (-0x5fcf << BITSH) - 1 || s == -1 || s == -15
343 || s == (0x7000 << BITSH) - 1 || s == (1 << (BITSM1 - 2)) - 1
344 || s == -32 || s == -5 || s == -63 || s == -64 || s == -65
345 || s == -8189 || s == -8191 || s == -8192 || s == -8193
346 || s == -8250 || s == -8255 || s == -8256 || s == __INT_MAX__)
347 return;
349 else
351 if (s == 0 || s == 0x1cbf || s == 0x20 || s == 0x3f
352 || s == (-0x7000 << BITSH) - 1 || s == (-0x4000 << BITSH)
353 || s == (-0x7000 << BITSH)
354 || s == (-0x4000 << BITSH) + 1 || s == 1 || s == -15550
355 || s == -15552
356 || s == -__INT_MAX__ - 1 || s == 2 || s == 24
357 || s == 5 || s == -__INT_MAX__ + 4
358 || s == -8257 || s == -__INT_MAX__ + 7)
359 return;
361 abort ();
364 void
365 f12 (int s)
367 if ((s & 0x3cc0) > 0x1cc0)
369 if (s == 0x2000 || s == 0x3cbf || s == 0x3cc0
370 || s == (-0x4000 << BITSH) - 1 || s == (-0x1000 << BITSH) - 1
371 || s == (-0x5fcf << BITSH) - 1
372 || s == (-0x4041 << BITSH)
373 || s == (-0x1000 << BITSH)
374 || s == -1 || s == -15 || s == (0x7000 << BITSH) - 1
375 || s == (0x7000 << BITSH) || s == (1 << (BITSM1 - 2))
376 || s == (3 << (BITSM1 - 2)) + 2
377 || s == -32 || s == -5 || s == -63
378 || s == -64 || s == -65 || s == -8189 || s == -8191 || s == -8192
379 || s == __INT_MAX__)
380 return;
382 else
384 if (s == 0 || s == 0x1cbf || s == 0x1cc0 || s == 0x1fff || s == 0x20
385 || s == 0x3f || s == (-0x7000 << BITSH) - 1
386 || s == (-0x4000 << BITSH) || s == (-0x7000 << BITSH)
387 || s == (-0x4000 << BITSH) + 1 || s == 1 || s == -15550
388 || s == -15552 || s == (1 << (BITSM1 - 2)) - 1
389 || s == -__INT_MAX__ - 1 || s == 2 || s == 24
390 || s == 5 || s == -__INT_MAX__ + 4
391 || s == -8193 || s == -8250 || s == -8255 || s == -8256
392 || s == -8257 || s == -__INT_MAX__ + 7)
393 return;
395 abort ();
398 void
399 f13 (unsigned int s)
401 if ((s & (0xe071U << BITSH)) > (0xb030U << BITSH))
403 if (s == (0xf000U << BITSH) - 1 || s == (0xc000U << BITSH)
404 || s == (0xf000U << BITSH) || s == (0xc000U << BITSH) + 1
405 || s == -1U || s == -15U || s == -15550U || s == -15552U
406 || s == -32U || s == -5U || s == -63U || s == -64U || s == -65U
407 || s == -8189U || s == -8191U || s == -8192U || s == -8193U
408 || s == -8250U || s == -8255U || s == -8256U || s == -8257U)
409 return;
411 else
413 if (s == 0 || s == 0x1cbf || s == 0x1cc0 || s == 0x1fff || s == 0x2000
414 || s == 0x20 || s == 0x3cbf || s == 0x3cc0 || s == 0x3f
415 || s == (0xc000U << BITSH) - 1 || s == (0x9000U << BITSH) - 1
416 || s == (0xa031U << BITSH) - 1 || s == (0xbfbfU << BITSH)
417 || s == (0x9000U << BITSH) || s == 1 || s == (0x7000 << BITSH) - 1
418 || s == (0x7000 << BITSH) || s == (1 << (BITSM1 - 2))
419 || s == (1 << (BITSM1 - 2)) - 1 || s == 1U + __INT_MAX__ || s == 2
420 || s == 24 || s == (3 << (BITSM1 - 2)) + 2 || s == 5
421 || s == 6U + __INT_MAX__ || s == __INT_MAX__
422 || s == __INT_MAX__ + 9U)
423 return;
425 abort ();
428 void
429 f14 (unsigned int s)
431 if ((s & (0xe071U << BITSH)) > (0xa030U << BITSH))
433 if (s == (0xc000U << BITSH) - 1 || s == (0xf000U << BITSH) - 1
434 || s == (0xbfbfU << BITSH) || s == (0xc000U << BITSH)
435 || s == (0xf000U << BITSH) || s == (0xc000U << BITSH) + 1
436 || s == -1U || s == -15U || s == -15550U || s == -15552U
437 || s == -32U || s == -5U || s == -63U || s == -64U || s == -65U
438 || s == -8189U || s == -8191U || s == -8192U || s == -8193U
439 || s == -8250U || s == -8255U || s == -8256U || s == -8257U)
440 return;
442 else
444 if (s == 0 || s == 0x1cbf || s == 0x1cc0 || s == 0x1fff || s == 0x2000
445 || s == 0x20 || s == 0x3cbf || s == 0x3cc0 || s == 0x3f
446 || s == (0x9000U << BITSH) - 1 || s == (0xa031U << BITSH) - 1
447 || s == (0x9000U << BITSH) || s == 1 || s == (0x7000 << BITSH) - 1
448 || s == (0x7000 << BITSH) || s == (1 << (BITSM1 - 2))
449 || s == (1 << (BITSM1 - 2)) - 1 || s == 1U + __INT_MAX__ || s == 2
450 || s == 24 || s == (3 << (BITSM1 - 2)) + 2 || s == 5
451 || s == 6U + __INT_MAX__ || s == __INT_MAX__
452 || s == __INT_MAX__ + 9U)
453 return;
455 abort ();
458 void
459 f15 (int s)
461 if ((s & ((-0x1f8f) << BITSH)) > ((-0x4fd0) << BITSH))
463 if (s == 0 || s == 0x1cbf || s == 0x1cc0 || s == 0x1fff || s == 0x2000
464 || s == 0x20 || s == 0x3cbf || s == 0x3cc0 || s == 0x3f
465 || s == (-0x1000 << BITSH) - 1 || s == (-0x4000 << BITSH)
466 || s == (-0x1000 << BITSH) || s == (-0x4000 << BITSH) + 1 || s == 1
467 || s == -1 || s == -15 || s == -15550 || s == -15552
468 || s == (0x7000 << BITSH) - 1 || s == (0x7000 << BITSH)
469 || s == (1 << (BITSM1 - 2)) || s == (1 << (BITSM1 - 2)) - 1
470 || s == 2 || s == 24 || s == -32 || s == (3 << (BITSM1 - 2)) + 2
471 || s == 5 || s == -5 || s == -63 || s == -64 || s == -65
472 || s == -8189 || s == -8191 || s == -8192 || s == -8193
473 || s == -8250 || s == -8255 || s == -8256 || s == -8257
474 || s == __INT_MAX__)
475 return;
477 else
479 if (s == (-0x4000 << BITSH) - 1 || s == (-0x7000 << BITSH) - 1
480 || s == (-0x5fcf << BITSH) - 1 || s == (-0x4041 << BITSH)
481 || s == (-0x7000 << BITSH) || s == -__INT_MAX__ - 1
482 || s == -__INT_MAX__ + 4 || s == -__INT_MAX__ + 7)
483 return;
485 abort ();
488 void
489 f16 (int s)
491 if ((s & ((-0x1f8f) << BITSH)) >= ((-0x4fd0) << BITSH))
493 if (s == 0 || s == 0x1cbf || s == 0x1cc0 || s == 0x1fff || s == 0x2000
494 || s == 0x20 || s == 0x3cbf || s == 0x3cc0 || s == 0x3f
495 || s == (-0x1000 << BITSH) - 1 || s == (-0x4000 << BITSH)
496 || s == (-0x1000 << BITSH) || s == (-0x4000 << BITSH) + 1 || s == 1
497 || s == -1 || s == -15 || s == -15550 || s == -15552
498 || s == (0x7000 << BITSH) - 1 || s == (0x7000 << BITSH)
499 || s == (1 << (BITSM1 - 2)) || s == (1 << (BITSM1 - 2)) - 1
500 || s == 2 || s == 24 || s == -32 || s == (3 << (BITSM1 - 2)) + 2
501 || s == 5 || s == -5 || s == -63 || s == -64 || s == -65
502 || s == -8189 || s == -8191 || s == -8192 || s == -8193
503 || s == -8250 || s == -8255 || s == -8256 || s == -8257
504 || s == __INT_MAX__)
505 return;
507 else
509 if (s == (-0x4000 << BITSH) - 1 || s == (-0x7000 << BITSH) - 1
510 || s == (-0x5fcf << BITSH) - 1 || s == (-0x4041 << BITSH)
511 || s == (-0x7000 << BITSH) || s == -__INT_MAX__ - 1
512 || s == -__INT_MAX__ + 4 || s == -__INT_MAX__ + 7)
513 return;
515 abort ();
518 void
519 f17 (int s)
521 if ((s & ((-0x4000 << BITSH) | 1)) != -__INT_MAX__ - 1)
523 if (s == 0 || s == 0x1cbf || s == 0x1cc0 || s == 0x1fff || s == 0x2000
524 || s == 0x20 || s == 0x3cbf || s == 0x3cc0 || s == 0x3f
525 || s == (-0x4000 << BITSH) - 1 || s == (-0x1000 << BITSH) - 1
526 || s == (-0x7000 << BITSH) - 1 || s == (-0x4041 << BITSH)
527 || s == (-0x4000 << BITSH) || s == (-0x1000 << BITSH)
528 || s == (-0x4000 << BITSH) + 1 || s == 1 || s == -1 || s == -15
529 || s == -15550 || s == -15552 || s == (0x7000 << BITSH) - 1
530 || s == (0x7000 << BITSH) || s == (1 << (BITSM1 - 2))
531 || s == (1 << (BITSM1 - 2)) - 1 || s == 2 || s == 24 || s == -32
532 || s == (3 << (BITSM1 - 2)) + 2 || s == 5 || s == -5 || s == -63
533 || s == -64 || s == -65 || s == -__INT_MAX__ + 4 || s == -8189
534 || s == -8191 || s == -8192 || s == -8193 || s == -8250
535 || s == -8255 || s == -8256 || s == -8257 || s == __INT_MAX__)
536 return;
538 else
540 if (s == (-0x5fcf << BITSH) - 1 || s == (-0x7000 << BITSH)
541 || s == -__INT_MAX__ - 1 || s == -__INT_MAX__ + 7)
542 return;
544 abort ();
547 void
548 f18 (int s)
550 if ((s & ((-0x4000 << BITSH) | 1)) != ((-0x4000 << BITSH) | 1))
552 if (s == 0 || s == 0x1cbf || s == 0x1cc0 || s == 0x1fff || s == 0x2000
553 || s == 0x20 || s == 0x3cbf || s == 0x3cc0 || s == 0x3f
554 || s == (-0x4000 << BITSH) - 1 || s == (-0x7000 << BITSH) - 1
555 || s == (-0x5fcf << BITSH) - 1 || s == (-0x4041 << BITSH)
556 || s == (-0x4000 << BITSH) || s == (-0x1000 << BITSH)
557 || s == (-0x7000 << BITSH) || s == 1 || s == -15550 || s == -15552
558 || s == (0x7000 << BITSH) - 1 || s == (0x7000 << BITSH)
559 || s == (1 << (BITSM1 - 2)) || s == (1 << (BITSM1 - 2)) - 1
560 || s == -__INT_MAX__ - 1 || s == 2 || s == 24 || s == -32
561 || s == (3 << (BITSM1 - 2)) + 2 || s == 5 || s == -64
562 || s == -__INT_MAX__ + 4 || s == -8192 || s == -8250 || s == -8256
563 || s == __INT_MAX__ || s == -__INT_MAX__ + 7)
564 return;
566 else
568 if (s == (-0x1000 << BITSH) - 1 || s == (-0x4000 << BITSH) + 1
569 || s == -1 || s == -15 || s == -5 || s == -63 || s == -65
570 || s == -8189 || s == -8191 || s == -8193 || s == -8255
571 || s == -8257)
572 return;
574 abort ();
577 void
578 f19 (int s)
580 if ((s & ((-0x4000 << BITSH) | 1)) != ((0x4000 << BITSH) | 1))
582 if (s == 0 || s == 0x1cbf || s == 0x1cc0 || s == 0x1fff || s == 0x2000
583 || s == 0x20 || s == 0x3cbf || s == 0x3cc0 || s == 0x3f
584 || s == (-0x4000 << BITSH) - 1 || s == (-0x1000 << BITSH) - 1
585 || s == (-0x7000 << BITSH) - 1 || s == (-0x5fcf << BITSH) - 1
586 || s == (-0x4041 << BITSH) || s == (-0x4000 << BITSH)
587 || s == (-0x1000 << BITSH) || s == (-0x7000 << BITSH)
588 || s == (-0x4000 << BITSH) + 1 || s == 1 || s == -1 || s == -15
589 || s == -15550 || s == -15552 || s == (0x7000 << BITSH)
590 || s == (1 << (BITSM1 - 2)) || s == (1 << (BITSM1 - 2)) - 1
591 || s == -__INT_MAX__ - 1 || s == 2 || s == 24 || s == -32
592 || s == (3 << (BITSM1 - 2)) + 2 || s == 5 || s == -5 || s == -63
593 || s == -64 || s == -65 || s == -__INT_MAX__ + 4 || s == -8189
594 || s == -8191 || s == -8192 || s == -8193 || s == -8250
595 || s == -8255 || s == -8256 || s == -8257 || s == -__INT_MAX__ + 7)
596 return;
598 else
600 if (s == (0x7000 << BITSH) - 1 || s == __INT_MAX__)
601 return;
603 abort ();
606 void
607 f20 (int s)
609 if ((s & (-0x1000 << BITSH)) != -__INT_MAX__ - 1)
611 if (s == 0 || s == 0x1cbf || s == 0x1cc0 || s == 0x1fff || s == 0x2000
612 || s == 0x20 || s == 0x3cbf || s == 0x3cc0 || s == 0x3f
613 || s == (-0x4000 << BITSH) - 1 || s == (-0x1000 << BITSH) - 1
614 || s == (-0x5fcf << BITSH) - 1 || s == (-0x4041 << BITSH)
615 || s == (-0x4000 << BITSH) || s == (-0x1000 << BITSH)
616 || s == (-0x7000 << BITSH) || s == (-0x4000 << BITSH) + 1 || s == 1
617 || s == -1 || s == -15 || s == -15550 || s == -15552
618 || s == (0x7000 << BITSH) - 1 || s == (0x7000 << BITSH)
619 || s == (1 << (BITSM1 - 2)) || s == (1 << (BITSM1 - 2)) - 1
620 || s == 2 || s == 24 || s == -32 || s == (3 << (BITSM1 - 2)) + 2
621 || s == 5 || s == -5 || s == -63 || s == -64 || s == -65
622 || s == -8189 || s == -8191 || s == -8192 || s == -8193
623 || s == -8250 || s == -8255 || s == -8256 || s == -8257
624 || s == __INT_MAX__)
625 return;
627 else
629 if (s == (-0x7000 << BITSH) - 1 || s == -__INT_MAX__ - 1
630 || s == -__INT_MAX__ + 4 || s == -__INT_MAX__ + 7)
631 return;
633 abort ();
636 void
637 f21 (int s)
639 if ((s & (-0x1000 << BITSH)) != (-0x1000 << BITSH))
641 if (s == 0 || s == 0x1cbf || s == 0x1cc0 || s == 0x1fff || s == 0x2000
642 || s == 0x20 || s == 0x3cbf || s == 0x3cc0 || s == 0x3f
643 || s == (-0x4000 << BITSH) - 1 || s == (-0x1000 << BITSH) - 1
644 || s == (-0x7000 << BITSH) - 1 || s == (-0x5fcf << BITSH) - 1
645 || s == (-0x4041 << BITSH) || s == (-0x4000 << BITSH)
646 || s == (-0x7000 << BITSH) || s == (-0x4000 << BITSH) + 1 || s == 1
647 || s == -15550 || s == -15552
648 || s == (0x7000 << BITSH) - 1 || s == (0x7000 << BITSH)
649 || s == (1 << (BITSM1 - 2)) || s == (1 << (BITSM1 - 2)) - 1
650 || s == -__INT_MAX__ - 1 || s == 2 || s == 24
651 || s == (3 << (BITSM1 - 2)) + 2 || s == 5 || s == -__INT_MAX__ + 4
652 || s == -8189 || s == -8191 || s == -8192 || s == -8193
653 || s == -8250 || s == -8255 || s == -8256 || s == -8257
654 || s == __INT_MAX__ || s == -__INT_MAX__ + 7)
655 return;
657 else
659 if (s == (-0x1000 << BITSH) || s == -1 || s == -15
660 || s == -32 || s == -5 || s == -63 || s == -64
661 || s == -65)
662 return;
664 abort ();
667 void
668 f22 (int s)
670 if ((s & (-0x1000 << BITSH)) != (0x7000 << BITSH))
672 if (s == 0 || s == 0x1cbf || s == 0x1cc0 || s == 0x1fff || s == 0x2000
673 || s == 0x20 || s == 0x3cbf || s == 0x3cc0 || s == 0x3f
674 || s == (-0x4000 << BITSH) - 1 || s == (-0x1000 << BITSH) - 1
675 || s == (-0x7000 << BITSH) - 1 || s == (-0x5fcf << BITSH) - 1
676 || s == (-0x4041 << BITSH) || s == (-0x4000 << BITSH)
677 || s == (-0x1000 << BITSH) || s == (-0x7000 << BITSH)
678 || s == (-0x4000 << BITSH) + 1 || s == 1 || s == -1 || s == -15
679 || s == -15550 || s == -15552 || s == (0x7000 << BITSH) - 1
680 || s == (1 << (BITSM1 - 2)) || s == (1 << (BITSM1 - 2)) - 1
681 || s == -__INT_MAX__ - 1 || s == 2 || s == 24 || s == -32
682 || s == (3 << (BITSM1 - 2)) + 2 || s == 5 || s == -5 || s == -63
683 || s == -64 || s == -65 || s == -__INT_MAX__ + 4 || s == -8189
684 || s == -8191 || s == -8192 || s == -8193 || s == -8250
685 || s == -8255 || s == -8256 || s == -8257 || s == -__INT_MAX__ + 7)
686 return;
688 else
690 if (s == (0x7000 << BITSH) || s == __INT_MAX__)
691 return;
693 abort ();
696 void
697 f23 (unsigned int s)
699 if ((s & (0xf000U << BITSH)) != (0x7000 << BITSH))
701 if (s == 0 || s == 0x1cbf || s == 0x1cc0 || s == 0x1fff || s == 0x2000
702 || s == 0x20 || s == 0x3cbf || s == 0x3cc0 || s == 0x3f
703 || s == (0xc000U << BITSH) - 1 || s == (0xf000U << BITSH) - 1
704 || s == (0x9000U << BITSH) - 1 || s == (0xa031U << BITSH) - 1
705 || s == (0xbfbfU << BITSH) || s == (0xc000U << BITSH)
706 || s == (0xf000U << BITSH) || s == (0x9000U << BITSH)
707 || s == (0xc000U << BITSH) + 1 || s == 1 || s == -1U || s == -15U
708 || s == -15550U || s == -15552U || s == (0x7000 << BITSH) - 1
709 || s == (1 << (BITSM1 - 2)) || s == (1 << (BITSM1 - 2)) - 1
710 || s == 1U + __INT_MAX__ || s == 2 || s == 24 || s == -32U
711 || s == (3 << (BITSM1 - 2)) + 2 || s == 5 || s == -5U || s == -63U
712 || s == -64U || s == -65U || s == 6U + __INT_MAX__ || s == -8189U
713 || s == -8191U || s == -8192U || s == -8193U || s == -8250U
714 || s == -8255U || s == -8256U || s == -8257U
715 || s == __INT_MAX__ + 9U)
716 return;
718 else
720 if (s == (0x7000 << BITSH) || s == __INT_MAX__)
721 return;
723 abort ();
726 void
727 f24 (unsigned int s)
729 if ((s & (0xf000U << BITSH)) != (0x8000U << BITSH))
731 if (s == 0 || s == 0x1cbf || s == 0x1cc0 || s == 0x1fff || s == 0x2000
732 || s == 0x20 || s == 0x3cbf || s == 0x3cc0 || s == 0x3f
733 || s == (0xc000U << BITSH) - 1 || s == (0xf000U << BITSH) - 1
734 || s == (0xa031U << BITSH) - 1 || s == (0xbfbfU << BITSH)
735 || s == (0xc000U << BITSH) || s == (0xf000U << BITSH)
736 || s == (0x9000U << BITSH) || s == (0xc000U << BITSH) + 1 || s == 1
737 || s == -1U || s == -15U || s == -15550U || s == -15552U
738 || s == (0x7000 << BITSH) - 1 || s == (0x7000 << BITSH)
739 || s == (1 << (BITSM1 - 2)) || s == (1 << (BITSM1 - 2)) - 1
740 || s == 2 || s == 24 || s == -32U || s == (3 << (BITSM1 - 2)) + 2
741 || s == 5 || s == -5U || s == -63U || s == -64U || s == -65U
742 || s == -8189U || s == -8191U || s == -8192U || s == -8193U
743 || s == -8250U || s == -8255U || s == -8256U || s == -8257U
744 || s == __INT_MAX__)
745 return;
747 else
749 if (s == (0x9000U << BITSH) - 1 || s == 1U + __INT_MAX__
750 || s == 6U + __INT_MAX__ || s == __INT_MAX__ + 9U)
751 return;
753 abort ();
756 /* Make this easier to run on microcontroller architectures by using a switch
757 statements instead of arrays.
758 We still don't want the compiler to constant-propagate the array contents,
759 so use an asm in each accessor function with to hide what's going on. */
762 svals (int i)
764 asm ("" : "=g" (i) : "0" (i));
765 switch (i)
767 case 0: return 0;
768 case 1: return 0x1cbf;
769 case 2: return 0x1cc0;
770 case 3: return 0x1fff;
771 case 4: return 0x2000;
772 case 5: return 0x20;
773 case 6: return 0x3cbf;
774 case 7: return 0x3cc0;
775 case 8: return 0x3f;
776 case 9: return (-0x4000 << BITSH) - 1;
777 case 10: return (-0x1000 << BITSH) - 1;
778 case 11: return (-0x7000 << BITSH) - 1;
779 case 12: return (-0x5fcf << BITSH) - 1;
780 case 13: return (-0x4041 << BITSH);
781 case 14: return (-0x4000 << BITSH);
782 case 15: return (-0x1000 << BITSH);
783 case 16: return (-0x7000 << BITSH);
784 case 17: return (-0x4000 << BITSH) + 1;
785 case 18: return 1;
786 case 19: return -1;
787 case 20: return -15;
788 case 21: return -15550;
789 case 22: return -15552;
790 case 23: return (0x7000 << BITSH) - 1;
791 case 24: return (0x7000 << BITSH);
792 case 25: return (1 << (BITSM1 - 2));
793 case 26: return (1 << (BITSM1 - 2)) - 1;
794 case 27: return -__INT_MAX__ - 1;
795 case 28: return 2;
796 case 29: return 24;
797 case 30: return -32;
798 case 31: return (3 << (BITSM1 - 2)) + 2;
799 case 32: return 5;
800 case 33: return -5;
801 case 34: return -63;
802 case 35: return -64;
803 case 36: return -65;
804 case 37: return -__INT_MAX__ + 4;
805 case 38: return -8189;
806 case 39: return -8191;
807 case 40: return -8192;
808 case 41: return -8193;
809 case 42: return -8250;
810 case 43: return -8255;
811 case 44: return -8256;
812 case 45: return -8257;
813 case 46: return __INT_MAX__;
814 case 47: return -__INT_MAX__ + 7;
815 #define SVAL_NUM 48
816 default: abort ();
820 unsigned int
821 uvals (int i)
823 asm ("" : "=g" (i) : "0" (i));
824 switch (i)
826 case 0: return 0;
827 case 1: return 0x1cbf;
828 case 2: return 0x1cc0;
829 case 3: return 0x1fff;
830 case 4: return 0x2000;
831 case 5: return 0x20;
832 case 6: return 0x3cbf;
833 case 7: return 0x3cc0;
834 case 8: return 0x3f;
835 case 9: return (0xc000U << BITSH) - 1;
836 case 10: return (0xf000U << BITSH) - 1;
837 case 11: return (0x9000U << BITSH) - 1;
838 case 12: return (0xa031U << BITSH) - 1;
839 case 13: return (0xbfbfU << BITSH);
840 case 14: return (0xc000U << BITSH);
841 case 15: return (0xf000U << BITSH);
842 case 16: return (0x9000U << BITSH);
843 case 17: return (0xc000U << BITSH) + 1;
844 case 18: return 1;
845 case 19: return -1U;
846 case 20: return -15U;
847 case 21: return -15550U;
848 case 22: return -15552U;
849 case 23: return (0x7000 << BITSH) - 1;
850 case 24: return (0x7000 << BITSH);
851 case 25: return (1 << (BITSM1 - 2));
852 case 26: return (1 << (BITSM1 - 2)) - 1;
853 case 27: return 1U + __INT_MAX__;
854 case 28: return 2;
855 case 29: return 24;
856 case 30: return -32U;
857 case 31: return (3 << (BITSM1 - 2)) + 2;
858 case 32: return 5;
859 case 33: return -5U;
860 case 34: return -63U;
861 case 35: return -64U;
862 case 36: return -65U;
863 case 37: return 6U + __INT_MAX__;
864 case 38: return -8189U;
865 case 39: return -8191U;
866 case 40: return -8192U;
867 case 41: return -8193U;
868 case 42: return -8250U;
869 case 43: return -8255U;
870 case 44: return -8256U;
871 case 45: return -8257U;
872 case 46: return __INT_MAX__;
873 case 47: return __INT_MAX__ + 9U;
874 #define UVAL_NUM 48
875 default: abort ();
880 main ()
882 int i;
883 for (i = 0; i < SVAL_NUM; i++)
885 f2 (svals (i));
886 f4 (svals (i));
887 f5 (svals (i));
888 f7 (svals (i));
889 f8 (svals (i));
890 f11 (svals (i));
891 f12 (svals (i));
892 f15 (svals (i));
893 f16 (svals (i));
894 f17 (svals (i));
895 f18 (svals (i));
896 f19 (svals (i));
897 f20 (svals (i));
898 f21 (svals (i));
899 f22 (svals (i));
901 for (i = 0; i < UVAL_NUM; i++)
903 f1 (uvals (i));
904 f3 (uvals (i));
905 f6 (uvals (i));
906 f9 (uvals (i));
907 f10 (uvals (i));
908 f13 (uvals (i));
909 f14 (uvals (i));
910 f23 (uvals (i));
911 f24 (uvals (i));
913 return 0;