reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
98 return TLI.getSetCCResultType(DAG.getDataLayout(), *DAG.getContext(), VT); 282 assert(TLI.isShuffleMaskLegal(NewMask, NVT) && "Shuffle not legal?"); 319 TLI.isLoadExtLegal(ISD::EXTLOAD, OrigVT, SVT) && 320 TLI.ShouldShrinkFPConstant(OrigVT)) { 330 DAG.getConstantPool(LLVMC, TLI.getPointerTy(DAG.getDataLayout())); 350 TLI.getPointerTy(DAG.getDataLayout())); 387 SDValue StackPtr2 = TLI.getVectorElementPointer(DAG, StackPtr, VT, Tmp3); 440 TLI.isTypeLegal(MVT::i32)) { 450 if (TLI.isTypeLegal(MVT::i64)) { 457 if (TLI.isTypeLegal(MVT::i32) && !ST->isVolatile()) { 501 switch (TLI.getOperationAction(ISD::STORE, VT)) { 508 if (!TLI.allowsMemoryAccessForAlignment(*DAG.getContext(), DL, MemVT, 511 SDValue Result = TLI.expandUnalignedStore(ST, DAG); 519 SDValue Res = TLI.LowerOperation(SDValue(Node, 0), DAG); 525 MVT NVT = TLI.getTypeToPromoteTo(ISD::STORE, VT); 586 TLI.getShiftAmountTy(Value.getValueType(), DL))); 598 TLI.getShiftAmountTy(Value.getValueType(), DL))); 617 switch (TLI.getTruncStoreAction(ST->getValue().getValueType(), StVT)) { 623 if (!TLI.allowsMemoryAccessForAlignment(*DAG.getContext(), DL, MemVT, 625 SDValue Result = TLI.expandUnalignedStore(ST, DAG); 631 SDValue Res = TLI.LowerOperation(SDValue(Node, 0), DAG); 643 if (TLI.isTypeLegal(StVT)) { 651 TLI.getTypeToTransformTo(*DAG.getContext(), StVT), 677 switch (TLI.getOperationAction(Node->getOpcode(), VT)) { 684 if (!TLI.allowsMemoryAccessForAlignment(*DAG.getContext(), DL, MemVT, 686 std::tie(RVal, RChain) = TLI.expandUnalignedLoad(LD, DAG); 691 if (SDValue Res = TLI.LowerOperation(RVal, DAG)) { 698 MVT NVT = TLI.getTypeToPromoteTo(Node->getOpcode(), VT); 737 TLI.getLoadExtAction(ExtType, Node->getValueType(0), MVT::i1) == 813 TLI.getShiftAmountTy(Hi.getValueType(), DL))); 844 TLI.getShiftAmountTy(Hi.getValueType(), DL))); 853 switch (TLI.getLoadExtAction(ExtType, Node->getValueType(0), 864 if (SDValue Res = TLI.LowerOperation(SDValue(Node, 0), DAG)) { 873 if (!TLI.allowsMemoryAccess(*DAG.getContext(), DL, MemVT, 875 std::tie(Value, Chain) = TLI.expandUnalignedLoad(LD, DAG); 882 if (!TLI.isLoadExtLegal(ISD::EXTLOAD, DestVT, SrcVT)) { 885 EVT LoadVT = TLI.getRegisterType(SrcVT.getSimpleVT()); 886 if (TLI.isTypeLegal(SrcVT) || // Same as SrcVT == LoadVT? 887 TLI.isLoadExtLegal(ExtType, LoadVT, SrcVT)) { 909 EVT ILoadVT = TLI.getRegisterType(IDestVT.getSimpleVT()); 973 assert(TLI.getTypeAction(*DAG.getContext(), Node->getValueType(i)) == 978 assert((TLI.getTypeAction(*DAG.getContext(), Op.getValueType()) == 993 Action = TLI.getOperationAction(Node->getOpcode(), MVT::Other); 996 Action = TLI.getOperationAction(Node->getOpcode(), 1000 Action = TLI.getOperationAction(Node->getOpcode(), 1003 Action = TLI.getOperationAction(Node->getOpcode(), MVT::Other); 1013 Action = TLI.getOperationAction(Node->getOpcode(), 1018 Action = TLI.getOperationAction(Node->getOpcode(), InnerType); 1022 Action = TLI.getOperationAction(Node->getOpcode(), 1034 Action = TLI.getCondCodeAction(CCCode, OpVT); 1037 Action = TLI.getOperationAction(Node->getOpcode(), 1040 Action = TLI.getOperationAction(Node->getOpcode(), OpVT); 1068 Action = TLI.getOperationAction(Node->getOpcode(), Node->getValueType(0)); 1080 Action = TLI.getOperationAction(Node->getOpcode(), Node->getValueType(0)); 1087 Action = TLI.getOperationAction(Node->getOpcode(), MVT::i64); 1097 Action = TLI.getOperationAction(Node->getOpcode(), Node->getValueType(0)); 1115 Action = TLI.getStrictFPOperationAction(Node->getOpcode(), 1122 Action = TLI.getOperationAction(Node->getOpcode(), Node->getValueType(0)); 1130 Action = TLI.getFixedPointOperationAction(Node->getOpcode(), 1135 Action = TLI.getOperationAction(Node->getOpcode(), 1139 Action = TLI.getOperationAction(Node->getOpcode(), 1155 Action = TLI.getOperationAction( 1162 Action = TLI.getOperationAction(Node->getOpcode(), Node->getValueType(0)); 1226 if (SDValue Res = TLI.LowerOperation(SDValue(Node, 0), DAG)) { 1333 StackPtr = TLI.getVectorElementPointer(DAG, StackPtr, VecVT, Idx); 1377 SDValue SubStackPtr = TLI.getVectorElementPointer(DAG, StackPtr, VecVT, Idx); 1445 if (TLI.isTypeLegal(IVT)) { 1454 MVT LoadTy = TLI.getRegisterType(*DAG.getContext(), MVT::i8); 1518 if (TLI.isOperationLegalOrCustom(ISD::FABS, FloatVT) && 1519 TLI.isOperationLegalOrCustom(ISD::FNEG, FloatVT)) { 1564 if (TLI.isOperationLegalOrCustom(ISD::FCOPYSIGN, FloatVT)) { 1581 unsigned SPReg = TLI.getStackPointerRegisterToSaveRestore(); 1639 switch (TLI.getCondCodeAction(CCCode, OpVT)) { 1646 if (TLI.isCondCodeLegalOrCustom(InvCC, OpVT)) { 1654 if (!TLI.isCondCodeLegalOrCustom(InvCC, OpVT)) { 1660 if (TLI.isCondCodeLegalOrCustom(InvCC, OpVT)) { 1673 assert(TLI.isCondCodeLegal(ISD::SETOEQ, OpVT) 1677 assert(TLI.isCondCodeLegal(ISD::SETUNE, OpVT) 1963 DAG.getConstantPool(CP, TLI.getPointerTy(DAG.getDataLayout())); 1978 if (TLI.shouldExpandBuildVectorWithShuffles(VT, DefinedValues.size())) { 1987 if (TLI.isShuffleMaskLegal(ShuffleVec, Node->getValueType(0))) { 2001 if (ExpandBVWithShuffles(Node, DAG, TLI, Res)) 2031 Entry.IsSExt = TLI.shouldSignExtendTypeInLibCall(ArgVT, isSigned); 2032 Entry.IsZExt = !TLI.shouldSignExtendTypeInLibCall(ArgVT, isSigned); 2035 SDValue Callee = DAG.getExternalSymbol(TLI.getLibcallName(LC), 2036 TLI.getPointerTy(DAG.getDataLayout())); 2052 TLI.isInTailCallPosition(DAG, Node, TCChain) && 2058 bool signExtend = TLI.shouldSignExtendTypeInLibCall(RetVT, isSigned); 2061 .setLibCallee(TLI.getLibcallCallingConv(LC), RetTy, Callee, 2068 std::pair<SDValue, SDValue> CallInfo = TLI.LowerCallTo(CLI); 2099 SDValue Callee = DAG.getExternalSymbol(TLI.getLibcallName(LC), 2100 TLI.getPointerTy(DAG.getDataLayout())); 2107 .setLibCallee(TLI.getLibcallCallingConv(LC), RetTy, Callee, 2112 std::pair<SDValue, SDValue> CallInfo = TLI.LowerCallTo(CLI); 2225 SDValue Callee = DAG.getExternalSymbol(TLI.getLibcallName(LC), 2226 TLI.getPointerTy(DAG.getDataLayout())); 2232 .setLibCallee(TLI.getLibcallCallingConv(LC), RetTy, Callee, 2237 std::pair<SDValue, SDValue> CallInfo = TLI.LowerCallTo(CLI); 2326 SDValue Callee = DAG.getExternalSymbol(TLI.getLibcallName(LC), 2327 TLI.getPointerTy(DAG.getDataLayout())); 2332 TLI.getLibcallCallingConv(LC), Type::getVoidTy(*DAG.getContext()), Callee, 2335 std::pair<SDValue, SDValue> CallInfo = TLI.LowerCallTo(CLI); 2354 if (SrcVT == MVT::i32 && TLI.isTypeLegal(MVT::f64)) { 2431 DAG.getConstantPool(FudgeFactor, TLI.getPointerTy(DAG.getDataLayout())); 2473 if (TLI.isOperationLegalOrCustom(ISD::SINT_TO_FP, NewInTy)) { 2480 if (TLI.isOperationLegalOrCustom(ISD::UINT_TO_FP, NewInTy)) { 2515 if (TLI.isOperationLegalOrCustom(ISD::FP_TO_SINT, NewOutTy)) { 2521 if (!isSigned && TLI.isOperationLegalOrCustom(ISD::FP_TO_UINT, NewOutTy)) { 2540 EVT SHVT = TLI.getShiftAmountTy(VT, DAG.getDataLayout()); 2604 EVT SHVT = TLI.getShiftAmountTy(VT, DAG.getDataLayout()); 2661 if (TLI.expandABS(Node, Tmp1, DAG)) 2665 if (TLI.expandCTPOP(Node, Tmp1, DAG)) 2670 if (TLI.expandCTLZ(Node, Tmp1, DAG)) 2675 if (TLI.expandCTTZ(Node, Tmp1, DAG)) 2691 TLI.getPointerTy(DAG.getDataLayout())); 2698 ISD::FRAMEADDR, dl, TLI.getPointerTy(DAG.getDataLayout()), 2699 DAG.getConstant(0, dl, TLI.getPointerTy(DAG.getDataLayout()))); 2767 switch (TLI.getExtendForAtomicOps()) { 2817 if (TLI.getStrictFPOperationAction(Node->getOpcode(), 2837 if (TLI.getStrictFPOperationAction(Node->getOpcode(), 2875 EVT ShiftAmountTy = TLI.getShiftAmountTy(VT, DAG.getDataLayout()); 2886 if (TLI.expandUINT_TO_FP(Node, Tmp1, DAG)) { 2897 if (TLI.expandFP_TO_SINT(Node, Tmp1, DAG)) 2901 if (TLI.expandFP_TO_SINT(Node, Tmp1, DAG)) { 2908 if (TLI.expandFP_TO_UINT(Node, Tmp1, Tmp2, DAG)) 2912 if (TLI.expandFP_TO_UINT(Node, Tmp1, Tmp2, DAG)) { 2962 if (!TLI.isTypeLegal(EltVT)) { 2963 EVT NewEltVT = TLI.getTypeToTransformTo(*DAG.getContext(), EltVT); 3016 DAG.getConstant(Idx, dl, TLI.getVectorIdxTy(DAG.getDataLayout())))); 3021 TLI.getVectorIdxTy(DAG.getDataLayout())))); 3036 TLI.getShiftAmountTy( 3051 if (unsigned SP = TLI.getStackPointerRegisterToSaveRestore()) { 3063 if (unsigned SP = TLI.getStackPointerRegisterToSaveRestore()) { 3109 if (SDValue Expanded = TLI.expandFMINNUM_FMAXNUM(Node, DAG)) 3118 if ((TLI.isOperationLegalOrCustom(ISD::FSINCOS, VT) || 3119 isSinCosLibcallAvailable(Node, TLI)) 3145 if (!TLI.useSoftFloat() && TM.Options.UnsafeFPMath) { 3149 TLI.isOperationLegalOrCustom(ISD::FP_TO_FP16, MVT::f32)) { 3163 if (!TLI.isFPImmLegal(CFP->getValueAPF(), Node->getValueType(0), 3175 if (TLI.isOperationLegalOrCustom(ISD::FADD, VT) && 3176 TLI.isOperationLegalOrCustom(ISD::FNEG, VT)) { 3186 assert(TLI.isOperationLegalOrCustom(ISD::ADD, VT) && 3187 TLI.isOperationLegalOrCustom(ISD::XOR, VT) && 3204 if (TLI.isOperationLegalOrCustom(DivRemOpc, VT)) { 3208 } else if (TLI.isOperationLegalOrCustom(DivOpc, VT)) { 3222 if (TLI.isOperationLegalOrCustom(DivRemOpc, VT)) { 3250 if (TLI.isOperationLegalOrCustom(MULHOpcode, VT)) { 3258 assert(TLI.isTypeLegal(HalfType)); 3259 if (TLI.expandMUL_LOHI(Node->getOpcode(), VT, Node, LHS, RHS, Halves, 3267 TLI.getShiftAmountTy(HalfType, DAG.getDataLayout())); 3283 bool HasSMUL_LOHI = TLI.isOperationLegalOrCustom(ISD::SMUL_LOHI, VT); 3284 bool HasUMUL_LOHI = TLI.isOperationLegalOrCustom(ISD::UMUL_LOHI, VT); 3285 bool HasMULHS = TLI.isOperationLegalOrCustom(ISD::MULHS, VT); 3286 bool HasMULHU = TLI.isOperationLegalOrCustom(ISD::MULHU, VT); 3305 if (TLI.isOperationLegalOrCustom(ISD::ZERO_EXTEND, VT) && 3306 TLI.isOperationLegalOrCustom(ISD::ANY_EXTEND, VT) && 3307 TLI.isOperationLegalOrCustom(ISD::SHL, VT) && 3308 TLI.isOperationLegalOrCustom(ISD::OR, VT) && 3309 TLI.expandMUL(Node, Lo, Hi, HalfType, DAG, 3315 TLI.getShiftAmountTy(HalfType, DAG.getDataLayout())); 3323 if (TLI.expandFunnelShift(Node, Tmp1, DAG)) 3328 if (TLI.expandROT(Node, Tmp1, DAG)) 3335 Results.push_back(TLI.expandAddSubSat(Node, DAG)); 3341 Results.push_back(TLI.expandFixedPointMul(Node, DAG)); 3388 TLI.expandSADDSUBO(Node, Result, Overflow, DAG); 3396 TLI.expandUADDSUBO(Node, Result, Overflow, DAG); 3404 if (TLI.expandMULO(Node, Result, Overflow, DAG)) { 3417 TLI.getShiftAmountTy(PairTy, DAG.getDataLayout()))); 3443 EVT PTy = TLI.getPointerTy(TD); 3467 if (TLI.isJumpTableRelative()) { 3472 TLI.getPICJumpTableRelocBase(Table, DAG)); 3475 Tmp1 = TLI.expandIndirectJTBranch(dl, LD.getValue(1), Addr, DAG); 3533 switch (TLI.getBooleanContents(Tmp1.getValueType())) { 3559 if (TLI.isCondCodeLegalOrCustom(CCOp, Tmp1.getSimpleValueType())) { 3563 assert(!TLI.isOperationExpand(ISD::SELECT, VT) && 3579 if (TLI.isCondCodeLegalOrCustom(InvCC, Tmp1.getSimpleValueType())) { 3588 if (TLI.isCondCodeLegalOrCustom(SwapInvCC, Tmp1.getSimpleValueType())) { 3664 assert(TLI.isTypeLegal(VT.getScalarType())&& "Element type must be legal"); 3671 DAG.getConstant(Idx, dl, TLI.getVectorIdxTy(DAG.getDataLayout()))); 3674 DAG.getConstant(Idx, dl, TLI.getVectorIdxTy(DAG.getDataLayout()))); 3696 Results.push_back(TLI.expandVecReduce(Node, DAG)); 3719 if (TLI.getStrictFPOperationAction(Node->getOpcode(), 3730 if (TLI.getStrictFPOperationAction(Node->getOpcode(), 3768 TLI.getPointerTy(DAG.getDataLayout())), 3771 std::pair<SDValue, SDValue> CallResult = TLI.LowerCallTo(CLI); 3809 "abort", TLI.getPointerTy(DAG.getDataLayout())), 3811 std::pair<SDValue, SDValue> CallResult = TLI.LowerCallTo(CLI); 4134 MVT NVT = TLI.getTypeToPromoteTo(Node->getOpcode(), OVT); 4174 TLI.getShiftAmountTy(NVT, DAG.getDataLayout()))); 4273 DAG.getConstant(OriginalSize, dl, TLI.getScalarShiftAmountTy(DL, NVT))); 4421 MVT MidVT = getPromotedVectorElementType(TLI, EltVT, NewEltVT); 4454 MVT MidVT = getPromotedVectorElementType(TLI, EltVT, NewEltVT); 4500 MVT MidVT = getPromotedVectorElementType(TLI, EltVT, NewEltVT); 4540 MVT MidVT = getPromotedVectorElementType(TLI, EltVT, NewEltVT);