diff options
| author | Admiral H. Curtiss <pikachu025@gmail.com> | 2023-06-17 04:00:22 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-06-17 04:00:22 +0200 |
| commit | 089d43399616dd7574515a899bdb92d8d1f0815b (patch) | |
| tree | 7d5288eb1343b8196bcbcf64c73df9e2e3ce3cd9 /Source/Core | |
| parent | 523f8c5776f3142bc5bfb3e298a5920f2fe9ad2d (diff) | |
| parent | 9c13436e2b01237b2b8979da0f399d7c412e789a (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.cpp | 10 |
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(); } |
