Constant vectors are currently spilled/loaded from memory often. This series
increases the number of costed patterns via a catch-all pattern and fixes a
variety of bugs I found along the way.
Patrick O'Neill (9):
RISC-V: Use encoded nelts when calling repeating_sequence_p
RISC-V: Fix vid const vector expander for non-npatterns size steps
RISC-V: Handle 0.0 floating point pattern costing to match
const_vector expander
RISC-V: Reorder insn cost match order to match corresponding expander
match order
RISC-V: Handle case when constant vector construction target rtx is
not a register
RISC-V: Emit costs for bool and stepped const vectors
RISC-V: Allow non-duplicate bool patterns in expand_const_vector
RISC-V: Move helper functions above expand_const_vector
RISC-V: Add vslide1up/down pattern to expand_const_vector
gcc/config/riscv/riscv-v.cc | 343 +++++++++---------
gcc/config/riscv/riscv-v.h | 88 +++++
gcc/config/riscv/riscv.cc | 167 ++++++++-
.../riscv/rvv/autovec/materialize-1.c | 13 +
.../riscv/rvv/autovec/materialize-2.c | 13 +
.../riscv/rvv/autovec/materialize-3.c | 13 +
.../riscv/rvv/autovec/materialize-4.c | 13 +
.../riscv/rvv/autovec/materialize-5.c | 13 +
.../riscv/rvv/autovec/materialize-6.c | 13 +
9 files changed, 487 insertions(+), 189 deletions(-)
create mode 100644 gcc/config/riscv/riscv-v.h
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/materialize-1.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/materialize-2.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/materialize-3.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/materialize-4.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/materialize-5.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/materialize-6.c
--
2.34.1