[PATCH v2 0/4] RISC-V: Float16 extensions enhancements

Tsukasa OI research_trasio@irq.a4lg.com
Sun May 22 05:15:10 GMT 2022


RFC PATCH v1:
<https://sourceware.org/pipermail/binutils/2022-January/119276.html>
<https://github.com/a4lg/binutils-gdb/tree/a4lg/snapshots/2022-01-11/riscv-zfh-RFC-v1>


This patchset will:

-   Add `Zfhmin' extension support
-   Refine (refactors) `Zfh' extension support (by Nelson Chu)
-   Prepare for `Zhinx' extension


[CHANGES BETWEEN RFC PATCH v1 between PATCH v2]

-   Added pseudoinstructions
-   Large rebase (based on Nelson Chu's implementation)
-   Preparation for `Zhinx' implementation


[Added pseudoinstructions]

I checked into LLVM (llvm/lib/Target/RISCV/RISCVInstrInfoZfh.td) and found
my RFC PATCH v1 ONLY lacked following pseudoinstructions:

-   fmv.h
-   fneg.h
-   fabs.h

In this version, it implements all `Zfh' or `Zfhmin' instructions
implemented in LLVM-CURRENT.


[Preparation for Zhinx implementation]

I mean, `Zhinx' implementation except actual feature support.
Instruction category is refined as follows:

Before:

-   INSN_CLASS_ZFH
    `Zfh'
-   INSN_CLASS_D_AND_ZFH
    `Zfh' and `D'
-   INSN_CLASS_Q_AND_ZFH
    `Zfh' and `Q'

After:

-   INSN_CLASS_ZFH_OR_ZHINX
    Either `Zfh' or `Zhinx'
    Renamed from INSN_CLASS_ZFH.
-   INSN_CLASS_ZFHMIN
    `Zfhmin'
    Part of former INSN_CLASS_ZFH.
-   INSN_CLASS_ZFHMIN_OR_ZHINXMIN
    Either `Zfhmin' or `Zhinxmin'
    Part of former INSN_CLASS_ZFH.
-   INSN_CLASS_ZFHMIN_AND_D
    (`Zfhmin' and `D') or (`Zhinxmin' and `Zdinx')
    Renamed from INSN_CLASS_D_AND_ZFH.
-   INSN_CLASS_ZFHMIN_AND_Q
    (`Zfhmin' and `Q') or (`Zhinxmin' and `Zqinx')
    Renamed from INSN_CLASS_Q_AND_ZFH.

INFN_CLASS_ZFHMIN_AND_? do not represent actual required extensions.
This is because it'll be too long if we make this symbol faithful.




Tsukasa OI (4):
  RISC-V: Refactor 'Zfh'-related macros
  RISC-V: Add instruction declaration for 'Zfh'
  RISC-V: Add 'Zfhmin' (and refactor 'Zfh')
  RISC-V: Add 'Zfh' / 'Zfhmin' conflict message

 bfd/elfxx-riscv.c          |  33 ++++---
 gas/config/tc-riscv.c      |  19 ++--
 include/opcode/riscv-opc.h | 180 ++++++++++++++++++++++---------------
 include/opcode/riscv.h     |  12 +--
 opcodes/riscv-opc.c        | 126 +++++++++++++-------------
 5 files changed, 210 insertions(+), 160 deletions(-)


base-commit: cb3a7614feb82ffdc25161bf60529116c6112ab3
-- 
2.34.1



More information about the Binutils mailing list