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.
This commit is contained in:
Ryan Houdek
2014-10-25 20:36:29 -05:00
parent 484fc392d6
commit 17f352e2aa

View File

@ -570,10 +570,10 @@ void JitArm::arith(UGeckoInstruction inst)
ANDS(RA, RS, RB); ANDS(RA, RS, RB);
break; break;
case 40: // subfx case 40: // subfx
gpr.BindToRegister(d, d == s || d == b); gpr.BindToRegister(d, d == b || d == a);
RD = gpr.R(d); RD = gpr.R(d);
RA = gpr.R(a);
RB = gpr.R(b); RB = gpr.R(b);
RA = gpr.R(a);
SUBS(RD, RB, RA); SUBS(RD, RB, RA);
break; break;
case 60: case 60:
@ -841,8 +841,8 @@ void JitArm::negx(UGeckoInstruction inst)
JITDISABLE(bJITIntegerOff); JITDISABLE(bJITIntegerOff);
gpr.BindToRegister(inst.RD, inst.RD == inst.RA); gpr.BindToRegister(inst.RD, inst.RD == inst.RA);
ARMReg RA = gpr.R(inst.RA);
ARMReg RD = gpr.R(inst.RD); ARMReg RD = gpr.R(inst.RD);
ARMReg RA = gpr.R(inst.RA);
RSB(RD, RA, 0); RSB(RD, RA, 0);
if (inst.Rc) if (inst.Rc)
@ -860,7 +860,6 @@ void JitArm::rlwimix(UGeckoInstruction inst)
JITDISABLE(bJITIntegerOff); JITDISABLE(bJITIntegerOff);
u32 mask = Helper_Mask(inst.MB,inst.ME); u32 mask = Helper_Mask(inst.MB,inst.ME);
gpr.BindToRegister(inst.RA, inst.RA == inst.RS);
ARMReg RA = gpr.R(inst.RA); ARMReg RA = gpr.R(inst.RA);
ARMReg RS = gpr.R(inst.RS); ARMReg RS = gpr.R(inst.RS);
ARMReg rA = gpr.GetReg(); ARMReg rA = gpr.GetReg();
@ -883,7 +882,6 @@ void JitArm::rlwinmx(UGeckoInstruction inst)
JITDISABLE(bJITIntegerOff); JITDISABLE(bJITIntegerOff);
u32 mask = Helper_Mask(inst.MB,inst.ME); u32 mask = Helper_Mask(inst.MB,inst.ME);
gpr.BindToRegister(inst.RA, inst.RA == inst.RS);
ARMReg RA = gpr.R(inst.RA); ARMReg RA = gpr.R(inst.RA);
ARMReg RS = gpr.R(inst.RS); ARMReg RS = gpr.R(inst.RS);
ARMReg rA = gpr.GetReg(); ARMReg rA = gpr.GetReg();
@ -904,7 +902,6 @@ void JitArm::rlwnmx(UGeckoInstruction inst)
JITDISABLE(bJITIntegerOff); JITDISABLE(bJITIntegerOff);
u32 mask = Helper_Mask(inst.MB,inst.ME); 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 RA = gpr.R(inst.RA);
ARMReg RS = gpr.R(inst.RS); ARMReg RS = gpr.R(inst.RS);
ARMReg RB = gpr.R(inst.RB); ARMReg RB = gpr.R(inst.RB);