Lines Matching full:bound

613         LLVM_DEBUG(dbgs() << "\t\tupper bound = " << UpperBound << "\n");  in intersectConstraints()
1110 const SCEV *Bound = SE->getMinusSCEV(S, Size); in isKnownLessThan() local
1111 if (const SCEVAddRecExpr *AddRec = dyn_cast<SCEVAddRecExpr>(Bound)) { in isKnownLessThan()
1148 // Loop bound may be smaller (e.g., a char).
1149 // Should zero extend loop bound, since it's always >= 0.
1150 // This routine collects upper bound and extends or truncates if needed.
1153 // Return null if no bound available.
1222 // loop's upper bound. If a dependence exists, the dependence direction is
1427 // Check Delta/(2*ConstCoeff) against upper loop bound in weakCrossingSIVtest()
1630 // New bound check - modification to Banerjee's e3 check in exactSIVtest()
1638 // New bound check - modification to Banerjee's e3 check in exactSIVtest()
1651 // New bound check - modification to Banerjee's e3 check in exactSIVtest()
1659 // New bound check - modification to Banerjee's e3 check in exactSIVtest()
2582 // normalized so that the lower bound is always 0 and the stride is always 1.
2589 // U_k is the upper bound of the kth index, L_k is the lower bound of the Kth
2601 // When computing the upper bound, NULL denotes +inf;
2602 // for the lower bound, NULL denotes -inf.
2616 BoundInfo *Bound = new BoundInfo[MaxLevels + 1]; in banerjeeMIVtest() local
2623 Bound[K].Iterations = A[K].Iterations ? A[K].Iterations : B[K].Iterations; in banerjeeMIVtest()
2624 Bound[K].Direction = Dependence::DVEntry::ALL; in banerjeeMIVtest()
2625 Bound[K].DirSet = Dependence::DVEntry::NONE; in banerjeeMIVtest()
2626 findBoundsALL(A, B, Bound, K); in banerjeeMIVtest()
2629 if (Bound[K].Lower[Dependence::DVEntry::ALL]) in banerjeeMIVtest()
2630 LLVM_DEBUG(dbgs() << *Bound[K].Lower[Dependence::DVEntry::ALL] << '\t'); in banerjeeMIVtest()
2633 if (Bound[K].Upper[Dependence::DVEntry::ALL]) in banerjeeMIVtest()
2634 LLVM_DEBUG(dbgs() << *Bound[K].Upper[Dependence::DVEntry::ALL] << '\n'); in banerjeeMIVtest()
2642 if (testBounds(Dependence::DVEntry::ALL, 0, Bound, Delta)) { in banerjeeMIVtest()
2645 unsigned NewDeps = exploreDirections(1, A, B, Bound, in banerjeeMIVtest()
2652 Result.DV[K - 1].Direction = Old & Bound[K].DirSet; in banerjeeMIVtest()
2673 delete [] Bound; in banerjeeMIVtest()
2682 // in the DirSet field of Bound. Returns the number of distinct
2686 CoefficientInfo *B, BoundInfo *Bound, in exploreDirections() argument
2699 Bound[K].DirSet = Dependence::DVEntry::ALL; in exploreDirections()
2708 Bound[K].DirSet |= Bound[K].Direction; in exploreDirections()
2710 switch (Bound[K].Direction) { in exploreDirections()
2724 llvm_unreachable("unexpected Bound[K].Direction"); in exploreDirections()
2736 findBoundsLT(A, B, Bound, Level); in exploreDirections()
2737 findBoundsGT(A, B, Bound, Level); in exploreDirections()
2738 findBoundsEQ(A, B, Bound, Level); in exploreDirections()
2742 if (Bound[Level].Lower[Dependence::DVEntry::LT]) in exploreDirections()
2743 LLVM_DEBUG(dbgs() << *Bound[Level].Lower[Dependence::DVEntry::LT] in exploreDirections()
2747 if (Bound[Level].Upper[Dependence::DVEntry::LT]) in exploreDirections()
2748 LLVM_DEBUG(dbgs() << *Bound[Level].Upper[Dependence::DVEntry::LT] in exploreDirections()
2753 if (Bound[Level].Lower[Dependence::DVEntry::EQ]) in exploreDirections()
2754 LLVM_DEBUG(dbgs() << *Bound[Level].Lower[Dependence::DVEntry::EQ] in exploreDirections()
2758 if (Bound[Level].Upper[Dependence::DVEntry::EQ]) in exploreDirections()
2759 LLVM_DEBUG(dbgs() << *Bound[Level].Upper[Dependence::DVEntry::EQ] in exploreDirections()
2764 if (Bound[Level].Lower[Dependence::DVEntry::GT]) in exploreDirections()
2765 LLVM_DEBUG(dbgs() << *Bound[Level].Lower[Dependence::DVEntry::GT] in exploreDirections()
2769 if (Bound[Level].Upper[Dependence::DVEntry::GT]) in exploreDirections()
2770 LLVM_DEBUG(dbgs() << *Bound[Level].Upper[Dependence::DVEntry::GT] in exploreDirections()
2780 if (testBounds(Dependence::DVEntry::LT, Level, Bound, Delta)) in exploreDirections()
2781 NewDeps += exploreDirections(Level + 1, A, B, Bound, in exploreDirections()
2785 if (testBounds(Dependence::DVEntry::EQ, Level, Bound, Delta)) in exploreDirections()
2786 NewDeps += exploreDirections(Level + 1, A, B, Bound, in exploreDirections()
2790 if (testBounds(Dependence::DVEntry::GT, Level, Bound, Delta)) in exploreDirections()
2791 NewDeps += exploreDirections(Level + 1, A, B, Bound, in exploreDirections()
2794 Bound[Level].Direction = Dependence::DVEntry::ALL; in exploreDirections()
2798 return exploreDirections(Level + 1, A, B, Bound, Loops, DepthExpanded, Delta); in exploreDirections()
2804 BoundInfo *Bound, const SCEV *Delta) const { in testBounds() argument
2805 Bound[Level].Direction = DirKind; in testBounds()
2806 if (const SCEV *LowerBound = getLowerBound(Bound)) in testBounds()
2809 if (const SCEV *UpperBound = getUpperBound(Bound)) in testBounds()
2817 // using the * direction. Records them in Bound.
2828 // We must be careful to handle the case where the upper bound is unknown.
2829 // Note that the lower bound is always <= 0
2830 // and the upper bound is always >= 0.
2832 BoundInfo *Bound, unsigned K) const { in findBoundsALL() argument
2833 Bound[K].Lower[Dependence::DVEntry::ALL] = nullptr; // Default value = -infinity. in findBoundsALL()
2834 Bound[K].Upper[Dependence::DVEntry::ALL] = nullptr; // Default value = +infinity. in findBoundsALL()
2835 if (Bound[K].Iterations) { in findBoundsALL()
2836 Bound[K].Lower[Dependence::DVEntry::ALL] = in findBoundsALL()
2838 Bound[K].Iterations); in findBoundsALL()
2839 Bound[K].Upper[Dependence::DVEntry::ALL] = in findBoundsALL()
2841 Bound[K].Iterations); in findBoundsALL()
2846 Bound[K].Lower[Dependence::DVEntry::ALL] = in findBoundsALL()
2849 Bound[K].Upper[Dependence::DVEntry::ALL] = in findBoundsALL()
2856 // using the = direction. Records them in Bound.
2867 // We must be careful to handle the case where the upper bound is unknown.
2868 // Note that the lower bound is always <= 0
2869 // and the upper bound is always >= 0.
2871 BoundInfo *Bound, unsigned K) const { in findBoundsEQ() argument
2872 Bound[K].Lower[Dependence::DVEntry::EQ] = nullptr; // Default value = -infinity. in findBoundsEQ()
2873 Bound[K].Upper[Dependence::DVEntry::EQ] = nullptr; // Default value = +infinity. in findBoundsEQ()
2874 if (Bound[K].Iterations) { in findBoundsEQ()
2877 Bound[K].Lower[Dependence::DVEntry::EQ] = in findBoundsEQ()
2878 SE->getMulExpr(NegativePart, Bound[K].Iterations); in findBoundsEQ()
2880 Bound[K].Upper[Dependence::DVEntry::EQ] = in findBoundsEQ()
2881 SE->getMulExpr(PositivePart, Bound[K].Iterations); in findBoundsEQ()
2889 Bound[K].Lower[Dependence::DVEntry::EQ] = NegativePart; // Zero in findBoundsEQ()
2892 Bound[K].Upper[Dependence::DVEntry::EQ] = PositivePart; // Zero in findBoundsEQ()
2898 // using the < direction. Records them in Bound.
2909 // We must be careful to handle the case where the upper bound is unknown.
2911 BoundInfo *Bound, unsigned K) const { in findBoundsLT() argument
2912 Bound[K].Lower[Dependence::DVEntry::LT] = nullptr; // Default value = -infinity. in findBoundsLT()
2913 Bound[K].Upper[Dependence::DVEntry::LT] = nullptr; // Default value = +infinity. in findBoundsLT()
2914 if (Bound[K].Iterations) { in findBoundsLT()
2916 Bound[K].Iterations, SE->getOne(Bound[K].Iterations->getType())); in findBoundsLT()
2919 Bound[K].Lower[Dependence::DVEntry::LT] = in findBoundsLT()
2923 Bound[K].Upper[Dependence::DVEntry::LT] = in findBoundsLT()
2932 Bound[K].Lower[Dependence::DVEntry::LT] = SE->getNegativeSCEV(B[K].Coeff); in findBoundsLT()
2936 Bound[K].Upper[Dependence::DVEntry::LT] = SE->getNegativeSCEV(B[K].Coeff); in findBoundsLT()
2942 // using the > direction. Records them in Bound.
2953 // We must be careful to handle the case where the upper bound is unknown.
2955 BoundInfo *Bound, unsigned K) const { in findBoundsGT() argument
2956 Bound[K].Lower[Dependence::DVEntry::GT] = nullptr; // Default value = -infinity. in findBoundsGT()
2957 Bound[K].Upper[Dependence::DVEntry::GT] = nullptr; // Default value = +infinity. in findBoundsGT()
2958 if (Bound[K].Iterations) { in findBoundsGT()
2960 Bound[K].Iterations, SE->getOne(Bound[K].Iterations->getType())); in findBoundsGT()
2963 Bound[K].Lower[Dependence::DVEntry::GT] = in findBoundsGT()
2967 Bound[K].Upper[Dependence::DVEntry::GT] = in findBoundsGT()
2975 Bound[K].Lower[Dependence::DVEntry::GT] = A[K].Coeff; in findBoundsGT()
2978 Bound[K].Upper[Dependence::DVEntry::GT] = A[K].Coeff; in findBoundsGT()
3027 LLVM_DEBUG(dbgs() << "\tUpper Bound = "); in collectCoeffInfo()
3041 // computes the lower bound given the current direction settings
3042 // at each level. If the lower bound for any level is -inf,
3044 const SCEV *DependenceInfo::getLowerBound(BoundInfo *Bound) const { in getLowerBound()
3045 const SCEV *Sum = Bound[1].Lower[Bound[1].Direction]; in getLowerBound()
3047 if (Bound[K].Lower[Bound[K].Direction]) in getLowerBound()
3048 Sum = SE->getAddExpr(Sum, Bound[K].Lower[Bound[K].Direction]); in getLowerBound()
3057 // computes the upper bound given the current direction settings
3058 // at each level. If the upper bound at any level is +inf,
3060 const SCEV *DependenceInfo::getUpperBound(BoundInfo *Bound) const { in getUpperBound()
3061 const SCEV *Sum = Bound[1].Upper[Bound[1].Direction]; in getUpperBound()
3063 if (Bound[K].Upper[Bound[K].Direction]) in getUpperBound()
3064 Sum = SE->getAddExpr(Sum, Bound[K].Upper[Bound[K].Direction]); in getUpperBound()
3528 // always safe. The others need to be 0 <= subscript[i] < bound, for both src in tryDelinearizeParametricSize()