]> git.ipfire.org Git - thirdparty/gcc.git/commit
RISC-V: Fix wrong LMUL when only implict zve32f.
authorMonk Chiang <monk.chiang@sifive.com>
Tue, 4 Feb 2025 07:29:17 +0000 (15:29 +0800)
committerKito Cheng <kito.cheng@sifive.com>
Tue, 1 Apr 2025 01:16:15 +0000 (09:16 +0800)
commit28751389a68e131e21fcaf8e3f661d76a2b4d0cc
tree4169abbe7e5b22865b2d62b990c5c205c0b34932
parentf6da8c5b993a326fe0528f26b600a25a4bd7c11e
RISC-V: Fix wrong LMUL when only implict zve32f.

According to Section 3.4.2, Vector Register Grouping, in the RISC-V
Vector Specification, the rule for LMUL is LMUL >= SEW/ELEN

Changes since V2:
- Add check on vector-iterators.md
- Add one more testcase to check the VLS use correct mode.

gcc/ChangeLog:

* config/riscv/riscv-v.cc: Add restrict for insert LMUL.
* config/riscv/riscv-vector-builtins-types.def:
Use RVV_REQUIRE_ELEN_64 to check LMUL number.
* config/riscv/riscv-vector-switch.def: Likewise.
* config/riscv/vector-iterators.md: Check TARGET_VECTOR_ELEN_64
rather than "TARGET_MIN_VLEN > 32" for all iterator.

gcc/testsuite/ChangeLog:

* gcc.target/riscv/rvv/autovec/pr111391-2.c: Update test.
* gcc.target/riscv/rvv/base/abi-14.c: Update test.
* gcc.target/riscv/rvv/base/abi-16.c: Update test.
* gcc.target/riscv/rvv/base/abi-18.c: Update test.
* gcc.target/riscv/rvv/base/vsetvl_zve32-1.c: New test.
* gcc.target/riscv/rvv/base/vsetvl_zve32-2.c: New test.

Co-authored-by: Kito Cheng <kito.cheng@sifive.com>
gcc/config/riscv/riscv-v.cc
gcc/config/riscv/riscv-vector-builtins-types.def
gcc/config/riscv/riscv-vector-switch.def
gcc/config/riscv/vector-iterators.md
gcc/testsuite/gcc.target/riscv/rvv/autovec/pr111391-2.c
gcc/testsuite/gcc.target/riscv/rvv/base/abi-14.c
gcc/testsuite/gcc.target/riscv/rvv/base/abi-16.c
gcc/testsuite/gcc.target/riscv/rvv/base/abi-18.c
gcc/testsuite/gcc.target/riscv/rvv/base/vsetvl_zve32-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/base/vsetvl_zve32-2.c [new file with mode: 0644]