/* { 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 } } } } */