Jit64: boolX - Special case and with 0xFFFFFFFF

Bitwise and with all ones doesn't accomplish much.

Before:
41 8B F5             mov         esi,r13d
83 E6 FF             and         esi,0FFFFFFFFh

After:
41 8B F5             mov         esi,r13d
This commit is contained in:
Sintendo
2021-01-26 22:34:03 +01:00
parent 34dbfd92db
commit b760a56a9a

View File

@ -722,7 +722,15 @@ void Jit64::boolX(UGeckoInstruction inst)
RCX64Reg Ra = gpr.Bind(a, RCMode::Write); RCX64Reg Ra = gpr.Bind(a, RCMode::Write);
RegCache::Realize(Rj, Ra); RegCache::Realize(Rj, Ra);
if (complement_b) if (imm == 0xFFFFFFFF)
{
if (a != j)
MOV(32, Ra, Rj);
if (final_not || complement_b)
NOT(32, Ra);
needs_test = true;
}
else if (complement_b)
{ {
if (a != j) if (a != j)
MOV(32, Ra, Rj); MOV(32, Ra, Rj);
@ -734,12 +742,12 @@ void Jit64::boolX(UGeckoInstruction inst)
if (a != j) if (a != j)
MOV(32, Ra, Rj); MOV(32, Ra, Rj);
AND(32, Ra, Imm32(imm)); AND(32, Ra, Imm32(imm));
}
if (final_not) if (final_not)
{ {
NOT(32, Ra); NOT(32, Ra);
needs_test = true; needs_test = true;
}
} }
} }
} }