Skip to content

Commit

Permalink
Fix PR 106600: __builtin_bswap32 is not hooked up for ZBB for 32bit
Browse files Browse the repository at this point in the history
The problem here is the bswap<mode>2 pattern had a check for TARGET_64BIT
but then used the X iterator. Since the X iterator is either SI or DI depending
on the setting TARGET_64BIT, there is no reason for the TARGET_64BIT.

OK? Built and tested on both riscv32-linux-gnu and riscv64-linux-gnu.

Thanks,
Andrew Pinski

gcc/ChangeLog:

	PR target/106600
	* config/riscv/bitmanip.md (bswap<mode>2): Remove
	condition on TARGET_64BIT as X is already conditional there.

gcc/testsuite/ChangeLog:

	PR target/106600
	* gcc.target/riscv/zbb_32_bswap-1.c: New test.
	* gcc.target/riscv/zbb_bswap-1.c: New test.
  • Loading branch information
apinski-cavium committed Aug 24, 2022
1 parent 55d8c54 commit cb2daf5
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 1 deletion.
2 changes: 1 addition & 1 deletion gcc/config/riscv/bitmanip.md
Original file line number Diff line number Diff line change
Expand Up @@ -272,7 +272,7 @@
(define_insn "bswap<mode>2"
[(set (match_operand:X 0 "register_operand" "=r")
(bswap:X (match_operand:X 1 "register_operand" "r")))]
"TARGET_64BIT && TARGET_ZBB"
"TARGET_ZBB"
"rev8\t%0,%1"
[(set_attr "type" "bitmanip")])

Expand Down
11 changes: 11 additions & 0 deletions gcc/testsuite/gcc.target/riscv/zbb_32_bswap-1.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
/* { dg-do compile } */
/* { dg-options "-march=rv32gc_zbb -mabi=ilp32" } */
/* { dg-skip-if "" { *-*-* } { "-O0" } } */

int foo(int n)
{
return __builtin_bswap32(n);
}

/* { dg-final { scan-assembler "rev8" } } */

11 changes: 11 additions & 0 deletions gcc/testsuite/gcc.target/riscv/zbb_bswap-1.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
/* { dg-do compile } */
/* { dg-options "-march=rv64gc_zbb -mabi=lp64" } */
/* { dg-skip-if "" { *-*-* } { "-O0" } } */

int foo(int n)
{
return __builtin_bswap32(n);
}

/* { dg-final { scan-assembler "rev8" } } */

0 comments on commit cb2daf5

Please sign in to comment.