mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-02-07 21:09:21 +00:00
Fix a problem where were were literally selecting for INCREASED register
pressure, not decreases register pressure. Fix problem where we accidentally swapped the operands of SHLD, which caused fourinarow to fail. This fixes fourinarow. llvm-svn: 19697
This commit is contained in:
parent
e97ed92617
commit
6534e1ede3
@ -1185,11 +1185,11 @@ bool ISel::EmitOrOpOp(SDOperand Op1, SDOperand Op2, unsigned DestReg) {
|
||||
} else if (RegSize != 8) {
|
||||
unsigned AReg, BReg;
|
||||
if (getRegPressure(ShlVal) > getRegPressure(ShrVal)) {
|
||||
AReg = SelectExpr(ShrVal);
|
||||
BReg = SelectExpr(ShlVal);
|
||||
AReg = SelectExpr(ShrVal);
|
||||
} else {
|
||||
BReg = SelectExpr(ShlVal);
|
||||
AReg = SelectExpr(ShrVal);
|
||||
BReg = SelectExpr(ShlVal);
|
||||
}
|
||||
unsigned ShAmt = SelectExpr(ShrAmt);
|
||||
BuildMI(BB, X86::MOV8rr, 1, X86::CL).addReg(ShAmt);
|
||||
@ -1221,11 +1221,11 @@ bool ISel::EmitOrOpOp(SDOperand Op1, SDOperand Op2, unsigned DestReg) {
|
||||
} else if (RegSize != 8) {
|
||||
unsigned AReg, BReg;
|
||||
if (getRegPressure(ShlVal) > getRegPressure(ShrVal)) {
|
||||
AReg = SelectExpr(ShrVal);
|
||||
BReg = SelectExpr(ShlVal);
|
||||
AReg = SelectExpr(ShlVal);
|
||||
BReg = SelectExpr(ShrVal);
|
||||
} else {
|
||||
BReg = SelectExpr(ShlVal);
|
||||
AReg = SelectExpr(ShrVal);
|
||||
BReg = SelectExpr(ShrVal);
|
||||
AReg = SelectExpr(ShlVal);
|
||||
}
|
||||
unsigned ShAmt = SelectExpr(ShlAmt);
|
||||
BuildMI(BB, X86::MOV8rr, 1, X86::CL).addReg(ShAmt);
|
||||
@ -1250,11 +1250,11 @@ bool ISel::EmitOrOpOp(SDOperand Op1, SDOperand Op2, unsigned DestReg) {
|
||||
} else if (RegSize != 8) {
|
||||
unsigned AReg, BReg;
|
||||
if (getRegPressure(ShlVal) > getRegPressure(ShrVal)) {
|
||||
AReg = SelectExpr(ShrVal);
|
||||
BReg = SelectExpr(ShlVal);
|
||||
AReg = SelectExpr(ShrVal);
|
||||
} else {
|
||||
BReg = SelectExpr(ShlVal);
|
||||
AReg = SelectExpr(ShrVal);
|
||||
BReg = SelectExpr(ShlVal);
|
||||
}
|
||||
unsigned Opc = RegSize == 16 ? X86::SHRD16rri8 : X86::SHRD32rri8;
|
||||
BuildMI(BB, Opc, 3, DestReg).addReg(AReg).addReg(BReg)
|
||||
|
Loading…
x
Reference in New Issue
Block a user