diff options
author | Pan Li <pan2.li@intel.com> | 2023-08-24 17:29:02 +0800 |
---|---|---|
committer | Pan Li <pan2.li@intel.com> | 2023-08-31 23:31:53 +0800 |
commit | a7cefeaead68e5d89f65ba3a558eddef9b0b0f75 (patch) | |
tree | f0a8b360fb57190cd51c26809ec005124c448ad2 /gcc/objc | |
parent | 629efe27744d13c3b83bbe8338b84c37c83dbe4f (diff) | |
download | gcc-a7cefeaead68e5d89f65ba3a558eddef9b0b0f75.zip gcc-a7cefeaead68e5d89f65ba3a558eddef9b0b0f75.tar.gz gcc-a7cefeaead68e5d89f65ba3a558eddef9b0b0f75.tar.bz2 |
RISC-V: Support rounding mode for VFNMSAC/VFNMSUB autovec
There will be a case like below for intrinsic and autovec combination.
vfadd RTZ <- intrinisc static rounding
vfnmsub <- autovec/autovec-opt
The autovec generated vfnmsub should take DYN mode, and the
frm must be restored before the vfnmsub insn. This patch
would like to fix this issue by:
* Add the frm operand to the autovec/autovec-opt pattern.
* Set the frm_mode attr to DYN.
Thus, the frm flow when combine autovec and intrinsic should be.
+------------
| frrm a5
| ...
| fsrmi 4
| vfadd <- intrinsic static rounding.
| ...
| fsrm a5
| vfnmsub <- autovec/autovec-opt
| ...
+------------
Signed-off-by: Pan Li <pan2.li@intel.com>
gcc/ChangeLog:
* config/riscv/autovec-opt.md: Add FRM_REGNUM to vfnmsac/vfnmsub
* config/riscv/autovec.md: Ditto.
gcc/testsuite/ChangeLog:
* gcc.target/riscv/rvv/base/float-point-frm-autovec-3.c: New test.
Signed-off-by: Pan Li <pan2.li@intel.com>
Diffstat (limited to 'gcc/objc')
0 files changed, 0 insertions, 0 deletions