Re: [PATCH 45/56] disas/riscv: Split ventana_opcode_data

Alistair <[email protected]>
Newsgroups org.nongnu.qemu-riscv,org.nongnu.qemu-devel
Message-ID <[email protected]>
On Sun, 2026-08-09 at 15:35 -0700, Richard Henderson wrote:
> Move the table to riscv-xventana-op.c.inc and massage
> the lines into OP() form.  Drop vt.illegal as unused.
> Return pointers to objects directly.
> 
> Signed-off-by: Richard Henderson <[email protected]>

Reviewed-by: Alistair Francis <[email protected]>

Alistair

> ---
>  disas/riscv-xventana.c        | 21 ++++++---------------
>  disas/riscv-xventana-op.c.inc |  2 ++
>  2 files changed, 8 insertions(+), 15 deletions(-)
>  create mode 100644 disas/riscv-xventana-op.c.inc
> 
> diff --git a/disas/riscv-xventana.c b/disas/riscv-xventana.c
> index a4e59312d0..5d2e07865f 100644
> --- a/disas/riscv-xventana.c
> +++ b/disas/riscv-xventana.c
> @@ -8,35 +8,26 @@
>  #include "disas/riscv.h"
>  #include "disas/riscv-xventana.h"
>  
> -typedef enum {
> -    /* 0 is reserved for rv_op_illegal. */
> -    ventana_op_vt_maskc = 1,
> -    ventana_op_vt_maskcn = 2,
> -} rv_ventana_op;
> -
> -static const rv_opcode_data ventana_opcode_data[] = {
> -    { "vt.illegal", rv_codec_illegal, rv_fmt_none },
> -    { "vt.maskc", rv_codec_r, rv_fmt_rd_rs1_rs2 },
> -    { "vt.maskcn", rv_codec_r, rv_fmt_rd_rs1_rs2 },
> -};
> +#define OP(N, ...) static const rv_opcode_data op_##N = {
> __VA_ARGS__ };
> +#include "riscv-xventana-op.c.inc"
> +#undef OP
>  
>  const rv_opcode_data *decode_xventanacondops(rv_decode *dec, rv_isa
> isa)
>  {
>      rv_inst inst = dec->inst;
> -    rv_opcode op = rv_op_illegal;
>  
>      switch (((inst >> 0) & 0b11)) {
>      case 3:
>          switch (((inst >> 2) & 0b11111)) {
>          case 30:
>              switch (((inst >> 22) & 0b1111111000) | ((inst >> 12) &
> 0b0000000111)) {
> -            case 6: op = ventana_op_vt_maskc; break;
> -            case 7: op = ventana_op_vt_maskcn; break;
> +            case 6: return &op_vt_maskc;
> +            case 7: return &op_vt_maskcn;
>              }
>              break;
>          }
>          break;
>      }
>  
> -    return op == rv_op_illegal ? NULL : &ventana_opcode_data[op];
> +    return NULL;
>  }
> diff --git a/disas/riscv-xventana-op.c.inc b/disas/riscv-xventana-
> op.c.inc
> new file mode 100644
> index 0000000000..0fe4666aee
> --- /dev/null
> +++ b/disas/riscv-xventana-op.c.inc
> @@ -0,0 +1,2 @@
> +OP(vt_maskc, "vt.maskc", rv_codec_r, rv_fmt_rd_rs1_rs2)
> +OP(vt_maskcn, "vt.maskcn", rv_codec_r, rv_fmt_rd_rs1_rs2)
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.