From 9b21046dfcb9d1d089a09e5fd949829b56bc2472 Mon Sep 17 00:00:00 2001 From: JosJuice Date: Wed, 11 Oct 2023 20:54:17 +0200 Subject: [PATCH] JitArm64: Read X1 instead of X3 in frsqrte denormal path If we hit the denormal path, the sign and exponent are guaranteed to be 0, which means X1 and X3 have the same value. --- Source/Core/Core/PowerPC/JitArm64/JitAsm.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Source/Core/Core/PowerPC/JitArm64/JitAsm.cpp b/Source/Core/Core/PowerPC/JitArm64/JitAsm.cpp index a88ab47b18..d57743d76a 100644 --- a/Source/Core/Core/PowerPC/JitArm64/JitAsm.cpp +++ b/Source/Core/Core/PowerPC/JitArm64/JitAsm.cpp @@ -327,11 +327,10 @@ void JitArm64::GenerateFrsqrte() CMP(ARM64Reg::X2, ARM64Reg::X3); FixupBranch nan_or_inf = B(CCFlags::CC_EQ); FixupBranch negative = TBNZ(ARM64Reg::X1, 63); - AND(ARM64Reg::X3, ARM64Reg::X1, LogicalImm(Common::DOUBLE_FRAC, 64)); FixupBranch normal = CBNZ(ARM64Reg::X2); // "Normalize" denormal values - CLZ(ARM64Reg::X3, ARM64Reg::X3); + CLZ(ARM64Reg::X3, ARM64Reg::X1); MOVI2R(ARM64Reg::X2, 12); LSLV(ARM64Reg::X1, ARM64Reg::X1, ARM64Reg::X3); LSR(ARM64Reg::X1, ARM64Reg::X1, 11);