Home | History | Annotate | Download | only in Analysis

Lines Matching refs:Direction

248 // getDirection - Returns the direction associated with a particular level.
251 return DV[Level - 1].Direction;
598 unsigned Direction = getDirection(II);
599 if (Direction == DVEntry::ALL)
602 if (Direction & DVEntry::LT)
604 if (Direction & DVEntry::EQ)
606 if (Direction & DVEntry::GT)
697 // have 2 loops in common, so CommonLevels will equal 2 and the direction
1046 // Can prove independence. Failing that, can compute distance (and direction).
1058 // loop's upper bound. If a dependence exists, the dependence direction is
1062 // direction = { = if d = 0
1121 Result.DV[Level].Direction &= Dependence::DVEntry::LT;
1123 Result.DV[Level].Direction &= Dependence::DVEntry::GT;
1125 Result.DV[Level].Direction &= Dependence::DVEntry::EQ;
1132 Result.DV[Level].Direction &= Dependence::DVEntry::EQ;
1148 // maybe we can get a useful direction
1166 if (NewDirection < Result.DV[Level].Direction)
1168 Result.DV[Level].Direction &= NewDirection;
1218 Result.DV[Level].Direction &= unsigned(~Dependence::DVEntry::LT);
1219 Result.DV[Level].Direction &= unsigned(~Dependence::DVEntry::GT);
1221 if (!Result.DV[Level].Direction) {
1278 Result.DV[Level].Direction &= unsigned(~Dependence::DVEntry::LT);
1279 Result.DV[Level].Direction &= unsigned(~Dependence::DVEntry::GT);
1281 if (!Result.DV[Level].Direction) {
1306 // if 2*Coeff doesn't divide Delta, then the equal direction isn't possible
1311 // Equal direction isn't possible
1312 Result.DV[Level].Direction &= unsigned(~Dependence::DVEntry::EQ);
1514 DEBUG(dbgs() << "\t exploring LT direction\n");
1532 DEBUG(dbgs() << "\t exploring EQ direction\n");
1558 DEBUG(dbgs() << "\t exploring GT direction\n");
1573 Result.DV[Level].Direction &= NewDirection;
1574 if (Result.DV[Level].Direction == Dependence::DVEntry::NONE)
1576 return Result.DV[Level].Direction == Dependence::DVEntry::NONE;
1609 // If i = 0, the direction is <= and peeling the
1611 // If i = UB, the direction is >= and peeling the
1613 // Otherwise, the direction is *.
1630 // record a direction.
1645 Result.DV[Level].Direction &= Dependence::DVEntry::LE;
1673 Result.DV[Level].Direction &= Dependence::DVEntry::GE;
1719 // If i = 0, the direction is <= and peeling the
1721 // If i = UB, the direction is >= and peeling the
1723 // Otherwise, the direction is *.
1739 // Src and Dst loops. If it isn't, then there's no need to record a direction.
1754 Result.DV[Level].Direction &= Dependence::DVEntry::LE;
1782 Result.DV[Level].Direction &= Dependence::DVEntry::GE;
2133 // It doesn't make sense to talk about distance or direction in this case,
2206 // Can sometimes refine direction vectors.
2236 // Can sometimes disprove the equal direction for 1 or more loops,
2339 // which is infeasible, so we can disallow the = direction for the i level.
2340 // Setting j = j' doesn't help matters, so we end up with a direction vector
2397 // or constant, in which case we give up on this direction.
2407 Result.DV[Level - 1].Direction &= unsigned(~Dependence::DVEntry::EQ);
2471 Bound[K].Direction = Dependence::DVEntry::ALL;
2490 // Explore the direction vector hierarchy.
2498 unsigned Old = Result.DV[K - 1].Direction;
2499 Result.DV[K - 1].Direction = Old & Bound[K].DirSet;
2500 Improved |= Old != Result.DV[K - 1].Direction;
2501 if (!Result.DV[K - 1].Direction) {
2527 // Hierarchically expands the direction vector
2542 Bound[K].DirSet |= Bound[K].Direction;
2544 switch (Bound[K].Direction) {
2558 llvm_unreachable("unexpected Bound[K].Direction");
2622 Bound[Level].Direction = Dependence::DVEntry::ALL;
2633 Bound[Level].Direction = DirKind;
2645 // using the * direction. Records them in Bound.
2684 // using the = direction. Records them in Bound.
2726 // using the < direction. Records them in Bound.
2770 // using the > direction. Records them in Bound.
2869 // computes the lower bound given the current direction settings
2873 const SCEV *Sum = Bound[1].Lower[Bound[1].Direction];
2875 if (Bound[K].Lower[Bound[K].Direction])
2876 Sum = SE->getAddExpr(Sum, Bound[K].Lower[Bound[K].Direction]);
2885 // computes the upper bound given the current direction settings
2889 const SCEV *Sum = Bound[1].Upper[Bound[1].Direction];
2891 if (Bound[K].Upper[Bound[K].Direction])
2892 Sum = SE->getAddExpr(Sum, Bound[K].Upper[Bound[K].Direction]);
3123 // Update direction vector entry based on the current constraint.
3126 DEBUG(dbgs() << "\tUpdate direction, constraint =");
3141 Level.Direction &= NewDirection;
3146 // direction should be accurate
3167 Level.Direction &= NewDirection;
3654 if (Result.DV[SJ - 1].Direction == Dependence::DVEntry::NONE)