fix a regression that I introduced. stdu should scale the offset by 4
authorChris Lattner <sabre@nondot.org>
Thu, 16 Nov 2006 21:45:30 +0000 (21:45 +0000)
committerChris Lattner <sabre@nondot.org>
Thu, 16 Nov 2006 21:45:30 +0000 (21:45 +0000)
before printing it.

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

lib/Target/PowerPC/PPCAsmPrinter.cpp
lib/Target/PowerPC/PPCInstr64Bit.td

index 47056de2ab74471539bcbaa6327756397d4d929e..41f4121f5bc96d981f1a51199fb50331f5dbe6a3 100644 (file)
@@ -127,7 +127,16 @@ namespace {
       O << (unsigned short)MI->getOperand(OpNo).getImmedValue();
     }
     void printS16X4ImmOperand(const MachineInstr *MI, unsigned OpNo) {
-      O << (short)(MI->getOperand(OpNo).getImmedValue()*4);
+      if (MI->getOperand(OpNo).isImmediate()) {
+        O << (short)(MI->getOperand(OpNo).getImmedValue()*4);
+      } else {
+        O << "lo16(";
+        printOp(MI->getOperand(OpNo));
+        if (TM.getRelocationModel() == Reloc::PIC_)
+          O << "-\"L" << getFunctionNumber() << "$pb\")";
+        else
+          O << ')';
+      }
     }
     void printBranchOperand(const MachineInstr *MI, unsigned OpNo) {
       // Branches can take an immediate operand.  This is used by the branch
index 1a1b8ac2d0770c376737576a8c16aa818174ffea..7d895d8429d16f16b5c176d8c7fac8cc2574cbb3 100644 (file)
@@ -413,7 +413,7 @@ def STWU8 : DForm_1<37, (ops ptr_rc:$ea_res, G8RC:$rS,
 
 
 def STDU : DSForm_1<62, 1, (ops ptr_rc:$ea_res, G8RC:$rS,
-                                symbolLo:$ptroff, ptr_rc:$ptrreg),
+                                s16immX4:$ptroff, ptr_rc:$ptrreg),
                     "stdu $rS, $ptroff($ptrreg)", LdStSTD,
                     [(set ptr_rc:$ea_res, (pre_store G8RC:$rS, ptr_rc:$ptrreg, 
                                                      iaddroff:$ptroff))]>,