JIT64: use LEA for the "a = b + imm" case of addi

This commit is contained in:
Fiora 2014-08-24 11:54:37 -07:00
parent 9977da0550
commit 5b77617069
1 changed files with 9 additions and 2 deletions

View File

@ -208,8 +208,15 @@ void Jit64::regimmop(int d, int a, bool binary, u32 value, Operation doop, void
else
{
gpr.BindToRegister(d, false);
MOV(32, gpr.R(d), gpr.R(a));
(this->*op)(32, gpr.R(d), Imm32(value)); //m_GPR[d] = m_GPR[_inst.RA] + _inst.SIMM_16;
if (doop == Add && gpr.R(a).IsSimpleReg() && !carry)
{
LEA(32, gpr.RX(d), MDisp(gpr.RX(a), value));
}
else
{
MOV(32, gpr.R(d), gpr.R(a));
(this->*op)(32, gpr.R(d), Imm32(value)); //m_GPR[d] = m_GPR[_inst.RA] + _inst.SIMM_16;
}
if (carry)
GenerateCarry();
if (Rc)