mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-24 14:49:42 -06:00
@ -169,9 +169,7 @@ void Jit64::ps_sum(UGeckoInstruction inst)
|
|||||||
{
|
{
|
||||||
INSTRUCTION_START
|
INSTRUCTION_START
|
||||||
JITDISABLE(bJITPairedOff);
|
JITDISABLE(bJITPairedOff);
|
||||||
|
FALLBACK_IF(inst.Rc);
|
||||||
// TODO: (inst.SUBOP5 == 10) breaks Sonic Colours (black screen)
|
|
||||||
FALLBACK_IF(inst.Rc || (inst.SUBOP5 == 10));
|
|
||||||
|
|
||||||
int d = inst.FD;
|
int d = inst.FD;
|
||||||
int a = inst.FA;
|
int a = inst.FA;
|
||||||
@ -182,7 +180,7 @@ void Jit64::ps_sum(UGeckoInstruction inst)
|
|||||||
switch (inst.SUBOP5)
|
switch (inst.SUBOP5)
|
||||||
{
|
{
|
||||||
case 10:
|
case 10:
|
||||||
// Do the sum in upper subregisters, merge uppers
|
// ps_sum0, do the sum in upper subregisters, merge uppers
|
||||||
MOVDDUP(XMM0, fpr.R(a));
|
MOVDDUP(XMM0, fpr.R(a));
|
||||||
MOVAPD(XMM1, fpr.R(b));
|
MOVAPD(XMM1, fpr.R(b));
|
||||||
ADDPD(XMM0, R(XMM1));
|
ADDPD(XMM0, R(XMM1));
|
||||||
@ -190,7 +188,7 @@ void Jit64::ps_sum(UGeckoInstruction inst)
|
|||||||
MOVAPD(fpr.R(d), XMM0);
|
MOVAPD(fpr.R(d), XMM0);
|
||||||
break;
|
break;
|
||||||
case 11:
|
case 11:
|
||||||
// Do the sum in lower subregisters, merge lowers
|
// ps_sum1, do the sum in lower subregisters, merge lowers
|
||||||
MOVAPD(XMM0, fpr.R(a));
|
MOVAPD(XMM0, fpr.R(a));
|
||||||
MOVAPD(XMM1, fpr.R(b));
|
MOVAPD(XMM1, fpr.R(b));
|
||||||
SHUFPD(XMM1, R(XMM1), 5); // copy higher to lower
|
SHUFPD(XMM1, R(XMM1), 5); // copy higher to lower
|
||||||
|
Reference in New Issue
Block a user