diff options
author | Robin Dapp <rdapp@ventanamicro.com> | 2023-06-22 08:58:06 +0200 |
---|---|---|
committer | Robin Dapp <rdapp@ventanamicro.com> | 2023-06-27 23:29:09 +0200 |
commit | 201c6c322f3e88367ac9b6f476cf76b755d3c4b1 (patch) | |
tree | 7afd1415b2715bdbd8873e20e5a02cd893bbd0bd /gcc/fortran | |
parent | d915762ea9043da858d388b60b2d8093ff77eeab (diff) | |
download | gcc-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