(root)/
gcc-13.2.0/
gcc/
testsuite/
c-c++-common/
rotate-3.c
       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
       7  f1 (unsigned int x, int y)
       8  {
       9    return (x << y) | (x >> (__CHAR_BIT__ * __SIZEOF_INT__ - y));
      10  }
      11  
      12  unsigned int
      13  f2 (unsigned int x, long int y)
      14  {
      15    return (x << y) | (x >> (__CHAR_BIT__ * __SIZEOF_INT__ - y));
      16  }
      17  
      18  unsigned int
      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
      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
      31  f5 (unsigned short int x, int y)
      32  {
      33    return (x << y) | (x >> (__CHAR_BIT__ * __SIZEOF_SHORT__ - y));
      34  }
      35  
      36  unsigned short int
      37  f6 (unsigned short int x, long int y)
      38  {
      39    return (x << y) | (x >> (__CHAR_BIT__ * __SIZEOF_SHORT__ - y));
      40  }
      41  
      42  unsigned char
      43  f7 (unsigned char x, int y)
      44  {
      45    return (x << y) | (x >> (__CHAR_BIT__ - y));
      46  }
      47  
      48  unsigned char
      49  f8 (unsigned char x, long int y)
      50  {
      51    return (x << y) | (x >> (__CHAR_BIT__ - y));
      52  }
      53  
      54  unsigned int
      55  f9 (unsigned int x, int y)
      56  {
      57    return (x << y) | (x >> (__CHAR_BIT__ * sizeof (unsigned int) - y));
      58  }
      59  
      60  unsigned int
      61  f10 (unsigned int x, long int y)
      62  {
      63    return (x << y) | (x >> (__CHAR_BIT__ * sizeof (unsigned int) - y));
      64  }
      65  
      66  unsigned int
      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
      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
      79  f13 (unsigned short int x, int y)
      80  {
      81    return (x << y) | (x >> (__CHAR_BIT__ * sizeof (unsigned short) - y));
      82  }
      83  
      84  unsigned short int
      85  f14 (unsigned short int x, long int y)
      86  {
      87    return (x << y) | (x >> (__CHAR_BIT__ * sizeof (unsigned short) - y));
      88  }
      89  
      90  unsigned char
      91  f15 (unsigned char x, int y)
      92  {
      93    return (x << y) | (x >> (__CHAR_BIT__ * sizeof (unsigned char) - y));
      94  }
      95  
      96  unsigned char
      97  f16 (unsigned char x, long int y)
      98  {
      99    return (x << y) | (x >> (__CHAR_BIT__ * sizeof (unsigned char) - y));
     100  }
     101  
     102  unsigned int
     103  f17 (unsigned int x, int y)
     104  {
     105    return (x >> (__CHAR_BIT__ * __SIZEOF_INT__ - y)) ^ (x << y);
     106  }
     107  
     108  unsigned int
     109  f18 (unsigned int x, long int y)
     110  {
     111    return (x >> (__CHAR_BIT__ * __SIZEOF_INT__ - y)) ^ (x << y);
     112  }
     113  
     114  unsigned int
     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
     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
     127  f21 (unsigned short int x, int y)
     128  {
     129    return (x >> (__CHAR_BIT__ * __SIZEOF_SHORT__ - y)) ^ (x << y);
     130  }
     131  
     132  unsigned short int
     133  f22 (unsigned short int x, long int y)
     134  {
     135    return (x >> (__CHAR_BIT__ * __SIZEOF_SHORT__ - y)) ^ (x << y);
     136  }
     137  
     138  unsigned char
     139  f23 (unsigned char x, int y)
     140  {
     141    return (x >> (__CHAR_BIT__ - y)) ^ (x << y);
     142  }
     143  
     144  unsigned char
     145  f24 (unsigned char x, long int y)
     146  {
     147    return (x >> (__CHAR_BIT__ - y)) ^ (x << y);
     148  }
     149  
     150  unsigned int
     151  f25 (unsigned int x, int y)
     152  {
     153    return (x >> (__CHAR_BIT__ * sizeof (unsigned int) - y)) ^ (x << y);
     154  }
     155  
     156  unsigned int
     157  f26 (unsigned int x, long int y)
     158  {
     159    return (x >> (__CHAR_BIT__ * sizeof (unsigned int) - y)) ^ (x << y);
     160  }
     161  
     162  unsigned int
     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
     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
     175  f29 (unsigned short int x, int y)
     176  {
     177    return (x >> (__CHAR_BIT__ * sizeof (unsigned short) - y)) ^ (x << y);
     178  }
     179  
     180  unsigned short int
     181  f30 (unsigned short int x, long int y)
     182  {
     183    return (x >> (__CHAR_BIT__ * sizeof (unsigned short) - y)) ^ (x << y);
     184  }
     185  
     186  unsigned char
     187  f31 (unsigned char x, int y)
     188  {
     189    return (x >> (__CHAR_BIT__ * sizeof (unsigned char) - y)) ^ (x << y);
     190  }
     191  
     192  unsigned char
     193  f32 (unsigned char x, long int y)
     194  {
     195    return (x >> (__CHAR_BIT__ * sizeof (unsigned char) - y)) ^ (x << y);
     196  }
     197  
     198  unsigned int
     199  f33 (unsigned int x, int y)
     200  {
     201    return (x >> y) | (x << (__CHAR_BIT__ * __SIZEOF_INT__ - y));
     202  }
     203  
     204  unsigned int
     205  f34 (unsigned int x, long int y)
     206  {
     207    return (x >> y) | (x << (__CHAR_BIT__ * __SIZEOF_INT__ - y));
     208  }
     209  
     210  unsigned int
     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
     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
     223  f37 (unsigned short int x, int y)
     224  {
     225    return (x >> y) | (x << (__CHAR_BIT__ * __SIZEOF_SHORT__ - y));
     226  }
     227  
     228  unsigned short int
     229  f38 (unsigned short int x, long int y)
     230  {
     231    return (x >> y) | (x << (__CHAR_BIT__ * __SIZEOF_SHORT__ - y));
     232  }
     233  
     234  unsigned char
     235  f39 (unsigned char x, int y)
     236  {
     237    return (x >> y) | (x << (__CHAR_BIT__ - y));
     238  }
     239  
     240  unsigned char
     241  f40 (unsigned char x, long int y)
     242  {
     243    return (x >> y) | (x << (__CHAR_BIT__ - y));
     244  }
     245  
     246  unsigned int
     247  f41 (unsigned int x, int y)
     248  {
     249    return (x >> y) | (x << (__CHAR_BIT__ * sizeof (unsigned int) - y));
     250  }
     251  
     252  unsigned int
     253  f42 (unsigned int x, long int y)
     254  {
     255    return (x >> y) | (x << (__CHAR_BIT__ * sizeof (unsigned int) - y));
     256  }
     257  
     258  unsigned int
     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
     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
     271  f45 (unsigned short int x, int y)
     272  {
     273    return (x >> y) | (x << (__CHAR_BIT__ * sizeof (unsigned short) - y));
     274  }
     275  
     276  unsigned short int
     277  f46 (unsigned short int x, long int y)
     278  {
     279    return (x >> y) | (x << (__CHAR_BIT__ * sizeof (unsigned short) - y));
     280  }
     281  
     282  unsigned char
     283  f47 (unsigned char x, int y)
     284  {
     285    return (x >> y) | (x << (__CHAR_BIT__ * sizeof (unsigned char) - y));
     286  }
     287  
     288  unsigned char
     289  f48 (unsigned char x, long int y)
     290  {
     291    return (x >> y) | (x << (__CHAR_BIT__ * sizeof (unsigned char) - y));
     292  }
     293  
     294  unsigned int
     295  f49 (unsigned int x, int y)
     296  {
     297    return (x << (__CHAR_BIT__ * __SIZEOF_INT__ - y)) ^ (x >> y);
     298  }
     299  
     300  unsigned int
     301  f50 (unsigned int x, long int y)
     302  {
     303    return (x << (__CHAR_BIT__ * __SIZEOF_INT__ - y)) ^ (x >> y);
     304  }
     305  
     306  unsigned int
     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
     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
     319  f53 (unsigned short int x, int y)
     320  {
     321    return (x << (__CHAR_BIT__ * __SIZEOF_SHORT__ - y)) ^ (x >> y);
     322  }
     323  
     324  unsigned short int
     325  f54 (unsigned short int x, long int y)
     326  {
     327    return (x << (__CHAR_BIT__ * __SIZEOF_SHORT__ - y)) ^ (x >> y);
     328  }
     329  
     330  unsigned char
     331  f55 (unsigned char x, int y)
     332  {
     333    return (x << (__CHAR_BIT__ - y)) ^ (x >> y);
     334  }
     335  
     336  unsigned char
     337  f56 (unsigned char x, long int y)
     338  {
     339    return (x << (__CHAR_BIT__ - y)) ^ (x >> y);
     340  }
     341  
     342  unsigned int
     343  f57 (unsigned int x, int y)
     344  {
     345    return (x << (__CHAR_BIT__ * sizeof (unsigned int) - y)) ^ (x >> y);
     346  }
     347  
     348  unsigned int
     349  f58 (unsigned int x, long int y)
     350  {
     351    return (x << (__CHAR_BIT__ * sizeof (unsigned int) - y)) ^ (x >> y);
     352  }
     353  
     354  unsigned int
     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
     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
     367  f61 (unsigned short int x, int y)
     368  {
     369    return (x << (__CHAR_BIT__ * sizeof (unsigned short) - y)) ^ (x >> y);
     370  }
     371  
     372  unsigned short int
     373  f62 (unsigned short int x, long int y)
     374  {
     375    return (x << (__CHAR_BIT__ * sizeof (unsigned short) - y)) ^ (x >> y);
     376  }
     377  
     378  unsigned char
     379  f63 (unsigned char x, int y)
     380  {
     381    return (x << (__CHAR_BIT__ * sizeof (unsigned char) - y)) ^ (x >> y);
     382  }
     383  
     384  unsigned char
     385  f64 (unsigned char x, long int y)
     386  {
     387    return (x << (__CHAR_BIT__ * sizeof (unsigned char) - y)) ^ (x >> y);
     388  }
     389  
     390  unsigned int
     391  f65 (unsigned int x, int y)
     392  {
     393    return (x << y) + (x >> (__CHAR_BIT__ * __SIZEOF_INT__ - y));
     394  }
     395  
     396  unsigned int
     397  f66 (unsigned int x, long int y)
     398  {
     399    return (x << y) + (x >> (__CHAR_BIT__ * __SIZEOF_INT__ - y));
     400  }
     401  
     402  unsigned int
     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
     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
     415  f69 (unsigned short int x, int y)
     416  {
     417    return (x << y) + (x >> (__CHAR_BIT__ * __SIZEOF_SHORT__ - y));
     418  }
     419  
     420  unsigned short int
     421  f70 (unsigned short int x, long int y)
     422  {
     423    return (x << y) + (x >> (__CHAR_BIT__ * __SIZEOF_SHORT__ - y));
     424  }
     425  
     426  unsigned char
     427  f71 (unsigned char x, int y)
     428  {
     429    return (x << y) + (x >> (__CHAR_BIT__ - y));
     430  }
     431  
     432  unsigned char
     433  f72 (unsigned char x, long int y)
     434  {
     435    return (x << y) + (x >> (__CHAR_BIT__ - y));
     436  }
     437  
     438  unsigned int
     439  f73 (unsigned int x, int y)
     440  {
     441    return (x << y) + (x >> (__CHAR_BIT__ * sizeof (unsigned int) - y));
     442  }
     443  
     444  unsigned int
     445  f74 (unsigned int x, long int y)
     446  {
     447    return (x << y) + (x >> (__CHAR_BIT__ * sizeof (unsigned int) - y));
     448  }
     449  
     450  unsigned int
     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
     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
     463  f77 (unsigned short int x, int y)
     464  {
     465    return (x << y) + (x >> (__CHAR_BIT__ * sizeof (unsigned short) - y));
     466  }
     467  
     468  unsigned short int
     469  f78 (unsigned short int x, long int y)
     470  {
     471    return (x << y) + (x >> (__CHAR_BIT__ * sizeof (unsigned short) - y));
     472  }
     473  
     474  unsigned char
     475  f79 (unsigned char x, int y)
     476  {
     477    return (x << y) + (x >> (__CHAR_BIT__ * sizeof (unsigned char) - y));
     478  }
     479  
     480  unsigned char
     481  f80 (unsigned char x, long int y)
     482  {
     483    return (x << y) + (x >> (__CHAR_BIT__ * sizeof (unsigned char) - y));
     484  }
     485  
     486  unsigned int
     487  f81 (unsigned int x, int y)
     488  {
     489    return (x << (__CHAR_BIT__ * __SIZEOF_INT__ - y)) + (x >> y);
     490  }
     491  
     492  unsigned int
     493  f82 (unsigned int x, long int y)
     494  {
     495    return (x << (__CHAR_BIT__ * __SIZEOF_INT__ - y)) + (x >> y);
     496  }
     497  
     498  unsigned int
     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
     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
     511  f85 (unsigned short int x, int y)
     512  {
     513    return (x << (__CHAR_BIT__ * __SIZEOF_SHORT__ - y)) + (x >> y);
     514  }
     515  
     516  unsigned short int
     517  f86 (unsigned short int x, long int y)
     518  {
     519    return (x << (__CHAR_BIT__ * __SIZEOF_SHORT__ - y)) + (x >> y);
     520  }
     521  
     522  unsigned char
     523  f87 (unsigned char x, int y)
     524  {
     525    return (x << (__CHAR_BIT__ - y)) + (x >> y);
     526  }
     527  
     528  unsigned char
     529  f88 (unsigned char x, long int y)
     530  {
     531    return (x << (__CHAR_BIT__ - y)) + (x >> y);
     532  }
     533  
     534  unsigned int
     535  f89 (unsigned int x, int y)
     536  {
     537    return (x << (__CHAR_BIT__ * sizeof (unsigned int) - y)) + (x >> y);
     538  }
     539  
     540  unsigned int
     541  f90 (unsigned int x, long int y)
     542  {
     543    return (x << (__CHAR_BIT__ * sizeof (unsigned int) - y)) + (x >> y);
     544  }
     545  
     546  unsigned int
     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
     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
     559  f93 (unsigned short int x, int y)
     560  {
     561    return (x << (__CHAR_BIT__ * sizeof (unsigned short) - y)) + (x >> y);
     562  }
     563  
     564  unsigned short int
     565  f94 (unsigned short int x, long int y)
     566  {
     567    return (x << (__CHAR_BIT__ * sizeof (unsigned short) - y)) + (x >> y);
     568  }
     569  
     570  unsigned char
     571  f95 (unsigned char x, int y)
     572  {
     573    return (x << (__CHAR_BIT__ * sizeof (unsigned char) - y)) + (x >> y);
     574  }
     575  
     576  unsigned char
     577  f96 (unsigned char x, long int y)
     578  {
     579    return (x << (__CHAR_BIT__ * sizeof (unsigned char) - y)) + (x >> y);
     580  }