target/ppc: introduce do_va_helper
Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20220517123929.284511-10-matheus.ferst@eldorado.org.br> Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
This commit is contained in:
parent
8f5eeee3f1
commit
ffc2a2818a
@ -2553,20 +2553,17 @@ static void gen_vmladduhm(DisasContext *ctx)
|
||||
tcg_temp_free_ptr(rd);
|
||||
}
|
||||
|
||||
static bool trans_VPERM(DisasContext *ctx, arg_VA *a)
|
||||
static bool do_va_helper(DisasContext *ctx, arg_VA *a,
|
||||
void (*gen_helper)(TCGv_ptr, TCGv_ptr, TCGv_ptr, TCGv_ptr))
|
||||
{
|
||||
TCGv_ptr vrt, vra, vrb, vrc;
|
||||
|
||||
REQUIRE_INSNS_FLAGS(ctx, ALTIVEC);
|
||||
REQUIRE_VECTOR(ctx);
|
||||
|
||||
vrt = gen_avr_ptr(a->vrt);
|
||||
vra = gen_avr_ptr(a->vra);
|
||||
vrb = gen_avr_ptr(a->vrb);
|
||||
vrc = gen_avr_ptr(a->rc);
|
||||
|
||||
gen_helper_VPERM(vrt, vra, vrb, vrc);
|
||||
|
||||
gen_helper(vrt, vra, vrb, vrc);
|
||||
tcg_temp_free_ptr(vrt);
|
||||
tcg_temp_free_ptr(vra);
|
||||
tcg_temp_free_ptr(vrb);
|
||||
@ -2575,27 +2572,8 @@ static bool trans_VPERM(DisasContext *ctx, arg_VA *a)
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool trans_VPERMR(DisasContext *ctx, arg_VA *a)
|
||||
{
|
||||
TCGv_ptr vrt, vra, vrb, vrc;
|
||||
|
||||
REQUIRE_INSNS_FLAGS2(ctx, ISA300);
|
||||
REQUIRE_VECTOR(ctx);
|
||||
|
||||
vrt = gen_avr_ptr(a->vrt);
|
||||
vra = gen_avr_ptr(a->vra);
|
||||
vrb = gen_avr_ptr(a->vrb);
|
||||
vrc = gen_avr_ptr(a->rc);
|
||||
|
||||
gen_helper_VPERMR(vrt, vra, vrb, vrc);
|
||||
|
||||
tcg_temp_free_ptr(vrt);
|
||||
tcg_temp_free_ptr(vra);
|
||||
tcg_temp_free_ptr(vrb);
|
||||
tcg_temp_free_ptr(vrc);
|
||||
|
||||
return true;
|
||||
}
|
||||
TRANS_FLAGS(ALTIVEC, VPERM, do_va_helper, gen_helper_VPERM)
|
||||
TRANS_FLAGS2(ISA300, VPERMR, do_va_helper, gen_helper_VPERMR)
|
||||
|
||||
static bool trans_VSEL(DisasContext *ctx, arg_VA *a)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user