diff options
author | Nelson Chu <nelson.chu@sifive.com> | 2020-03-26 18:38:27 +0800 |
---|---|---|
committer | Nelson Chu <nelson.chu@sifive.com> | 2022-05-17 13:31:38 +0800 |
commit | 035784e3456d540444aaf7d8006f8e98bca79e5a (patch) | |
tree | 4d4945ff79977223d15bb8e7a49ede2cb20955ca /bfd | |
parent | 626d0e40e55c35a4f143b70def498734e8ed3c2a (diff) | |
download | gdb-035784e3456d540444aaf7d8006f8e98bca79e5a.zip gdb-035784e3456d540444aaf7d8006f8e98bca79e5a.tar.gz gdb-035784e3456d540444aaf7d8006f8e98bca79e5a.tar.bz2 |
RISC-V: Added half-precision floating-point v1.0 instructions.
bfd/
* elfxx-riscv.c (riscv_implicit_subsets): Added implicit f
and zicsr for zfh.
(riscv_supported_std_z_ext): Added default v1.0 version for zfh.
(riscv_multi_subset_supports): Handle INSN_CLASS_ZFH,
INSN_CLASS_D_AND_ZFH and INSN_CLASS_Q_AND_ZFH.
gas/
* config/tc-riscv.c (FLT_CHARS): Added "hH".
(macro): Expand Pseudo M_FLH and M_FSH.
(riscv_pseudo_table): Added .float16 directive.
* testsuite/gas/riscv/float16-be.d: New testcase for .float16.
* testsuite/gas/riscv/float16-le.d: Likewise.
* testsuite/gas/riscv/float16.s: Likewise.
* testsuite/gas/riscv/fp-zfh-insns.d: New testcase for zfh.
* testsuite/gas/riscv/fp-zfh-insns.s: Likewise.
include/
* opcode/riscv-opc.h: Added MASK and MATCH encodings for zfh.
* opcode/riscv.h: Added INSN_CLASS and pseudo macros for zfh.
opcodes/
* riscv-opc.c (riscv_opcodes): Added zfh instructions.
Diffstat (limited to 'bfd')
-rw-r--r-- | bfd/elfxx-riscv.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c index cb2cc14..05e8272 100644 --- a/bfd/elfxx-riscv.c +++ b/bfd/elfxx-riscv.c @@ -1100,6 +1100,8 @@ static struct riscv_implicit_subset riscv_implicit_subsets[] = {"zvl64b", "zvl32b", check_implicit_always}, {"d", "f", check_implicit_always}, {"f", "zicsr", check_implicit_always}, + {"zfh", "f", check_implicit_always}, + {"zfh", "zicsr", check_implicit_always}, {"zqinx", "zdinx", check_implicit_always}, {"zdinx", "zfinx", check_implicit_always}, {"zk", "zkn", check_implicit_always}, @@ -1180,6 +1182,7 @@ static struct riscv_supported_ext riscv_supported_std_z_ext[] = {"zifencei", ISA_SPEC_CLASS_20191213, 2, 0, 0 }, {"zifencei", ISA_SPEC_CLASS_20190608, 2, 0, 0 }, {"zihintpause", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, + {"zfh", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"zfinx", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"zdinx", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"zqinx", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, @@ -2358,6 +2361,14 @@ riscv_multi_subset_supports (riscv_parse_subset_t *rps, case INSN_CLASS_Q_OR_ZQINX: return (riscv_subset_supports (rps, "q") || riscv_subset_supports (rps, "zqinx")); + case INSN_CLASS_ZFH: + return riscv_subset_supports (rps, "zfh"); + case INSN_CLASS_D_AND_ZFH: + return (riscv_subset_supports (rps, "d") + && riscv_subset_supports (rps, "zfh") ); + case INSN_CLASS_Q_AND_ZFH: + return (riscv_subset_supports (rps, "q") + && riscv_subset_supports (rps, "zfh")); case INSN_CLASS_ZBA: return riscv_subset_supports (rps, "zba"); case INSN_CLASS_ZBB: |