| /* { dg-do compile } */ |
| /* { dg-options "-march=rv64gc -mabi=lp64 -O" } */ |
| |
| /* Test for lshrsi3_zero_extend_3+1 pattern that uses p2m1_shift_operand. */ |
| unsigned int |
| sub1 (unsigned int i) |
| { |
| return (i << 1) >> 1; |
| } |
| |
| unsigned int |
| sub2 (unsigned int i) |
| { |
| return (i << 20) >> 20; |
| } |
| |
| unsigned long |
| sub3 (unsigned long i) |
| { |
| return (i << 1) >> 1; |
| } |
| |
| unsigned long |
| sub4 (unsigned long i) |
| { |
| return (i << 52) >> 52; |
| } |
| |
| unsigned int |
| sub5 (unsigned int i) |
| { |
| unsigned int j; |
| j = i >> 24; |
| j = j * (1 << 24); |
| j = i - j; |
| return j; |
| } |
| /* { dg-final { scan-assembler-times "slli" 5 } } */ |
| /* { dg-final { scan-assembler-times "srli" 5 } } */ |
| /* { dg-final { scan-assembler-times "slliw" 1 } } */ |
| /* { dg-final { scan-assembler-times "srliw" 1 } } */ |