[ARM] MicroOps in the branching instructions.

This commit is contained in:
Ryan Houdek 2013-09-19 02:05:57 +00:00
parent 5158aea4dc
commit 1b1b5d2100

View File

@ -85,7 +85,6 @@ void JitArm::rfi(UGeckoInstruction inst)
LDR(rD, R9, PPCSTATE_OFF(msr)); LDR(rD, R9, PPCSTATE_OFF(msr));
AND(rD, rD, rB); // rD = Masked MSR AND(rD, rD, rB); // rD = Masked MSR
STR(rD, R9, PPCSTATE_OFF(msr));
LDR(rB, R9, PPCSTATE_OFF(spr[SPR_SRR1])); // rB contains SRR1 here LDR(rB, R9, PPCSTATE_OFF(spr[SPR_SRR1])); // rB contains SRR1 here
@ -230,7 +229,6 @@ void JitArm::bcctrx(UGeckoInstruction inst)
//NPC = CTR & 0xfffffffc; //NPC = CTR & 0xfffffffc;
ARMReg rA = gpr.GetReg(); ARMReg rA = gpr.GetReg();
ARMReg rB = gpr.GetReg();
if(inst.LK_3) if(inst.LK_3)
{ {
@ -239,10 +237,8 @@ void JitArm::bcctrx(UGeckoInstruction inst)
STR(rA, R9, PPCSTATE_OFF(spr[SPR_LR])); STR(rA, R9, PPCSTATE_OFF(spr[SPR_LR]));
// ARMABI_MOVI2M((u32)&LR, js.compilerPC + 4); // ARMABI_MOVI2M((u32)&LR, js.compilerPC + 4);
} }
MVN(rB, 0x3); // 0xFFFFFFFC
LDR(rA, R9, PPCSTATE_OFF(spr[SPR_CTR])); LDR(rA, R9, PPCSTATE_OFF(spr[SPR_CTR]));
AND(rA, rA, rB); BIC(rA, rA, 0x3);
gpr.Unlock(rB);
WriteExitDestInR(rA); WriteExitDestInR(rA);
} }
else else
@ -264,8 +260,7 @@ void JitArm::bcctrx(UGeckoInstruction inst)
FixupBranch b = B_CC(branch); FixupBranch b = B_CC(branch);
LDR(rA, R9, PPCSTATE_OFF(spr[SPR_CTR])); LDR(rA, R9, PPCSTATE_OFF(spr[SPR_CTR]));
MVN(rB, 0x3); // 0xFFFFFFFC BIC(rA, rA, 0x3);
AND(rA, rA, rB);
if (inst.LK_3){ if (inst.LK_3){
u32 Jumpto = js.compilerPC + 4; u32 Jumpto = js.compilerPC + 4;
@ -336,9 +331,8 @@ void JitArm::bclrx(UGeckoInstruction inst)
//MOV(32, R(EAX), M(&LR)); //MOV(32, R(EAX), M(&LR));
//AND(32, R(EAX), Imm32(0xFFFFFFFC)); //AND(32, R(EAX), Imm32(0xFFFFFFFC));
MVN(rB, 0x3); // 0xFFFFFFFC
LDR(rA, R9, PPCSTATE_OFF(spr[SPR_LR])); LDR(rA, R9, PPCSTATE_OFF(spr[SPR_LR]));
AND(rA, rA, rB); BIC(rA, rA, 0x3);
if (inst.LK){ if (inst.LK){
u32 Jumpto = js.compilerPC + 4; u32 Jumpto = js.compilerPC + 4;
MOVI2R(rB, Jumpto); MOVI2R(rB, Jumpto);