diff options
Diffstat (limited to 'bfd')
-rw-r--r-- | bfd/elfxx-riscv.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c index 6b34c2f..e9852ef 100644 --- a/bfd/elfxx-riscv.c +++ b/bfd/elfxx-riscv.c @@ -2463,6 +2463,10 @@ riscv_multi_subset_supports (riscv_parse_subset_t *rps, case INSN_CLASS_ZFH_AND_ZFA: return riscv_subset_supports (rps, "zfh") && riscv_subset_supports (rps, "zfa"); + case INSN_CLASS_ZFH_OR_ZVFH_AND_ZFA: + return (riscv_subset_supports (rps, "zfh") + || riscv_subset_supports (rps, "zvfh")) + && riscv_subset_supports (rps, "zfa"); case INSN_CLASS_ZBA: return riscv_subset_supports (rps, "zba"); case INSN_CLASS_ZBB: @@ -2704,6 +2708,17 @@ riscv_multi_subset_supports_ext (riscv_parse_subset_t *rps, return "zfh"; else return "zfa"; + case INSN_CLASS_ZFH_OR_ZVFH_AND_ZFA: + if (!riscv_subset_supports (rps, "zfa")) + { + if (!riscv_subset_supports (rps, "zfh") + && !riscv_subset_supports (rps, "zvfh")) + return _("zfh' and `zfa', or `zvfh' and `zfa"); + else + return "zfa"; + } + else + return _("zfh' or `zvfh"); case INSN_CLASS_ZBA: return "zba"; case INSN_CLASS_ZBB: |