1 /* Check rotate pattern detection. */
2 /* { dg-do compile } */
3 /* { dg-options "-O2 -fno-ipa-icf -fdump-tree-optimized" } */
4 /* { dg-final { scan-tree-dump-times "r\[<>]\[<>]" 96 "optimized" } } */
5
6 unsigned int
f1(unsigned int x,unsigned int y)7 f1 (unsigned int x, unsigned int y)
8 {
9 return (x << y) | (x >> (__CHAR_BIT__ * __SIZEOF_INT__ - y));
10 }
11
12 unsigned int
f2(unsigned int x,unsigned long int y)13 f2 (unsigned int x, unsigned long int y)
14 {
15 return (x << y) | (x >> (__CHAR_BIT__ * __SIZEOF_INT__ - y));
16 }
17
18 unsigned int
f3(unsigned int x,int y)19 f3 (unsigned int x, int y __attribute__((unused)))
20 {
21 return (x << 1) | (x >> (__CHAR_BIT__ * __SIZEOF_INT__ - 1));
22 }
23
24 unsigned int
f4(unsigned int x,int y)25 f4 (unsigned int x, int y __attribute__((unused)))
26 {
27 return (x << (__CHAR_BIT__ * __SIZEOF_INT__ - 1)) | (x >> 1);
28 }
29
30 unsigned short int
f5(unsigned short int x,unsigned int y)31 f5 (unsigned short int x, unsigned int y)
32 {
33 return (x << y) | (x >> (__CHAR_BIT__ * __SIZEOF_SHORT__ - y));
34 }
35
36 unsigned short int
f6(unsigned short int x,unsigned long int y)37 f6 (unsigned short int x, unsigned long int y)
38 {
39 return (x << y) | (x >> (__CHAR_BIT__ * __SIZEOF_SHORT__ - y));
40 }
41
42 unsigned char
f7(unsigned char x,unsigned int y)43 f7 (unsigned char x, unsigned int y)
44 {
45 return (x << y) | (x >> (__CHAR_BIT__ - y));
46 }
47
48 unsigned char
f8(unsigned char x,unsigned long int y)49 f8 (unsigned char x, unsigned long int y)
50 {
51 return (x << y) | (x >> (__CHAR_BIT__ - y));
52 }
53
54 unsigned int
f9(unsigned int x,unsigned int y)55 f9 (unsigned int x, unsigned int y)
56 {
57 return (x << y) | (x >> (__CHAR_BIT__ * sizeof (unsigned int) - y));
58 }
59
60 unsigned int
f10(unsigned int x,unsigned long int y)61 f10 (unsigned int x, unsigned long int y)
62 {
63 return (x << y) | (x >> (__CHAR_BIT__ * sizeof (unsigned int) - y));
64 }
65
66 unsigned int
f11(unsigned int x,int y)67 f11 (unsigned int x, int y __attribute__((unused)))
68 {
69 return (x << 1) | (x >> (__CHAR_BIT__ * sizeof (unsigned int) - 1));
70 }
71
72 unsigned int
f12(unsigned int x,int y)73 f12 (unsigned int x, int y __attribute__((unused)))
74 {
75 return (x << (__CHAR_BIT__ * sizeof (unsigned int) - 1)) | (x >> 1);
76 }
77
78 unsigned short int
f13(unsigned short int x,unsigned int y)79 f13 (unsigned short int x, unsigned int y)
80 {
81 return (x << y) | (x >> (__CHAR_BIT__ * sizeof (unsigned short) - y));
82 }
83
84 unsigned short int
f14(unsigned short int x,unsigned long int y)85 f14 (unsigned short int x, unsigned long int y)
86 {
87 return (x << y) | (x >> (__CHAR_BIT__ * sizeof (unsigned short) - y));
88 }
89
90 unsigned char
f15(unsigned char x,unsigned int y)91 f15 (unsigned char x, unsigned int y)
92 {
93 return (x << y) | (x >> (__CHAR_BIT__ * sizeof (unsigned char) - y));
94 }
95
96 unsigned char
f16(unsigned char x,unsigned long int y)97 f16 (unsigned char x, unsigned long int y)
98 {
99 return (x << y) | (x >> (__CHAR_BIT__ * sizeof (unsigned char) - y));
100 }
101
102 unsigned int
f17(unsigned int x,unsigned int y)103 f17 (unsigned int x, unsigned int y)
104 {
105 return (x >> (__CHAR_BIT__ * __SIZEOF_INT__ - y)) ^ (x << y);
106 }
107
108 unsigned int
f18(unsigned int x,unsigned long int y)109 f18 (unsigned int x, unsigned long int y)
110 {
111 return (x >> (__CHAR_BIT__ * __SIZEOF_INT__ - y)) ^ (x << y);
112 }
113
114 unsigned int
f19(unsigned int x,int y)115 f19 (unsigned int x, int y __attribute__((unused)))
116 {
117 return (x >> (__CHAR_BIT__ * __SIZEOF_INT__ - 1)) ^ (x << 1);
118 }
119
120 unsigned int
f20(unsigned int x,int y)121 f20 (unsigned int x, int y __attribute__((unused)))
122 {
123 return (x >> 1) ^ (x << (__CHAR_BIT__ * __SIZEOF_INT__ - 1));
124 }
125
126 unsigned short int
f21(unsigned short int x,unsigned int y)127 f21 (unsigned short int x, unsigned int y)
128 {
129 return (x >> (__CHAR_BIT__ * __SIZEOF_SHORT__ - y)) ^ (x << y);
130 }
131
132 unsigned short int
f22(unsigned short int x,unsigned long int y)133 f22 (unsigned short int x, unsigned long int y)
134 {
135 return (x >> (__CHAR_BIT__ * __SIZEOF_SHORT__ - y)) ^ (x << y);
136 }
137
138 unsigned char
f23(unsigned char x,unsigned int y)139 f23 (unsigned char x, unsigned int y)
140 {
141 return (x >> (__CHAR_BIT__ - y)) ^ (x << y);
142 }
143
144 unsigned char
f24(unsigned char x,unsigned long int y)145 f24 (unsigned char x, unsigned long int y)
146 {
147 return (x >> (__CHAR_BIT__ - y)) ^ (x << y);
148 }
149
150 unsigned int
f25(unsigned int x,unsigned int y)151 f25 (unsigned int x, unsigned int y)
152 {
153 return (x >> (__CHAR_BIT__ * sizeof (unsigned int) - y)) ^ (x << y);
154 }
155
156 unsigned int
f26(unsigned int x,unsigned long int y)157 f26 (unsigned int x, unsigned long int y)
158 {
159 return (x >> (__CHAR_BIT__ * sizeof (unsigned int) - y)) ^ (x << y);
160 }
161
162 unsigned int
f27(unsigned int x,int y)163 f27 (unsigned int x, int y __attribute__((unused)))
164 {
165 return (x >> (__CHAR_BIT__ * sizeof (unsigned int) - 1)) ^ (x << 1);
166 }
167
168 unsigned int
f28(unsigned int x,int y)169 f28 (unsigned int x, int y __attribute__((unused)))
170 {
171 return (x >> 1) ^ (x << (__CHAR_BIT__ * sizeof (unsigned int) - 1));
172 }
173
174 unsigned short int
f29(unsigned short int x,unsigned int y)175 f29 (unsigned short int x, unsigned int y)
176 {
177 return (x >> (__CHAR_BIT__ * sizeof (unsigned short) - y)) ^ (x << y);
178 }
179
180 unsigned short int
f30(unsigned short int x,unsigned long int y)181 f30 (unsigned short int x, unsigned long int y)
182 {
183 return (x >> (__CHAR_BIT__ * sizeof (unsigned short) - y)) ^ (x << y);
184 }
185
186 unsigned char
f31(unsigned char x,unsigned int y)187 f31 (unsigned char x, unsigned int y)
188 {
189 return (x >> (__CHAR_BIT__ * sizeof (unsigned char) - y)) ^ (x << y);
190 }
191
192 unsigned char
f32(unsigned char x,unsigned long int y)193 f32 (unsigned char x, unsigned long int y)
194 {
195 return (x >> (__CHAR_BIT__ * sizeof (unsigned char) - y)) ^ (x << y);
196 }
197
198 unsigned int
f33(unsigned int x,unsigned int y)199 f33 (unsigned int x, unsigned int y)
200 {
201 return (x >> y) | (x << (__CHAR_BIT__ * __SIZEOF_INT__ - y));
202 }
203
204 unsigned int
f34(unsigned int x,unsigned long int y)205 f34 (unsigned int x, unsigned long int y)
206 {
207 return (x >> y) | (x << (__CHAR_BIT__ * __SIZEOF_INT__ - y));
208 }
209
210 unsigned int
f35(unsigned int x,int y)211 f35 (unsigned int x, int y __attribute__((unused)))
212 {
213 return (x >> 1) | (x << (__CHAR_BIT__ * __SIZEOF_INT__ - 1));
214 }
215
216 unsigned int
f36(unsigned int x,int y)217 f36 (unsigned int x, int y __attribute__((unused)))
218 {
219 return (x >> (__CHAR_BIT__ * __SIZEOF_INT__ - 1)) | (x << 1);
220 }
221
222 unsigned short int
f37(unsigned short int x,unsigned int y)223 f37 (unsigned short int x, unsigned int y)
224 {
225 return (x >> y) | (x << (__CHAR_BIT__ * __SIZEOF_SHORT__ - y));
226 }
227
228 unsigned short int
f38(unsigned short int x,unsigned long int y)229 f38 (unsigned short int x, unsigned long int y)
230 {
231 return (x >> y) | (x << (__CHAR_BIT__ * __SIZEOF_SHORT__ - y));
232 }
233
234 unsigned char
f39(unsigned char x,unsigned int y)235 f39 (unsigned char x, unsigned int y)
236 {
237 return (x >> y) | (x << (__CHAR_BIT__ - y));
238 }
239
240 unsigned char
f40(unsigned char x,unsigned long int y)241 f40 (unsigned char x, unsigned long int y)
242 {
243 return (x >> y) | (x << (__CHAR_BIT__ - y));
244 }
245
246 unsigned int
f41(unsigned int x,unsigned int y)247 f41 (unsigned int x, unsigned int y)
248 {
249 return (x >> y) | (x << (__CHAR_BIT__ * sizeof (unsigned int) - y));
250 }
251
252 unsigned int
f42(unsigned int x,unsigned long int y)253 f42 (unsigned int x, unsigned long int y)
254 {
255 return (x >> y) | (x << (__CHAR_BIT__ * sizeof (unsigned int) - y));
256 }
257
258 unsigned int
f43(unsigned int x,int y)259 f43 (unsigned int x, int y __attribute__((unused)))
260 {
261 return (x >> 1) | (x << (__CHAR_BIT__ * sizeof (unsigned int) - 1));
262 }
263
264 unsigned int
f44(unsigned int x,int y)265 f44 (unsigned int x, int y __attribute__((unused)))
266 {
267 return (x >> (__CHAR_BIT__ * sizeof (unsigned int) - 1)) | (x << 1);
268 }
269
270 unsigned short int
f45(unsigned short int x,unsigned int y)271 f45 (unsigned short int x, unsigned int y)
272 {
273 return (x >> y) | (x << (__CHAR_BIT__ * sizeof (unsigned short) - y));
274 }
275
276 unsigned short int
f46(unsigned short int x,unsigned long int y)277 f46 (unsigned short int x, unsigned long int y)
278 {
279 return (x >> y) | (x << (__CHAR_BIT__ * sizeof (unsigned short) - y));
280 }
281
282 unsigned char
f47(unsigned char x,unsigned int y)283 f47 (unsigned char x, unsigned int y)
284 {
285 return (x >> y) | (x << (__CHAR_BIT__ * sizeof (unsigned char) - y));
286 }
287
288 unsigned char
f48(unsigned char x,unsigned long int y)289 f48 (unsigned char x, unsigned long int y)
290 {
291 return (x >> y) | (x << (__CHAR_BIT__ * sizeof (unsigned char) - y));
292 }
293
294 unsigned int
f49(unsigned int x,unsigned int y)295 f49 (unsigned int x, unsigned int y)
296 {
297 return (x << (__CHAR_BIT__ * __SIZEOF_INT__ - y)) ^ (x >> y);
298 }
299
300 unsigned int
f50(unsigned int x,unsigned long int y)301 f50 (unsigned int x, unsigned long int y)
302 {
303 return (x << (__CHAR_BIT__ * __SIZEOF_INT__ - y)) ^ (x >> y);
304 }
305
306 unsigned int
f51(unsigned int x,int y)307 f51 (unsigned int x, int y __attribute__((unused)))
308 {
309 return (x << (__CHAR_BIT__ * __SIZEOF_INT__ - 1)) ^ (x >> 1);
310 }
311
312 unsigned int
f52(unsigned int x,int y)313 f52 (unsigned int x, int y __attribute__((unused)))
314 {
315 return (x << 1) ^ (x >> (__CHAR_BIT__ * __SIZEOF_INT__ - 1));
316 }
317
318 unsigned short int
f53(unsigned short int x,unsigned int y)319 f53 (unsigned short int x, unsigned int y)
320 {
321 return (x << (__CHAR_BIT__ * __SIZEOF_SHORT__ - y)) ^ (x >> y);
322 }
323
324 unsigned short int
f54(unsigned short int x,unsigned long int y)325 f54 (unsigned short int x, unsigned long int y)
326 {
327 return (x << (__CHAR_BIT__ * __SIZEOF_SHORT__ - y)) ^ (x >> y);
328 }
329
330 unsigned char
f55(unsigned char x,unsigned int y)331 f55 (unsigned char x, unsigned int y)
332 {
333 return (x << (__CHAR_BIT__ - y)) ^ (x >> y);
334 }
335
336 unsigned char
f56(unsigned char x,unsigned long int y)337 f56 (unsigned char x, unsigned long int y)
338 {
339 return (x << (__CHAR_BIT__ - y)) ^ (x >> y);
340 }
341
342 unsigned int
f57(unsigned int x,unsigned int y)343 f57 (unsigned int x, unsigned int y)
344 {
345 return (x << (__CHAR_BIT__ * sizeof (unsigned int) - y)) ^ (x >> y);
346 }
347
348 unsigned int
f58(unsigned int x,unsigned long int y)349 f58 (unsigned int x, unsigned long int y)
350 {
351 return (x << (__CHAR_BIT__ * sizeof (unsigned int) - y)) ^ (x >> y);
352 }
353
354 unsigned int
f59(unsigned int x,int y)355 f59 (unsigned int x, int y __attribute__((unused)))
356 {
357 return (x << (__CHAR_BIT__ * sizeof (unsigned int) - 1)) ^ (x >> 1);
358 }
359
360 unsigned int
f60(unsigned int x,int y)361 f60 (unsigned int x, int y __attribute__((unused)))
362 {
363 return (x << 1) ^ (x >> (__CHAR_BIT__ * sizeof (unsigned int) - 1));
364 }
365
366 unsigned short int
f61(unsigned short int x,unsigned int y)367 f61 (unsigned short int x, unsigned int y)
368 {
369 return (x << (__CHAR_BIT__ * sizeof (unsigned short) - y)) ^ (x >> y);
370 }
371
372 unsigned short int
f62(unsigned short int x,unsigned long int y)373 f62 (unsigned short int x, unsigned long int y)
374 {
375 return (x << (__CHAR_BIT__ * sizeof (unsigned short) - y)) ^ (x >> y);
376 }
377
378 unsigned char
f63(unsigned char x,unsigned int y)379 f63 (unsigned char x, unsigned int y)
380 {
381 return (x << (__CHAR_BIT__ * sizeof (unsigned char) - y)) ^ (x >> y);
382 }
383
384 unsigned char
f64(unsigned char x,unsigned long int y)385 f64 (unsigned char x, unsigned long int y)
386 {
387 return (x << (__CHAR_BIT__ * sizeof (unsigned char) - y)) ^ (x >> y);
388 }
389
390 unsigned int
f65(unsigned int x,unsigned int y)391 f65 (unsigned int x, unsigned int y)
392 {
393 return (x << y) + (x >> (__CHAR_BIT__ * __SIZEOF_INT__ - y));
394 }
395
396 unsigned int
f66(unsigned int x,unsigned long int y)397 f66 (unsigned int x, unsigned long int y)
398 {
399 return (x << y) + (x >> (__CHAR_BIT__ * __SIZEOF_INT__ - y));
400 }
401
402 unsigned int
f67(unsigned int x,int y)403 f67 (unsigned int x, int y __attribute__((unused)))
404 {
405 return (x << 1) + (x >> (__CHAR_BIT__ * __SIZEOF_INT__ - 1));
406 }
407
408 unsigned int
f68(unsigned int x,int y)409 f68 (unsigned int x, int y __attribute__((unused)))
410 {
411 return (x << (__CHAR_BIT__ * __SIZEOF_INT__ - 1)) + (x >> 1);
412 }
413
414 unsigned short int
f69(unsigned short int x,unsigned int y)415 f69 (unsigned short int x, unsigned int y)
416 {
417 return (x << y) + (x >> (__CHAR_BIT__ * __SIZEOF_SHORT__ - y));
418 }
419
420 unsigned short int
f70(unsigned short int x,unsigned long int y)421 f70 (unsigned short int x, unsigned long int y)
422 {
423 return (x << y) + (x >> (__CHAR_BIT__ * __SIZEOF_SHORT__ - y));
424 }
425
426 unsigned char
f71(unsigned char x,unsigned int y)427 f71 (unsigned char x, unsigned int y)
428 {
429 return (x << y) + (x >> (__CHAR_BIT__ - y));
430 }
431
432 unsigned char
f72(unsigned char x,unsigned long int y)433 f72 (unsigned char x, unsigned long int y)
434 {
435 return (x << y) + (x >> (__CHAR_BIT__ - y));
436 }
437
438 unsigned int
f73(unsigned int x,unsigned int y)439 f73 (unsigned int x, unsigned int y)
440 {
441 return (x << y) + (x >> (__CHAR_BIT__ * sizeof (unsigned int) - y));
442 }
443
444 unsigned int
f74(unsigned int x,unsigned long int y)445 f74 (unsigned int x, unsigned long int y)
446 {
447 return (x << y) + (x >> (__CHAR_BIT__ * sizeof (unsigned int) - y));
448 }
449
450 unsigned int
f75(unsigned int x,int y)451 f75 (unsigned int x, int y __attribute__((unused)))
452 {
453 return (x << 1) + (x >> (__CHAR_BIT__ * sizeof (unsigned int) - 1));
454 }
455
456 unsigned int
f76(unsigned int x,int y)457 f76 (unsigned int x, int y __attribute__((unused)))
458 {
459 return (x << (__CHAR_BIT__ * sizeof (unsigned int) - 1)) + (x >> 1);
460 }
461
462 unsigned short int
f77(unsigned short int x,unsigned int y)463 f77 (unsigned short int x, unsigned int y)
464 {
465 return (x << y) + (x >> (__CHAR_BIT__ * sizeof (unsigned short) - y));
466 }
467
468 unsigned short int
f78(unsigned short int x,unsigned long int y)469 f78 (unsigned short int x, unsigned long int y)
470 {
471 return (x << y) + (x >> (__CHAR_BIT__ * sizeof (unsigned short) - y));
472 }
473
474 unsigned char
f79(unsigned char x,unsigned int y)475 f79 (unsigned char x, unsigned int y)
476 {
477 return (x << y) + (x >> (__CHAR_BIT__ * sizeof (unsigned char) - y));
478 }
479
480 unsigned char
f80(unsigned char x,unsigned long int y)481 f80 (unsigned char x, unsigned long int y)
482 {
483 return (x << y) + (x >> (__CHAR_BIT__ * sizeof (unsigned char) - y));
484 }
485
486 unsigned int
f81(unsigned int x,unsigned int y)487 f81 (unsigned int x, unsigned int y)
488 {
489 return (x << (__CHAR_BIT__ * __SIZEOF_INT__ - y)) + (x >> y);
490 }
491
492 unsigned int
f82(unsigned int x,unsigned long int y)493 f82 (unsigned int x, unsigned long int y)
494 {
495 return (x << (__CHAR_BIT__ * __SIZEOF_INT__ - y)) + (x >> y);
496 }
497
498 unsigned int
f83(unsigned int x,int y)499 f83 (unsigned int x, int y __attribute__((unused)))
500 {
501 return (x << (__CHAR_BIT__ * __SIZEOF_INT__ - 1)) + (x >> 1);
502 }
503
504 unsigned int
f84(unsigned int x,int y)505 f84 (unsigned int x, int y __attribute__((unused)))
506 {
507 return (x << 1) + (x >> (__CHAR_BIT__ * __SIZEOF_INT__ - 1));
508 }
509
510 unsigned short int
f85(unsigned short int x,unsigned int y)511 f85 (unsigned short int x, unsigned int y)
512 {
513 return (x << (__CHAR_BIT__ * __SIZEOF_SHORT__ - y)) + (x >> y);
514 }
515
516 unsigned short int
f86(unsigned short int x,unsigned long int y)517 f86 (unsigned short int x, unsigned long int y)
518 {
519 return (x << (__CHAR_BIT__ * __SIZEOF_SHORT__ - y)) + (x >> y);
520 }
521
522 unsigned char
f87(unsigned char x,unsigned int y)523 f87 (unsigned char x, unsigned int y)
524 {
525 return (x << (__CHAR_BIT__ - y)) + (x >> y);
526 }
527
528 unsigned char
f88(unsigned char x,unsigned long int y)529 f88 (unsigned char x, unsigned long int y)
530 {
531 return (x << (__CHAR_BIT__ - y)) + (x >> y);
532 }
533
534 unsigned int
f89(unsigned int x,unsigned int y)535 f89 (unsigned int x, unsigned int y)
536 {
537 return (x << (__CHAR_BIT__ * sizeof (unsigned int) - y)) + (x >> y);
538 }
539
540 unsigned int
f90(unsigned int x,unsigned long int y)541 f90 (unsigned int x, unsigned long int y)
542 {
543 return (x << (__CHAR_BIT__ * sizeof (unsigned int) - y)) + (x >> y);
544 }
545
546 unsigned int
f91(unsigned int x,int y)547 f91 (unsigned int x, int y __attribute__((unused)))
548 {
549 return (x << (__CHAR_BIT__ * sizeof (unsigned int) - 1)) + (x >> 1);
550 }
551
552 unsigned int
f92(unsigned int x,int y)553 f92 (unsigned int x, int y __attribute__((unused)))
554 {
555 return (x << 1) + (x >> (__CHAR_BIT__ * sizeof (unsigned int) - 1));
556 }
557
558 unsigned short int
f93(unsigned short int x,unsigned int y)559 f93 (unsigned short int x, unsigned int y)
560 {
561 return (x << (__CHAR_BIT__ * sizeof (unsigned short) - y)) + (x >> y);
562 }
563
564 unsigned short int
f94(unsigned short int x,unsigned long int y)565 f94 (unsigned short int x, unsigned long int y)
566 {
567 return (x << (__CHAR_BIT__ * sizeof (unsigned short) - y)) + (x >> y);
568 }
569
570 unsigned char
f95(unsigned char x,unsigned int y)571 f95 (unsigned char x, unsigned int y)
572 {
573 return (x << (__CHAR_BIT__ * sizeof (unsigned char) - y)) + (x >> y);
574 }
575
576 unsigned char
f96(unsigned char x,unsigned long int y)577 f96 (unsigned char x, unsigned long int y)
578 {
579 return (x << (__CHAR_BIT__ * sizeof (unsigned char) - y)) + (x >> y);
580 }
581