Lines Matching refs:Level
191 for (unsigned Level = 1; Level <= D->getLevels(); Level++) { in dumpExampleDependence() local
192 if (D->isSplitable(Level)) { in dumpExampleDependence()
193 OS << " da analyze - split level = " << Level; in dumpExampleDependence()
194 OS << ", iteration = " << *DA->getSplitIteration(*D, Level); in dumpExampleDependence()
271 unsigned FullDependence::getDirection(unsigned Level) const { in getDirection()
272 assert(0 < Level && Level <= Levels && "Level out of range"); in getDirection()
273 return DV[Level - 1].Direction; in getDirection()
278 const SCEV *FullDependence::getDistance(unsigned Level) const { in getDistance()
279 assert(0 < Level && Level <= Levels && "Level out of range"); in getDistance()
280 return DV[Level - 1].Distance; in getDistance()
287 bool FullDependence::isScalar(unsigned Level) const { in isScalar()
288 assert(0 < Level && Level <= Levels && "Level out of range"); in isScalar()
289 return DV[Level - 1].Scalar; in isScalar()
295 bool FullDependence::isPeelFirst(unsigned Level) const { in isPeelFirst()
296 assert(0 < Level && Level <= Levels && "Level out of range"); in isPeelFirst()
297 return DV[Level - 1].PeelFirst; in isPeelFirst()
303 bool FullDependence::isPeelLast(unsigned Level) const { in isPeelLast()
304 assert(0 < Level && Level <= Levels && "Level out of range"); in isPeelLast()
305 return DV[Level - 1].PeelLast; in isPeelLast()
310 bool FullDependence::isSplitable(unsigned Level) const { in isSplitable()
311 assert(0 < Level && Level <= Levels && "Level out of range"); in isSplitable()
312 return DV[Level - 1].Splitable; in isSplitable()
817 unsigned Level = LoopNest->getLoopDepth(); in collectCommonLoops() local
818 if (Level <= CommonLevels && !SE->isLoopInvariant(Expression, LoopNest)) in collectCommonLoops()
819 Loops.set(Level); in collectCommonLoops()
1169 unsigned Level, FullDependence &Result, in strongSIVtest() argument
1179 assert(0 < Level && Level <= CommonLevels && "level out of range"); in strongSIVtest()
1180 Level--; in strongSIVtest()
1219 Result.DV[Level].Distance = SE->getConstant(Distance); in strongSIVtest()
1222 Result.DV[Level].Direction &= Dependence::DVEntry::LT; in strongSIVtest()
1224 Result.DV[Level].Direction &= Dependence::DVEntry::GT; in strongSIVtest()
1226 Result.DV[Level].Direction &= Dependence::DVEntry::EQ; in strongSIVtest()
1231 Result.DV[Level].Distance = Delta; in strongSIVtest()
1233 Result.DV[Level].Direction &= Dependence::DVEntry::EQ; in strongSIVtest()
1239 Result.DV[Level].Distance = Delta; // since X/1 == X in strongSIVtest()
1267 if (NewDirection < Result.DV[Level].Direction) in strongSIVtest()
1269 Result.DV[Level].Direction &= NewDirection; in strongSIVtest()
1305 const Loop *CurLoop, unsigned Level, FullDependence &Result, in weakCrossingSIVtest() argument
1312 assert(0 < Level && Level <= CommonLevels && "Level out of range"); in weakCrossingSIVtest()
1313 Level--; in weakCrossingSIVtest()
1319 Result.DV[Level].Direction &= unsigned(~Dependence::DVEntry::LT); in weakCrossingSIVtest()
1320 Result.DV[Level].Direction &= unsigned(~Dependence::DVEntry::GT); in weakCrossingSIVtest()
1322 if (!Result.DV[Level].Direction) { in weakCrossingSIVtest()
1326 Result.DV[Level].Distance = Delta; // = 0 in weakCrossingSIVtest()
1333 Result.DV[Level].Splitable = true; in weakCrossingSIVtest()
1379 Result.DV[Level].Direction &= unsigned(~Dependence::DVEntry::LT); in weakCrossingSIVtest()
1380 Result.DV[Level].Direction &= unsigned(~Dependence::DVEntry::GT); in weakCrossingSIVtest()
1382 if (!Result.DV[Level].Direction) { in weakCrossingSIVtest()
1386 Result.DV[Level].Splitable = false; in weakCrossingSIVtest()
1387 Result.DV[Level].Distance = SE->getZero(Delta->getType()); in weakCrossingSIVtest()
1413 Result.DV[Level].Direction &= unsigned(~Dependence::DVEntry::EQ); in weakCrossingSIVtest()
1505 const Loop *CurLoop, unsigned Level, in exactSIVtest() argument
1514 assert(0 < Level && Level <= CommonLevels && "Level out of range"); in exactSIVtest()
1515 Level--; in exactSIVtest()
1646 Result.DV[Level].Direction &= NewDirection; in exactSIVtest()
1647 if (Result.DV[Level].Direction == Dependence::DVEntry::NONE) in exactSIVtest()
1651 return Result.DV[Level].Direction == Dependence::DVEntry::NONE; in exactSIVtest()
1699 const Loop *CurLoop, unsigned Level, in weakZeroSrcSIVtest() argument
1710 assert(0 < Level && Level <= MaxLevels && "Level out of range"); in weakZeroSrcSIVtest()
1711 Level--; in weakZeroSrcSIVtest()
1718 if (Level < CommonLevels) { in weakZeroSrcSIVtest()
1719 Result.DV[Level].Direction &= Dependence::DVEntry::GE; in weakZeroSrcSIVtest()
1720 Result.DV[Level].PeelFirst = true; in weakZeroSrcSIVtest()
1746 if (Level < CommonLevels) { in weakZeroSrcSIVtest()
1747 Result.DV[Level].Direction &= Dependence::DVEntry::LE; in weakZeroSrcSIVtest()
1748 Result.DV[Level].PeelLast = true; in weakZeroSrcSIVtest()
1809 const Loop *CurLoop, unsigned Level, in weakZeroDstSIVtest() argument
1819 assert(0 < Level && Level <= SrcLevels && "Level out of range"); in weakZeroDstSIVtest()
1820 Level--; in weakZeroDstSIVtest()
1827 if (Level < CommonLevels) { in weakZeroDstSIVtest()
1828 Result.DV[Level].Direction &= Dependence::DVEntry::LE; in weakZeroDstSIVtest()
1829 Result.DV[Level].PeelFirst = true; in weakZeroDstSIVtest()
1855 if (Level < CommonLevels) { in weakZeroDstSIVtest()
1856 Result.DV[Level].Direction &= Dependence::DVEntry::GE; in weakZeroDstSIVtest()
1857 Result.DV[Level].PeelLast = true; in weakZeroDstSIVtest()
2163 bool DependenceInfo::testSIV(const SCEV *Src, const SCEV *Dst, unsigned &Level, in testSIV() argument
2178 Level = mapSrcLoop(CurLoop); in testSIV()
2182 Level, Result, NewConstraint); in testSIV()
2185 Level, Result, NewConstraint, SplitIter); in testSIV()
2188 Level, Result, NewConstraint); in testSIV()
2198 Level = mapSrcLoop(CurLoop); in testSIV()
2200 Level, Result, NewConstraint) || in testSIV()
2208 Level = mapDstLoop(CurLoop); in testSIV()
2210 CurLoop, Level, Result, NewConstraint) || in testSIV()
2496 unsigned Level = mapSrcLoop(CurLoop); in gcdMIVtest() local
2497 Result.DV[Level - 1].Direction &= unsigned(~Dependence::DVEntry::EQ); in gcdMIVtest()
2622 unsigned DependenceInfo::exploreDirections(unsigned Level, CoefficientInfo *A, in exploreDirections() argument
2640 if (Level > CommonLevels) { in exploreDirections()
2669 if (Loops[Level]) { in exploreDirections()
2670 if (Level > DepthExpanded) { in exploreDirections()
2671 DepthExpanded = Level; in exploreDirections()
2673 findBoundsLT(A, B, Bound, Level); in exploreDirections()
2674 findBoundsGT(A, B, Bound, Level); in exploreDirections()
2675 findBoundsEQ(A, B, Bound, Level); in exploreDirections()
2677 LLVM_DEBUG(dbgs() << "\tBound for level = " << Level << '\n'); in exploreDirections()
2679 if (Bound[Level].Lower[Dependence::DVEntry::LT]) in exploreDirections()
2680 LLVM_DEBUG(dbgs() << *Bound[Level].Lower[Dependence::DVEntry::LT] in exploreDirections()
2684 if (Bound[Level].Upper[Dependence::DVEntry::LT]) in exploreDirections()
2685 LLVM_DEBUG(dbgs() << *Bound[Level].Upper[Dependence::DVEntry::LT] in exploreDirections()
2690 if (Bound[Level].Lower[Dependence::DVEntry::EQ]) in exploreDirections()
2691 LLVM_DEBUG(dbgs() << *Bound[Level].Lower[Dependence::DVEntry::EQ] in exploreDirections()
2695 if (Bound[Level].Upper[Dependence::DVEntry::EQ]) in exploreDirections()
2696 LLVM_DEBUG(dbgs() << *Bound[Level].Upper[Dependence::DVEntry::EQ] in exploreDirections()
2701 if (Bound[Level].Lower[Dependence::DVEntry::GT]) in exploreDirections()
2702 LLVM_DEBUG(dbgs() << *Bound[Level].Lower[Dependence::DVEntry::GT] in exploreDirections()
2706 if (Bound[Level].Upper[Dependence::DVEntry::GT]) in exploreDirections()
2707 LLVM_DEBUG(dbgs() << *Bound[Level].Upper[Dependence::DVEntry::GT] in exploreDirections()
2717 if (testBounds(Dependence::DVEntry::LT, Level, Bound, Delta)) in exploreDirections()
2718 NewDeps += exploreDirections(Level + 1, A, B, Bound, in exploreDirections()
2722 if (testBounds(Dependence::DVEntry::EQ, Level, Bound, Delta)) in exploreDirections()
2723 NewDeps += exploreDirections(Level + 1, A, B, Bound, in exploreDirections()
2727 if (testBounds(Dependence::DVEntry::GT, Level, Bound, Delta)) in exploreDirections()
2728 NewDeps += exploreDirections(Level + 1, A, B, Bound, in exploreDirections()
2731 Bound[Level].Direction = Dependence::DVEntry::ALL; in exploreDirections()
2735 return exploreDirections(Level + 1, A, B, Bound, Loops, DepthExpanded, Delta); in exploreDirections()
2740 bool DependenceInfo::testBounds(unsigned char DirKind, unsigned Level, in testBounds() argument
2742 Bound[Level].Direction = DirKind; in testBounds()
3234 void DependenceInfo::updateDirection(Dependence::DVEntry &Level, in updateDirection() argument
3242 Level.Scalar = false; in updateDirection()
3243 Level.Distance = CurConstraint.getD(); in updateDirection()
3245 if (!SE->isKnownNonZero(Level.Distance)) // if may be zero in updateDirection()
3247 if (!SE->isKnownNonPositive(Level.Distance)) // if may be positive in updateDirection()
3249 if (!SE->isKnownNonNegative(Level.Distance)) // if may be negative in updateDirection()
3251 Level.Direction &= NewDirection; in updateDirection()
3254 Level.Scalar = false; in updateDirection()
3255 Level.Distance = nullptr; in updateDirection()
3259 Level.Scalar = false; in updateDirection()
3260 Level.Distance = nullptr; in updateDirection()
3277 Level.Direction &= NewDirection; in updateDirection()
3737 unsigned Level; in depends() local
3739 if (testSIV(Pair[SI].Src, Pair[SI].Dst, Level, Result, NewConstraint, in depends()
3788 unsigned Level; in depends() local
3791 if (testSIV(Pair[SJ].Src, Pair[SJ].Dst, Level, Result, NewConstraint, in depends()
3794 ConstrainedLevels.set(Level); in depends()
3795 if (intersectConstraints(&Constraints[Level], &NewConstraint)) { in depends()
3796 if (Constraints[Level].isEmpty()) { in depends()
4056 unsigned Level; in getSplitIteration() local
4058 (void) testSIV(Pair[SI].Src, Pair[SI].Dst, Level, in getSplitIteration()
4060 if (Level == SplitLevel) { in getSplitIteration()
4095 unsigned Level; in getSplitIteration() local
4097 (void) testSIV(Pair[SJ].Src, Pair[SJ].Dst, Level, in getSplitIteration()
4099 if (Level == SplitLevel && SplitIter) in getSplitIteration()
4101 ConstrainedLevels.set(Level); in getSplitIteration()
4102 if (intersectConstraints(&Constraints[Level], &NewConstraint)) in getSplitIteration()