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

Reply via email to