summaryrefslogtreecommitdiff
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
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.
-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);