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