RISC-V: Enable basic VLS modes support
commit33b153ff521e2f33acf7d076f8625d85319b731d
authorJuzhe-Zhong <juzhe.zhong@rivai.ai>
Thu, 27 Jul 2023 11:47:02 +0000 (27 19:47 +0800)
committerPan Li <pan2.li@intel.com>
Thu, 27 Jul 2023 12:11:41 +0000 (27 20:11 +0800)
tree4b9896275523129a0af26fc0685d1681346f4768
parentd0ae71c26ab9e383768160ea266f56db2e2ae43c
RISC-V: Enable basic VLS modes support

Support && Test VLS modes load/store/reg move as well as LRA spilling

gcc/ChangeLog:

* config/riscv/riscv-modes.def (VECTOR_BOOL_MODE): Add VLS modes.
(ADJUST_ALIGNMENT): Ditto.
(ADJUST_PRECISION): Ditto.
(VLS_MODES): Ditto.
(VECTOR_MODE_WITH_PREFIX): Ditto.
* config/riscv/riscv-opts.h (TARGET_VECTOR_VLS): New macro.
* config/riscv/riscv-protos.h (riscv_v_ext_vls_mode_p): New function.
* config/riscv/riscv-v.cc (INCLUDE_ALGORITHM): Add include.
(legitimize_move): Enable basic VLS modes support.
(get_vlmul): Ditto.
(get_ratio): Ditto.
(get_vector_mode): Ditto.
* config/riscv/riscv-vector-switch.def (VLS_ENTRY): Add vls modes.
* config/riscv/riscv.cc (riscv_v_ext_vls_mode_p): New function.
(VLS_ENTRY): New macro.
(riscv_v_ext_mode_p): Add vls modes.
(riscv_get_v_regno_alignment): New function.
(riscv_print_operand): Add vls modes.
(riscv_hard_regno_nregs): Ditto.
(riscv_hard_regno_mode_ok): Ditto.
(riscv_regmode_natural_size): Ditto.
(riscv_vectorize_preferred_vector_alignment): Ditto.
* config/riscv/riscv.md: Ditto.
* config/riscv/vector-iterators.md: Ditto.
* config/riscv/vector.md: Ditto.
* config/riscv/autovec-vls.md: New file.

gcc/testsuite/ChangeLog:

* gcc.target/riscv/rvv/autovec/partial/slp-9.c: Add more checks.
* gcc.target/riscv/rvv/rvv.exp: Add VLS modes tests.
* gcc.target/riscv/rvv/autovec/vls/def.h: New test.
* gcc.target/riscv/rvv/autovec/vls/mov-1.c: New test.
* gcc.target/riscv/rvv/autovec/vls/mov-10.c: New test.
* gcc.target/riscv/rvv/autovec/vls/mov-11.c: New test.
* gcc.target/riscv/rvv/autovec/vls/mov-12.c: New test.
* gcc.target/riscv/rvv/autovec/vls/mov-13.c: New test.
* gcc.target/riscv/rvv/autovec/vls/mov-14.c: New test.
* gcc.target/riscv/rvv/autovec/vls/mov-15.c: New test.
* gcc.target/riscv/rvv/autovec/vls/mov-16.c: New test.
* gcc.target/riscv/rvv/autovec/vls/mov-17.c: New test.
* gcc.target/riscv/rvv/autovec/vls/mov-2.c: New test.
* gcc.target/riscv/rvv/autovec/vls/mov-3.c: New test.
* gcc.target/riscv/rvv/autovec/vls/mov-4.c: New test.
* gcc.target/riscv/rvv/autovec/vls/mov-5.c: New test.
* gcc.target/riscv/rvv/autovec/vls/mov-6.c: New test.
* gcc.target/riscv/rvv/autovec/vls/mov-7.c: New test.
* gcc.target/riscv/rvv/autovec/vls/mov-8.c: New test.
* gcc.target/riscv/rvv/autovec/vls/mov-9.c: New test.
* gcc.target/riscv/rvv/autovec/vls/spill-1.c: New test.
* gcc.target/riscv/rvv/autovec/vls/spill-2.c: New test.
* gcc.target/riscv/rvv/autovec/vls/spill-3.c: New test.
* gcc.target/riscv/rvv/autovec/vls/spill-4.c: New test.
* gcc.target/riscv/rvv/autovec/vls/spill-5.c: New test.
* gcc.target/riscv/rvv/autovec/vls/spill-6.c: New test.
* gcc.target/riscv/rvv/autovec/vls/spill-7.c: New test.
37 files changed:
gcc/config/riscv/autovec-vls.md [new file with mode: 0644]
gcc/config/riscv/riscv-modes.def
gcc/config/riscv/riscv-opts.h
gcc/config/riscv/riscv-protos.h
gcc/config/riscv/riscv-v.cc
gcc/config/riscv/riscv-vector-switch.def
gcc/config/riscv/riscv.cc
gcc/config/riscv/riscv.md
gcc/config/riscv/vector-iterators.md
gcc/config/riscv/vector.md
gcc/testsuite/gcc.target/riscv/rvv/autovec/partial/slp-9.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/def.h [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/mov-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/mov-10.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/mov-11.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/mov-12.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/mov-13.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/mov-14.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/mov-15.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/mov-16.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/mov-17.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/mov-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/mov-3.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/mov-4.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/mov-5.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/mov-6.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/mov-7.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/mov-8.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/mov-9.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/spill-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/spill-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/spill-3.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/spill-4.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/spill-5.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/spill-6.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/spill-7.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/rvv.exp