[Project64] Implement a case for CArmRecompilerOps::BEQ_Compare

This commit is contained in:
zilmar 2016-11-23 18:37:14 +11:00
parent bceb4792ed
commit 49dd2a6ad6
1 changed files with 21 additions and 24 deletions

View File

@ -867,15 +867,12 @@ void CArmRecompilerOps::BEQ_Compare()
{ {
if ((Is64Bit(m_Opcode.rs) || Is64Bit(m_Opcode.rt)) && !g_System->b32BitCore()) if ((Is64Bit(m_Opcode.rs) || Is64Bit(m_Opcode.rt)) && !g_System->b32BitCore())
{ {
g_Notify->BreakPoint(__FILE__, __LINE__); ProtectGPR(m_Opcode.rs);
CArmRecompilerOps::UnknownOpcode();
/*ProtectGPR(m_Opcode.rs);
ProtectGPR(m_Opcode.rt); ProtectGPR(m_Opcode.rt);
CompX86RegToX86Reg( CompareArmRegToArmReg(
Is32Bit(m_Opcode.rs) ? Map_TempReg(x86_Any, m_Opcode.rs, true) : GetMipsRegMapHi(m_Opcode.rs), Is32Bit(m_Opcode.rs) ? Map_TempReg(Arm_Any, m_Opcode.rs, true) : GetMipsRegMapHi(m_Opcode.rs),
Is32Bit(m_Opcode.rt) ? Map_TempReg(x86_Any, m_Opcode.rt, true) : GetMipsRegMapHi(m_Opcode.rt) Is32Bit(m_Opcode.rt) ? Map_TempReg(Arm_Any, m_Opcode.rt, true) : GetMipsRegMapHi(m_Opcode.rt)
); );
if (m_Section->m_Cont.FallThrough) if (m_Section->m_Cont.FallThrough)
{ {
@ -887,7 +884,7 @@ void CArmRecompilerOps::BEQ_Compare()
BranchLabel20(ArmBranch_Notequal, m_Section->m_Cont.BranchLabel.c_str()); BranchLabel20(ArmBranch_Notequal, m_Section->m_Cont.BranchLabel.c_str());
m_Section->m_Cont.LinkLocation = (uint32_t *)(*g_RecompPos - 4); m_Section->m_Cont.LinkLocation = (uint32_t *)(*g_RecompPos - 4);
} }
CompX86RegToX86Reg(GetMipsRegMapLo(m_Opcode.rs), GetMipsRegMapLo(m_Opcode.rt)); CompareArmRegToArmReg(GetMipsRegMapLo(m_Opcode.rs), GetMipsRegMapLo(m_Opcode.rt));
if (m_Section->m_Cont.FallThrough) if (m_Section->m_Cont.FallThrough)
{ {
BranchLabel20(ArmBranch_Equal, m_Section->m_Jump.BranchLabel.c_str()); BranchLabel20(ArmBranch_Equal, m_Section->m_Jump.BranchLabel.c_str());
@ -907,7 +904,7 @@ void CArmRecompilerOps::BEQ_Compare()
m_Section->m_Cont.LinkLocation2 = (uint32_t *)(*g_RecompPos - 4); m_Section->m_Cont.LinkLocation2 = (uint32_t *)(*g_RecompPos - 4);
BranchLabel20(ArmBranch_Always, m_Section->m_Jump.BranchLabel.c_str()); BranchLabel20(ArmBranch_Always, m_Section->m_Jump.BranchLabel.c_str());
m_Section->m_Jump.LinkLocation = (uint32_t *)(*g_RecompPos - 4); m_Section->m_Jump.LinkLocation = (uint32_t *)(*g_RecompPos - 4);
}*/ }
} }
else else
{ {