summaryrefslogtreecommitdiff
path: root/Source
diff options
context:
space:
mode:
authorRyan Houdek <Sonicadvance1@gmail.com>2014-10-25 20:36:29 -0500
committerRyan Houdek <Sonicadvance1@gmail.com>2014-10-25 20:36:29 -0500
commit17f352e2aa1847fef1b3a73bf48ff9cc5e7cd390 (patch)
tree9791fcd01ca5f75e88c592ca41a50c008c2b0869 /Source
parent484fc392d69c458b84581d1886903569dd2a7c1f (diff)
Fixes some overzealous optimizations from ARMv7 BindToRegister.
We can't do it in rlw and friends. subfx had an inccorect check. Minor whitespace and reordering.
Diffstat (limited to 'Source')
-rw-r--r--Source/Core/Core/PowerPC/JitArm32/JitArm_Integer.cpp13
1 files changed, 5 insertions, 8 deletions
diff --git a/Source/Core/Core/PowerPC/JitArm32/JitArm_Integer.cpp b/Source/Core/Core/PowerPC/JitArm32/JitArm_Integer.cpp
index 533615a880..e3afe530f6 100644
--- a/Source/Core/Core/PowerPC/JitArm32/JitArm_Integer.cpp
+++ b/Source/Core/Core/PowerPC/JitArm32/JitArm_Integer.cpp
@@ -570,10 +570,10 @@ void JitArm::arith(UGeckoInstruction inst)
ANDS(RA, RS, RB);
break;
case 40: // subfx
- gpr.BindToRegister(d, d == s || d == b);
+ gpr.BindToRegister(d, d == b || d == a);
RD = gpr.R(d);
- RA = gpr.R(a);
RB = gpr.R(b);
+ RA = gpr.R(a);
SUBS(RD, RB, RA);
break;
case 60:
@@ -654,7 +654,7 @@ void JitArm::arith(UGeckoInstruction inst)
RA = gpr.R(a);
RS = gpr.R(s);
RB = gpr.R(b);
- LSRS(RA, RS, RB);
+ LSRS(RA, RS, RB);
break;
case 792:
dest = a;
@@ -662,7 +662,7 @@ void JitArm::arith(UGeckoInstruction inst)
RA = gpr.R(a);
RS = gpr.R(s);
RB = gpr.R(b);
- ASRS(RA, RS, RB);
+ ASRS(RA, RS, RB);
break;
case 10: // addcx
case 266:
@@ -841,8 +841,8 @@ void JitArm::negx(UGeckoInstruction inst)
JITDISABLE(bJITIntegerOff);
gpr.BindToRegister(inst.RD, inst.RD == inst.RA);
- ARMReg RA = gpr.R(inst.RA);
ARMReg RD = gpr.R(inst.RD);
+ ARMReg RA = gpr.R(inst.RA);
RSB(RD, RA, 0);
if (inst.Rc)
@@ -860,7 +860,6 @@ void JitArm::rlwimix(UGeckoInstruction inst)
JITDISABLE(bJITIntegerOff);
u32 mask = Helper_Mask(inst.MB,inst.ME);
- gpr.BindToRegister(inst.RA, inst.RA == inst.RS);
ARMReg RA = gpr.R(inst.RA);
ARMReg RS = gpr.R(inst.RS);
ARMReg rA = gpr.GetReg();
@@ -883,7 +882,6 @@ void JitArm::rlwinmx(UGeckoInstruction inst)
JITDISABLE(bJITIntegerOff);
u32 mask = Helper_Mask(inst.MB,inst.ME);
- gpr.BindToRegister(inst.RA, inst.RA == inst.RS);
ARMReg RA = gpr.R(inst.RA);
ARMReg RS = gpr.R(inst.RS);
ARMReg rA = gpr.GetReg();
@@ -904,7 +902,6 @@ void JitArm::rlwnmx(UGeckoInstruction inst)
JITDISABLE(bJITIntegerOff);
u32 mask = Helper_Mask(inst.MB,inst.ME);
- gpr.BindToRegister(inst.RA, inst.RA == inst.RS || inst.RA == inst.RB);
ARMReg RA = gpr.R(inst.RA);
ARMReg RS = gpr.R(inst.RS);
ARMReg RB = gpr.R(inst.RB);