]> gcc.gnu.org Git - gcc.git/commit
RISC-V: Add zero_extract support for rv64gc
authorChristoph Müllner <christoph.muellner@vrull.eu>
Mon, 6 May 2024 10:33:32 +0000 (12:33 +0200)
committerJeff Law <jlaw@ventanamicro.com>
Mon, 27 May 2024 00:00:07 +0000 (18:00 -0600)
commit76f36d93c3107544c6dbdffa616599ce3fdb44eb
tree304de4d5311a2ef988a4a50b0775c309afd5d6b3
parent31ab40016ae2864e4aa7741a1e3b6d867a6779cc
RISC-V: Add zero_extract support for rv64gc

The combiner attempts to optimize a zero-extension of a logical right shift
using zero_extract. We already utilize this optimization for those cases
that result in a single instructions.  Let's add a insn_and_split
pattern that also matches the generic case, where we can emit an
optimized sequence of a slli/srli.

Tested with SPEC CPU 2017 (rv64gc).

PR target/111501

gcc/ChangeLog:

* config/riscv/riscv.md (*lshr<GPR:mode>3_zero_extend_4): New
pattern for zero-extraction.

gcc/testsuite/ChangeLog:

* gcc.target/riscv/extend-shift-helpers.h: New test.
* gcc.target/riscv/pr111501.c: New test.
* gcc.target/riscv/zero-extend-rshift-32.c: New test.
* gcc.target/riscv/zero-extend-rshift-64.c: New test.
* gcc.target/riscv/zero-extend-rshift.c: New test.

Signed-off-by: Christoph Müllner <christoph.muellner@vrull.eu>
(cherry picked from commit 3b9c760072c7792cbae6f38894756d2b96c2fd8c)
gcc/config/riscv/riscv.md
gcc/testsuite/gcc.target/riscv/extend-shift-helpers.h [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/pr111501.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/zero-extend-rshift-32.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/zero-extend-rshift-64.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/zero-extend-rshift.c [new file with mode: 0644]
This page took 0.071574 seconds and 6 git commands to generate.