On 8/5/24 10:23 AM, Patrick O'Neill wrote:
On 8/5/24 01:23, Liao Shihua wrote:
PR 116150: Zvk* and Zvb* extensions requires v or zve*
extension, but on gcc v is implied.
gcc/ChangeLog:
* common/config/riscv/riscv-common.cc: Removed the zvk
extension's implicit expansion of v extension.
* config/riscv/arch-canonicalize: Ditto.
* config/riscv/riscv.cc (riscv_override_options_internal):
Throw error when zvb or zvk extension without v extension.
gcc/testsuite/ChangeLog:
* gcc.target/riscv/rvv/base/
target_attribute_v_with_intrinsic-47.c: add v or zve* to -march.
* gcc.target/riscv/rvv/base/
target_attribute_v_with_intrinsic-48.c: Ditto.
* gcc.target/riscv/rvv/base/
target_attribute_v_with_intrinsic-49.c: Ditto.
* gcc.target/riscv/rvv/base/
target_attribute_v_with_intrinsic-50.c: Ditto.
* gcc.target/riscv/rvv/base/
target_attribute_v_with_intrinsic-51.c: Ditto.
* gcc.target/riscv/rvv/base/
target_attribute_v_with_intrinsic-52.c: Ditto.
* gcc.target/riscv/rvv/base/
target_attribute_v_with_intrinsic-53.c: Ditto.
* gcc.target/riscv/rvv/base/zvbc-intrinsic.c: Ditto.
* gcc.target/riscv/rvv/base/zvbc_vx_constraint-1.c: Ditto.
* gcc.target/riscv/rvv/base/zvbc_vx_constraint-2.c: Ditto.
* gcc.target/riscv/rvv/base/zvknhb-intrinsic.c: Ditto.
* gcc.target/riscv/zvbb.c: Ditto.
* gcc.target/riscv/zvbc.c: Ditto.
* gcc.target/riscv/zvkb.c: Ditto.
* gcc.target/riscv/zvkg.c: Ditto.
* gcc.target/riscv/zvkn-1.c: Ditto.
* gcc.target/riscv/zvkn.c: Ditto.
* gcc.target/riscv/zvknc-1.c: Ditto.
* gcc.target/riscv/zvknc-2.c: Ditto.
* gcc.target/riscv/zvknc.c: Ditto.
* gcc.target/riscv/zvkned.c: Ditto.
* gcc.target/riscv/zvkng-1.c: Ditto.
* gcc.target/riscv/zvkng-2.c: Ditto.
* gcc.target/riscv/zvkng.c: Ditto.
* gcc.target/riscv/zvknha.c: Ditto.
* gcc.target/riscv/zvknhb.c: Ditto.
* gcc.target/riscv/zvks-1.c: Ditto.
* gcc.target/riscv/zvks.c: Ditto.
* gcc.target/riscv/zvksc-1.c: Ditto.
* gcc.target/riscv/zvksc-2.c: Ditto.
* gcc.target/riscv/zvksc.c: Ditto.
* gcc.target/riscv/zvksed.c: Ditto.
* gcc.target/riscv/zvksg-1.c: Ditto.
* gcc.target/riscv/zvksg-2.c: Ditto.
* gcc.target/riscv/zvksg.c: Ditto.
* gcc.target/riscv/zvksh.c: Ditto.
* gcc.target/riscv/pr116150-1.c: New test.
* gcc.target/riscv/pr116150-2.c: New test.
* gcc.target/riscv/pr116150-3.c: New test.
* gcc.target/riscv/pr116150-4.c: New test.
---
Thanks for the patch! It's not clear to me if we want to match LLVM's
behavior here.
Here's where GCC's current behavior is documented: https://gcc.gnu.org/
git/?p=gcc.git;a=blob;f=gcc/doc/
invoke.texi;h=0fe99ca8ef6e8868f60369f6329fe29599d89159;hb=HEAD#l31150
Maybe Jeff or Kito can provide some guidance for what we want to do here.
Our behavior is documented as implying V if we were to enable Zv*, so
unless there's a strong need to follow LLVM here, I'd tend to leave it
as-is. But we can certainly discuss tomorrow AM.
jeff