]> git.ipfire.org Git - thirdparty/gcc.git/commit
RISC-V: Support vfadd static rounding mode by mode switching
authorPan Li <pan2.li@intel.com>
Thu, 29 Jun 2023 01:25:36 +0000 (09:25 +0800)
committerPan Li <pan2.li@intel.com>
Thu, 29 Jun 2023 04:13:26 +0000 (12:13 +0800)
commite714af12e3bee0032d8d226f87d92c9bc46f0269
treef8d9658620876e02e5bb2c7e65caf31f52315526
parent4d1e97f5838b0b6c12d256883e24a8cb3258a134
RISC-V: Support vfadd static rounding mode by mode switching

This patch would like to support the vfadd static round mode similar to
the fixed-point. Then the related fsrm instructions will be inserted
correlatively.

Please *NOTE* this PATCH doesn't cover anything about FRM dynamic mode,
it will be implemented in the underlying PATCH(s).

Signed-off-by: Pan Li <pan2.li@intel.com>
gcc/ChangeLog:

* config/riscv/riscv.cc (riscv_emit_mode_set): Add emit for FRM.
(riscv_mode_needed): Likewise.
(riscv_entity_mode_after): Likewise.
(riscv_mode_after): Likewise.
(riscv_mode_entry): Likewise.
(riscv_mode_exit): Likewise.
* config/riscv/riscv.h (NUM_MODES_FOR_MODE_SWITCHING): Add number
for FRM.
* config/riscv/riscv.md: Add FRM register.
* config/riscv/vector-iterators.md: Add FRM type.
* config/riscv/vector.md (frm_mode): Define new attr for FRM mode.
(fsrm): Define new insn for fsrm instruction.

gcc/testsuite/ChangeLog:

* gcc.target/riscv/rvv/base/float-point-frm-insert-1.c: New test.
* gcc.target/riscv/rvv/base/float-point-frm-insert-2.c: New test.
* gcc.target/riscv/rvv/base/float-point-frm-insert-3.c: New test.
* gcc.target/riscv/rvv/base/float-point-frm-insert-4.c: New test.
* gcc.target/riscv/rvv/base/float-point-frm-insert-5.c: New test.
gcc/config/riscv/riscv.cc
gcc/config/riscv/riscv.h
gcc/config/riscv/riscv.md
gcc/config/riscv/vector-iterators.md
gcc/config/riscv/vector.md
gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-insert-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-insert-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-insert-3.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-insert-4.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-insert-5.c [new file with mode: 0644]