On 8/26/24 6:37 PM, Patrick O'Neill wrote:
Also explicitly disallow CONST_VECTOR_DUPLICATE_P for now.
CONST_VECTOR_DUPLICATE_P was previously disallowed implicitly.

gcc/ChangeLog:

        * config/riscv/riscv-v.cc (expand_vec_series): Update comment.
        (expand_vector_init_insert_elems): Ditto.
        (expand_const_vector): Add catch-all pattern.
        * config/riscv/riscv.cc (riscv_const_insns): Add costing for catch-all
        pattern.

gcc/testsuite/ChangeLog:

        * gcc.target/riscv/rvv/autovec/materialize-1.c: New test.
        * gcc.target/riscv/rvv/autovec/materialize-2.c: New test.
        * gcc.target/riscv/rvv/autovec/materialize-3.c: New test.
        * gcc.target/riscv/rvv/autovec/materialize-4.c: New test.
        * gcc.target/riscv/rvv/autovec/materialize-5.c: New test.
        * gcc.target/riscv/rvv/autovec/materialize-6.c: New test.

Signed-off-by: Patrick O'Neill <patr...@rivosinc.com>
---
This causes 4 new regressions on glibc rv64gcv:
Appears to be spilling due to the increased register pressure from 
materializing constants for vslide1down:
FAIL: gcc.dg/vect/costmodel/riscv/rvv/pr113112-4.c scan-assembler-not jr
FAIL: gcc.dg/vect/costmodel/riscv/rvv/pr113112-4.c scan-assembler-not sp

Caused due to vle32/64 being replaced with splat & vslide1down:
FAIL: gcc.target/riscv/rvv/autovec/vls/init-5.c -O3 -ftree-vectorize 
-mrvv-vector-bits=scalable  scan-assembler-times vle32\\.v 7
FAIL: gcc.target/riscv/rvv/autovec/vls/init-7.c -O3 -ftree-vectorize 
-mrvv-vector-bits=scalable  scan-assembler-times vle64\\.v 7
Going to assume you'll do something with those scan-asm tests as a follow-up.


I'm not sure if it's profitable to replace a lmul8 load with 127 vslide1down.vx
ops but we're being honest with the middle end when returning the # of insns
we'll be emitting when costing...
Yea. I think in general we don't really know how LMUL is going to perform on designs. I'd rather be honest with the middle end.

OK.

jeff

Reply via email to