CPU/Recompiler: Fix bad codegen on slti where rd==rs
This commit is contained in:
parent
aafac96f34
commit
18066239b7
|
@ -1218,6 +1218,10 @@ bool CodeGenerator::Compile_SetLess(const CodeBlockInstruction& cbi)
|
|||
dest = cbi.instruction.i.rt;
|
||||
lhs = m_register_cache.ReadGuestRegister(cbi.instruction.i.rs, true, true);
|
||||
rhs = Value::FromConstantU32(cbi.instruction.i.imm_sext32());
|
||||
|
||||
// flush the old value which might free up a register
|
||||
if (dest != cbi.instruction.r.rs)
|
||||
m_register_cache.InvalidateGuestRegister(dest);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1225,10 +1229,11 @@ bool CodeGenerator::Compile_SetLess(const CodeBlockInstruction& cbi)
|
|||
dest = cbi.instruction.r.rd;
|
||||
lhs = m_register_cache.ReadGuestRegister(cbi.instruction.r.rs, true, true);
|
||||
rhs = m_register_cache.ReadGuestRegister(cbi.instruction.r.rt);
|
||||
}
|
||||
|
||||
// flush the old value which might free up a register
|
||||
m_register_cache.InvalidateGuestRegister(dest);
|
||||
// flush the old value which might free up a register
|
||||
if (dest != cbi.instruction.i.rs && dest != cbi.instruction.r.rt)
|
||||
m_register_cache.InvalidateGuestRegister(dest);
|
||||
}
|
||||
|
||||
Value result = m_register_cache.AllocateScratch(RegSize_32);
|
||||
EmitCmp(lhs.host_reg, rhs);
|
||||
|
|
Loading…
Reference in New Issue