summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorAdmiral H. Curtiss <pikachu025@gmail.com>2023-06-17 04:00:22 +0200
committerGitHub <noreply@github.com>2023-06-17 04:00:22 +0200
commit089d43399616dd7574515a899bdb92d8d1f0815b (patch)
tree7d5288eb1343b8196bcbcf64c73df9e2e3ce3cd9 /Source/Core
parent523f8c5776f3142bc5bfb3e298a5920f2fe9ad2d (diff)
parent9c13436e2b01237b2b8979da0f399d7c412e789a (diff)
Merge pull request #11956 from JosJuice/jitarm64-12-bit-asm
JitArm64: Micro-optimizations in fres routine
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/Core/PowerPC/JitArm64/JitAsm.cpp10
1 files changed, 4 insertions, 6 deletions
diff --git a/Source/Core/Core/PowerPC/JitArm64/JitAsm.cpp b/Source/Core/Core/PowerPC/JitArm64/JitAsm.cpp
index cfa2965879..03b3c7487d 100644
--- a/Source/Core/Core/PowerPC/JitArm64/JitAsm.cpp
+++ b/Source/Core/Core/PowerPC/JitArm64/JitAsm.cpp
@@ -287,19 +287,18 @@ void JitArm64::GenerateFres()
CMP(ARM64Reg::X2, 895);
FixupBranch small_exponent = B(CCFlags::CC_LO);
- MOVI2R(ARM64Reg::X4, 1148LL);
- CMP(ARM64Reg::X2, ARM64Reg::X4);
+ CMP(ARM64Reg::X2, 1148);
FixupBranch large_exponent = B(CCFlags::CC_HI);
UBFX(ARM64Reg::X2, ARM64Reg::X1, 47, 5); // Grab upper part of mantissa
MOVP2R(ARM64Reg::X3, &Common::fres_expected);
ADD(ARM64Reg::X2, ARM64Reg::X3, ARM64Reg::X2, ArithOption(ARM64Reg::X2, ShiftType::LSL, 3));
- LDP(IndexType::Signed, ARM64Reg::W2, ARM64Reg::W3, ARM64Reg::X2, 0);
UBFX(ARM64Reg::X1, ARM64Reg::X1, 37, 10); // Grab lower part of mantissa
+ LDP(IndexType::Signed, ARM64Reg::W2, ARM64Reg::W3, ARM64Reg::X2, 0);
MOVI2R(ARM64Reg::W4, 1);
- AND(ARM64Reg::X0, ARM64Reg::X0, LogicalImm(Common::DOUBLE_SIGN | Common::DOUBLE_EXP, 64));
MADD(ARM64Reg::W1, ARM64Reg::W3, ARM64Reg::W1, ARM64Reg::W4);
SUB(ARM64Reg::W1, ARM64Reg::W2, ARM64Reg::W1, ArithOption(ARM64Reg::W1, ShiftType::LSR, 1));
+ AND(ARM64Reg::X0, ARM64Reg::X0, LogicalImm(Common::DOUBLE_SIGN | Common::DOUBLE_EXP, 64));
ORR(ARM64Reg::X0, ARM64Reg::X0, ARM64Reg::X1, ArithOption(ARM64Reg::X1, ShiftType::LSL, 29));
RET();
@@ -320,8 +319,7 @@ void JitArm64::GenerateFres()
RET();
SetJumpTarget(large_exponent);
- MOVI2R(ARM64Reg::X4, 0x7FF);
- CMP(ARM64Reg::X2, ARM64Reg::X4);
+ CMP(ARM64Reg::X2, 0x7FF);
CSEL(ARM64Reg::X0, ARM64Reg::X0, ARM64Reg::X3, CCFlags::CC_EQ);
RET();
}