summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2004-11-16 18:40:52 +0000
committerChris Lattner <sabre@nondot.org>2004-11-16 18:40:52 +0000
commit2004d90f97c47cbf8d0260b582185fcad07e685f (patch)
treec2267275f05f8b142f1600b1ac783f8af7ef7062 /llvm
parent1b13a7cdb8d5e299da8ec62c2dd4d14e65e3509c (diff)
downloadbcm5719-llvm-2004d90f97c47cbf8d0260b582185fcad07e685f.tar.gz
bcm5719-llvm-2004d90f97c47cbf8d0260b582185fcad07e685f.zip
Fix a major bug in the signed shr code, which apparently only breaks 134.perl!
llvm-svn: 17902
Diffstat (limited to 'llvm')
-rw-r--r--llvm/lib/Target/X86/X86CodeEmitter.cpp3
-rw-r--r--llvm/lib/Target/X86/X86ISelSimple.cpp2
2 files changed, 3 insertions, 2 deletions
diff --git a/llvm/lib/Target/X86/X86CodeEmitter.cpp b/llvm/lib/Target/X86/X86CodeEmitter.cpp
index eaa15419a8a..42946c29b9e 100644
--- a/llvm/lib/Target/X86/X86CodeEmitter.cpp
+++ b/llvm/lib/Target/X86/X86CodeEmitter.cpp
@@ -635,7 +635,8 @@ void Emitter::emitInstruction(const MachineInstr &MI) {
(Desc.TSFlags & X86II::FormMask)-X86II::MRM0r);
if (MI.getOperand(MI.getNumOperands()-1).isImmediate()) {
- emitConstant(MI.getOperand(MI.getNumOperands()-1).getImmedValue(), sizeOfImm(Desc));
+ emitConstant(MI.getOperand(MI.getNumOperands()-1).getImmedValue(),
+ sizeOfImm(Desc));
}
break;
diff --git a/llvm/lib/Target/X86/X86ISelSimple.cpp b/llvm/lib/Target/X86/X86ISelSimple.cpp
index e890e6bb2f9..89842a4e9f1 100644
--- a/llvm/lib/Target/X86/X86ISelSimple.cpp
+++ b/llvm/lib/Target/X86/X86ISelSimple.cpp
@@ -2984,7 +2984,7 @@ void X86ISel::emitShiftOperation(MachineBasicBlock *MBB,
BuildMI(*MBB, IP, X86::MOV32rr, 1, DestReg+1).addReg(SrcReg);
BuildMI(*MBB, IP, X86::MOV32ri, 1, DestReg).addImm(0);
} else {
- BuildMI(*MBB, IP, X86::MOV32rr, 1, DestReg).addReg(SrcReg);
+ BuildMI(*MBB, IP, X86::MOV32rr, 1, DestReg).addReg(SrcReg+1);
if (!isSigned) {
BuildMI(*MBB, IP, X86::MOV32ri, 1, DestReg+1).addImm(0);
} else {
OpenPOWER on IntegriCloud