core: if lwl or lwr, in CX86RecompilerOps::CompileLoadMemoryValue, make sure that we are loading rt
This commit is contained in:
parent
315d5b9e66
commit
fd05d9f42f
|
@ -9773,8 +9773,13 @@ void CX86RecompilerOps::CompileLoadMemoryValue(asmjit::x86::Gp & AddressReg, con
|
|||
{
|
||||
if (ValueSize == 32 && m_Instruction.WritesGPR() > 0)
|
||||
{
|
||||
int32_t LoadReg = m_Opcode.rt == m_Opcode.base ? m_Opcode.base : -1;
|
||||
if (m_Opcode.op == R4300i_LWL || m_Opcode.op == R4300i_LWR)
|
||||
{
|
||||
LoadReg = m_Opcode.rt;
|
||||
}
|
||||
m_RegWorkingSet.ProtectGPR(m_Opcode.base);
|
||||
m_RegWorkingSet.Map_GPR_32bit(m_Opcode.rt, true, m_Opcode.rt != m_Opcode.base ? -1 : m_Opcode.base);
|
||||
m_RegWorkingSet.Map_GPR_32bit(m_Opcode.rt, true, LoadReg);
|
||||
}
|
||||
asmjit::Label Load64AddrDone;
|
||||
if (ValueSize == 32 && m_RegWorkingSet.IsMapped(m_Opcode.base) && m_RegWorkingSet.Is32Bit(m_Opcode.base) && !m_RegWorkingSet.IsSigned(m_Opcode.base))
|
||||
|
|
Loading…
Reference in New Issue