reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

References

lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
   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);