/* { dg-do compile } */ /* { dg-options "-march=rv32gc_xtheadbb" { target { rv32 } } } */ /* { dg-options "-march=rv64gc_xtheadbb" { target { rv64 } } } */ /* { dg-skip-if "" { *-*-* } { "-O0" } } */ unsigned long foo1 (unsigned long rs1) { unsigned sz = sizeof(unsigned long) * 8; unsigned shamt = sz - 11; return (rs1 << shamt) | (rs1 >> (sz - shamt)); } unsigned int foo2 (unsigned int rs1) { unsigned sz = sizeof(unsigned int) * 8; unsigned shamt = sz - 11; return (rs1 << shamt) | (rs1 >> (sz - shamt)); } /* { dg-final { scan-assembler-times "th.srri\t" 2 { target { rv32 } } } } */ /* { dg-final { scan-assembler-times "th.srri\t" 1 { target { rv64 } } } } */ /* { dg-final { scan-assembler-times "th.srriw\t" 1 { target { rv64 } } } } */