Jit64: boolX - Special case xor with 0

No computation necessary, but we may need a MOV.

Before:
8B FE                mov         edi,esi
83 F7 00             xor         edi,0

After:
8B FE                mov         edi,esi
This commit is contained in:
Sintendo
2021-01-25 22:59:14 +01:00
parent 3677a5035c
commit c9011e9d2c

View File

@ -687,10 +687,18 @@ void Jit64::boolX(UGeckoInstruction inst)
RCOpArg Rj = gpr.Use(j, RCMode::Read);
RCX64Reg Ra = gpr.Bind(a, RCMode::Write);
RegCache::Realize(Rj, Ra);
if (a != j)
MOV(32, Ra, Rj);
XOR(32, Ra, Imm32(imm));
if (imm == 0)
{
if (a != j)
MOV(32, Ra, Rj);
needs_test = true;
}
else
{
if (a != j)
MOV(32, Ra, Rj);
XOR(32, Ra, Imm32(imm));
}
}
else if (is_and)
{