Re: [PATCH v2 18/18] target/riscv: Remove Zbkb dependency from P extension to align with the spec

Chao Liu <[email protected]> Mon, 3 Aug 2026 10:26:35 +0800
Newsgroups org.nongnu.qemu-riscv,org.nongnu.qemu-devel
Message-ID <[email protected]>
On Fri, Jul 17, 2026 at 10:07:11AM +0800, Molly Chen wrote:
> Signed-off-by: Molly Chen <[email protected]>
Reviewed-by: Chao Liu <[email protected]>

Thanks,
Chao

> ---
>  target/riscv/tcg/insn_trans/trans_rvb.c.inc | 4 +++-
>  target/riscv/tcg/insn_trans/trans_rvp.c.inc | 2 +-
>  target/riscv/tcg/tcg-cpu.c                  | 6 ++----
>  3 files changed, 6 insertions(+), 6 deletions(-)
> 
> diff --git a/target/riscv/tcg/insn_trans/trans_rvb.c.inc b/target/riscv/tcg/insn_trans/trans_rvb.c.inc
> index e4dcc7c9913..af53eb4fe4b 100644
> --- a/target/riscv/tcg/insn_trans/trans_rvb.c.inc
> +++ b/target/riscv/tcg/insn_trans/trans_rvb.c.inc
> @@ -527,7 +527,9 @@ static bool trans_brev8(DisasContext *ctx, arg_brev8 *a)
>  
>  static bool trans_pack(DisasContext *ctx, arg_pack *a)
>  {
> -    REQUIRE_ZBKB(ctx);
> +    if (!has_ext(ctx, RVP) && !ctx->cfg_ptr->ext_zbkb) {
> +        return false;
> +    }
>      return gen_arith(ctx, a, EXT_NONE, gen_pack, NULL);
>  }
>  
> diff --git a/target/riscv/tcg/insn_trans/trans_rvp.c.inc b/target/riscv/tcg/insn_trans/trans_rvp.c.inc
> index e33e0ec110a..8c5b52ca970 100644
> --- a/target/riscv/tcg/insn_trans/trans_rvp.c.inc
> +++ b/target/riscv/tcg/insn_trans/trans_rvp.c.inc
> @@ -1386,4 +1386,4 @@ GEN_DWS_REG_OP(psll_dws, gen_shift, EXT_NONE, tcg_gen_shl_tl)
>  GEN_DWS_REG_OP(psrl_dws, gen_shift, EXT_ZERO, tcg_gen_shr_tl)
>  GEN_DWS_REG_OP(psra_dws, gen_shift, EXT_SIGN, tcg_gen_sar_tl)
>  
> -GEN_DW_PAIR_ARITH(ppaire_dh, REQUIRE_ZBKB(ctx); , EXT_NONE, gen_pack)
> +GEN_DW_PAIR_ARITH(ppaire_dh, , EXT_NONE, gen_pack)
> diff --git a/target/riscv/tcg/tcg-cpu.c b/target/riscv/tcg/tcg-cpu.c
> index 1665583accf..36b0196a626 100644
> --- a/target/riscv/tcg/tcg-cpu.c
> +++ b/target/riscv/tcg/tcg-cpu.c
> @@ -563,10 +563,8 @@ static void riscv_cpu_validate_p(RISCVCPU *cpu, Error **errp)
>          return;
>      }
>  
> -    if (!(cpu->cfg.ext_zmmul && cpu->cfg.ext_zba && cpu->cfg.ext_zbb &&
> -          cpu->cfg.ext_zbkb)) {
> -        error_setg(errp, "P extension requires zmmul, zba, zbb and zbkb "
> -                         "extensions");
> +    if (!(cpu->cfg.ext_zmmul && cpu->cfg.ext_zba && cpu->cfg.ext_zbb)) {
> +        error_setg(errp, "P extension requires zmmul, zba and zbb extensions");
>          return;
>      }
>  }
> -- 
> 2.34.1
>