diff --git a/src/core/cpu_recompiler_code_generator_x64.cpp b/src/core/cpu_recompiler_code_generator_x64.cpp index 6ecef3c44..eb740b443 100644 --- a/src/core/cpu_recompiler_code_generator_x64.cpp +++ b/src/core/cpu_recompiler_code_generator_x64.cpp @@ -785,6 +785,15 @@ void CodeGenerator::EmitDiv(HostReg to_reg_quotient, HostReg to_reg_remainder, H // what we want, but swapped, so exchange them m_emit->xchg(m_emit->rax, m_emit->rdx); } + else if (to_reg_quotient != Xbyak::Operand::RAX && to_reg_quotient != Xbyak::Operand::RDX && + to_reg_remainder != Xbyak::Operand::RAX && to_reg_remainder != Xbyak::Operand::RDX) + { + // store to the registers we want.. this could be optimized better + if (to_reg_quotient != HostReg_Count) + m_emit->mov(GetHostReg64(to_reg_quotient), m_emit->rax); + if (to_reg_remainder != HostReg_Count) + m_emit->mov(GetHostReg64(to_reg_remainder), m_emit->rdx); + } else { // store to the registers we want.. this could be optimized better