[PULL v2 65/96] disas/riscv: Use rv_codec_illegal for pseudos
[email protected] Mon, 24 Aug 2026 15:47:35 +1000
Newsgroups
org.nongnu.qemu-devel
Message-ID
<[email protected] >
From: Richard Henderson <[email protected] >
The codec is never used, since we arrive into pseudos
from a decoding of another opcode.
Assert that rv_codec_illegal is never decoded.
Use rv_codec_none for rv_op_illegal.
Reviewed-by: Alistair Francis <[email protected] >
Signed-off-by: Richard Henderson <[email protected] >
Message-ID: <[email protected] >
Signed-off-by: Alistair Francis <[email protected] >
---
disas/riscv.c | 68 +++++++++++++++++++++++++--------------------------
1 file changed, 34 insertions(+), 34 deletions(-)
diff --git a/disas/riscv.c b/disas/riscv.c
index 7fa76b2d15..dedd925077 100644
--- a/disas/riscv.c
+++ b/disas/riscv.c
@@ -1599,7 +1599,7 @@ static uint32_t operand_lpl(rv_inst inst)
/* instruction metadata */
static const rv_opcode_data rvi_opcode_data[] = {
- { "illegal", rv_codec_illegal, rv_fmt_none },
+ { "illegal", rv_codec_none, rv_fmt_none },
{ "lui", rv_codec_u, rv_fmt_rd_uimm },
{ "auipc", rv_codec_u, rv_fmt_rd_uoffset },
{ "jal", rv_codec_uj, rv_fmt_rd_offset, rvcp_jal },
@@ -1872,38 +1872,38 @@ static const rv_opcode_data rvi_opcode_data[] = {
{ "c.sq", rv_codec_cs_sq, NULL, DECOMP(rv_op_sq) },
{ "c.lqsp", rv_codec_ci_lqsp, NULL, DECOMP(rv_op_lq) },
{ "c.sqsp", rv_codec_css_sqsp, NULL, DECOMP(rv_op_sq) },
- { "nop", rv_codec_i, rv_fmt_none },
- { "mv", rv_codec_i, rv_fmt_rd_rs1, rvcp_mv },
- { "not", rv_codec_i, rv_fmt_rd_rs1 },
- { "neg", rv_codec_r, rv_fmt_rd_rs2 },
- { "negw", rv_codec_r, rv_fmt_rd_rs2 },
- { "sext.w", rv_codec_i, rv_fmt_rd_rs1 },
- { "seqz", rv_codec_i, rv_fmt_rd_rs1 },
- { "snez", rv_codec_r, rv_fmt_rd_rs2 },
- { "sltz", rv_codec_r, rv_fmt_rd_rs1 },
- { "sgtz", rv_codec_r, rv_fmt_rd_rs2 },
- { "fmv.s", rv_codec_r, rv_fmt_frd_frs1 },
- { "fabs.s", rv_codec_r, rv_fmt_frd_frs1 },
- { "fneg.s", rv_codec_r, rv_fmt_frd_frs1 },
- { "fmv.d", rv_codec_r, rv_fmt_frd_frs1 },
- { "fabs.d", rv_codec_r, rv_fmt_frd_frs1 },
- { "fneg.d", rv_codec_r, rv_fmt_frd_frs1 },
- { "fmv.q", rv_codec_r, rv_fmt_frd_frs1 },
- { "fabs.q", rv_codec_r, rv_fmt_frd_frs1 },
- { "fneg.q", rv_codec_r, rv_fmt_frd_frs1 },
- { "beqz", rv_codec_sb, rv_fmt_rs1_offset },
- { "bnez", rv_codec_sb, rv_fmt_rs1_offset },
- { "blez", rv_codec_sb, rv_fmt_rs2_offset },
- { "bgez", rv_codec_sb, rv_fmt_rs1_offset },
- { "bltz", rv_codec_sb, rv_fmt_rs1_offset },
- { "bgtz", rv_codec_sb, rv_fmt_rs2_offset },
- { "jal", rv_codec_none, rv_fmt_offset }, /* rv_op_jal_ra */
- { "jalr", rv_codec_none, rv_fmt_rs1 }, /* rv_op_jalr_ra */
+ { "nop", rv_codec_illegal, rv_fmt_none },
+ { "mv", rv_codec_illegal, rv_fmt_rd_rs1, rvcp_mv },
+ { "not", rv_codec_illegal, rv_fmt_rd_rs1 },
+ { "neg", rv_codec_illegal, rv_fmt_rd_rs2 },
+ { "negw", rv_codec_illegal, rv_fmt_rd_rs2 },
+ { "sext.w", rv_codec_illegal, rv_fmt_rd_rs1 },
+ { "seqz", rv_codec_illegal, rv_fmt_rd_rs1 },
+ { "snez", rv_codec_illegal, rv_fmt_rd_rs2 },
+ { "sltz", rv_codec_illegal, rv_fmt_rd_rs1 },
+ { "sgtz", rv_codec_illegal, rv_fmt_rd_rs2 },
+ { "fmv.s", rv_codec_illegal, rv_fmt_frd_frs1 },
+ { "fabs.s", rv_codec_illegal, rv_fmt_frd_frs1 },
+ { "fneg.s", rv_codec_illegal, rv_fmt_frd_frs1 },
+ { "fmv.d", rv_codec_illegal, rv_fmt_frd_frs1 },
+ { "fabs.d", rv_codec_illegal, rv_fmt_frd_frs1 },
+ { "fneg.d", rv_codec_illegal, rv_fmt_frd_frs1 },
+ { "fmv.q", rv_codec_illegal, rv_fmt_frd_frs1 },
+ { "fabs.q", rv_codec_illegal, rv_fmt_frd_frs1 },
+ { "fneg.q", rv_codec_illegal, rv_fmt_frd_frs1 },
+ { "beqz", rv_codec_illegal, rv_fmt_rs1_offset },
+ { "bnez", rv_codec_illegal, rv_fmt_rs1_offset },
+ { "blez", rv_codec_illegal, rv_fmt_rs2_offset },
+ { "bgez", rv_codec_illegal, rv_fmt_rs1_offset },
+ { "bltz", rv_codec_illegal, rv_fmt_rs1_offset },
+ { "bgtz", rv_codec_illegal, rv_fmt_rs2_offset },
+ { "jal", rv_codec_illegal, rv_fmt_offset }, /* rv_op_jal_ra */
+ { "jalr", rv_codec_illegal, rv_fmt_rs1 }, /* rv_op_jalr_ra */
{ },
{ },
- { "j", rv_codec_uj, rv_fmt_offset },
- { "ret", rv_codec_i, rv_fmt_none },
- { "jr", rv_codec_i, rv_fmt_rs1, rvcp_jr },
+ { "j", rv_codec_illegal, rv_fmt_offset },
+ { "ret", rv_codec_illegal, rv_fmt_none },
+ { "jr", rv_codec_illegal, rv_fmt_rs1, rvcp_jr },
{ "rdcycle", rv_codec_i_csr, rv_fmt_rd },
{ "rdtime", rv_codec_i_csr, rv_fmt_rd },
{ "rdinstret", rv_codec_i_csr, rv_fmt_rd },
@@ -4551,8 +4551,6 @@ static void decode_inst_operands(rv_decode *dec, rv_isa isa,
rv_inst inst = dec->inst;
switch (op->codec) {
- case rv_codec_illegal:
- break;
case rv_codec_none:
dec->rd = dec->rs1 = dec->rs2 = rv_ireg_zero;
dec->imm = 0;
@@ -4946,7 +4944,9 @@ static void decode_inst_operands(rv_decode *dec, rv_isa isa,
dec->rs1 = dec->rs2 = operand_crs1(inst);
dec->imm = 0;
break;
- };
+ default:
+ g_assert_not_reached();
+ }
}
/* check constraint */
--
2.54.0