On 9/12/23 02:09, gaosong wrote:
static bool gen_g2v_vl(DisasContext *ctx, arg_vr_i *a, uint32_t oprsz, MemOp mop, void (*func)(TCGv, TCGv_ptr, tcg_target_long)) { TCGv src = gpr_src(ctx, a->rj, EXT_NONE);if (!check_vec(ctx, oprsz)) { return true; } func(src, cpu_env, vec_reg_offset(a->vd, a->imm, mop)); return true; } static bool gen_g2v(DisasContext *ctx, arg_vr_i *a, MemOp mop, void (*func)(TCGv, TCGv_ptr, tcg_target_long)) { return gen_g2v_vl(ctx, a, 16, mop, func); } static bool gen_g2x(DisasContext *ctx, arg_vr_i *a, MemOp mop, void (*func)(TCGv, TCGv_ptr, tcg_target_long)) { return gen_g2v_vl(ctx, a, 32, mop, func); } TRANS(vinsgr2vr_b, LSX, gen_g2v, MO_8, tcg_gen_st8_i64) TRANS(vinsgr2vr_h, LSX, gen_g2v, MO_16, tcg_gen_st16_i64) TRANS(vinsgr2vr_w, LSX, gen_g2v, MO_32, tcg_gen_st32_i64) TRANS(vinsgr2vr_d, LSX, gen_g2v, MO_64, tcg_gen_st_i64) TRANS(xvinsgr2vr_w, LASX, gen_g2x, MO_32, tcg_gen_st32_i64) TRANS(xvinsgr2vr_d, LASX, gen_g2x, MO_64, tcg_gen_st_i64)
Looks perfect, thanks. r~
