1  /* Check that we do not emit & 63 via risbg for rotating.  */
       2  
       3  /* { dg-options "-O1 -m64" } */
       4  
       5  /* { dg-final { scan-assembler-not "risbg" } } */
       6  /* { dg-final { scan-assembler-not "nilf" } } */
       7  
       8  long shiftl (long in, unsigned long sh)
       9  {
      10     sh %= 64;
      11     return (in << sh);
      12  }
      13  
      14  unsigned long shiftll (unsigned long in, unsigned long sh)
      15  {
      16     sh %= 64;
      17     return (in << sh);
      18  }
      19  
      20  long shiftr (long in, unsigned long sh)
      21  {
      22     sh %= 64;
      23     return (in >> sh);
      24  }
      25  
      26  unsigned long shiftrl (unsigned long in, unsigned long sh)
      27  {
      28     sh %= 64;
      29     return (in >> sh);
      30  }
      31  
      32  unsigned long rotlmod (unsigned long in, unsigned long sh)
      33  {
      34     sh %= 64;
      35     return (in << sh) | (in >> (64 - sh));
      36  }