]> git.ipfire.org Git - thirdparty/gcc.git/commit
[PATCH v2 3/3] RISC-V: cmpmem for RISCV with V extension
authorSergei Lewis <slewis@rivosinc.com>
Tue, 25 Jun 2024 21:26:14 +0000 (15:26 -0600)
committerJeff Law <jlaw@ventanamicro.com>
Tue, 25 Jun 2024 21:26:14 +0000 (15:26 -0600)
commitb1e828dd9694294de1ec71e319d32a6b30b087d8
tree9566b022e7b94b16e07f89eecd47f5125e6faaa4
parentd16355c72c7f7b54ecf06371d14d7ad309ea4c34
[PATCH v2 3/3] RISC-V: cmpmem for RISCV with V extension

So this is the cmpmem patch from Sergei, updated for the trunk.

Updates included adjusting the existing cmpmemsi expander to
conditionally try expansion via vector.  And a minor testsuite
adjustment to turn off vector expansion in one test that is primarily
focused on vset optimization and ensuring we don't have extras.

I've spun this in my tester successfully and just want to see a clean
run through precommit CI before moving forward.

Jeff
gcc/ChangeLog:

* config/riscv/riscv-protos.h (riscv_vector::expand_vec_cmpmem): New
function declaration.
* config/riscv/riscv-string.cc (riscv_vector::expand_vec_cmpmem): New
function.
* config/riscv/riscv.md (cmpmemsi): Try riscv_vector::expand_vec_cmpmem
for constant lengths.

gcc/testsuite/ChangeLog:

* gcc.target/riscv/rvv/base/cmpmem-1.c: New codegen tests
* gcc.target/riscv/rvv/base/cmpmem-2.c: New execution tests
* gcc.target/riscv/rvv/base/cmpmem-3.c: New codegen tests
* gcc.target/riscv/rvv/base/cmpmem-4.c: New codegen tests
* gcc.target/riscv/rvv/autovec/vls/misalign-1.c: Turn off vector mem* and
str* handling.
gcc/config/riscv/riscv-protos.h
gcc/config/riscv/riscv-string.cc
gcc/config/riscv/riscv.md
gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/misalign-1.c
gcc/testsuite/gcc.target/riscv/rvv/base/cmpmem-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/base/cmpmem-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/base/cmpmem-3.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/base/cmpmem-4.c [new file with mode: 0644]