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  int
       7  f1 (int x, unsigned char y)
       8  {
       9    y &= __CHAR_BIT__ * __SIZEOF_INT__ - 1;
      10    return x >> y;
      11  }
      12  
      13  unsigned
      14  f2 (unsigned x, unsigned char y)
      15  {
      16    y &= __CHAR_BIT__ * __SIZEOF_INT__ - 1;
      17    return x >> y;
      18  }
      19  
      20  unsigned
      21  f3 (unsigned x, unsigned char y)
      22  {
      23    y &= __CHAR_BIT__ * __SIZEOF_INT__ - 1;
      24    return x << y;
      25  }
      26  
      27  unsigned
      28  f4 (unsigned x, unsigned char y)
      29  {
      30    y &= __CHAR_BIT__ * __SIZEOF_INT__ - 1;
      31    return x | (1U << y);
      32  }
      33  
      34  unsigned
      35  f5 (unsigned x, unsigned char y)
      36  {
      37    y &= __CHAR_BIT__ * __SIZEOF_INT__ - 1;
      38    return x ^ (1U << y);
      39  }
      40  
      41  unsigned
      42  f6 (unsigned x, unsigned char y)
      43  {
      44    y &= __CHAR_BIT__ * __SIZEOF_INT__ - 1;
      45    return (x + 2) & ~(1U << y);
      46  }