* Add the lost fix to define the second reg of a 2-reg representation of longs
authorMisha Brukman <brukman+llvm@gmail.com>
Wed, 21 Jul 2004 20:30:18 +0000 (20:30 +0000)
committerMisha Brukman <brukman+llvm@gmail.com>
Wed, 21 Jul 2004 20:30:18 +0000 (20:30 +0000)
* Fix opcode RLWNM -> RLWINM since it uses an immediate const shift value

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15087 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/PowerPC/PPC32ISelSimple.cpp
lib/Target/PowerPC/PowerPCISelSimple.cpp

index 0ce018df3207e66780a559ff4a424cc6090a2c1b..25db30dfe7131e776b1fcf3c23e50e822ee5add0 100644 (file)
@@ -1154,6 +1154,9 @@ void ISel::emitSelectOperation(MachineBasicBlock *MBB,
   BB = sinkMBB;
   BuildMI(BB, PPC32::PHI, 4, DestReg).addReg(FalseValue)
     .addMBB(copy0MBB).addReg(TrueValue).addMBB(copy1MBB);
+  // For a register pair representing a long value, define the second reg
+  if (getClass(TrueVal->getType()) == cLong)
+    BuildMI(BB, PPC32::LI, 1, DestReg+1).addImm(0);
   return;
 }
 
@@ -2801,7 +2804,7 @@ void ISel::visitAllocaInst(AllocaInst &I) {
 
   // AlignedSize = and <AddedSize>, ~15
   unsigned AlignedSize = makeAnotherReg(Type::UIntTy);
-  BuildMI(BB, PPC32::RLWNM, 4, AlignedSize).addReg(AddedSizeReg).addImm(0)
+  BuildMI(BB, PPC32::RLWINM, 4, AlignedSize).addReg(AddedSizeReg).addImm(0)
     .addImm(0).addImm(27);
   
   // Subtract size from stack pointer, thereby allocating some space.
index 0ce018df3207e66780a559ff4a424cc6090a2c1b..25db30dfe7131e776b1fcf3c23e50e822ee5add0 100644 (file)
@@ -1154,6 +1154,9 @@ void ISel::emitSelectOperation(MachineBasicBlock *MBB,
   BB = sinkMBB;
   BuildMI(BB, PPC32::PHI, 4, DestReg).addReg(FalseValue)
     .addMBB(copy0MBB).addReg(TrueValue).addMBB(copy1MBB);
+  // For a register pair representing a long value, define the second reg
+  if (getClass(TrueVal->getType()) == cLong)
+    BuildMI(BB, PPC32::LI, 1, DestReg+1).addImm(0);
   return;
 }
 
@@ -2801,7 +2804,7 @@ void ISel::visitAllocaInst(AllocaInst &I) {
 
   // AlignedSize = and <AddedSize>, ~15
   unsigned AlignedSize = makeAnotherReg(Type::UIntTy);
-  BuildMI(BB, PPC32::RLWNM, 4, AlignedSize).addReg(AddedSizeReg).addImm(0)
+  BuildMI(BB, PPC32::RLWINM, 4, AlignedSize).addReg(AddedSizeReg).addImm(0)
     .addImm(0).addImm(27);
   
   // Subtract size from stack pointer, thereby allocating some space.