(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
riscv/
shift-shift-2.c
       1  /* { dg-do compile } */
       2  /* { dg-options "-march=rv64gc -mabi=lp64" } */
       3  /* { dg-skip-if "" { *-*-* } { "-O0" "-Og" } } */
       4  
       5  /* Test for lshrsi3_zero_extend_3+1 pattern that uses p2m1_shift_operand.  */
       6  unsigned int
       7  sub1 (unsigned int i)
       8  {
       9    return (i << 1) >> 1;
      10  }
      11  
      12  unsigned int
      13  sub2 (unsigned int i)
      14  {
      15    return (i << 20) >> 20;
      16  }
      17  
      18  unsigned long
      19  sub3 (unsigned long i)
      20  {
      21    return (i << 1) >> 1;
      22  }
      23  
      24  unsigned long
      25  sub4 (unsigned long i)
      26  {
      27    return (i << 52) >> 52;
      28  }
      29  
      30  unsigned int
      31  sub5 (unsigned int i)
      32  {
      33    unsigned int j;
      34    j = i >> 24;
      35    j = j * (1 << 24);
      36    j = i - j;
      37    return j;
      38  }
      39  /* { dg-final { scan-assembler-times "slli" 5 } } */
      40  /* { dg-final { scan-assembler-times "srli" 5 } } */
      41  /* { dg-final { scan-assembler-times "slliw" 1 } } */
      42  /* { dg-final { scan-assembler-times "srliw" 1 } } */