Lines Matching refs:Direction
242 // getDirection - Returns the direction associated with a particular level.
245 return DV[Level - 1].Direction;
603 unsigned Direction = getDirection(II);
604 if (Direction == DVEntry::ALL)
607 if (Direction & DVEntry::LT)
609 if (Direction & DVEntry::EQ)
611 if (Direction & DVEntry::GT)
702 // have 2 loops in common, so CommonLevels will equal 2 and the direction
1057 // Can prove independence. Failing that, can compute distance (and direction).
1069 // loop's upper bound. If a dependence exists, the dependence direction is
1073 // direction = { = if d = 0
1135 Result.DV[Level].Direction &= Dependence::DVEntry::LT;
1137 Result.DV[Level].Direction &= Dependence::DVEntry::GT;
1139 Result.DV[Level].Direction &= Dependence::DVEntry::EQ;
1146 Result.DV[Level].Direction &= Dependence::DVEntry::EQ;
1162 // maybe we can get a useful direction
1180 if (NewDirection < Result.DV[Level].Direction)
1182 Result.DV[Level].Direction &= NewDirection;
1236 Result.DV[Level].Direction &= unsigned(~Dependence::DVEntry::LT);
1237 Result.DV[Level].Direction &= unsigned(~Dependence::DVEntry::GT);
1239 if (!Result.DV[Level].Direction) {
1296 Result.DV[Level].Direction &= unsigned(~Dependence::DVEntry::LT);
1297 Result.DV[Level].Direction &= unsigned(~Dependence::DVEntry::GT);
1299 if (!Result.DV[Level].Direction) {
1324 // if 2*Coeff doesn't divide Delta, then the equal direction isn't possible
1329 // Equal direction isn't possible
1330 Result.DV[Level].Direction &= unsigned(~Dependence::DVEntry::EQ);
1540 DEBUG(dbgs() << "\t exploring LT direction\n");
1558 DEBUG(dbgs() << "\t exploring EQ direction\n");
1584 DEBUG(dbgs() << "\t exploring GT direction\n");
1599 Result.DV[Level].Direction &= NewDirection;
1600 if (Result.DV[Level].Direction == Dependence::DVEntry::NONE)
1602 return Result.DV[Level].Direction == Dependence::DVEntry::NONE;
1635 // If i = 0, the direction is <= and peeling the
1637 // If i = UB, the direction is >= and peeling the
1639 // Otherwise, the direction is *.
1657 // record a direction.
1672 Result.DV[Level].Direction &= Dependence::DVEntry::LE;
1700 Result.DV[Level].Direction &= Dependence::DVEntry::GE;
1746 // If i = 0, the direction is <= and peeling the
1748 // If i = UB, the direction is >= and peeling the
1750 // Otherwise, the direction is *.
1767 // Src and Dst loops. If it isn't, then there's no need to record a direction.
1782 Result.DV[Level].Direction &= Dependence::DVEntry::LE;
1810 Result.DV[Level].Direction &= Dependence::DVEntry::GE;
2169 // It doesn't make sense to talk about distance or direction in this case,
2243 // Can sometimes refine direction vectors.
2273 // Can sometimes disprove the equal direction for 1 or more loops,
2381 // which is infeasible, so we can disallow the = direction for the i level.
2382 // Setting j = j' doesn't help matters, so we end up with a direction vector
2444 // or constant, in which case we give up on this direction.
2455 Result.DV[Level - 1].Direction &= unsigned(~Dependence::DVEntry::EQ);
2520 Bound[K].Direction = Dependence::DVEntry::ALL;
2539 // Explore the direction vector hierarchy.
2547 unsigned Old = Result.DV[K - 1].Direction;
2548 Result.DV[K - 1].Direction = Old & Bound[K].DirSet;
2549 Improved |= Old != Result.DV[K - 1].Direction;
2550 if (!Result.DV[K - 1].Direction) {
2576 // Hierarchically expands the direction vector
2593 Bound[K].DirSet |= Bound[K].Direction;
2595 switch (Bound[K].Direction) {
2609 llvm_unreachable("unexpected Bound[K].Direction");
2673 Bound[Level].Direction = Dependence::DVEntry::ALL;
2686 Bound[Level].Direction = DirKind;
2698 // using the * direction. Records them in Bound.
2739 // using the = direction. Records them in Bound.
2783 // using the < direction. Records them in Bound.
2829 // using the > direction. Records them in Bound.
2931 // computes the lower bound given the current direction settings
2935 const SCEV *Sum = Bound[1].Lower[Bound[1].Direction];
2937 if (Bound[K].Lower[Bound[K].Direction])
2938 Sum = SE->getAddExpr(Sum, Bound[K].Lower[Bound[K].Direction]);
2947 // computes the upper bound given the current direction settings
2951 const SCEV *Sum = Bound[1].Upper[Bound[1].Direction];
2953 if (Bound[K].Upper[Bound[K].Direction])
2954 Sum = SE->getAddExpr(Sum, Bound[K].Upper[Bound[K].Direction]);
3189 // Update direction vector entry based on the current constraint.
3193 DEBUG(dbgs() << "\tUpdate direction, constraint =");
3208 Level.Direction &= NewDirection;
3213 // direction should be accurate
3234 Level.Direction &= NewDirection;
3723 if (Result.DV[SJ - 1].Direction == Dependence::DVEntry::NONE)