Disabled the paired single sum instruction (ps_sum) as it is causing
the black screen in Sonic Colours. Both JIT and JITIL have this work-around. Re-enabled ps_mul as that instruction was not the root cause. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6565 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
8e38b1a8a7
commit
b926cb426e
|
@ -197,7 +197,7 @@ void Jit64::tri_op(int d, int a, int b, bool reversible, void (XEmitter::*op)(X6
|
||||||
}
|
}
|
||||||
|
|
||||||
void Jit64::ps_arith(UGeckoInstruction inst)
|
void Jit64::ps_arith(UGeckoInstruction inst)
|
||||||
{
|
{
|
||||||
INSTRUCTION_START
|
INSTRUCTION_START
|
||||||
JITDISABLE(Paired)
|
JITDISABLE(Paired)
|
||||||
if (inst.Rc) {
|
if (inst.Rc) {
|
||||||
|
@ -210,9 +210,7 @@ void Jit64::ps_arith(UGeckoInstruction inst)
|
||||||
case 21: tri_op(inst.FD, inst.FA, inst.FB, true, &XEmitter::ADDPD); break; //add
|
case 21: tri_op(inst.FD, inst.FA, inst.FB, true, &XEmitter::ADDPD); break; //add
|
||||||
case 23: Default(inst); break; //sel
|
case 23: Default(inst); break; //sel
|
||||||
case 24: Default(inst); break; //res
|
case 24: Default(inst); break; //res
|
||||||
case 25: Default(inst); break;
|
case 25: tri_op(inst.FD, inst.FA, inst.FC, true, &XEmitter::MULPD); break; //mul
|
||||||
// TODO: MULPD breaks Sonic Colours (black screen)
|
|
||||||
//tri_op(inst.FD, inst.FA, inst.FC, true, &XEmitter::MULPD); break; //mul
|
|
||||||
default:
|
default:
|
||||||
_assert_msg_(DYNA_REC, 0, "ps_arith WTF!!!");
|
_assert_msg_(DYNA_REC, 0, "ps_arith WTF!!!");
|
||||||
}
|
}
|
||||||
|
@ -222,7 +220,8 @@ void Jit64::ps_sum(UGeckoInstruction inst)
|
||||||
{
|
{
|
||||||
INSTRUCTION_START
|
INSTRUCTION_START
|
||||||
JITDISABLE(Paired)
|
JITDISABLE(Paired)
|
||||||
if (inst.Rc) {
|
// TODO: (inst.SUBOP5 == 10) breaks Sonic Colours (black screen)
|
||||||
|
if (inst.Rc || (inst.SUBOP5 == 10)) {
|
||||||
Default(inst); return;
|
Default(inst); return;
|
||||||
}
|
}
|
||||||
int d = inst.FD;
|
int d = inst.FD;
|
||||||
|
|
|
@ -76,8 +76,10 @@ void JitIL::ps_arith(UGeckoInstruction inst)
|
||||||
|
|
||||||
void JitIL::ps_sum(UGeckoInstruction inst)
|
void JitIL::ps_sum(UGeckoInstruction inst)
|
||||||
{
|
{
|
||||||
// FIXME: This operation strikes me as a bit strange...
|
// TODO: This operation strikes me as a bit strange...
|
||||||
// perhaps we can optimize it depending on the users?
|
// perhaps we can optimize it depending on the users?
|
||||||
|
// TODO: ps_sum breaks Sonic Colours (black screen)
|
||||||
|
Default(inst); return;
|
||||||
INSTRUCTION_START
|
INSTRUCTION_START
|
||||||
JITDISABLE(Paired)
|
JITDISABLE(Paired)
|
||||||
if (inst.Rc || inst.SUBOP5 != 10) {
|
if (inst.Rc || inst.SUBOP5 != 10) {
|
||||||
|
|
Loading…
Reference in New Issue