[ARM] ps_res implementation.

This commit is contained in:
Ryan Houdek 2013-09-24 21:00:50 +00:00
parent 3b1b0d3fb5
commit 74bc855f20
3 changed files with 23 additions and 1 deletions

View File

@ -223,6 +223,7 @@ public:
// Paired Singles // Paired Singles
void ps_add(UGeckoInstruction _inst); void ps_add(UGeckoInstruction _inst);
void ps_div(UGeckoInstruction _inst); void ps_div(UGeckoInstruction _inst);
void ps_res(UGeckoInstruction _inst);
void ps_sum0(UGeckoInstruction _inst); void ps_sum0(UGeckoInstruction _inst);
void ps_sum1(UGeckoInstruction _inst); void ps_sum1(UGeckoInstruction _inst);
void ps_madd(UGeckoInstruction _inst); void ps_madd(UGeckoInstruction _inst);

View File

@ -169,6 +169,27 @@ void JitArm::ps_div(UGeckoInstruction inst)
VDIV(vD1, vA1, vB1); VDIV(vD1, vA1, vB1);
} }
void JitArm::ps_res(UGeckoInstruction inst)
{
INSTRUCTION_START
JITDISABLE(bJITPairedOff)
u32 b = inst.FB, d = inst.FD;
if (inst.Rc){
Default(inst); return;
}
ARMReg vB0 = fpr.R0(b);
ARMReg vB1 = fpr.R1(b);
ARMReg vD0 = fpr.R0(d, false);
ARMReg vD1 = fpr.R1(d, false);
ARMReg V0 = fpr.GetReg();
MOVI2R(V0, 1.0, INVALID_REG); // temp reg not needed for 1.0
VDIV(vD0, V0, vB0);
VDIV(vD1, V0, vB1);
fpr.Unlock(V0);
}
void JitArm::ps_nmadd(UGeckoInstruction inst) void JitArm::ps_nmadd(UGeckoInstruction inst)
{ {
INSTRUCTION_START INSTRUCTION_START

View File

@ -153,7 +153,7 @@ static GekkoOPTemplate table4_2[] =
{20, &JitArm::ps_sub}, //"ps_sub", OPTYPE_PS, 0}}, {20, &JitArm::ps_sub}, //"ps_sub", OPTYPE_PS, 0}},
{21, &JitArm::ps_add}, //"ps_add", OPTYPE_PS, 0}}, {21, &JitArm::ps_add}, //"ps_add", OPTYPE_PS, 0}},
{23, &JitArm::ps_sel}, //"ps_sel", OPTYPE_PS, 0}}, {23, &JitArm::ps_sel}, //"ps_sel", OPTYPE_PS, 0}},
{24, &JitArm::Default}, //"ps_res", OPTYPE_PS, 0}}, {24, &JitArm::ps_res}, //"ps_res", OPTYPE_PS, 0}},
{25, &JitArm::ps_mul}, //"ps_mul", OPTYPE_PS, 0}}, {25, &JitArm::ps_mul}, //"ps_mul", OPTYPE_PS, 0}},
{26, &JitArm::ps_rsqrte}, //"ps_rsqrte", OPTYPE_PS, 0, 1}}, {26, &JitArm::ps_rsqrte}, //"ps_rsqrte", OPTYPE_PS, 0, 1}},
{28, &JitArm::ps_msub}, //"ps_msub", OPTYPE_PS, 0}}, {28, &JitArm::ps_msub}, //"ps_msub", OPTYPE_PS, 0}},