diff options
| author | Ryan Houdek <Sonicadvance1@gmail.com> | 2015-01-29 01:52:45 -0600 |
|---|---|---|
| committer | Ryan Houdek <Sonicadvance1@gmail.com> | 2015-01-29 06:07:00 -0600 |
| commit | 631c8a981e778e0106ea973d83f154c98fdcc1dd (patch) | |
| tree | 5ffb76eff40153fa623903910f6197803e669010 /Source/Core | |
| parent | 235f6c24457e95861ce105cc8b01f7ab7caacdb9 (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.cpp | 17 |
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); |
