Home | History | Annotate | Download | only in Analysis

Lines Matching defs: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)
705 // have 2 loops in common, so CommonLevels will equal 2 and the direction
988 // Can prove independence. Failing that, can compute distance (and direction).
1000 // loop's upper bound. If a dependence exists, the dependence direction is
1004 // direction = { = if d = 0
1066 Result.DV[Level].Direction &= Dependence::DVEntry::LT;
1068 Result.DV[Level].Direction &= Dependence::DVEntry::GT;
1070 Result.DV[Level].Direction &= Dependence::DVEntry::EQ;
1077 Result.DV[Level].Direction &= Dependence::DVEntry::EQ;
1093 // maybe we can get a useful direction
1111 if (NewDirection < Result.DV[Level].Direction)
1113 Result.DV[Level].Direction &= NewDirection;
1167 Result.DV[Level].Direction &= unsigned(~Dependence::DVEntry::LT);
1168 Result.DV[Level].Direction &= unsigned(~Dependence::DVEntry::GT);
1170 if (!Result.DV[Level].Direction) {
1229 Result.DV[Level].Direction &= unsigned(~Dependence::DVEntry::LT);
1230 Result.DV[Level].Direction &= unsigned(~Dependence::DVEntry::GT);
1232 if (!Result.DV[Level].Direction) {
1257 // if 2*Coeff doesn't divide Delta, then the equal direction isn't possible
1262 // Equal direction isn't possible
1263 Result.DV[Level].Direction &= unsigned(~Dependence::DVEntry::EQ);
1473 DEBUG(dbgs() << "\t exploring LT direction\n");
1491 DEBUG(dbgs() << "\t exploring EQ direction\n");
1517 DEBUG(dbgs() << "\t exploring GT direction\n");
1532 Result.DV[Level].Direction &= NewDirection;
1533 if (Result.DV[Level].Direction == Dependence::DVEntry::NONE)
1535 return Result.DV[Level].Direction == Dependence::DVEntry::NONE;
1568 // If i = 0, the direction is <= and peeling the
1570 // If i = UB, the direction is >= and peeling the
1572 // Otherwise, the direction is *.
1590 // record a direction.
1605 Result.DV[Level].Direction &= Dependence::DVEntry::LE;
1633 Result.DV[Level].Direction &= Dependence::DVEntry::GE;
1679 // If i = 0, the direction is <= and peeling the
1681 // If i = UB, the direction is >= and peeling the
1683 // Otherwise, the direction is *.
1700 // Src and Dst loops. If it isn't, then there's no need to record a direction.
1715 Result.DV[Level].Direction &= Dependence::DVEntry::LE;
1743 Result.DV[Level].Direction &= Dependence::DVEntry::GE;
2102 // It doesn't make sense to talk about distance or direction in this case,
2176 // Can sometimes refine direction vectors.
2206 // Can sometimes disprove the equal direction for 1 or more loops,
2314 // which is infeasible, so we can disallow the = direction for the i level.
2315 // Setting j = j' doesn't help matters, so we end up with a direction vector
2377 // or constant, in which case we give up on this direction.
2388 Result.DV[Level - 1].Direction &= unsigned(~Dependence::DVEntry::EQ);
2453 Bound[K].Direction = Dependence::DVEntry::ALL;
2472 // Explore the direction vector hierarchy.
2480 unsigned Old = Result.DV[K - 1].Direction;
2481 Result.DV[K - 1].Direction = Old & Bound[K].DirSet;
2482 Improved |= Old != Result.DV[K - 1].Direction;
2483 if (!Result.DV[K - 1].Direction) {
2509 // Hierarchically expands the direction vector
2526 Bound[K].DirSet |= Bound[K].Direction;
2528 switch (Bound[K].Direction) {
2542 llvm_unreachable("unexpected Bound[K].Direction");
2606 Bound[Level].Direction = Dependence::DVEntry::ALL;
2619 Bound[Level].Direction = DirKind;
2631 // using the * direction. Records them in Bound.
2672 // using the = direction. Records them in Bound.
2716 // using the < direction. Records them in Bound.
2763 // using the > direction. Records them in Bound.
2866 // computes the lower bound given the current direction settings
2870 const SCEV *Sum = Bound[1].Lower[Bound[1].Direction];
2872 if (Bound[K].Lower[Bound[K].Direction])
2873 Sum = SE->getAddExpr(Sum, Bound[K].Lower[Bound[K].Direction]);
2882 // computes the upper bound given the current direction settings
2886 const SCEV *Sum = Bound[1].Upper[Bound[1].Direction];
2888 if (Bound[K].Upper[Bound[K].Direction])
2889 Sum = SE->getAddExpr(Sum, Bound[K].Upper[Bound[K].Direction]);
3128 // Update direction vector entry based on the current constraint.
3132 DEBUG(dbgs() << "\tUpdate direction, constraint =");
3147 Level.Direction &= NewDirection;
3152 // direction should be accurate
3173 Level.Direction &= NewDirection;
3639 if (Result.DV[SJ - 1].Direction == Dependence::DVEntry::NONE)