mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-03-04 19:14:01 +00:00
JitArm64: Optimize frsqrte denormal path (in an "interesting" way)
This commit is contained in:
parent
9b21046dfc
commit
9cc1df6c14
@ -329,12 +329,12 @@ void JitArm64::GenerateFrsqrte()
|
|||||||
FixupBranch negative = TBNZ(ARM64Reg::X1, 63);
|
FixupBranch negative = TBNZ(ARM64Reg::X1, 63);
|
||||||
FixupBranch normal = CBNZ(ARM64Reg::X2);
|
FixupBranch normal = CBNZ(ARM64Reg::X2);
|
||||||
|
|
||||||
// "Normalize" denormal values
|
// "Normalize" denormal values.
|
||||||
|
// The simplified calculation used here results in the upper 11 bits being incorrect,
|
||||||
|
// but that's fine, because the code below never reads those bits.
|
||||||
CLZ(ARM64Reg::X3, ARM64Reg::X1);
|
CLZ(ARM64Reg::X3, ARM64Reg::X1);
|
||||||
MOVI2R(ARM64Reg::X2, 12);
|
|
||||||
LSLV(ARM64Reg::X1, ARM64Reg::X1, ARM64Reg::X3);
|
LSLV(ARM64Reg::X1, ARM64Reg::X1, ARM64Reg::X3);
|
||||||
LSR(ARM64Reg::X1, ARM64Reg::X1, 11);
|
LSR(ARM64Reg::X1, ARM64Reg::X1, 11);
|
||||||
SUB(ARM64Reg::X3, ARM64Reg::X2, ARM64Reg::X3);
|
|
||||||
BFI(ARM64Reg::X1, ARM64Reg::X3, 52, 12);
|
BFI(ARM64Reg::X1, ARM64Reg::X3, 52, 12);
|
||||||
|
|
||||||
SetJumpTarget(normal);
|
SetJumpTarget(normal);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user