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

References

lib/Analysis/DependenceAnalysis.cpp
  478     const SCEV *Prod1 = SE->getMulExpr(X->getA(), Y->getB());
  479     const SCEV *Prod2 = SE->getMulExpr(X->getB(), Y->getA());
  483       Prod1 = SE->getMulExpr(X->getC(), Y->getB());
  484       Prod2 = SE->getMulExpr(X->getB(), Y->getC());
  497       const SCEV *C1B2 = SE->getMulExpr(X->getC(), Y->getB());
  498       const SCEV *C1A2 = SE->getMulExpr(X->getC(), Y->getA());
  499       const SCEV *C2B1 = SE->getMulExpr(Y->getC(), X->getB());
  500       const SCEV *C2A1 = SE->getMulExpr(Y->getC(), X->getA());
  501       const SCEV *A1B2 = SE->getMulExpr(X->getA(), Y->getB());
  502       const SCEV *A2B1 = SE->getMulExpr(Y->getA(), X->getB());
  504         dyn_cast<SCEVConstant>(SE->getMinusSCEV(C1A2, C2A1));
  506         dyn_cast<SCEVConstant>(SE->getMinusSCEV(C1B2, C2B1));
  508         dyn_cast<SCEVConstant>(SE->getMinusSCEV(A1B2, A2B1));
  510         dyn_cast<SCEVConstant>(SE->getMinusSCEV(A2B1, A1B2));
  549       X->setPoint(SE->getConstant(Xq),
  550                   SE->getConstant(Yq),
  563     const SCEV *A1X1 = SE->getMulExpr(Y->getA(), X->getX());
  564     const SCEV *B1Y1 = SE->getMulExpr(Y->getB(), X->getY());
  565     const SCEV *Sum = SE->getAddExpr(A1X1, B1Y1);
  787   return SE->isLoopInvariant(Expression, LoopNest) &&
  800     if (Level <= CommonLevels && !SE->isLoopInvariant(Expression, LoopNest))
  851       Pair->Src = SE->getSignExtendExpr(Src, widestType);
  854       Pair->Dst = SE->getSignExtendExpr(Dst, widestType);
  888   const SCEV *Step = AddRec->getStepRecurrence(*SE);
  889   const SCEV *UB = SE->getBackedgeTakenCount(AddRec->getLoop());
  891     if (SE->getTypeSizeInBits(Start->getType()) <
  892         SE->getTypeSizeInBits(UB->getType())) {
  913   const SCEV *Step = AddRec->getStepRecurrence(*SE);
  914   const SCEV *UB = SE->getBackedgeTakenCount(AddRec->getLoop());
  916     if (SE->getTypeSizeInBits(Start->getType()) <
  917         SE->getTypeSizeInBits(UB->getType())) {
  985   if (SE->isKnownPredicate(Pred, X, Y))
  992   const SCEV *Delta = SE->getMinusSCEV(X, Y);
  997     return SE->isKnownNonZero(Delta);
  999     return SE->isKnownNonNegative(Delta);
 1001     return SE->isKnownNonPositive(Delta);
 1003     return SE->isKnownPositive(Delta);
 1005     return SE->isKnownNegative(Delta);
 1022   S = SE->getTruncateOrZeroExtend(S, MaxType);
 1023   Size = SE->getTruncateOrZeroExtend(Size, MaxType);
 1026   const SCEV *Bound = SE->getMinusSCEV(S, Size);
 1029       const SCEV *BECount = SE->getBackedgeTakenCount(AddRec->getLoop());
 1031         const SCEV *Limit = AddRec->evaluateAtIteration(BECount, *SE);
 1032         if (SE->isKnownNegative(Limit))
 1040       SE->getMinusSCEV(S, SE->getSMaxExpr(Size, SE->getOne(Size->getType())));
 1040       SE->getMinusSCEV(S, SE->getSMaxExpr(Size, SE->getOne(Size->getType())));
 1040       SE->getMinusSCEV(S, SE->getSMaxExpr(Size, SE->getOne(Size->getType())));
 1041   return SE->isKnownNegative(LimitedBound);
 1053         if (SE->isKnownNonNegative(AddRec->getStart()) &&
 1054             SE->isKnownNonNegative(AddRec->getOperand(1)))
 1060   return SE->isKnownNonNegative(S);
 1071   if (SE->hasLoopInvariantBackedgeTakenCount(L)) {
 1072     const SCEV *UB = SE->getBackedgeTakenCount(L);
 1073     return SE->getTruncateOrZeroExtend(UB, T);
 1161   const SCEV *Delta = SE->getMinusSCEV(SrcConst, DstConst);
 1170       SE->isKnownNonNegative(Delta) ? Delta : SE->getNegativeSCEV(Delta);
 1170       SE->isKnownNonNegative(Delta) ? Delta : SE->getNegativeSCEV(Delta);
 1172       SE->isKnownNonNegative(Coeff) ? Coeff : SE->getNegativeSCEV(Coeff);
 1172       SE->isKnownNonNegative(Coeff) ? Coeff : SE->getNegativeSCEV(Coeff);
 1173     const SCEV *Product = SE->getMulExpr(UpperBound, AbsCoeff);
 1198     Result.DV[Level].Distance = SE->getConstant(Distance);
 1199     NewConstraint.setDistance(SE->getConstant(Distance), CurLoop);
 1224                             SE->getNegativeSCEV(Coeff),
 1225                             SE->getNegativeSCEV(Delta), CurLoop);
 1229     bool DeltaMaybeZero     = !SE->isKnownNonZero(Delta);
 1230     bool DeltaMaybePositive = !SE->isKnownNonPositive(Delta);
 1231     bool DeltaMaybeNegative = !SE->isKnownNonNegative(Delta);
 1232     bool CoeffMaybePositive = !SE->isKnownNonPositive(Coeff);
 1233     bool CoeffMaybeNegative = !SE->isKnownNonNegative(Coeff);
 1294   const SCEV *Delta = SE->getMinusSCEV(DstConst, SrcConst);
 1313   if (SE->isKnownNegative(ConstCoeff)) {
 1314     ConstCoeff = dyn_cast<SCEVConstant>(SE->getNegativeSCEV(ConstCoeff));
 1317     Delta = SE->getNegativeSCEV(Delta);
 1319   assert(SE->isKnownPositive(ConstCoeff) && "ConstCoeff should be positive");
 1322   SplitIter = SE->getUDivExpr(
 1323       SE->getSMaxExpr(SE->getZero(Delta->getType()), Delta),
 1323       SE->getSMaxExpr(SE->getZero(Delta->getType()), Delta),
 1324       SE->getMulExpr(SE->getConstant(Delta->getType(), 2), ConstCoeff));
 1324       SE->getMulExpr(SE->getConstant(Delta->getType(), 2), ConstCoeff));
 1335   if (SE->isKnownNegative(Delta)) {
 1346     const SCEV *ConstantTwo = SE->getConstant(UpperBound->getType(), 2);
 1347     const SCEV *ML = SE->getMulExpr(SE->getMulExpr(ConstCoeff, UpperBound),
 1347     const SCEV *ML = SE->getMulExpr(SE->getMulExpr(ConstCoeff, UpperBound),
 1366       Result.DV[Level].Distance = SE->getZero(Delta->getType());
 1507   const SCEV *Delta = SE->getMinusSCEV(DstConst, SrcConst);
 1509   NewConstraint.setLine(SrcCoeff, SE->getNegativeSCEV(DstCoeff),
 1719   const SCEV *Delta = SE->getMinusSCEV(SrcConst, DstConst);
 1720   NewConstraint.setLine(SE->getZero(Delta->getType()), DstCoeff, Delta,
 1735     SE->isKnownNegative(ConstCoeff) ?
 1736     SE->getNegativeSCEV(ConstCoeff) : ConstCoeff;
 1738     SE->isKnownNegative(ConstCoeff) ? SE->getNegativeSCEV(Delta) : Delta;
 1738     SE->isKnownNegative(ConstCoeff) ? SE->getNegativeSCEV(Delta) : Delta;
 1744     const SCEV *Product = SE->getMulExpr(AbsCoeff, UpperBound);
 1763   if (SE->isKnownNegative(NewDelta)) {
 1828   const SCEV *Delta = SE->getMinusSCEV(DstConst, SrcConst);
 1829   NewConstraint.setLine(SrcCoeff, SE->getZero(Delta->getType()), Delta,
 1844     SE->isKnownNegative(ConstCoeff) ?
 1845     SE->getNegativeSCEV(ConstCoeff) : ConstCoeff;
 1847     SE->isKnownNegative(ConstCoeff) ? SE->getNegativeSCEV(Delta) : Delta;
 1847     SE->isKnownNegative(ConstCoeff) ? SE->getNegativeSCEV(Delta) : Delta;
 1853     const SCEV *Product = SE->getMulExpr(AbsCoeff, UpperBound);
 1872   if (SE->isKnownNegative(NewDelta)) {
 1908   const SCEV *Delta = SE->getMinusSCEV(DstConst, SrcConst);
 2053   const SCEV *C2_C1 = SE->getMinusSCEV(C2, C1);
 2054   const SCEV *C1_C2 = SE->getMinusSCEV(C1, C2);
 2057   if (SE->isKnownNonNegative(A1)) {
 2058     if (SE->isKnownNonNegative(A2)) {
 2062         const SCEV *A1N1 = SE->getMulExpr(A1, N1);
 2071         const SCEV *A2N2 = SE->getMulExpr(A2, N2);
 2079     else if (SE->isKnownNonPositive(A2)) {
 2083         const SCEV *A1N1 = SE->getMulExpr(A1, N1);
 2084         const SCEV *A2N2 = SE->getMulExpr(A2, N2);
 2085         const SCEV *A1N1_A2N2 = SE->getMinusSCEV(A1N1, A2N2);
 2093       if (SE->isKnownNegative(C2_C1)) {
 2099   else if (SE->isKnownNonPositive(A1)) {
 2100     if (SE->isKnownNonNegative(A2)) {
 2104         const SCEV *A1N1 = SE->getMulExpr(A1, N1);
 2105         const SCEV *A2N2 = SE->getMulExpr(A2, N2);
 2106         const SCEV *A1N1_A2N2 = SE->getMinusSCEV(A1N1, A2N2);
 2114       if (SE->isKnownPositive(C2_C1)) {
 2119     else if (SE->isKnownNonPositive(A2)) {
 2123         const SCEV *A1N1 = SE->getMulExpr(A1, N1);
 2132         const SCEV *A2N2 = SE->getMulExpr(A2, N2);
 2163     const SCEV *SrcCoeff = SrcAddRec->getStepRecurrence(*SE);
 2164     const SCEV *DstCoeff = DstAddRec->getStepRecurrence(*SE);
 2173     else if (SrcCoeff == SE->getNegativeSCEV(DstCoeff))
 2185     const SCEV *SrcCoeff = SrcAddRec->getStepRecurrence(*SE);
 2195     const SCEV *DstCoeff = DstAddRec->getStepRecurrence(*SE);
 2239     SrcCoeff = SrcAddRec->getStepRecurrence(*SE);
 2242     DstCoeff = DstAddRec->getStepRecurrence(*SE);
 2249       SrcCoeff = tmpAddRec->getStepRecurrence(*SE);
 2252       DstCoeff = SE->getNegativeSCEV(SrcAddRec->getStepRecurrence(*SE));
 2252       DstCoeff = SE->getNegativeSCEV(SrcAddRec->getStepRecurrence(*SE));
 2262       DstCoeff = tmpAddRec->getStepRecurrence(*SE);
 2265       SrcCoeff = SE->getNegativeSCEV(DstAddRec->getStepRecurrence(*SE));
 2265       SrcCoeff = SE->getNegativeSCEV(DstAddRec->getStepRecurrence(*SE));
 2333   unsigned BitWidth = SE->getTypeSizeInBits(Src->getType());
 2343     const SCEV *Coeff = AddRec->getStepRecurrence(*SE);
 2362     const SCEV *Coeff = AddRec->getStepRecurrence(*SE);
 2375   const SCEV *Delta = SE->getMinusSCEV(DstConst, SrcConst);
 2435     const SCEV *SrcCoeff = AddRec->getStepRecurrence(*SE);
 2436     const SCEV *DstCoeff = SE->getMinusSCEV(SrcCoeff, SrcCoeff);
 2440       const SCEV *Coeff = AddRec->getStepRecurrence(*SE);
 2457       const SCEV *Coeff = AddRec->getStepRecurrence(*SE);
 2471     Delta = SE->getMinusSCEV(SrcCoeff, DstCoeff);
 2544   const SCEV *Delta = SE->getMinusSCEV(B0, A0);
 2751       SE->getMulExpr(SE->getMinusSCEV(A[K].NegPart, B[K].PosPart),
 2751       SE->getMulExpr(SE->getMinusSCEV(A[K].NegPart, B[K].PosPart),
 2754       SE->getMulExpr(SE->getMinusSCEV(A[K].PosPart, B[K].NegPart),
 2754       SE->getMulExpr(SE->getMinusSCEV(A[K].PosPart, B[K].NegPart),
 2761           SE->getZero(A[K].Coeff->getType());
 2764           SE->getZero(A[K].Coeff->getType());
 2789     const SCEV *Delta = SE->getMinusSCEV(A[K].Coeff, B[K].Coeff);
 2792       SE->getMulExpr(NegativePart, Bound[K].Iterations);
 2795       SE->getMulExpr(PositivePart, Bound[K].Iterations);
 2800     const SCEV *Delta = SE->getMinusSCEV(A[K].Coeff, B[K].Coeff);
 2829     const SCEV *Iter_1 = SE->getMinusSCEV(
 2830         Bound[K].Iterations, SE->getOne(Bound[K].Iterations->getType()));
 2832       getNegativePart(SE->getMinusSCEV(A[K].NegPart, B[K].Coeff));
 2834       SE->getMinusSCEV(SE->getMulExpr(NegPart, Iter_1), B[K].Coeff);
 2834       SE->getMinusSCEV(SE->getMulExpr(NegPart, Iter_1), B[K].Coeff);
 2836       getPositivePart(SE->getMinusSCEV(A[K].PosPart, B[K].Coeff));
 2838       SE->getMinusSCEV(SE->getMulExpr(PosPart, Iter_1), B[K].Coeff);
 2838       SE->getMinusSCEV(SE->getMulExpr(PosPart, Iter_1), B[K].Coeff);
 2844       getNegativePart(SE->getMinusSCEV(A[K].NegPart, B[K].Coeff));
 2846       Bound[K].Lower[Dependence::DVEntry::LT] = SE->getNegativeSCEV(B[K].Coeff);
 2848       getPositivePart(SE->getMinusSCEV(A[K].PosPart, B[K].Coeff));
 2850       Bound[K].Upper[Dependence::DVEntry::LT] = SE->getNegativeSCEV(B[K].Coeff);
 2873     const SCEV *Iter_1 = SE->getMinusSCEV(
 2874         Bound[K].Iterations, SE->getOne(Bound[K].Iterations->getType()));
 2876       getNegativePart(SE->getMinusSCEV(A[K].Coeff, B[K].PosPart));
 2878       SE->getAddExpr(SE->getMulExpr(NegPart, Iter_1), A[K].Coeff);
 2878       SE->getAddExpr(SE->getMulExpr(NegPart, Iter_1), A[K].Coeff);
 2880       getPositivePart(SE->getMinusSCEV(A[K].Coeff, B[K].NegPart));
 2882       SE->getAddExpr(SE->getMulExpr(PosPart, Iter_1), A[K].Coeff);
 2882       SE->getAddExpr(SE->getMulExpr(PosPart, Iter_1), A[K].Coeff);
 2887     const SCEV *NegPart = getNegativePart(SE->getMinusSCEV(A[K].Coeff, B[K].PosPart));
 2890     const SCEV *PosPart = getPositivePart(SE->getMinusSCEV(A[K].Coeff, B[K].NegPart));
 2899   return SE->getSMaxExpr(X, SE->getZero(X->getType()));
 2899   return SE->getSMaxExpr(X, SE->getZero(X->getType()));
 2905   return SE->getSMinExpr(X, SE->getZero(X->getType()));
 2905   return SE->getSMinExpr(X, SE->getZero(X->getType()));
 2915   const SCEV *Zero = SE->getZero(Subscript->getType());
 2926     CI[K].Coeff = AddRec->getStepRecurrence(*SE);
 2962       Sum = SE->getAddExpr(Sum, Bound[K].Lower[Bound[K].Direction]);
 2978       Sum = SE->getAddExpr(Sum, Bound[K].Upper[Bound[K].Direction]);
 2999     return SE->getZero(Expr->getType());
 3001     return AddRec->getStepRecurrence(*SE);
 3018   return SE->getAddRecExpr(zeroCoefficient(AddRec->getStart(), TargetLoop),
 3019                            AddRec->getStepRecurrence(*SE),
 3035     return SE->getAddRecExpr(Expr,
 3040     const SCEV *Sum = SE->getAddExpr(AddRec->getStepRecurrence(*SE), Value);
 3040     const SCEV *Sum = SE->getAddExpr(AddRec->getStepRecurrence(*SE), Value);
 3043     return SE->getAddRecExpr(AddRec->getStart(),
 3048   if (SE->isLoopInvariant(AddRec, TargetLoop))
 3049     return SE->getAddRecExpr(AddRec, Value, TargetLoop, SCEV::FlagAnyWrap);
 3050   return SE->getAddRecExpr(
 3052       AddRec->getStepRecurrence(*SE), AddRec->getLoop(),
 3099   const SCEV *DA_K = SE->getMulExpr(A_K, CurConstraint.getD());
 3100   Src = SE->getMinusSCEV(Src, DA_K);
 3104   Dst = addToCoefficient(Dst, CurLoop, SE->getNegativeSCEV(A_K));
 3138     Src = SE->getMinusSCEV(Src, SE->getMulExpr(AP_K, SE->getConstant(CdivB)));
 3138     Src = SE->getMinusSCEV(Src, SE->getMulExpr(AP_K, SE->getConstant(CdivB)));
 3138     Src = SE->getMinusSCEV(Src, SE->getMulExpr(AP_K, SE->getConstant(CdivB)));
 3152     Src = SE->getAddExpr(Src, SE->getMulExpr(A_K, SE->getConstant(CdivA)));
 3152     Src = SE->getAddExpr(Src, SE->getMulExpr(A_K, SE->getConstant(CdivA)));
 3152     Src = SE->getAddExpr(Src, SE->getMulExpr(A_K, SE->getConstant(CdivA)));
 3166     Src = SE->getAddExpr(Src, SE->getMulExpr(A_K, SE->getConstant(CdivA)));
 3166     Src = SE->getAddExpr(Src, SE->getMulExpr(A_K, SE->getConstant(CdivA)));
 3166     Src = SE->getAddExpr(Src, SE->getMulExpr(A_K, SE->getConstant(CdivA)));
 3175     Src = SE->getMulExpr(Src, A);
 3176     Dst = SE->getMulExpr(Dst, A);
 3177     Src = SE->getAddExpr(Src, SE->getMulExpr(A_K, C));
 3177     Src = SE->getAddExpr(Src, SE->getMulExpr(A_K, C));
 3179     Dst = addToCoefficient(Dst, CurLoop, SE->getMulExpr(A_K, B));
 3197   const SCEV *XA_K = SE->getMulExpr(A_K, CurConstraint.getX());
 3198   const SCEV *YAP_K = SE->getMulExpr(AP_K, CurConstraint.getY());
 3200   Src = SE->getAddExpr(Src, SE->getMinusSCEV(XA_K, YAP_K));
 3200   Src = SE->getAddExpr(Src, SE->getMinusSCEV(XA_K, YAP_K));
 3222     if (!SE->isKnownNonZero(Level.Distance)) // if may be zero
 3224     if (!SE->isKnownNonPositive(Level.Distance)) // if may be positive
 3226     if (!SE->isKnownNonNegative(Level.Distance)) // if may be negative
 3276     SE->getSCEVAtScope(SrcPtr, SrcLoop);
 3278     SE->getSCEVAtScope(DstPtr, DstLoop);
 3281       dyn_cast<SCEVUnknown>(SE->getPointerBase(SrcAccessFn));
 3283       dyn_cast<SCEVUnknown>(SE->getPointerBase(DstAccessFn));
 3288   const SCEV *ElementSize = SE->getElementSize(Src);
 3289   if (ElementSize != SE->getElementSize(Dst))
 3292   const SCEV *SrcSCEV = SE->getMinusSCEV(SrcAccessFn, SrcBase);
 3293   const SCEV *DstSCEV = SE->getMinusSCEV(DstAccessFn, DstBase);
 3302   SE->collectParametricTerms(SrcAR, Terms);
 3303   SE->collectParametricTerms(DstAR, Terms);
 3307   SE->findArrayDimensions(Terms, Sizes, ElementSize);
 3311   SE->computeAccessFunctions(SrcAR, SrcSubscripts, Sizes);
 3312   SE->computeAccessFunctions(DstAR, DstSubscripts, Sizes);
 3452   const SCEV *SrcSCEV = SE->getSCEV(SrcPtr);
 3453   const SCEV *DstSCEV = SE->getSCEV(DstPtr);
 3593   NewConstraint.setAny(SE);
 3634       Constraints[II].setAny(SE);
 3855   const SCEV *SrcSCEV = SE->getSCEV(SrcPtr);
 3856   const SCEV *DstSCEV = SE->getSCEV(DstPtr);
 3921   NewConstraint.setAny(SE);
 3950       Constraints[II].setAny(SE);