summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorRyan Houdek <Sonicadvance1@gmail.com>2015-01-29 01:52:45 -0600
committerRyan Houdek <Sonicadvance1@gmail.com>2015-01-29 06:07:00 -0600
commit631c8a981e778e0106ea973d83f154c98fdcc1dd (patch)
tree5ffb76eff40153fa623903910f6197803e669010 /Source/Core
parent235f6c24457e95861ce105cc8b01f7ab7caacdb9 (diff)
[AArch64] Minor performance improvements to paired stores.
We can combine these two ST1 calls in to a single ST1 call. Saves a few cycles in paired stores
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/Core/PowerPC/JitArm64/JitAsm.cpp17
1 files changed, 7 insertions, 10 deletions
diff --git a/Source/Core/Core/PowerPC/JitArm64/JitAsm.cpp b/Source/Core/Core/PowerPC/JitArm64/JitAsm.cpp
index 45d81f0d86..f1f4510d1e 100644
--- a/Source/Core/Core/PowerPC/JitArm64/JitAsm.cpp
+++ b/Source/Core/Core/PowerPC/JitArm64/JitAsm.cpp
@@ -273,8 +273,7 @@ void JitArm64AsmRoutineManager::GenerateCommon()
float_emit.REV32(8, D0, D0);
MOVK(addr_reg, ((u64)Memory::base >> 32) & 0xFFFF, SHIFT_32);
- float_emit.ST1(32, Q0, 0, addr_reg, SP);
- float_emit.ST1(32, Q0, 1, addr_reg, SP);
+ float_emit.ST1(64, Q0, 0, addr_reg, SP);
RET(X30);
SetJumpTarget(argh);
@@ -304,9 +303,9 @@ void JitArm64AsmRoutineManager::GenerateCommon()
TST(DecodeReg(addr_reg), 6, 1);
FixupBranch argh = B(CC_NEQ);
+
MOVK(addr_reg, ((u64)Memory::base >> 32) & 0xFFFF, SHIFT_32);
- float_emit.ST1(8, Q0, 0, addr_reg, SP);
- float_emit.ST1(8, Q0, 1, addr_reg, SP);
+ float_emit.ST1(16, Q0, 0, addr_reg, SP);
RET(X30);
SetJumpTarget(argh);
@@ -335,9 +334,9 @@ void JitArm64AsmRoutineManager::GenerateCommon()
TST(DecodeReg(addr_reg), 6, 1);
FixupBranch argh = B(CC_NEQ);
+
MOVK(addr_reg, ((u64)Memory::base >> 32) & 0xFFFF, SHIFT_32);
- float_emit.ST1(8, Q0, 0, addr_reg, SP);
- float_emit.ST1(8, Q0, 1, addr_reg, SP);
+ float_emit.ST1(16, Q0, 0, addr_reg, SP);
RET(X30);
SetJumpTarget(argh);
@@ -368,8 +367,7 @@ void JitArm64AsmRoutineManager::GenerateCommon()
TST(DecodeReg(addr_reg), 6, 1);
FixupBranch argh = B(CC_NEQ);
MOVK(addr_reg, ((u64)Memory::base >> 32) & 0xFFFF, SHIFT_32);
- float_emit.ST1(16, Q0, 0, addr_reg, SP);
- float_emit.ST1(16, Q0, 1, addr_reg, SP);
+ float_emit.ST1(32, Q0, 0, addr_reg, SP);
RET(X30);
SetJumpTarget(argh);
@@ -399,8 +397,7 @@ void JitArm64AsmRoutineManager::GenerateCommon()
TST(DecodeReg(addr_reg), 6, 1);
FixupBranch argh = B(CC_NEQ);
MOVK(addr_reg, ((u64)Memory::base >> 32) & 0xFFFF, SHIFT_32);
- float_emit.ST1(16, Q0, 0, addr_reg, SP);
- float_emit.ST1(16, Q0, 1, addr_reg, SP);
+ float_emit.ST1(32, Q0, 0, addr_reg, SP);
RET(X30);
SetJumpTarget(argh);