JitArm64: Optimize frsqrte denormal path
Now that the normal path is no longer reading X2 and X3, it doesn't matter what the denormal path writes to them.
This commit is contained in:
parent
e5bd8019f6
commit
4b2f73774f
|
@ -333,11 +333,10 @@ void JitArm64::GenerateFrsqrte()
|
||||||
// "Normalize" denormal values
|
// "Normalize" denormal values
|
||||||
CLZ(ARM64Reg::X3, ARM64Reg::X3);
|
CLZ(ARM64Reg::X3, ARM64Reg::X3);
|
||||||
SUB(ARM64Reg::X4, ARM64Reg::X3, 11);
|
SUB(ARM64Reg::X4, ARM64Reg::X3, 11);
|
||||||
MOVI2R(ARM64Reg::X2, 0x00C0'0000'0000'0000);
|
MOVI2R(ARM64Reg::X2, 12);
|
||||||
LSLV(ARM64Reg::X4, ARM64Reg::X1, ARM64Reg::X4);
|
LSLV(ARM64Reg::X1, ARM64Reg::X1, ARM64Reg::X4);
|
||||||
SUB(ARM64Reg::X2, ARM64Reg::X2, ARM64Reg::X3, ArithOption(ARM64Reg::X3, ShiftType::LSL, 52));
|
SUB(ARM64Reg::X3, ARM64Reg::X2, ARM64Reg::X3);
|
||||||
AND(ARM64Reg::X3, ARM64Reg::X4, LogicalImm(Common::DOUBLE_FRAC - 1, 64));
|
BFI(ARM64Reg::X1, ARM64Reg::X3, 52, 12);
|
||||||
ORR(ARM64Reg::X1, ARM64Reg::X2, ARM64Reg::X3);
|
|
||||||
|
|
||||||
SetJumpTarget(normal);
|
SetJumpTarget(normal);
|
||||||
UBFX(ARM64Reg::X2, ARM64Reg::X1, 48, 5);
|
UBFX(ARM64Reg::X2, ARM64Reg::X1, 48, 5);
|
||||||
|
|
Loading…
Reference in New Issue