small ps bugfix and another couple of instructions implemented
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1553 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
a4fc0da8cc
commit
b3fc3b16da
|
@ -321,8 +321,8 @@ namespace Jit64
|
||||||
// TODO - faster version for when regs are different
|
// TODO - faster version for when regs are different
|
||||||
MOVAPD(XMM0, fpr.R(c));
|
MOVAPD(XMM0, fpr.R(c));
|
||||||
MOVAPD(XMM1, fpr.R(a));
|
MOVAPD(XMM1, fpr.R(a));
|
||||||
SHUFPD(XMM1, R(XMM1), 5); // copy higher to lower
|
SHUFPD(XMM1, R(XMM1), 3); // copy higher to lower
|
||||||
MULPD(XMM0, R(XMM1)); // sum lowers
|
MULPD(XMM0, R(XMM1));
|
||||||
MOVAPD(fpr.R(d), XMM0);
|
MOVAPD(fpr.R(d), XMM0);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -398,6 +398,17 @@ namespace Jit64
|
||||||
MOVAPD(XMM0, fpr.R(a));
|
MOVAPD(XMM0, fpr.R(a));
|
||||||
switch (inst.SUBOP5)
|
switch (inst.SUBOP5)
|
||||||
{
|
{
|
||||||
|
case 14: //madds0
|
||||||
|
MOVDDUP(XMM1, fpr.R(c));
|
||||||
|
MULPD(XMM0, R(XMM1));
|
||||||
|
ADDPD(XMM0, fpr.R(b));
|
||||||
|
break;
|
||||||
|
case 15: //madds1
|
||||||
|
MOVAPD(XMM1, fpr.R(c));
|
||||||
|
SHUFPD(XMM1, R(XMM1), 3); // copy higher to lower
|
||||||
|
MULPD(XMM0, R(XMM1));
|
||||||
|
ADDPD(XMM0, fpr.R(b));
|
||||||
|
break;
|
||||||
case 28: //msub
|
case 28: //msub
|
||||||
MULPD(XMM0, fpr.R(c));
|
MULPD(XMM0, fpr.R(c));
|
||||||
SUBPD(XMM0, fpr.R(b));
|
SUBPD(XMM0, fpr.R(b));
|
||||||
|
@ -427,25 +438,4 @@ namespace Jit64
|
||||||
ForceSinglePrecisionP(fpr.RX(d));
|
ForceSinglePrecisionP(fpr.RX(d));
|
||||||
fpr.UnlockAll();
|
fpr.UnlockAll();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ps_mulsX(UGeckoInstruction inst)
|
|
||||||
{
|
|
||||||
#ifdef JIT_OFF_OPTIONS
|
|
||||||
if(Core::g_CoreStartupParameter.bJITOff || Core::g_CoreStartupParameter.bJITPairedOff)
|
|
||||||
{Default(inst); return;} // turn off from debugger
|
|
||||||
#endif
|
|
||||||
INSTRUCTION_START;
|
|
||||||
Default(inst);
|
|
||||||
return;
|
|
||||||
if (inst.Rc) {
|
|
||||||
Default(inst); return;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (inst.SUBOP5)
|
|
||||||
{
|
|
||||||
case 12:
|
|
||||||
case 13:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -228,8 +228,8 @@ GekkoOPTemplate table4_2[] =
|
||||||
{11, Interpreter::ps_sum1, Jit64::ps_sum, {"ps_sum1", OPTYPE_PS, 0}},
|
{11, Interpreter::ps_sum1, Jit64::ps_sum, {"ps_sum1", OPTYPE_PS, 0}},
|
||||||
{12, Interpreter::ps_muls0, Jit64::ps_muls, {"ps_muls0", OPTYPE_PS, 0}},
|
{12, Interpreter::ps_muls0, Jit64::ps_muls, {"ps_muls0", OPTYPE_PS, 0}},
|
||||||
{13, Interpreter::ps_muls1, Jit64::ps_muls, {"ps_muls1", OPTYPE_PS, 0}},
|
{13, Interpreter::ps_muls1, Jit64::ps_muls, {"ps_muls1", OPTYPE_PS, 0}},
|
||||||
{14, Interpreter::ps_madds0, Jit64::Default, {"ps_madds0", OPTYPE_PS, 0}},
|
{14, Interpreter::ps_madds0, Jit64::ps_maddXX, {"ps_madds0", OPTYPE_PS, 0}},
|
||||||
{15, Interpreter::ps_madds1, Jit64::Default, {"ps_madds1", OPTYPE_PS, 0}},
|
{15, Interpreter::ps_madds1, Jit64::ps_maddXX, {"ps_madds1", OPTYPE_PS, 0}},
|
||||||
{18, Interpreter::ps_div, Jit64::ps_arith, {"ps_div", OPTYPE_PS, 0, 16}},
|
{18, Interpreter::ps_div, Jit64::ps_arith, {"ps_div", OPTYPE_PS, 0, 16}},
|
||||||
{20, Interpreter::ps_sub, Jit64::ps_arith, {"ps_sub", OPTYPE_PS, 0}},
|
{20, Interpreter::ps_sub, Jit64::ps_arith, {"ps_sub", OPTYPE_PS, 0}},
|
||||||
{21, Interpreter::ps_add, Jit64::ps_arith, {"ps_add", OPTYPE_PS, 0}},
|
{21, Interpreter::ps_add, Jit64::ps_arith, {"ps_add", OPTYPE_PS, 0}},
|
||||||
|
|
Loading…
Reference in New Issue