JitIL: Fixed the wrong implementation of "mtcrf". (The bit order was reverse...) This commit may fix the bugs reported in Issue 3097 and r6127. (I could not test them because I don't have the games which are reported.)

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6134 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
nodchip 2010-08-27 07:25:31 +00:00
parent aae0e96682
commit 47fa91250b

View File

@ -148,9 +148,12 @@ void JitIL::mtcrf(UGeckoInstruction inst)
IREmitter::InstLoc s = ibuild.EmitLoadGReg(inst.RS);
for (int i = 0; i < 8; ++i)
{
if (inst.CRM & (1 << i))
if (inst.CRM & (0x80 >> i))
{
ibuild.EmitStoreCR(ibuild.EmitAnd(ibuild.EmitShrl(s, ibuild.EmitIntConst(28 - 4 * i)), ibuild.EmitIntConst(0xf)), i);
IREmitter::InstLoc value;
value = ibuild.EmitShrl(s, ibuild.EmitIntConst(28 - i * 4));
value = ibuild.EmitAnd(value, ibuild.EmitIntConst(0xF));
ibuild.EmitStoreCR(value, i);
}
}
}