]> git.ipfire.org Git - thirdparty/gcc.git/commit
RISC-V: Remove unreasonable TARGET_64BIT for VLS modes with size = 64bit
authorJuzhe-Zhong <juzhe.zhong@rivai.ai>
Wed, 6 Sep 2023 12:18:14 +0000 (20:18 +0800)
committerPan Li <pan2.li@intel.com>
Wed, 6 Sep 2023 13:55:26 +0000 (21:55 +0800)
commitee21f79f72980732214156bae2eb5daf7e089bda
tree32344cedfe62260cd2a13d78a43a9d89f5385c1a
parentf2d7a4001a33884bc1dfd8da58e58dee18e3cd71
RISC-V: Remove unreasonable TARGET_64BIT for VLS modes with size = 64bit

Previously,  I add TARGET_64BIT condtion to block VLS modes with size = 64bit in RV32 system
E.g. V8QI

Since I realized such modes may cause inferior codegen for some situations in RV32 system.

However, this is really quite ugly and it cause ICE for some cases in RV32:

FAIL: gcc.target/riscv/rvv/autovec/conversions/vfncvt-ftoi-run.c (internal compiler error: in require, at machmode.h:313)
3937FAIL: gcc.target/riscv/rvv/autovec/conversions/vfncvt-ftoi-run.c (test for excess errors)

For inferior codegen in RV32 system, we should try another reasonable approach to fix it.

Remove those TARGET_64BIT and fix ICE.

gcc/ChangeLog:

* config/riscv/riscv-vector-switch.def (VLS_ENTRY): Remove TARGET_64BIT

gcc/testsuite/ChangeLog:

* gcc.target/riscv/rvv/autovec/partial/slp-9.c: Adapt test.
* gcc.target/riscv/rvv/autovec/zve32f_zvl1024b-1.c: Ditto.
* gcc.target/riscv/rvv/autovec/zve32f_zvl128b-1.c: Ditto.
* gcc.target/riscv/rvv/autovec/zve32f_zvl2048b-1.c: Ditto.
* gcc.target/riscv/rvv/autovec/zve32f_zvl256b-1.c: Ditto.
* gcc.target/riscv/rvv/autovec/zve32f_zvl4096b-1.c: Ditto.
* gcc.target/riscv/rvv/autovec/zve32f_zvl512b-1.c: Ditto.
* gcc.target/riscv/rvv/autovec/zve32x_zvl1024b-1.c: Ditto.
* gcc.target/riscv/rvv/autovec/zve32x_zvl128b-1.c: Ditto.
* gcc.target/riscv/rvv/autovec/zve32x_zvl2048b-1.c: Ditto.
* gcc.target/riscv/rvv/autovec/zve32x_zvl256b-1.c: Ditto.
* gcc.target/riscv/rvv/autovec/zve32x_zvl4096b-1.c: Ditto.
* gcc.target/riscv/rvv/autovec/zve32x_zvl512b-1.c: Ditto.
* gcc.target/riscv/rvv/autovec/zve64d-1.c: Ditto.
* gcc.target/riscv/rvv/autovec/zve64f-1.c: Ditto.
* gcc.target/riscv/rvv/autovec/zve64x-1.c: Ditto.
17 files changed:
gcc/config/riscv/riscv-vector-switch.def
gcc/testsuite/gcc.target/riscv/rvv/autovec/partial/slp-9.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32f_zvl1024b-1.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32f_zvl128b-1.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32f_zvl2048b-1.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32f_zvl256b-1.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32f_zvl4096b-1.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32f_zvl512b-1.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32x_zvl1024b-1.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32x_zvl128b-1.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32x_zvl2048b-1.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32x_zvl256b-1.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32x_zvl4096b-1.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32x_zvl512b-1.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/zve64d-1.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/zve64f-1.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/zve64x-1.c