diff options
author | Chris Lattner <sabre@nondot.org> | 2005-05-13 21:48:20 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2005-05-13 21:48:20 +0000 |
commit | 7d387d207d5225456a3936ba5a1f4c317539dcad (patch) | |
tree | 361abcccfab8b963d3cf750c2b2a98f6014e718a /llvm/lib | |
parent | c0e369ed66c591698fbb188784a2d567eff9a099 (diff) | |
download | bcm5719-llvm-7d387d207d5225456a3936ba5a1f4c317539dcad.tar.gz bcm5719-llvm-7d387d207d5225456a3936ba5a1f4c317539dcad.zip |
Fix UnitTests/2005-05-13-SDivTwo.c
llvm-svn: 21985
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/Target/X86/X86ISelPattern.cpp | 5 | ||||
-rw-r--r-- | llvm/lib/Target/X86/X86ISelSimple.cpp | 2 |
2 files changed, 4 insertions, 3 deletions
diff --git a/llvm/lib/Target/X86/X86ISelPattern.cpp b/llvm/lib/Target/X86/X86ISelPattern.cpp index 3345afcc485..fcea635d47b 100644 --- a/llvm/lib/Target/X86/X86ISelPattern.cpp +++ b/llvm/lib/Target/X86/X86ISelPattern.cpp @@ -2675,7 +2675,6 @@ unsigned ISel::SelectExpr(SDOperand N) { } if (RHS && (RHS & (RHS-1)) == 0) { // Signed division by power of 2? unsigned Log = log2(RHS); - unsigned TmpReg = MakeReg(N.getValueType()); unsigned SAROpc, SHROpc, ADDOpc, NEGOpc; switch (N.getValueType()) { default: assert("Unknown type to signed divide!"); @@ -2698,10 +2697,12 @@ unsigned ISel::SelectExpr(SDOperand N) { NEGOpc = X86::NEG32r; break; } + unsigned RegSize = MVT::getSizeInBits(N.getValueType()); Tmp1 = SelectExpr(N.getOperand(0)); + unsigned TmpReg = MakeReg(N.getValueType()); BuildMI(BB, SAROpc, 2, TmpReg).addReg(Tmp1).addImm(Log-1); unsigned TmpReg2 = MakeReg(N.getValueType()); - BuildMI(BB, SHROpc, 2, TmpReg2).addReg(TmpReg).addImm(32-Log); + BuildMI(BB, SHROpc, 2, TmpReg2).addReg(TmpReg).addImm(RegSize-Log); unsigned TmpReg3 = MakeReg(N.getValueType()); BuildMI(BB, ADDOpc, 2, TmpReg3).addReg(Tmp1).addReg(TmpReg2); diff --git a/llvm/lib/Target/X86/X86ISelSimple.cpp b/llvm/lib/Target/X86/X86ISelSimple.cpp index ea5520fbf88..e5898a801b1 100644 --- a/llvm/lib/Target/X86/X86ISelSimple.cpp +++ b/llvm/lib/Target/X86/X86ISelSimple.cpp @@ -2924,7 +2924,7 @@ void X86ISel::emitDivRemOperation(MachineBasicBlock *BB, .addReg(Op0Reg).addImm(Log-1); unsigned TmpReg2 = makeAnotherReg(Op0->getType()); BuildMI(*BB, IP, SHROpcode[Class], 2, TmpReg2) - .addReg(TmpReg).addImm(32-Log); + .addReg(TmpReg).addImm(CI->getType()->getPrimitiveSizeInBits()-Log); unsigned TmpReg3 = makeAnotherReg(Op0->getType()); BuildMI(*BB, IP, ADDOpcode[Class], 2, TmpReg3) .addReg(Op0Reg).addReg(TmpReg2); |