diff options
author | Jeff Law <jlaw@ventanamicro.com> | 2024-06-16 08:36:27 -0600 |
---|---|---|
committer | Jeff Law <jlaw@ventanamicro.com> | 2024-06-16 08:37:56 -0600 |
commit | 59dfce6d618ccf5865dec216603dbc25a4f7bf2d (patch) | |
tree | 1d28adc3a45f6918bebbdf7a9cbaf76b19014a6e /gcc/tree-dump.h | |
parent | 0240909cb03f2a37a74364b00e51ad782c748551 (diff) | |
download | gcc-59dfce6d618ccf5865dec216603dbc25a4f7bf2d.zip gcc-59dfce6d618ccf5865dec216603dbc25a4f7bf2d.tar.gz gcc-59dfce6d618ccf5865dec216603dbc25a4f7bf2d.tar.bz2 |
[to-be-committed] [RISC-V] Improve (1 << N) | C for rv64
Another improvement for generating Zbs instructions.
In this case we're looking at stuff like (1 << N) | C where N varies and C is a
single bit constant.
In this pattern the (1 << N) happens in SImode, but is zero extended out to
DImode before the bit manipulation. The fact that we're modifying a DImode
object in the logical op is important as it means we don't have to worry about
whether or not the resulting value is sign extended from SI to DI.
This has run through Ventana's CI system. I'll wait for it to roll through
pre-commit CI before moving forward.
gcc/
* config/riscv/bitmanip.md ((1 << N) | C): New splitter for IOR/XOR
of a single bit an a DImode object.
gcc/testsuite/
* gcc.target/riscv/zbs-zext.c: New test.
Diffstat (limited to 'gcc/tree-dump.h')
0 files changed, 0 insertions, 0 deletions