On 8/5/2026 1:26 PM, Robin Dapp wrote:
Hi,

In PR126550 I noticed that we expand a constant vector using a "VLA"
stepped-pattern expansion with several ops (vid, shift, add) while we
could just load the constant from the constant pool.  On top, this
particular expansion uses a different constant that it stores in the
constant pool anyway, so it's twice as bad.  Until we have better
heuristics, this patch forces known-length vector constants to memory.

Regtested on rv64gcv_zvl512b.

Regards
  Robin

gcc/ChangeLog:

        * config/riscv/riscv-v.cc (expand_const_vector): Force VLS
        constants to mem.

gcc/testsuite/ChangeLog:

        * gcc.target/riscv/rvv/autovec/pr126550-2.c: Expect
        constant-pool vector load.
Per the discussion in the patchwork meeting.  This is quite sensible for any nontrivial constant.  OK.

jeff

Reply via email to