Jit64: boolX - Optimize or for size
OR allows for a more compact representation for constants that can be represented by a signed 8-bit integer, while MOV does not. By letting MOV handle the larger constants we can occasionally save a byte. Before: 45 8B F5 mov r14d,r13d 41 81 CE 00 80 01 00 or r14d,18000h After: 41 BE 00 80 01 00 mov r14d,18000h 45 0B F5 or r14d,r13d
This commit is contained in:
parent
62f80a008c
commit
2d3c7fca8d
|
@ -783,9 +783,18 @@ void Jit64::boolX(UGeckoInstruction inst)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (a != j)
|
if (a == j)
|
||||||
|
OR(32, Ra, Imm32(imm));
|
||||||
|
else if (s32(imm) >= -128 && s32(imm) <= 127)
|
||||||
|
{
|
||||||
MOV(32, Ra, Rj);
|
MOV(32, Ra, Rj);
|
||||||
OR(32, Ra, Imm32(imm));
|
OR(32, Ra, Imm32(imm));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MOV(32, Ra, Imm32(imm));
|
||||||
|
OR(32, Ra, Rj);
|
||||||
|
}
|
||||||
|
|
||||||
if (final_not)
|
if (final_not)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue