summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorRyan Houdek <Sonicadvance1@gmail.com>2014-08-14 12:21:03 -0500
committerRyan Houdek <Sonicadvance1@gmail.com>2014-08-14 12:21:03 -0500
commit64697abe4882d181a9546486ff06066bf3265b4e (patch)
tree5ce439ae13f3ebfdf578ae4a2067e48f3f639323 /Source/Core
parent952eaa244912d8219bf796335593e4b4c3d854ac (diff)
parent97beea196343817aef5bd56cfb733149e6bde4d2 (diff)
Merge pull request #798 from FioraAeterna/integerflush
JIT: Don't needlessly flush register state in merged integer+branch code
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/Core/PowerPC/Jit64/Jit_Integer.cpp10
1 files changed, 5 insertions, 5 deletions
diff --git a/Source/Core/Core/PowerPC/Jit64/Jit_Integer.cpp b/Source/Core/Core/PowerPC/Jit64/Jit_Integer.cpp
index 346f1e5c18..5676ca9af1 100644
--- a/Source/Core/Core/PowerPC/Jit64/Jit_Integer.cpp
+++ b/Source/Core/Core/PowerPC/Jit64/Jit_Integer.cpp
@@ -340,13 +340,13 @@ void Jit64::cmpXX(UGeckoInstruction inst)
js.downcountAmount++;
js.skipnext = true;
- gpr.Flush();
- fpr.Flush();
-
int test_bit = 8 >> (js.next_inst.BI & 3);
u8 conditionResult = (js.next_inst.BO & BO_BRANCH_IF_TRUE) ? test_bit : 0;
if ((compareResult & test_bit) == conditionResult)
{
+ gpr.Flush();
+ fpr.Flush();
+
if (js.next_inst.OPCD == 16) // bcx
{
if (js.next_inst.LK)
@@ -430,8 +430,8 @@ void Jit64::cmpXX(UGeckoInstruction inst)
// std::swap(destination1, destination2), condition = !condition;
gpr.UnlockAll();
- gpr.Flush();
- fpr.Flush();
+ gpr.Flush(FLUSH_MAINTAIN_STATE);
+ fpr.Flush(FLUSH_MAINTAIN_STATE);
FixupBranch pDontBranch;
if (test_bit & 8)
pDontBranch = J_CC(condition ? CC_GE : CC_L); // Test < 0, so jump over if >= 0.