]> git.ipfire.org Git - thirdparty/gcc.git/commit
RISC-V: Optimized for strided load/store with stride == element width[PR111450]
authorxuli <xuli1@eswincomputing.com>
Thu, 21 Sep 2023 03:04:56 +0000 (03:04 +0000)
committerxuli <xuli1@eswincomputing.com>
Thu, 21 Sep 2023 04:00:06 +0000 (04:00 +0000)
commit47065ff360292c683670efb96df4b61f57dc1d9a
tree844ad15895cd94362051c5ad0749870206997097
parent4e35cf2ea1fbcdf798b37b2e00d9977683b17b8a
RISC-V: Optimized for strided load/store with stride == element width[PR111450]

When stride == element width, vlsse should be optimized into vle.v.
vsse should be optimized into vse.v.

PR target/111450

gcc/ChangeLog:

* config/riscv/constraints.md (c01): const_int 1.
(c02): const_int 2.
(c04): const_int 4.
(c08): const_int 8.
* config/riscv/predicates.md (vector_eew8_stride_operand): New predicate for stride operand.
(vector_eew16_stride_operand): Ditto.
(vector_eew32_stride_operand): Ditto.
(vector_eew64_stride_operand): Ditto.
* config/riscv/vector-iterators.md: New iterator for stride operand.
* config/riscv/vector.md: Add stride = element width constraint.

gcc/testsuite/ChangeLog:

* gcc.target/riscv/rvv/base/pr111450.c: New test.
gcc/config/riscv/constraints.md
gcc/config/riscv/predicates.md
gcc/config/riscv/vector-iterators.md
gcc/config/riscv/vector.md
gcc/testsuite/gcc.target/riscv/rvv/base/pr111450.c [new file with mode: 0644]