Lines Matching refs:Level
195 for (unsigned Level = 1; Level <= D->getLevels(); Level++) { in dumpExampleDependence() local
196 if (D->isSplitable(Level)) { in dumpExampleDependence()
197 OS << " da analyze - split level = " << Level; in dumpExampleDependence()
198 OS << ", iteration = " << *DA->getSplitIteration(*D, Level); in dumpExampleDependence()
291 for (unsigned Level = 1; Level <= Levels; ++Level) { in isDirectionNegative() local
292 unsigned char Direction = DV[Level - 1].Direction; in isDirectionNegative()
310 for (unsigned Level = 1; Level <= Levels; ++Level) { in normalize() local
311 unsigned char Direction = DV[Level - 1].Direction; in normalize()
319 DV[Level - 1].Direction = RevDirection; in normalize()
321 if (DV[Level - 1].Distance != nullptr) in normalize()
322 DV[Level - 1].Distance = in normalize()
323 SE->getNegativeSCEV(DV[Level - 1].Distance); in normalize()
334 unsigned FullDependence::getDirection(unsigned Level) const { in getDirection()
335 assert(0 < Level && Level <= Levels && "Level out of range"); in getDirection()
336 return DV[Level - 1].Direction; in getDirection()
341 const SCEV *FullDependence::getDistance(unsigned Level) const { in getDistance()
342 assert(0 < Level && Level <= Levels && "Level out of range"); in getDistance()
343 return DV[Level - 1].Distance; in getDistance()
350 bool FullDependence::isScalar(unsigned Level) const { in isScalar()
351 assert(0 < Level && Level <= Levels && "Level out of range"); in isScalar()
352 return DV[Level - 1].Scalar; in isScalar()
358 bool FullDependence::isPeelFirst(unsigned Level) const { in isPeelFirst()
359 assert(0 < Level && Level <= Levels && "Level out of range"); in isPeelFirst()
360 return DV[Level - 1].PeelFirst; in isPeelFirst()
366 bool FullDependence::isPeelLast(unsigned Level) const { in isPeelLast()
367 assert(0 < Level && Level <= Levels && "Level out of range"); in isPeelLast()
368 return DV[Level - 1].PeelLast; in isPeelLast()
373 bool FullDependence::isSplitable(unsigned Level) const { in isSplitable()
374 assert(0 < Level && Level <= Levels && "Level out of range"); in isSplitable()
375 return DV[Level - 1].Splitable; in isSplitable()
880 unsigned Level = LoopNest->getLoopDepth(); in collectCommonLoops() local
881 if (Level <= CommonLevels && !SE->isLoopInvariant(Expression, LoopNest)) in collectCommonLoops()
882 Loops.set(Level); in collectCommonLoops()
1232 unsigned Level, FullDependence &Result, in strongSIVtest() argument
1242 assert(0 < Level && Level <= CommonLevels && "level out of range"); in strongSIVtest()
1243 Level--; in strongSIVtest()
1282 Result.DV[Level].Distance = SE->getConstant(Distance); in strongSIVtest()
1285 Result.DV[Level].Direction &= Dependence::DVEntry::LT; in strongSIVtest()
1287 Result.DV[Level].Direction &= Dependence::DVEntry::GT; in strongSIVtest()
1289 Result.DV[Level].Direction &= Dependence::DVEntry::EQ; in strongSIVtest()
1294 Result.DV[Level].Distance = Delta; in strongSIVtest()
1296 Result.DV[Level].Direction &= Dependence::DVEntry::EQ; in strongSIVtest()
1302 Result.DV[Level].Distance = Delta; // since X/1 == X in strongSIVtest()
1330 if (NewDirection < Result.DV[Level].Direction) in strongSIVtest()
1332 Result.DV[Level].Direction &= NewDirection; in strongSIVtest()
1368 const Loop *CurLoop, unsigned Level, FullDependence &Result, in weakCrossingSIVtest() argument
1375 assert(0 < Level && Level <= CommonLevels && "Level out of range"); in weakCrossingSIVtest()
1376 Level--; in weakCrossingSIVtest()
1382 Result.DV[Level].Direction &= ~Dependence::DVEntry::LT; in weakCrossingSIVtest()
1383 Result.DV[Level].Direction &= ~Dependence::DVEntry::GT; in weakCrossingSIVtest()
1385 if (!Result.DV[Level].Direction) { in weakCrossingSIVtest()
1389 Result.DV[Level].Distance = Delta; // = 0 in weakCrossingSIVtest()
1396 Result.DV[Level].Splitable = true; in weakCrossingSIVtest()
1442 Result.DV[Level].Direction &= ~Dependence::DVEntry::LT; in weakCrossingSIVtest()
1443 Result.DV[Level].Direction &= ~Dependence::DVEntry::GT; in weakCrossingSIVtest()
1445 if (!Result.DV[Level].Direction) { in weakCrossingSIVtest()
1449 Result.DV[Level].Splitable = false; in weakCrossingSIVtest()
1450 Result.DV[Level].Distance = SE->getZero(Delta->getType()); in weakCrossingSIVtest()
1476 Result.DV[Level].Direction &= ~Dependence::DVEntry::EQ; in weakCrossingSIVtest()
1568 const Loop *CurLoop, unsigned Level, in exactSIVtest() argument
1577 assert(0 < Level && Level <= CommonLevels && "Level out of range"); in exactSIVtest()
1578 Level--; in exactSIVtest()
1709 Result.DV[Level].Direction &= NewDirection; in exactSIVtest()
1710 if (Result.DV[Level].Direction == Dependence::DVEntry::NONE) in exactSIVtest()
1714 return Result.DV[Level].Direction == Dependence::DVEntry::NONE; in exactSIVtest()
1762 const Loop *CurLoop, unsigned Level, in weakZeroSrcSIVtest() argument
1773 assert(0 < Level && Level <= MaxLevels && "Level out of range"); in weakZeroSrcSIVtest()
1774 Level--; in weakZeroSrcSIVtest()
1781 if (Level < CommonLevels) { in weakZeroSrcSIVtest()
1782 Result.DV[Level].Direction &= Dependence::DVEntry::GE; in weakZeroSrcSIVtest()
1783 Result.DV[Level].PeelFirst = true; in weakZeroSrcSIVtest()
1809 if (Level < CommonLevels) { in weakZeroSrcSIVtest()
1810 Result.DV[Level].Direction &= Dependence::DVEntry::LE; in weakZeroSrcSIVtest()
1811 Result.DV[Level].PeelLast = true; in weakZeroSrcSIVtest()
1872 const Loop *CurLoop, unsigned Level, in weakZeroDstSIVtest() argument
1882 assert(0 < Level && Level <= SrcLevels && "Level out of range"); in weakZeroDstSIVtest()
1883 Level--; in weakZeroDstSIVtest()
1890 if (Level < CommonLevels) { in weakZeroDstSIVtest()
1891 Result.DV[Level].Direction &= Dependence::DVEntry::LE; in weakZeroDstSIVtest()
1892 Result.DV[Level].PeelFirst = true; in weakZeroDstSIVtest()
1918 if (Level < CommonLevels) { in weakZeroDstSIVtest()
1919 Result.DV[Level].Direction &= Dependence::DVEntry::GE; in weakZeroDstSIVtest()
1920 Result.DV[Level].PeelLast = true; in weakZeroDstSIVtest()
2226 bool DependenceInfo::testSIV(const SCEV *Src, const SCEV *Dst, unsigned &Level, in testSIV() argument
2241 Level = mapSrcLoop(CurLoop); in testSIV()
2245 Level, Result, NewConstraint); in testSIV()
2248 Level, Result, NewConstraint, SplitIter); in testSIV()
2251 Level, Result, NewConstraint); in testSIV()
2261 Level = mapSrcLoop(CurLoop); in testSIV()
2263 Level, Result, NewConstraint) || in testSIV()
2271 Level = mapDstLoop(CurLoop); in testSIV()
2273 CurLoop, Level, Result, NewConstraint) || in testSIV()
2559 unsigned Level = mapSrcLoop(CurLoop); in gcdMIVtest() local
2560 Result.DV[Level - 1].Direction &= ~Dependence::DVEntry::EQ; in gcdMIVtest()
2685 unsigned DependenceInfo::exploreDirections(unsigned Level, CoefficientInfo *A, in exploreDirections() argument
2703 if (Level > CommonLevels) { in exploreDirections()
2732 if (Loops[Level]) { in exploreDirections()
2733 if (Level > DepthExpanded) { in exploreDirections()
2734 DepthExpanded = Level; 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()
2740 LLVM_DEBUG(dbgs() << "\tBound for level = " << Level << '\n'); 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()
2803 bool DependenceInfo::testBounds(unsigned char DirKind, unsigned Level, in testBounds() argument
2805 Bound[Level].Direction = DirKind; in testBounds()
3297 void DependenceInfo::updateDirection(Dependence::DVEntry &Level, in updateDirection() argument
3305 Level.Scalar = false; in updateDirection()
3306 Level.Distance = CurConstraint.getD(); in updateDirection()
3308 if (!SE->isKnownNonZero(Level.Distance)) // if may be zero in updateDirection()
3310 if (!SE->isKnownNonPositive(Level.Distance)) // if may be positive in updateDirection()
3312 if (!SE->isKnownNonNegative(Level.Distance)) // if may be negative in updateDirection()
3314 Level.Direction &= NewDirection; in updateDirection()
3317 Level.Scalar = false; in updateDirection()
3318 Level.Distance = nullptr; in updateDirection()
3322 Level.Scalar = false; in updateDirection()
3323 Level.Distance = nullptr; in updateDirection()
3340 Level.Direction &= NewDirection; in updateDirection()
3800 unsigned Level; in depends() local
3802 if (testSIV(Pair[SI].Src, Pair[SI].Dst, Level, Result, NewConstraint, in depends()
3851 unsigned Level; in depends() local
3854 if (testSIV(Pair[SJ].Src, Pair[SJ].Dst, Level, Result, NewConstraint, in depends()
3857 ConstrainedLevels.set(Level); in depends()
3858 if (intersectConstraints(&Constraints[Level], &NewConstraint)) { in depends()
3859 if (Constraints[Level].isEmpty()) { in depends()
4119 unsigned Level; in getSplitIteration() local
4121 (void) testSIV(Pair[SI].Src, Pair[SI].Dst, Level, in getSplitIteration()
4123 if (Level == SplitLevel) { in getSplitIteration()
4158 unsigned Level; in getSplitIteration() local
4160 (void) testSIV(Pair[SJ].Src, Pair[SJ].Dst, Level, in getSplitIteration()
4162 if (Level == SplitLevel && SplitIter) in getSplitIteration()
4164 ConstrainedLevels.set(Level); in getSplitIteration()
4165 if (intersectConstraints(&Constraints[Level], &NewConstraint)) in getSplitIteration()