RISC-V: Add vectorized strcmp and strncmp.
commitd468718c9a097aeb8794fb1a2df6db2c1064d7f7
authorRobin Dapp <rdapp@ventanamicro.com>
Fri, 1 Dec 2023 09:07:23 +0000 (1 10:07 +0100)
committerRobin Dapp <rdapp@ventanamicro.com>
Fri, 8 Dec 2023 16:31:50 +0000 (8 17:31 +0100)
treeb5871a49392cdb5a113ca074b928b272777d1f5f
parent2664964b2f695e947faea4c29dbddd3615cc4b0b
RISC-V: Add vectorized strcmp and strncmp.

This patch adds vectorized strcmp and strncmp implementations and
tests.  Similar to strlen, expansion is still guarded by
-minline-str(n)cmp.

gcc/ChangeLog:

PR target/112109

* config/riscv/riscv-protos.h (expand_strcmp): Declare.
* config/riscv/riscv-string.cc (riscv_expand_strcmp): Add
strategy handling and delegation to scalar and vector expanders.
(expand_strcmp): Vectorized implementation.
* config/riscv/riscv.md: Add TARGET_VECTOR to strcmp and strncmp
expander.

gcc/testsuite/ChangeLog:

* gcc.target/riscv/rvv/autovec/builtin/strcmp-run.c: New test.
* gcc.target/riscv/rvv/autovec/builtin/strcmp.c: New test.
* gcc.target/riscv/rvv/autovec/builtin/strncmp-run.c: New test.
* gcc.target/riscv/rvv/autovec/builtin/strncmp.c: New test.
gcc/config/riscv/riscv-protos.h
gcc/config/riscv/riscv-string.cc
gcc/config/riscv/riscv.md
gcc/testsuite/gcc.target/riscv/rvv/autovec/builtin/strcmp-run.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/builtin/strcmp.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/builtin/strncmp-run.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/builtin/strncmp.c [new file with mode: 0644]