(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
i386/
pr82498-1.c
       1  /* PR target/82498 */
       2  /* { dg-do compile } */
       3  /* { dg-options "-O2 -mtune=generic -masm=att" } */
       4  /* { dg-final { scan-assembler-not {\mand[bwlq]\M} } } */
       5  
       6  unsigned
       7  f1 (unsigned x, unsigned char y)
       8  {
       9    if (y == 0)
      10      return x;
      11    y &= __CHAR_BIT__ * __SIZEOF_INT__ - 1;
      12    return (x << y) | (x >> (__CHAR_BIT__ * __SIZEOF_INT__ - y));
      13  }
      14  
      15  unsigned
      16  f2 (unsigned x, unsigned y)
      17  {
      18    if (y == 0)
      19      return x;
      20    y &= __CHAR_BIT__ * __SIZEOF_INT__ - 1;
      21    return (x << y) | (x >> (__CHAR_BIT__ * __SIZEOF_INT__ - y));
      22  }
      23  
      24  unsigned
      25  f3 (unsigned x, unsigned short y)
      26  {
      27    if (y == 0)
      28      return x;
      29    y &= __CHAR_BIT__ * __SIZEOF_INT__ - 1;
      30    return (x << y) | (x >> (__CHAR_BIT__ * __SIZEOF_INT__ - y));
      31  }
      32  
      33  unsigned
      34  f4 (unsigned x, unsigned char y)
      35  {
      36    y &= __CHAR_BIT__ * __SIZEOF_INT__ - 1;
      37    return (x << y) | (x >> (-y & (__CHAR_BIT__ * __SIZEOF_INT__ - 1)));
      38  }
      39  
      40  unsigned
      41  f5 (unsigned x, unsigned int y)
      42  {
      43    y &= __CHAR_BIT__ * __SIZEOF_INT__ - 1;
      44    return (x << y) | (x >> (-y & (__CHAR_BIT__ * __SIZEOF_INT__ - 1)));
      45  }
      46  
      47  unsigned
      48  f6 (unsigned x, unsigned short y)
      49  {
      50    y &= __CHAR_BIT__ * __SIZEOF_INT__ - 1;
      51    return (x << y) | (x >> (-y & (__CHAR_BIT__ * __SIZEOF_INT__ - 1)));
      52  }