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

References

lib/CodeGen/SelectionDAG/DAGCombiner.cpp
  225             TLI.isTypeLegal(EVT(VT)) &&
  679         return TLI.isOperationLegal(Opcode, VT);
  680       return TLI.isOperationLegalOrCustom(Opcode, VT);
  693       return TLI.getShiftAmountTy(LHSTy, DAG.getDataLayout(), LegalTypes);
  700       return TLI.isTypeLegal(VT);
  705       return TLI.getSetCCResultType(DAG.getDataLayout(), *DAG.getContext(), VT);
  817       !TLI.isConstTrueVal(N.getOperand(2).getNode()) ||
  818       !TLI.isConstFalseVal(N.getOperand(3).getNode()))
  821   if (TLI.getBooleanContents(N.getValueType()) ==
  923       if (!TLI.isLegalAddressingMode(DAG.getDataLayout(), AM, AccessTy, AS))
  928       if (!TLI.isLegalAddressingMode(DAG.getDataLayout(), AM, AccessTy, AS))
  971   assert(TLI.isCommutativeBinOp(Opc) && "Operation not commutative.");
 1045   if (!TLI.SimplifyDemandedBits(Op, DemandedBits, DemandedElts, Known, TLO))
 1069   if (!TLI.SimplifyDemandedVectorElts(Op, DemandedElts, KnownUndef, KnownZero,
 1132   if (!TLI.isOperationLegal(ISD::ANY_EXTEND, PVT))
 1138   if (!TLI.isOperationLegal(ISD::SIGN_EXTEND_INREG, PVT))
 1182   if (TLI.isTypeDesirableForOp(Opc, VT))
 1188   if (TLI.IsDesirableToPromoteOp(Op, PVT)) {
 1247   if (TLI.isTypeDesirableForOp(Opc, VT))
 1253   if (TLI.IsDesirableToPromoteOp(Op, PVT)) {
 1296   if (TLI.isTypeDesirableForOp(Opc, VT))
 1302   if (TLI.IsDesirableToPromoteOp(Op, PVT)) {
 1327   if (TLI.isTypeDesirableForOp(Opc, VT))
 1333   if (TLI.IsDesirableToPromoteOp(Op, PVT)) {
 1631         TLI.hasTargetDAGCombine((ISD::NodeType)N->getOpcode())) {
 1637       RV = TLI.PerformDAGCombine(N, DagCombineInfo);
 1672   if (!RV.getNode() && TLI.isCommutativeBinOp(N->getOpcode()) &&
 1917   assert(TLI.isBinOp(BO->getOpcode()) && BO->getNumValues() == 1 &&
 2139            (TLI.isOperationLegal(ISD::XOR, X.getValueType()) &&
 2140             TLI.isOperationLegal(ISD::ZERO_EXTEND, VT))) &&
 2268     if (!TLI.preferIncOfAddToSubOfNot(VT) && N0.hasOneUse() &&
 2308   if ((!LegalOperations || TLI.isOperationLegal(ISD::OR, VT)) &&
 2438   if (!TLI.preferIncOfAddToSubOfNot(VT) && N0.hasOneUse() &&
 2466       TLI.getBooleanContents(VT) == TargetLowering::ZeroOrOneBooleanContent) {
 2488   if (TLI.isOperationLegalOrCustom(ISD::ADDCARRY, VT))
 2489     if (SDValue Carry = getAsCarry(TLI, N1))
 2621                        flipBoolean(Sub.getValue(1), DL, DAG, TLI));
 2650   if (TLI.isOperationLegalOrCustom(ISD::ADDCARRY, VT))
 2651     if (SDValue Carry = getAsCarry(TLI, N1))
 2692         TLI.isOperationLegalOrCustom(ISD::UADDO, N->getValueType(0)))
 2807     if (SDValue NotC = extractBooleanFlip(CarryIn, DAG, TLI, true)) {
 2812                        flipBoolean(Sub.getValue(1), DL, DAG, TLI));
 2831   if (auto Y = getAsCarry(TLI, N1)) {
 2872     return tryFoldToZero(DL, TLI, VT, DAG, LegalOperations);
 2901         if (!LegalOperations || TLI.isOperationLegal(NewSh, VT))
 3053   if (TLI.preferIncOfAddToSubOfNot(VT) && N1.hasOneUse() && isBitwiseNot(N1)) {
 3090       TLI.getBooleanContents(VT) ==
 3097   if (TLI.isOperationLegalOrCustom(ISD::ABS, VT)) {
 3112     if (!LegalOperations && TLI.isOffsetFoldingLegal(GA)) {
 3147   if (TLI.isOperationLegalOrCustom(ISD::ADDCARRY, VT)) {
 3149     if (SDValue Carry = getAsCarry(TLI, N0)) {
 3286         TLI.isOperationLegalOrCustom(ISD::USUBO, N->getValueType(0)))
 3412   if (N1IsConst && TLI.decomposeMulByConstant(*DAG.getContext(), VT, N1)) {
 3520   if (!TLI.isTypeLegal(VT) && !TLI.isOperationCustom(DivRemOpc, VT))
 3520   if (!TLI.isTypeLegal(VT) && !TLI.isOperationCustom(DivRemOpc, VT))
 3525   if (!TLI.isOperationLegalOrCustom(DivRemOpc, VT) &&
 3526       !isDivRemLibcallAvailable(Node, isSigned, TLI))
 3533     if (TLI.isOperationLegalOrCustom(Opcode, VT))
 3537     if (TLI.isOperationLegalOrCustom(OtherOpcode, VT))
 3679   if (!N1C || TLI.isIntDivCheap(N->getValueType(0), Attr))
 3760       !TLI.isIntDivCheap(N->getValueType(0), Attr))
 3817   if (!N1C || TLI.isIntDivCheap(N->getValueType(0), Attr))
 3860       !TLI.isIntDivCheap(N->getValueType(0), Attr))
 3926   if (DAG.isKnownNeverZero(N1) && !TLI.isIntDivCheap(VT, Attr)) {
 3983     if (TLI.isOperationLegal(ISD::MUL, NewVT)) {
 4039     if (TLI.isOperationLegal(ISD::MUL, NewVT)) {
 4061                     TLI.isOperationLegalOrCustom(LoOp, N->getValueType(0)))) {
 4069                     TLI.isOperationLegalOrCustom(HiOp, N->getValueType(1)))) {
 4085          TLI.isOperationLegalOrCustom(LoOpt.getOpcode(), LoOpt.getValueType())))
 4095          TLI.isOperationLegalOrCustom(HiOpt.getOpcode(), HiOpt.getValueType())))
 4115     if (TLI.isOperationLegal(ISD::MUL, NewVT)) {
 4158     if (TLI.isOperationLegal(ISD::MUL, NewVT)) {
 4282         !TLI.isOperationLegalOrCustom(LogicOpcode, XVT))
 4287         !TLI.isTypeDesirableForOp(LogicOpcode, XVT))
 4304     if (LegalOperations && !TLI.isOperationLegal(LogicOpcode, XVT))
 4308     if (TLI.isZExtFree(VT, XVT) && TLI.isTruncateFree(XVT, VT))
 4308     if (TLI.isZExtFree(VT, XVT) && TLI.isTruncateFree(XVT, VT))
 4310     if (!TLI.isTypeLegal(XVT))
 4348         !(VT.isVector() && TLI.isTypeLegal(VT) &&
 4349           !XVT.isVector() && !TLI.isTypeLegal(XVT))) {
 4385       ShOp = tryFoldToZero(DL, TLI, VT, DAG, LegalOperations);
 4398       ShOp = tryFoldToZero(DL, TLI, VT, DAG, LegalOperations);
 4497   if (IsInteger && TLI.convertSetCCLogicToBitwiseLogic(OpVT) && CC0 == CC1 &&
 4550          (TLI.isCondCodeLegal(NewCC, LL.getSimpleValueType()) &&
 4551           TLI.isOperationLegal(ISD::SETCC, OpVT))))
 4585             !TLI.isLegalAddImmediate(ADDC.getSExtValue())) {
 4590             if (TLI.isLegalAddImmediate(ADDC.getSExtValue())) {
 4626             TLI.isNarrowingProfitable(VT, HalfVT) &&
 4627             TLI.isTypeDesirableForOp(ISD::AND, HalfVT) &&
 4628             TLI.isTypeDesirableForOp(ISD::SRL, HalfVT) &&
 4629             TLI.isTruncateFree(VT, HalfVT) &&
 4630             TLI.isZExtFree(HalfVT, VT)) {
 4640           EVT ShiftVT = TLI.getShiftAmountTy(HalfVT, DAG.getDataLayout());
 4669        TLI.isLoadExtLegal(ISD::ZEXTLOAD, LoadResultTy, ExtVT))) {
 4685       !TLI.isLoadExtLegal(ISD::ZEXTLOAD, LoadResultTy, ExtVT))
 4688   if (!TLI.shouldReduceLoadWidth(LoadN, ISD::ZEXTLOAD, ExtVT))
 4718       !TLI.allowsMemoryAccess(*DAG.getContext(), DAG.getDataLayout(), MemVT,
 4736         !TLI.isLoadExtLegal(ExtType, Load->getValueType(0), MemVT))
 4754     if (!TLI.shouldReduceLoadWidth(Load, ExtType, MemVT))
 4764         !TLI.isTruncStoreLegal(Store->getValue().getValueType(), MemVT))
 4939   if (!TLI.shouldFoldMaskToVariableShiftPair(N0))
 5180     bool CanZextLoadProfitably = TLI.isLoadExtLegal(ISD::ZEXTLOAD,
 5297          TLI.isLoadExtLegal(ISD::ZEXTLOAD, VT, MemVT))) {
 5317   if (TLI.hasBitTest(N0, N1))
 5333   if (!TLI.isOperationLegalOrCustom(ISD::BSWAP, VT))
 5557   if (!TLI.isOperationLegalOrCustom(ISD::BSWAP, VT))
 5593   if (TLI.isOperationLegalOrCustom(ISD::ROTL, VT))
 5595   if (TLI.isOperationLegalOrCustom(ISD::ROTR, VT))
 5705         TLI.isTypeLegal(VT)) {
 5755               TLI.buildLegalVectorShuffle(VT, SDLoc(N), NewLHS, NewRHS,
 5837   if ((!LegalOperations || TLI.isOperationLegal(ISD::ADD, VT)) &&
 6125     bool HasPos = TLI.isOperationLegalOrCustom(PosOpcode, VT);
 6139   if (!TLI.isTypeLegal(VT))
 6833   if (!TLI.hasAndNot(M))
 6839   if (!TLI.hasAndNot(Y)) {
 6840     assert(TLI.hasAndNot(X) && "Only mask is a variable? Unreachable.");
 6905   if (TLI.isConstTrueVal(N1.getNode()) && isSetCCEquivalent(N0, LHS, RHS, CC)) {
 6909         TLI.isCondCodeLegal(NotCC, LHS.getSimpleValueType())) {
 6998   if (TLI.isOperationLegalOrCustom(ISD::ABS, VT)) {
 7015     return tryFoldToZero(DL, TLI, VT, DAG, LegalOperations);
 7035   if (TLI.isOperationLegalOrCustom(ISD::ROTL, VT) && N0Opcode == ISD::SHL &&
 7138   if (!LHS.hasOneUse() || !TLI.isDesirableToCommuteWithShift(N, Level))
 7207       TLI.isTypeDesirableForOp(ISD::AND, TruncVT)) {
 7306             TLI.getBooleanContents(N00.getOperand(0).getValueType()) ==
 7465       TLI.shouldFoldConstantShiftPairToMask(N, Level)) {
 7507       TLI.isDesirableToCommuteWithShift(N, Level)) {
 7571          TLI.isOperationLegal(ISD::SIGN_EXTEND_INREG, ExtVT)))
 7628           TLI.isOperationLegalOrCustom(ISD::SIGN_EXTEND, TruncVT) &&
 7629           TLI.isOperationLegalOrCustom(ISD::TRUNCATE, VT) &&
 7630           TLI.isTruncateFree(VT, TruncVT)) {
 7664       if (TruncVT.isSimple() && TLI.isTruncateFree(VT, TruncVT)) {
 7823     if (!LegalTypes || TLI.isTypeDesirableForOp(ISD::SRL, SmallVT)) {
 8062   if (!LegalOperations || TLI.isOperationLegal(ISD::CTLZ_ZERO_UNDEF, VT)) {
 8089   if (!LegalOperations || TLI.isOperationLegal(ISD::CTTZ_ZERO_UNDEF, VT)) {
 8265     if (TLI.convertSelectOfConstantsToMath(VT)) {
 8308       TLI.getBooleanContents(/*isVec*/false, /*isFloat*/true) ==
 8310       TLI.getBooleanContents(/*isVec*/false, /*isFloat*/false) ==
 8374         TLI.shouldNormalizeToSelectSequence(*DAG.getContext(), VT);
 8443   if (SDValue F = extractBooleanFlip(N0, DAG, TLI, false)) {
 8458     if (N0.hasOneUse() && isLegalToCombineMinNumMaxNum(DAG, N1, N2, TLI))
 8460                                                 CC, TLI, DAG))
 8468     if (!LegalOperations && TLI.isOperationLegalOrCustom(ISD::UADDO, VT) &&
 8492     if (TLI.isOperationLegal(ISD::SELECT_CC, VT) ||
 8494          TLI.isOperationLegalOrCustom(ISD::SELECT_CC, VT))) {
 8623       !TLI.convertSelectOfConstantsToMath(VT) ||
 8689   if (SDValue F = extractBooleanFlip(N0, DAG, TLI, false))
 8712       if (TLI.isOperationLegalOrCustom(ISD::ABS, VT))
 8730     if (N0.hasOneUse() && isLegalToCombineMinNumMaxNum(DAG, LHS, RHS, TLI)) {
 8732               combineMinNumMaxNum(DL, VT, LHS, RHS, N1, N2, CC, TLI, DAG))
 8751           TLI.isLoadExtLegalOrCustom(LoadExtOpcode, WideVT, NarrowVT) &&
 8752           TLI.isOperationLegalOrCustom(ISD::SETCC, WideVT)) {
 9089       !TLI.isVectorLoadExtDesirable(SDValue(N, 0)))
 9093   if (!ExtendUsesToFormExtLoad(DstVT, N, N0, N->getOpcode(), SetCCs, TLI))
 9102   while (!TLI.isLoadExtLegalOrCustom(ExtType, SplitDstVT, SplitSrcVT) &&
 9108   if (!TLI.isLoadExtLegalOrCustom(ExtType, SplitDstVT, SplitSrcVT))
 9160   if (TLI.isZExtFree(OrigVT, VT))
 9168       (LegalOperations && !TLI.isOperationLegal(N0.getOpcode(), VT)))
 9175       (LegalOperations && !TLI.isOperationLegal(N1.getOpcode(), VT)))
 9183   if (!TLI.isLoadExtLegal(ISD::ZEXTLOAD, VT, MemVT) ||
 9198                                ISD::ZERO_EXTEND, SetCCs, TLI))
 9247   if (LegalOperations || !TLI.isOperationLegalOrCustom(ISD::VSELECT, VT))
 9415   if (SDValue Res = tryToFoldExtendOfConstant(N, TLI, DAG, LegalTypes))
 9462     if (!LegalOperations || TLI.isOperationLegal(ISD::SIGN_EXTEND_INREG,
 9475           tryToFoldExtOfLoad(DAG, *this, TLI, VT, LegalOperations, N, N0,
 9480       tryToFoldExtOfMaskedLoad(DAG, TLI, VT, N, N0, ISD::SEXTLOAD,
 9491           DAG, *this, TLI, VT, LegalOperations, N, N0, ISD::SEXTLOAD))
 9500       (!LegalOperations && TLI.isOperationLegal(N0.getOpcode(), VT))) {
 9503     if (TLI.isLoadExtLegal(ISD::SEXTLOAD, VT, MemVT) &&
 9507                                              ISD::SIGN_EXTEND, SetCCs, TLI);
 9551         TLI.getBooleanContents(N00VT) ==
 9599     if (!VT.isVector() && !TLI.convertSelectOfConstantsToMath(VT)) {
 9606           (!LegalOperations || TLI.isOperationLegal(ISD::SETCC, N00VT))) {
 9614   if ((!LegalOperations || TLI.isOperationLegal(ISD::ZERO_EXTEND, VT)) &&
 9626       TLI.isOperationLegalOrCustom(ISD::SUB, VT)) {
 9635       TLI.isOperationLegalOrCustom(ISD::ADD, VT)) {
 9703   if (SDValue Res = tryToFoldExtendOfConstant(N, TLI, DAG, LegalTypes))
 9749       if (!LegalOperations || (TLI.isOperationLegal(ISD::AND, SrcVT) &&
 9750                                TLI.isOperationLegal(ISD::ZERO_EXTEND, VT))) {
 9761     if (!LegalOperations || TLI.isOperationLegal(ISD::AND, VT)) {
 9777       (!TLI.isTruncateFree(N0.getOperand(0).getOperand(0).getValueType(),
 9779        !TLI.isZExtFree(N0.getValueType(), VT))) {
 9791           tryToFoldExtOfLoad(DAG, *this, TLI, VT, LegalOperations, N, N0,
 9796       tryToFoldExtOfMaskedLoad(DAG, TLI, VT, N, N0, ISD::ZEXTLOAD,
 9813       (!LegalOperations && TLI.isOperationLegal(N0.getOpcode(), VT))) {
 9816     if (TLI.isLoadExtLegal(ISD::ZEXTLOAD, VT, MemVT) &&
 9831                                           ISD::ZERO_EXTEND, SetCCs, TLI);
 9871           DAG, *this, TLI, VT, LegalOperations, N, N0, ISD::ZEXTLOAD))
 9959   if (SDValue Res = tryToFoldExtendOfConstant(N, TLI, DAG, LegalTypes))
 9993       !TLI.isTruncateFree(N0.getOperand(0).getOperand(0).getValueType(),
10010       TLI.isLoadExtLegal(ISD::EXTLOAD, VT, N0.getValueType())) {
10015                                         TLI);
10046     if (!LegalOperations || TLI.isLoadExtLegal(ExtType, VT, MemVT)) {
10267               TLI.isLoadExtLegal(ExtType, N0.getValueType(), MaskedVT))
10278       ExtVT == VT && TLI.isNarrowingProfitable(N0.getValueType(), VT)) {
10405         (!LegalOperations || TLI.isOperationLegal(ISD::SIGN_EXTEND, VT)))
10415         TLI.isOperationLegal(ISD::SIGN_EXTEND_VECTOR_INREG, VT))
10425         (!LegalOperations || TLI.isOperationLegal(ISD::SIGN_EXTEND, VT)))
10467        TLI.isLoadExtLegal(ISD::SEXTLOAD, VT, EVT))) {
10483        TLI.isLoadExtLegal(ISD::SEXTLOAD, VT, EVT))) {
10512   if (SDValue Res = tryToFoldExtendOfConstant(N, TLI, DAG, LegalTypes))
10528   if (SDValue Res = tryToFoldExtendOfConstant(N, TLI, DAG, LegalTypes))
10602       EVT IndexTy = TLI.getVectorIdxTy(DAG.getDataLayout());
10614     if ((!LegalOperations || TLI.isOperationLegal(ISD::SELECT, SrcVT)) &&
10615         TLI.isTruncateFree(SrcVT, VT)) {
10626       (!LegalOperations || TLI.isOperationLegal(ISD::SHL, VT)) &&
10627       TLI.isTypeDesirableForOp(ISD::SHL, VT)) {
10633       EVT AmtVT = TLI.getShiftAmountTy(VT, DAG.getDataLayout());
10646       TLI.isTruncateFree(SrcVT.getScalarType(), VT.getScalarType())) {
10701   if (!LegalTypes || TLI.isTypeDesirableForOp(N0.getOpcode(), VT)) {
10772          TLI.isOperationLegal(ISD::EXTRACT_VECTOR_ELT, VecSrcVT))) {
10775       EVT IdxVT = TLI.getVectorIdxTy(DAG.getDataLayout());
10794        TLI.isOperationLegal(N0.getOpcode(), VT))) {
10838       if (VT.isScalarInteger() || TLI.isOperationLegal(N0.getOpcode(), VT)) {
10883         (!LegalOperations || TLI.isOperationLegal(ISD::LOAD, VT)))
10966         TLI.isTypeLegal(VT.getVectorElementType()))) &&
10979          TLI.isOperationLegal(ISD::ConstantFP, VT)) ||
10981          TLI.isOperationLegal(ISD::Constant, VT))) {
10996       TLI.hasBigEndianPartOrdering(N0.getValueType(), DAG.getDataLayout()) ==
10997           TLI.hasBigEndianPartOrdering(VT, DAG.getDataLayout()) &&
11004        TLI.isOperationLegal(ISD::LOAD, VT))) {
11007     if (TLI.isLoadBitCastBeneficial(N0.getValueType(), VT, DAG,
11018   if (SDValue V = foldBitcastedFPLogic(N, DAG, TLI))
11033   if (((N0.getOpcode() == ISD::FNEG && !TLI.isFNegFree(N0.getValueType())) ||
11034        (N0.getOpcode() == ISD::FABS && !TLI.isFAbsFree(N0.getValueType()))) &&
11156   if (Level < AfterLegalizeDAG && TLI.isTypeLegal(VT) && VT.isVector() &&
11190         TLI.buildLegalVectorShuffle(VT, SDLoc(N), SV0, SV1, NewMask, DAG);
11333   bool HasFMAD = (LegalOperations && TLI.isOperationLegal(ISD::FMAD, VT));
11337       TLI.isFMAFasterThanFMulAndFAdd(VT) &&
11338       (!LegalOperations || TLI.isOperationLegalOrCustom(ISD::FMA, VT));
11358   bool Aggressive = TLI.enableAggressiveFMAFusion(VT);
11393         TLI.isFPExtFoldable(PreferredFusedOpcode, VT, N00.getValueType())) {
11407         TLI.isFPExtFoldable(PreferredFusedOpcode, VT, N10.getValueType())) {
11461             TLI.isFPExtFoldable(PreferredFusedOpcode, VT, N020.getValueType())) {
11490             TLI.isFPExtFoldable(PreferredFusedOpcode, VT, N00.getValueType())) {
11505             TLI.isFPExtFoldable(PreferredFusedOpcode, VT, N120.getValueType())) {
11523             TLI.isFPExtFoldable(PreferredFusedOpcode, VT, N10.getValueType())) {
11544   bool HasFMAD = (LegalOperations && TLI.isOperationLegal(ISD::FMAD, VT));
11548       TLI.isFMAFasterThanFMulAndFAdd(VT) &&
11549       (!LegalOperations || TLI.isOperationLegalOrCustom(ISD::FMA, VT));
11570   bool Aggressive = TLI.enableAggressiveFMAFusion(VT);
11613         TLI.isFPExtFoldable(PreferredFusedOpcode, VT, N00.getValueType())) {
11629         TLI.isFPExtFoldable(PreferredFusedOpcode, VT, N10.getValueType())) {
11651           TLI.isFPExtFoldable(PreferredFusedOpcode, VT, N00.getValueType())) {
11674           TLI.isFPExtFoldable(PreferredFusedOpcode, VT, N000.getValueType())) {
11725             TLI.isFPExtFoldable(PreferredFusedOpcode, VT, N020.getValueType())) {
11750             TLI.isFPExtFoldable(PreferredFusedOpcode, VT, N00.getValueType())) {
11773           TLI.isFPExtFoldable(PreferredFusedOpcode, VT, N120.getValueType())) {
11802           TLI.isFPExtFoldable(PreferredFusedOpcode, VT, CvtSrc.getValueType())) {
11846       TLI.isFMAFasterThanFMulAndFAdd(VT) &&
11847       (!LegalOperations || TLI.isOperationLegalOrCustom(ISD::FMA, VT));
11852                  (LegalOperations && TLI.isOperationLegal(ISD::FMAD, VT));
11860   bool Aggressive = TLI.enableAggressiveFMAFusion(VT);
11952   if ((!LegalOperations || TLI.isOperationLegalOrCustom(ISD::FSUB, VT)) &&
11953       TLI.isNegatibleForFree(N1, DAG, LegalOperations, ForCodeSize) == 2)
11956         TLI.getNegatedExpression(N1, DAG, LegalOperations, ForCodeSize), Flags);
11959   if ((!LegalOperations || TLI.isOperationLegalOrCustom(ISD::FSUB, VT)) &&
11960       TLI.isNegatibleForFree(N0, DAG, LegalOperations, ForCodeSize) == 2)
11963         TLI.getNegatedExpression(N0, DAG, LegalOperations, ForCodeSize), Flags);
12016     if (TLI.isOperationLegalOrCustom(ISD::FMUL, VT) && !N0CFP && !N1CFP) {
12142       if (TLI.isNegatibleForFree(N1, DAG, LegalOperations, ForCodeSize))
12143         return TLI.getNegatedExpression(N1, DAG, LegalOperations, ForCodeSize);
12144       if (!LegalOperations || TLI.isOperationLegal(ISD::FNEG, VT))
12161   if (TLI.isNegatibleForFree(N1, DAG, LegalOperations, ForCodeSize))
12164         TLI.getNegatedExpression(N1, DAG, LegalOperations, ForCodeSize), Flags);
12179           TLI.isNegatibleForFree(X, DAG, LegalOperations, ForCodeSize))
12181             TLI.isNegatibleForFree(Y, DAG, LegalOperations, ForCodeSize))
12257     if (!LegalOperations || TLI.isOperationLegal(ISD::FNEG, VT))
12263         TLI.getNegatedExpression(N0, DAG, LegalOperations, ForCodeSize);
12265         TLI.getNegatedExpression(N1, DAG, LegalOperations, ForCodeSize);
12273       TLI.isOperationLegal(ISD::FABS, VT)) {
12304             TLI.isOperationLegal(ISD::FNEG, VT))
12348         TLI.getNegatedExpression(N0, DAG, LegalOperations, ForCodeSize);
12350         TLI.getNegatedExpression(N1, DAG, LegalOperations, ForCodeSize);
12401         (!LegalOperations || TLI.isOperationLegal(ISD::FNEG, VT))) {
12410         (TLI.isOperationLegal(ISD::ConstantFP, VT) ||
12411          (N1.hasOneUse() && !TLI.isFPImmLegal(N1CFP->getValueAPF(), VT,
12464   unsigned MinUses = TLI.combineRepeatedFPDivisors();
12552            TLI.isOperationLegal(ISD::ConstantFP, VT) ||
12553            TLI.isFPImmLegal(Recip, VT, ForCodeSize)))
12611         TLI.getNegatedExpression(N0, DAG, LegalOperations, ForCodeSize),
12612         TLI.getNegatedExpression(N1, DAG, LegalOperations, ForCodeSize), Flags);
12641   if (TLI.isFsqrtCheap(N0, DAG))
12680       if (!LegalOperations || TLI.isOperationLegal(ISD::FABS, VT))
12683       if (!LegalOperations || TLI.isOperationLegal(ISD::FNEG, VT))
12836        TLI.isOperationLegalOrCustom(ISD::ConstantFP, VT)))
12849   if (TLI.isOperationLegalOrCustom(ISD::SELECT_CC, VT) || !LegalOperations) {
12854          TLI.isOperationLegalOrCustom(ISD::ConstantFP, VT))) {
12868          TLI.isOperationLegalOrCustom(ISD::ConstantFP, VT))) {
12878   if (SDValue FTrunc = foldFPToIntToFP(N, DAG, TLI))
12897        TLI.isOperationLegalOrCustom(ISD::ConstantFP, VT)))
12910   if (TLI.isOperationLegalOrCustom(ISD::SELECT_CC, VT) || !LegalOperations) {
12914          TLI.isOperationLegalOrCustom(ISD::ConstantFP, VT))) {
12924   if (SDValue FTrunc = foldFPToIntToFP(N, DAG, TLI))
13073       TLI.getOperationAction(ISD::FP16_TO_FP, VT) == TargetLowering::Legal)
13090        TLI.isLoadExtLegal(ISD::EXTLOAD, VT, N0.getValueType())) {
13166   if (TLI.isNegatibleForFree(N0, DAG, LegalOperations, ForCodeSize))
13167     return TLI.getNegatedExpression(N0, DAG, LegalOperations, ForCodeSize);
13171   if (!TLI.isFNegFree(VT) &&
13197       (N0.getNode()->hasOneUse() || !TLI.isFNegFree(VT))) {
13203           (TLI.isFPImmLegal(CVal, VT, ForCodeSize) ||
13204            TLI.isOperationLegal(ISD::ConstantFP, VT)))
13271   if (!TLI.isFAbsFree(VT) && N0.getOpcode() == ISD::BITCAST && N0.hasOneUse()) {
13310       TLI.isOperationLegalOrCustom(ISD::BR_CC,
13512     if (!TLI.isIndexedLoadLegal(ISD::PRE_INC, VT) &&
13513         !TLI.isIndexedLoadLegal(ISD::PRE_DEC, VT))
13520     if (!TLI.isIndexedStoreLegal(ISD::PRE_INC, VT) &&
13521         !TLI.isIndexedStoreLegal(ISD::PRE_DEC, VT))
13539   if (!TLI.getPreIndexedAddressParts(N, BasePtr, Offset, AM, DAG))
13638     if (!canFoldInAddressingMode(Ptr.getNode(), Use, DAG, TLI))
13743     if (!TLI.isIndexedLoadLegal(ISD::POST_INC, VT) &&
13744         !TLI.isIndexedLoadLegal(ISD::POST_DEC, VT))
13751     if (!TLI.isIndexedStoreLegal(ISD::POST_INC, VT) &&
13752         !TLI.isIndexedStoreLegal(ISD::POST_DEC, VT))
13771     if (TLI.getPostIndexedAddressParts(N, Op, BasePtr, Offset, AM, DAG)) {
13797             if (!canFoldInAddressingMode(Use, UseUse, DAG, TLI))
13890       TLI.isOperationLegal(ISD::FTRUNC, STMemType)) {
14903             !TLI.isOperationLegalOrCustom(Opc, NewVT) ||
14904             !TLI.isNarrowingProfitable(VT, NewVT))) {
14979     if (!TLI.isOperationLegal(ISD::LOAD, IntVT) ||
14980         !TLI.isOperationLegal(ISD::STORE, IntVT) ||
14981         !TLI.isDesirableToTransformToIntegerOp(ISD::LOAD, VT) ||
14982         !TLI.isDesirableToTransformToIntegerOp(ISD::STORE, VT))
15241         TLI.getTypeToTransformTo(*DAG.getContext(), StoredVal.getValueType());
15616           if (TLI.isTypeLegal(StoreTy) &&
15617               TLI.canMergeStoresTo(FirstStoreAS, StoreTy, DAG) &&
15618               TLI.allowsMemoryAccess(Context, DL, StoreTy,
15624           } else if (TLI.getTypeAction(Context, StoreTy) ==
15627                 TLI.getTypeToTransformTo(Context, StoredVal.getValueType());
15628             if (TLI.isTruncStoreLegal(LegalizedStoredValTy, StoreTy) &&
15629                 TLI.canMergeStoresTo(FirstStoreAS, LegalizedStoredValTy, DAG) &&
15630                 TLI.allowsMemoryAccess(Context, DL, StoreTy,
15643                TLI.storeOfVectorConstantIsCheap(MemVT, i + 1, FirstStoreAS)) &&
15648             if (TLI.isTypeLegal(Ty) && TLI.isTypeLegal(MemVT) &&
15648             if (TLI.isTypeLegal(Ty) && TLI.isTypeLegal(MemVT) &&
15649                 TLI.canMergeStoresTo(FirstStoreAS, Ty, DAG) &&
15650                 TLI.allowsMemoryAccess(
15720           if (TLI.isTypeLegal(Ty) &&
15721               TLI.canMergeStoresTo(FirstStoreAS, Ty, DAG) &&
15722               TLI.allowsMemoryAccess(Context, DL, Ty,
15804           TLI.hasPairedLoad(MemVT, RequiredAlignment) &&
15851         if (TLI.isTypeLegal(StoreTy) &&
15852             TLI.canMergeStoresTo(FirstStoreAS, StoreTy, DAG) &&
15853             TLI.allowsMemoryAccess(Context, DL, StoreTy,
15856             TLI.allowsMemoryAccess(Context, DL, StoreTy,
15865         if (TLI.isTypeLegal(StoreTy) &&
15866             TLI.canMergeStoresTo(FirstStoreAS, StoreTy, DAG) &&
15867             TLI.allowsMemoryAccess(Context, DL, StoreTy,
15870             TLI.allowsMemoryAccess(Context, DL, StoreTy,
15876         } else if (TLI.getTypeAction(Context, StoreTy) ==
15878           EVT LegalizedStoredValTy = TLI.getTypeToTransformTo(Context, StoreTy);
15879           if (TLI.isTruncStoreLegal(LegalizedStoredValTy, StoreTy) &&
15880               TLI.canMergeStoresTo(FirstStoreAS, LegalizedStoredValTy, DAG) &&
15881               TLI.isLoadExtLegal(ISD::ZEXTLOAD, LegalizedStoredValTy,
15883               TLI.isLoadExtLegal(ISD::SEXTLOAD, LegalizedStoredValTy,
15885               TLI.isLoadExtLegal(ISD::EXTLOAD, LegalizedStoredValTy, StoreTy) &&
15886               TLI.allowsMemoryAccess(Context, DL, StoreTy,
15890               TLI.allowsMemoryAccess(Context, DL, StoreTy,
15982             TLI.getTypeToTransformTo(*DAG.getContext(), JointMemOpVT);
16072         TLI.isOperationLegalOrCustom(ISD::STORE, MVT::i32)) {
16082     if ((TLI.isTypeLegal(MVT::i64) && !LegalOperations &&
16084         TLI.isOperationLegalOrCustom(ISD::STORE, MVT::i64)) {
16093         TLI.isOperationLegalOrCustom(ISD::STORE, MVT::i32)) {
16141          TLI.isOperationLegal(ISD::STORE, SVT)) &&
16142         TLI.isStoreBitCastBeneficial(Value.getValueType(), SVT,
16293       TLI.isTruncStoreLegal(Value.getOperand(0).getValueType(),
16302   if (!LegalTypes || (TLI.mergeStoresAfterLegalization(ST->getMemoryVT()))) {
16467   if (!TLI.isMultiStoresCheaperThanBitsMerge(LowTy, HighTy))
16532               TLI.buildLegalVectorShuffle(Vec.getValueType(), SDLoc(N), X,
16571   if (!TLI.isShuffleMaskLegal(Mask, ShufVT))
16609     if (InVec.isUndef() && TLI.shouldSplatInsEltVarIndex(VT)) {
16642   if (LegalOperations && !TLI.isOperationLegal(ISD::BUILD_VECTOR, VT))
16684   if (NewAlign > Align || !TLI.isOperationLegalOrCustom(ISD::LOAD, VecEltVT))
16689   if (!TLI.shouldReduceLoadWidth(OriginalLoad, ExtTy, VecEltVT))
16726     ISD::LoadExtType ExtType = TLI.isLoadExtLegal(ISD::ZEXTLOAD, ResultVT,
16834       TLI.isTypeLegal(VecVT) &&
16835       (VecOp.hasOneUse() || TLI.aggressivelyPreferBuildVectorSources(VecVT))) {
16926         TLI.isOperationLegal(ISD::EXTRACT_VECTOR_ELT, VecVT) ||
16927         TLI.isOperationExpand(ISD::VECTOR_SHUFFLE, VecVT)) {
16928       EVT IndexTy = TLI.getVectorIdxTy(DAG.getDataLayout());
16962   if (ScalarVT.bitsLT(LVT) && !TLI.isTruncateFree(LVT, ScalarVT))
17153       (!TLI.isOperationLegal(ISD::BUILD_VECTOR, VecVT) &&
17154        TLI.isOperationLegal(ISD::BUILD_VECTOR, VT)))
17170   MVT IdxTy = TLI.getVectorIdxTy(DAG.getDataLayout());
17198       if (!TLI.isExtractSubvectorCheap(VT, InVT1, NumElems))
17216             !TLI.isOperationLegal(ISD::VECTOR_SHUFFLE, InVT1))
17223           if (!TLI.isTypeLegal(InVT2))
17374   if (LegalOperations && !TLI.isOperationLegal(ISD::VECTOR_SHUFFLE, VT))
17446     MVT IdxTy = TLI.getVectorIdxTy(DAG.getDataLayout());
17463       if (TLI.isTypeLegal(SplitVT)) {
17608   if (LegalTypes && !TLI.isTypeLegal(InVT))
17647         if (!LegalTypes || TLI.isTypeLegal(NewVT)) {
17658   if (TLI.getOperationAction(ISD::SPLAT_VECTOR, VT) != TargetLowering::Expand)
17885           !TLI.isTypeLegal(Scalar.getValueType()) &&
17886           TLI.isTypeLegal(Scalar->getOperand(0).getValueType()))
17903       if (!TLI.isTypeLegal(NVT) || !TLI.isTypeLegal(Scalar.getValueType()))
17903       if (!TLI.isTypeLegal(NVT) || !TLI.isTypeLegal(Scalar.getValueType()))
17965   if (Level < AfterLegalizeVectorOps && TLI.isTypeLegal(VT))
18230   if (TLI.isOperationLegalOrCustomOrPromote(ISD::LOAD, NVT))
18239     if (TLI.isExtractSubvectorCheap(NVT, V.getOperand(0).getValueType(),
18241         TLI.isOperationLegalOrCustom(ISD::EXTRACT_SUBVECTOR, NVT)) {
18260       if (TLI.isOperationLegalOrCustom(ISD::EXTRACT_SUBVECTOR, NewExtVT)) {
18304               TLI.isOperationLegal(ISD::BUILD_VECTOR, ExtractVT))) &&
18305             (!LegalTypes || TLI.isTypeLegal(ExtractVT))) {
18901     if (N0.hasOneUse() && TLI.isExtractVecEltCheap(VT, SplatIndex) &&
18902         TLI.isBinOp(N0.getOpcode()) && N0.getNode()->getNumValues() == 1) {
18976   if (SDValue V = combineShuffleToVectorExtend(SVN, DAG, TLI, LegalOperations))
18994   if (Level < AfterLegalizeDAG && TLI.isTypeLegal(VT))
18995     if (SDValue Res = combineShuffleOfScalars(SVN, DAG, TLI))
19003       TLI.isTypeLegal(VT)) {
19025       if (TLI.isTypeLegal(ScaleVT) &&
19046         bool LegalMask = TLI.isShuffleMaskLegal(NewMask, ScaleVT);
19050           LegalMask = TLI.isShuffleMaskLegal(NewMask, ScaleVT);
19069       TLI.isTypeLegal(VT)) {
19092       Level < AfterLegalizeDAG && TLI.isTypeLegal(VT)) {
19182     return TLI.buildLegalVectorShuffle(VT, SDLoc(N), SV0, SV1, Mask, DAG);
19217           TLI.buildLegalVectorShuffle(InVecT, SDLoc(N), InVec,
19226             MVT IdxTy = TLI.getVectorIdxTy(DAG.getDataLayout());
19326       MVT IdxVT = TLI.getVectorIdxTy(DAG.getDataLayout());
19421         DAG.getConstant(0, dl, TLI.getVectorIdxTy(DAG.getDataLayout())));
19432     if (!TLI.isOperationLegalOrCustom(Opcode, VT) &&
19433         TLI.isOperationLegalOrCustom(NewOpcode, VT) &&
19510     if (!TLI.isVectorClearMaskLegal(Indices, ClearVT))
19631         TLI.isOperationLegalOrCustomOrPromote(Opcode, NarrowVT)) {
19660         TLI.isOperationLegalOrCustomOrPromote(Opcode, NarrowVT)) {
19794         !TLI.isOperationLegalOrCustom(TheSelect->getOpcode(),
19920   if (CC == ISD::SETGT && TLI.hasAndNot(N2)) {
19977   if (!TLI.reduceSelectOfFPConstantLoads(N0.getValueType()))
19985   if (!TV || !FV || !TLI.isTypeLegal(VT))
19989   if (TLI.getOperationAction(ISD::ConstantFP, VT) == TargetLowering::Legal ||
19990       TLI.isFPImmLegal(TV->getValueAPF(), TV->getValueType(0), ForCodeSize) ||
19991       TLI.isFPImmLegal(FV->getValueAPF(), FV->getValueType(0), ForCodeSize))
20006   SDValue CPIdx = DAG.getConstantPool(CA, TLI.getPointerTy(DAG.getDataLayout()),
20070       TLI.isOperationLegal(ISD::SHL, VT) &&
20071       TLI.isOperationLegal(ISD::SRA, VT)) {
20098       TLI.getBooleanContents(CmpOpVT) ==
20100       (!LegalOperations || TLI.isOperationLegal(ISD::SETCC, CmpOpVT))) {
20160             (!LegalOperations || TLI.isOperationLegal(ISD::CTTZ, VT)))
20167             (!LegalOperations || TLI.isOperationLegal(ISD::CTLZ, VT)))
20182   return TLI.SimplifySetCC(VT, N0, N1, Cond, foldBooleans, DagCombineInfo, DL);
20196   if (SDValue S = TLI.BuildSDIV(N, DAG, LegalOperations, Built)) {
20217   if (SDValue S = TLI.BuildSDIVPow2(N, C->getAPIntValue(), DAG, Built)) {
20237   if (SDValue S = TLI.BuildUDIV(N, DAG, LegalOperations, Built)) {
20277   int Enabled = TLI.getRecipEstimateDivEnabled(VT, MF);
20278   if (Enabled == TLI.ReciprocalEstimate::Disabled)
20283   int Iterations = TLI.getDivRefinementSteps(VT, MF);
20284   if (SDValue Est = TLI.getRecipEstimate(Op, DAG, Enabled, Iterations)) {
20416   int Enabled = TLI.getRecipEstimateSqrtEnabled(VT, MF);
20417   if (Enabled == TLI.ReciprocalEstimate::Disabled)
20422   int Iterations = TLI.getSqrtRefinementSteps(VT, MF);
20426       TLI.getSqrtEstimate(Op, DAG, Enabled, Iterations, UseOneConstNR,
20676     if (Depth > TLI.getGatherAllAliasesMaxDepth()) {