blob: 411d52007d26885128b2f9d942e0a2e1a199879a [file] [log] [blame]
/* { dg-do compile } */
/* { dg-options "-march=rv32gc_xtheadbb" { target { rv32 } } } */
/* { dg-options "-march=rv64gc_xtheadbb" { target { rv64 } } } */
/* { dg-skip-if "" { *-*-* } { "-O0" "-O1" "-Og" } } */
unsigned int
foo32 (unsigned int x)
{
return (((x << 24) & 0xff000000)
| ((x << 8) & 0xff0000)
| ((x >> 8) & 0xff00)
| ((x >> 24) & 0xff));
}
unsigned int
foo32_1 (unsigned int x)
{
return __builtin_bswap32 (x);
}
#if __riscv_xlen == 64
unsigned long
foo64 (unsigned long x)
{
return (((x << 56) & 0xff00000000000000ull)
| ((x << 40) & 0xff000000000000ull)
| ((x << 24) & 0xff0000000000ull)
| ((x << 8) & 0xff00000000ull)
| ((x >> 8) & 0xff000000)
| ((x >> 24) & 0xff0000)
| ((x >> 40) & 0xff00)
| ((x >> 56) & 0xff));
}
unsigned long
foo64_1 (unsigned long x)
{
return __builtin_bswap64 (x);
}
#endif
/* { dg-final { scan-assembler-times "th.rev\t" 2 { target { rv32 } } } } */
/* { dg-final { scan-assembler-times "th.revw\t" 2 { target { rv64 } } } } */
/* { dg-final { scan-assembler-times "th.rev\t" 2 { target { rv64 } } } } */