target/ppc: declare xvxsigsp helper with call flags
Move xvxsigsp to decodetree, declare helper_xvxsigsp with TCG_CALL_NO_RWG, and drop the unused env argument. Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20220517123929.284511-8-matheus.ferst@eldorado.org.br> Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
This commit is contained in:
parent
cf862bee0e
commit
c36ab970ac
@ -3205,7 +3205,7 @@ uint64_t helper_xsrsp(CPUPPCState *env, uint64_t xb)
|
||||
return xt;
|
||||
}
|
||||
|
||||
void helper_xvxsigsp(CPUPPCState *env, ppc_vsr_t *xt, ppc_vsr_t *xb)
|
||||
void helper_XVXSIGSP(ppc_vsr_t *xt, ppc_vsr_t *xb)
|
||||
{
|
||||
ppc_vsr_t t = { };
|
||||
uint32_t exp, i, fraction;
|
||||
|
@ -531,7 +531,7 @@ DEF_HELPER_FLAGS_2(XXGENPCVDM_le_comp, TCG_CALL_NO_RWG, void, vsr, avr)
|
||||
DEF_HELPER_4(xxextractuw, void, env, vsr, vsr, i32)
|
||||
DEF_HELPER_FLAGS_5(XXPERMX, TCG_CALL_NO_RWG, void, vsr, vsr, vsr, vsr, tl)
|
||||
DEF_HELPER_4(xxinsertw, void, env, vsr, vsr, i32)
|
||||
DEF_HELPER_3(xvxsigsp, void, env, vsr, vsr)
|
||||
DEF_HELPER_FLAGS_2(XVXSIGSP, TCG_CALL_NO_RWG, void, vsr, vsr)
|
||||
DEF_HELPER_FLAGS_5(XXEVAL, TCG_CALL_NO_RWG, void, vsr, vsr, vsr, vsr, i32)
|
||||
DEF_HELPER_FLAGS_5(XXBLENDVB, TCG_CALL_NO_RWG, void, vsr, vsr, vsr, vsr, i32)
|
||||
DEF_HELPER_FLAGS_5(XXBLENDVH, TCG_CALL_NO_RWG, void, vsr, vsr, vsr, vsr, i32)
|
||||
|
@ -710,6 +710,10 @@ XVCVBF16SPN 111100 ..... 10000 ..... 111011011 .. @XX2
|
||||
XVCVSPBF16 111100 ..... 10001 ..... 111011011 .. @XX2
|
||||
XSCVSPDPN 111100 ..... ----- ..... 101001011 .. @XX2
|
||||
|
||||
## VSX Binary Floating-Point Math Support Instructions
|
||||
|
||||
XVXSIGSP 111100 ..... 01001 ..... 111011011 .. @XX2
|
||||
|
||||
## VSX Vector Test Least-Significant Bit by Byte Instruction
|
||||
|
||||
XVTLSBB 111100 ... -- 00010 ..... 111011011 . - @XX2_bf_xb
|
||||
|
@ -2151,7 +2151,23 @@ static void gen_xvxexpdp(DisasContext *ctx)
|
||||
tcg_temp_free_i64(xbl);
|
||||
}
|
||||
|
||||
GEN_VSX_HELPER_X2(xvxsigsp, 0x00, 0x04, 0, PPC2_ISA300)
|
||||
static bool trans_XVXSIGSP(DisasContext *ctx, arg_XX2 *a)
|
||||
{
|
||||
TCGv_ptr t, b;
|
||||
|
||||
REQUIRE_INSNS_FLAGS2(ctx, ISA300);
|
||||
REQUIRE_VSX(ctx);
|
||||
|
||||
t = gen_vsr_ptr(a->xt);
|
||||
b = gen_vsr_ptr(a->xb);
|
||||
|
||||
gen_helper_XVXSIGSP(t, b);
|
||||
|
||||
tcg_temp_free_ptr(t);
|
||||
tcg_temp_free_ptr(b);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static void gen_xvxsigdp(DisasContext *ctx)
|
||||
{
|
||||
|
@ -156,7 +156,6 @@ GEN_XX3FORM(xviexpdp, 0x00, 0x1F, PPC2_ISA300),
|
||||
GEN_XX2FORM_EO(xvxexpdp, 0x16, 0x1D, 0x00, PPC2_ISA300),
|
||||
GEN_XX2FORM_EO(xvxsigdp, 0x16, 0x1D, 0x01, PPC2_ISA300),
|
||||
GEN_XX2FORM_EO(xvxexpsp, 0x16, 0x1D, 0x08, PPC2_ISA300),
|
||||
GEN_XX2FORM_EO(xvxsigsp, 0x16, 0x1D, 0x09, PPC2_ISA300),
|
||||
|
||||
/* DCMX = bit[25] << 6 | bit[29] << 5 | bit[11:15] */
|
||||
#define GEN_XX2FORM_DCMX(name, opc2, opc3, fl2) \
|
||||
|
Loading…
Reference in New Issue
Block a user