Reuse 32-bit right shift instructions. Signed-off-by: LIU Zhiwei <zhiwei_...@c-sky.com> --- target/riscv/insn_trans/trans_rvi.c.inc | 12 ++++++++++++ 1 file changed, 12 insertions(+)
diff --git a/target/riscv/insn_trans/trans_rvi.c.inc b/target/riscv/insn_trans/trans_rvi.c.inc index 6201c07795..698a28731e 100644 --- a/target/riscv/insn_trans/trans_rvi.c.inc +++ b/target/riscv/insn_trans/trans_rvi.c.inc @@ -303,11 +303,17 @@ static bool trans_slli(DisasContext *ctx, arg_slli *a) static bool trans_srli(DisasContext *ctx, arg_srli *a) { + if (ctx->uxl32) { + return trans_srliw(ctx, a); + } return gen_shifti(ctx, a, tcg_gen_shr_tl); } static bool trans_srai(DisasContext *ctx, arg_srai *a) { + if (ctx->uxl32) { + return trans_sraiw(ctx, a); + } return gen_shifti(ctx, a, tcg_gen_sar_tl); } @@ -343,11 +349,17 @@ static bool trans_xor(DisasContext *ctx, arg_xor *a) static bool trans_srl(DisasContext *ctx, arg_srl *a) { + if (ctx->uxl32) { + return trans_srlw(ctx, a); + } return gen_shift(ctx, a, &tcg_gen_shr_tl); } static bool trans_sra(DisasContext *ctx, arg_sra *a) { + if (ctx->uxl32) { + return trans_sraw(ctx, a); + } return gen_shift(ctx, a, &tcg_gen_sar_tl); } -- 2.17.1