This is just a clean-up patch that simplifies the initial-exec TLS logic by
authorBill Schmidt <wschmidt@linux.vnet.ibm.com>
Thu, 13 Dec 2012 18:45:54 +0000 (18:45 +0000)
committerBill Schmidt <wschmidt@linux.vnet.ibm.com>
Thu, 13 Dec 2012 18:45:54 +0000 (18:45 +0000)
avoiding use of machine operand flags.  No change in observable behavior, so
no new test cases.

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

lib/Target/PowerPC/PPC.h
lib/Target/PowerPC/PPCISelLowering.cpp
lib/Target/PowerPC/PPCInstr64Bit.td
lib/Target/PowerPC/PPCMCInstLower.cpp

index bbd247f20fbce7be15d755e7a8231738e01a78a3..e6d38ebf2172e4b484d4b7ece5d56fd7a6ebbf13 100644 (file)
@@ -72,9 +72,7 @@ namespace llvm {
     MO_HA16 = 2 << 5,
 
     MO_TPREL16_HA = 3 << 5,
-    MO_TPREL16_LO = 4 << 5,
-    MO_GOT_TPREL16_DS = 5 << 5,
-    MO_TLS = 6 << 5
+    MO_TPREL16_LO = 4 << 5
   };
   } // end namespace PPCII
   
index 68f1bc6eaea58ebe025e11c6b5f087b54651b7c7..0748bd53a8c6f10b4d0f7045a988583a4c0edd86 100644 (file)
@@ -1351,15 +1351,11 @@ SDValue PPCTargetLowering::LowerGlobalTLSAddress(SDValue Op,
     llvm_unreachable("only local-exec is currently supported for ppc32");
 
   if (Model == TLSModel::InitialExec) {
-    SDValue GOTOffset = DAG.getTargetGlobalAddress(GV, dl, PtrVT, 0,
-                                                   PPCII::MO_GOT_TPREL16_DS);
-    SDValue TPReg = DAG.getTargetGlobalAddress(GV, dl, PtrVT, 0,
-                                               PPCII::MO_TLS);
-    SDValue GOTReg = DAG.getRegister(is64bit ? PPC::X2  : PPC::R2,
-                                     is64bit ? MVT::i64 : MVT::i32);
-    SDValue TPOffset = DAG.getNode(PPCISD::LD_GOT_TPREL, dl, PtrVT,
-                                   GOTOffset, GOTReg);
-    return DAG.getNode(PPCISD::ADD_TLS, dl, PtrVT, TPOffset, TPReg);
+    SDValue TGA = DAG.getTargetGlobalAddress(GV, dl, PtrVT, 0, 0);
+    SDValue GOTReg = DAG.getRegister(PPC::X2, MVT::i64);
+    SDValue TPOffset = DAG.getNode(PPCISD::LD_GOT_TPREL, dl,
+                                   PtrVT, TGA, GOTReg);
+    return DAG.getNode(PPCISD::ADD_TLS, dl, PtrVT, TPOffset, TGA);
   }
 
   if (Model == TLSModel::GeneralDynamic) {
index bc66d5c0a06bb39c13bf6fdb1b1c3dd895f641bf..429c60b742a58b880216d1fb549cb8af38a019ce 100644 (file)
@@ -384,7 +384,7 @@ def ADD8  : XOForm_1<31, 266, 0, (outs G8RC:$rT), (ins G8RC:$rA, G8RC:$rB),
 // ADD8 has a special form: reg = ADD8(reg, sym@tls) for use by the
 // initial-exec thread-local storage model.
 def ADD8TLS  : XOForm_1<31, 266, 0, (outs G8RC:$rT), (ins G8RC:$rA, tlsreg:$rB),
-                        "add $rT, $rA, $rB", IntSimple,
+                        "add $rT, $rA, $rB@tls", IntSimple,
                         [(set G8RC:$rT, (add G8RC:$rA, tglobaltlsaddr:$rB))]>;
                      
 let Defs = [CARRY] in {
index 1c4af901f72bad202f165a7e1c53711c95fad034..73f7a2cfd570387aa371441fd54383c3a6d434c7 100644 (file)
@@ -114,12 +114,6 @@ static MCOperand GetSymbolRef(const MachineOperand &MO, const MCSymbol *Symbol,
                                break;
     case PPCII::MO_TPREL16_LO: RefKind = MCSymbolRefExpr::VK_PPC_TPREL16_LO;
                                break;
-    case PPCII::MO_GOT_TPREL16_DS:
-      RefKind = MCSymbolRefExpr::VK_PPC_GOT_TPREL16_DS;
-      break;
-    case PPCII::MO_TLS:
-      RefKind = MCSymbolRefExpr::VK_PPC_TLS;
-      break;
    }
 
   // FIXME: This isn't right, but we don't have a good way to express this in