aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran
diff options
context:
space:
mode:
authorRobin Dapp <rdapp@ventanamicro.com>2023-06-22 08:58:06 +0200
committerRobin Dapp <rdapp@ventanamicro.com>2023-06-27 23:29:09 +0200
commit201c6c322f3e88367ac9b6f476cf76b755d3c4b1 (patch)
tree7afd1415b2715bdbd8873e20e5a02cd893bbd0bd /gcc/fortran
parentd915762ea9043da858d388b60b2d8093ff77eeab (diff)
downloadgcc-201c6c322f3e88367ac9b6f476cf76b755d3c4b1.zip
gcc-201c6c322f3e88367ac9b6f476cf76b755d3c4b1.tar.gz
gcc-201c6c322f3e88367ac9b6f476cf76b755d3c4b1.tar.bz2
RISC-V: Split VF iterators for Zvfh(min).
When working on FP widening/narrowing I realized the Zvfhmin handling is not ideal right now: We use the "enabled" insn attribute to disable instructions not available with Zvfhmin but only with Zvfh. However, "enabled == 0" only disables insn alternatives, in our case all of them when the mode is a HFmode. The insn itself remains available (e.g. for combine to match) and we end up with an insn without alternatives that reload cannot handle --> ICE. The proper solution is to disable the instruction for the respective mode altogether. This patch achieves this by splitting the VF as well as VWEXTF iterators into variants with TARGET_ZVFH and TARGET_VECTOR_ELEN_FP_16 (which is true when either TARGET_ZVFH or TARGET_ZVFHMIN are true). Also, VWCONVERTI, VHF and VHF_LMUL1 need adjustments. gcc/ChangeLog: * config/riscv/autovec.md: VF_AUTO -> VF. * config/riscv/vector-iterators.md: Introduce VF_ZVFHMIN, VWEXTF_ZVFHMIN and use TARGET_ZVFH in VWCONVERTI, VHF and VHF_LMUL1. * config/riscv/vector.md: Use new iterators.
Diffstat (limited to 'gcc/fortran')
0 files changed, 0 insertions, 0 deletions