aboutsummaryrefslogtreecommitdiff
path: root/bfd/elfxx-riscv.c
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2023-08-02 09:23:36 +0100
committerNick Clifton <nickc@redhat.com>2023-08-02 09:23:36 +0100
commit675b9d612cc59446e84e2c6d89b45500cb603a8d (patch)
treead4ae6b4b1f1f81aceb945f15c5c12ea2b379689 /bfd/elfxx-riscv.c
parent69c37f53e20dc3e0b3c179b511ff786db6ae114e (diff)
downloadgdb-675b9d612cc59446e84e2c6d89b45500cb603a8d.zip
gdb-675b9d612cc59446e84e2c6d89b45500cb603a8d.tar.gz
gdb-675b9d612cc59446e84e2c6d89b45500cb603a8d.tar.bz2
2.41 Release sourcesbinutils-2_41-release
Diffstat (limited to 'bfd/elfxx-riscv.c')
-rw-r--r--bfd/elfxx-riscv.c84
1 files changed, 23 insertions, 61 deletions
diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c
index ba51657..b34898a 100644
--- a/bfd/elfxx-riscv.c
+++ b/bfd/elfxx-riscv.c
@@ -1132,8 +1132,6 @@ static struct riscv_implicit_subset riscv_implicit_subsets[] =
{"zvl256b", "zvl128b", check_implicit_always},
{"zvl128b", "zvl64b", check_implicit_always},
{"zvl64b", "zvl32b", check_implicit_always},
- {"zcd", "d", check_implicit_always},
- {"zcf", "f", check_implicit_always},
{"zfa", "f", check_implicit_always},
{"d", "f", check_implicit_always},
{"zfh", "zfhmin", check_implicit_always},
@@ -1175,9 +1173,6 @@ static struct riscv_implicit_subset riscv_implicit_subsets[] =
{"zvksg", "zvkg", check_implicit_always},
{"zvksc", "zvks", check_implicit_always},
{"zvksc", "zvbc", check_implicit_always},
- {"zcf", "zca", check_implicit_always},
- {"zcd", "zca", check_implicit_always},
- {"zcb", "zca", check_implicit_always},
{"smaia", "ssaia", check_implicit_always},
{"smstateen", "ssstateen", check_implicit_always},
{"smepmp", "zicsr", check_implicit_always},
@@ -1312,10 +1307,6 @@ static struct riscv_supported_ext riscv_supported_std_z_ext[] =
{"zvl32768b", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 },
{"zvl65536b", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 },
{"ztso", ISA_SPEC_CLASS_DRAFT, 0, 1, 0 },
- {"zca", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 },
- {"zcb", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 },
- {"zcf", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 },
- {"zcd", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 },
{NULL, 0, 0, 0, 0}
};
@@ -1951,13 +1942,6 @@ riscv_parse_check_conflicts (riscv_parse_subset_t *rps)
rps->error_handler (_("rv%d does not support the `q' extension"), xlen);
no_conflict = false;
}
- if (riscv_lookup_subset (rps->subset_list, "zcf", &subset)
- && xlen > 32)
- {
- rps->error_handler
- (_("rv%d does not support the `zcf' extension"), xlen);
- no_conflict = false;
- }
if (riscv_lookup_subset (rps->subset_list, "zfinx", &subset)
&& riscv_lookup_subset (rps->subset_list, "f", &subset))
{
@@ -2403,16 +2387,13 @@ riscv_multi_subset_supports (riscv_parse_subset_t *rps,
case INSN_CLASS_Q:
return riscv_subset_supports (rps, "q");
case INSN_CLASS_C:
- return (riscv_subset_supports (rps, "c")
- || riscv_subset_supports (rps, "zca"));
+ return riscv_subset_supports (rps, "c");
case INSN_CLASS_F_AND_C:
return (riscv_subset_supports (rps, "f")
- && (riscv_subset_supports (rps, "c")
- || riscv_subset_supports (rps, "zcf")));
+ && riscv_subset_supports (rps, "c"));
case INSN_CLASS_D_AND_C:
return (riscv_subset_supports (rps, "d")
- && (riscv_subset_supports (rps, "c")
- || riscv_subset_supports (rps, "zcd")));
+ && riscv_subset_supports (rps, "c"));
case INSN_CLASS_F_INX:
return (riscv_subset_supports (rps, "f")
|| riscv_subset_supports (rps, "zfinx"));
@@ -2501,6 +2482,10 @@ riscv_multi_subset_supports (riscv_parse_subset_t *rps,
return riscv_subset_supports (rps, "zvkg");
case INSN_CLASS_ZVKNED:
return riscv_subset_supports (rps, "zvkned");
+ case INSN_CLASS_ZVKNHA:
+ return riscv_subset_supports (rps, "zvknha");
+ case INSN_CLASS_ZVKNHB:
+ return riscv_subset_supports (rps, "zvknhb");
case INSN_CLASS_ZVKNHA_OR_ZVKNHB:
return (riscv_subset_supports (rps, "zvknha")
|| riscv_subset_supports (rps, "zvknhb"));
@@ -2508,17 +2493,6 @@ riscv_multi_subset_supports (riscv_parse_subset_t *rps,
return riscv_subset_supports (rps, "zvksed");
case INSN_CLASS_ZVKSH:
return riscv_subset_supports (rps, "zvksh");
- case INSN_CLASS_ZCB:
- return riscv_subset_supports (rps, "zcb");
- case INSN_CLASS_ZCB_AND_ZBB:
- return (riscv_subset_supports (rps, "zcb")
- && riscv_subset_supports (rps, "zbb"));
- case INSN_CLASS_ZCB_AND_ZBA:
- return (riscv_subset_supports (rps, "zcb")
- && riscv_subset_supports (rps, "zba"));
- case INSN_CLASS_ZCB_AND_ZMMUL:
- return (riscv_subset_supports (rps, "zcb")
- && riscv_subset_supports (rps, "zmmul"));
case INSN_CLASS_SVINVAL:
return riscv_subset_supports (rps, "svinval");
case INSN_CLASS_H:
@@ -2598,27 +2572,21 @@ riscv_multi_subset_supports_ext (riscv_parse_subset_t *rps,
case INSN_CLASS_C:
return "c";
case INSN_CLASS_F_AND_C:
- if (!riscv_subset_supports (rps, "f"))
- {
- if (!riscv_subset_supports (rps, "c")
- && !riscv_subset_supports (rps, "zcf"))
- return _("f' and `c', or `f' and `zcf");
- else
- return "f";
- }
+ if (!riscv_subset_supports (rps, "f")
+ && !riscv_subset_supports (rps, "c"))
+ return _("f' and `c");
+ else if (!riscv_subset_supports (rps, "f"))
+ return "f";
else
- return _("c' or `zcf");
+ return "c";
case INSN_CLASS_D_AND_C:
- if (!riscv_subset_supports (rps, "d"))
- {
- if (!riscv_subset_supports (rps, "c")
- && !riscv_subset_supports (rps, "zcd"))
- return _("d' and `c', or `d' and `zcd");
- else
- return "d";
- }
+ if (!riscv_subset_supports (rps, "d")
+ && !riscv_subset_supports (rps, "c"))
+ return _("d' and `c");
+ else if (!riscv_subset_supports (rps, "d"))
+ return "d";
else
- return _("c' or `zcd");
+ return "c";
case INSN_CLASS_F_INX:
return _("f' or `zfinx");
case INSN_CLASS_D_INX:
@@ -2721,20 +2689,14 @@ riscv_multi_subset_supports_ext (riscv_parse_subset_t *rps,
return _("zvkg");
case INSN_CLASS_ZVKNED:
return _("zvkned");
- case INSN_CLASS_ZVKNHA_OR_ZVKNHB:
- return _("zvknha' or `zvknhb");
+ case INSN_CLASS_ZVKNHA:
+ return _("zvknha");
+ case INSN_CLASS_ZVKNHB:
+ return _("zvknhb");
case INSN_CLASS_ZVKSED:
return _("zvksed");
case INSN_CLASS_ZVKSH:
return _("zvksh");
- case INSN_CLASS_ZCB:
- return "zcb";
- case INSN_CLASS_ZCB_AND_ZBA:
- return _("zcb' and `zba");
- case INSN_CLASS_ZCB_AND_ZBB:
- return _("zcb' and `zbb");
- case INSN_CLASS_ZCB_AND_ZMMUL:
- return _("zcb' and `zmmul', or `zcb' and `m");
case INSN_CLASS_SVINVAL:
return "svinval";
case INSN_CLASS_H: