reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
2019 if (DAG.getTarget().useEmulatedTLS()) 2020 return LowerToTLSEmulatedModel(GA, DAG); 2024 EVT PtrVT = getPointerTy(DAG.getDataLayout()); 2042 SDValue HiLo = makeHiLoPair(Op, HiTF, LoTF, DAG); 2043 SDValue Base = DAG.getNode(SPISD::GLOBAL_BASE_REG, DL, PtrVT); 2044 SDValue Argument = DAG.getNode(SPISD::TLS_ADD, DL, PtrVT, Base, HiLo, 2045 withTargetFlags(Op, addTF, DAG)); 2047 SDValue Chain = DAG.getEntryNode(); 2050 Chain = DAG.getCALLSEQ_START(Chain, 1, 0, DL); 2051 Chain = DAG.getCopyToReg(Chain, DL, SP::O0, Argument, InFlag); 2053 SDValue Callee = DAG.getTargetExternalSymbol("__tls_get_addr", PtrVT); 2054 SDValue Symbol = withTargetFlags(Op, callTF, DAG); 2056 SDVTList NodeTys = DAG.getVTList(MVT::Other, MVT::Glue); 2058 DAG.getMachineFunction(), CallingConv::C); 2063 DAG.getRegister(SP::O0, PtrVT), 2064 DAG.getRegisterMask(Mask), 2066 Chain = DAG.getNode(SPISD::TLS_CALL, DL, NodeTys, Ops); 2068 Chain = DAG.getCALLSEQ_END(Chain, DAG.getIntPtrConstant(1, DL, true), 2068 Chain = DAG.getCALLSEQ_END(Chain, DAG.getIntPtrConstant(1, DL, true), 2069 DAG.getIntPtrConstant(0, DL, true), InFlag, DL); 2071 SDValue Ret = DAG.getCopyFromReg(Chain, DL, SP::O0, PtrVT, InFlag); 2076 SDValue Hi = DAG.getNode(SPISD::Hi, DL, PtrVT, 2077 withTargetFlags(Op, SparcMCExpr::VK_Sparc_TLS_LDO_HIX22, DAG)); 2078 SDValue Lo = DAG.getNode(SPISD::Lo, DL, PtrVT, 2079 withTargetFlags(Op, SparcMCExpr::VK_Sparc_TLS_LDO_LOX10, DAG)); 2080 HiLo = DAG.getNode(ISD::XOR, DL, PtrVT, Hi, Lo); 2081 return DAG.getNode(SPISD::TLS_ADD, DL, PtrVT, Ret, HiLo, 2082 withTargetFlags(Op, SparcMCExpr::VK_Sparc_TLS_LDO_ADD, DAG)); 2089 SDValue Base = DAG.getNode(SPISD::GLOBAL_BASE_REG, DL, PtrVT); 2093 MachineFrameInfo &MFI = DAG.getMachineFunction().getFrameInfo(); 2098 SparcMCExpr::VK_Sparc_TLS_IE_LO10, DAG); 2099 SDValue Ptr = DAG.getNode(ISD::ADD, DL, PtrVT, Base, TGA); 2100 SDValue Offset = DAG.getNode(SPISD::TLS_LD, 2102 withTargetFlags(Op, ldTF, DAG)); 2103 return DAG.getNode(SPISD::TLS_ADD, DL, PtrVT, 2104 DAG.getRegister(SP::G7, PtrVT), Offset, 2106 SparcMCExpr::VK_Sparc_TLS_IE_ADD, DAG)); 2110 SDValue Hi = DAG.getNode(SPISD::Hi, DL, PtrVT, 2111 withTargetFlags(Op, SparcMCExpr::VK_Sparc_TLS_LE_HIX22, DAG)); 2112 SDValue Lo = DAG.getNode(SPISD::Lo, DL, PtrVT, 2113 withTargetFlags(Op, SparcMCExpr::VK_Sparc_TLS_LE_LOX10, DAG)); 2114 SDValue Offset = DAG.getNode(ISD::XOR, DL, PtrVT, Hi, Lo); 2116 return DAG.getNode(ISD::ADD, DL, PtrVT, 2117 DAG.getRegister(SP::G7, PtrVT), Offset);