Lines Matching refs:Level
176 for (unsigned Level = 1; Level <= D->getLevels(); Level++) { in dumpExampleDependence() local
177 if (D->isSplitable(Level)) { in dumpExampleDependence()
178 OS << "da analyze - split level = " << Level; in dumpExampleDependence()
179 OS << ", iteration = " << *DA->getSplitIteration(*D, Level); in dumpExampleDependence()
256 unsigned FullDependence::getDirection(unsigned Level) const { in getDirection()
257 assert(0 < Level && Level <= Levels && "Level out of range"); in getDirection()
258 return DV[Level - 1].Direction; in getDirection()
263 const SCEV *FullDependence::getDistance(unsigned Level) const { in getDistance()
264 assert(0 < Level && Level <= Levels && "Level out of range"); in getDistance()
265 return DV[Level - 1].Distance; in getDistance()
272 bool FullDependence::isScalar(unsigned Level) const { in isScalar()
273 assert(0 < Level && Level <= Levels && "Level out of range"); in isScalar()
274 return DV[Level - 1].Scalar; in isScalar()
280 bool FullDependence::isPeelFirst(unsigned Level) const { in isPeelFirst()
281 assert(0 < Level && Level <= Levels && "Level out of range"); in isPeelFirst()
282 return DV[Level - 1].PeelFirst; in isPeelFirst()
288 bool FullDependence::isPeelLast(unsigned Level) const { in isPeelLast()
289 assert(0 < Level && Level <= Levels && "Level out of range"); in isPeelLast()
290 return DV[Level - 1].PeelLast; in isPeelLast()
295 bool FullDependence::isSplitable(unsigned Level) const { in isSplitable()
296 assert(0 < Level && Level <= Levels && "Level out of range"); in isSplitable()
297 return DV[Level - 1].Splitable; in isSplitable()
792 unsigned Level = LoopNest->getLoopDepth(); in collectCommonLoops() local
793 if (Level <= CommonLevels && !SE->isLoopInvariant(Expression, LoopNest)) in collectCommonLoops()
794 Loops.set(Level); in collectCommonLoops()
1141 unsigned Level, FullDependence &Result, in strongSIVtest() argument
1151 assert(0 < Level && Level <= CommonLevels && "level out of range"); in strongSIVtest()
1152 Level--; in strongSIVtest()
1191 Result.DV[Level].Distance = SE->getConstant(Distance); in strongSIVtest()
1194 Result.DV[Level].Direction &= Dependence::DVEntry::LT; in strongSIVtest()
1196 Result.DV[Level].Direction &= Dependence::DVEntry::GT; in strongSIVtest()
1198 Result.DV[Level].Direction &= Dependence::DVEntry::EQ; in strongSIVtest()
1203 Result.DV[Level].Distance = Delta; in strongSIVtest()
1205 Result.DV[Level].Direction &= Dependence::DVEntry::EQ; in strongSIVtest()
1211 Result.DV[Level].Distance = Delta; // since X/1 == X in strongSIVtest()
1239 if (NewDirection < Result.DV[Level].Direction) in strongSIVtest()
1241 Result.DV[Level].Direction &= NewDirection; in strongSIVtest()
1277 const Loop *CurLoop, unsigned Level, FullDependence &Result, in weakCrossingSIVtest() argument
1284 assert(0 < Level && Level <= CommonLevels && "Level out of range"); in weakCrossingSIVtest()
1285 Level--; in weakCrossingSIVtest()
1291 Result.DV[Level].Direction &= unsigned(~Dependence::DVEntry::LT); in weakCrossingSIVtest()
1292 Result.DV[Level].Direction &= unsigned(~Dependence::DVEntry::GT); in weakCrossingSIVtest()
1294 if (!Result.DV[Level].Direction) { in weakCrossingSIVtest()
1298 Result.DV[Level].Distance = Delta; // = 0 in weakCrossingSIVtest()
1305 Result.DV[Level].Splitable = true; in weakCrossingSIVtest()
1351 Result.DV[Level].Direction &= unsigned(~Dependence::DVEntry::LT); in weakCrossingSIVtest()
1352 Result.DV[Level].Direction &= unsigned(~Dependence::DVEntry::GT); in weakCrossingSIVtest()
1354 if (!Result.DV[Level].Direction) { in weakCrossingSIVtest()
1358 Result.DV[Level].Splitable = false; in weakCrossingSIVtest()
1359 Result.DV[Level].Distance = SE->getZero(Delta->getType()); in weakCrossingSIVtest()
1385 Result.DV[Level].Direction &= unsigned(~Dependence::DVEntry::EQ); in weakCrossingSIVtest()
1488 const Loop *CurLoop, unsigned Level, in exactSIVtest() argument
1497 assert(0 < Level && Level <= CommonLevels && "Level out of range"); in exactSIVtest()
1498 Level--; in exactSIVtest()
1646 Result.DV[Level].Direction &= NewDirection; in exactSIVtest()
1647 if (Result.DV[Level].Direction == Dependence::DVEntry::NONE) in exactSIVtest()
1649 return Result.DV[Level].Direction == Dependence::DVEntry::NONE; in exactSIVtest()
1698 const Loop *CurLoop, unsigned Level, in weakZeroSrcSIVtest() argument
1709 assert(0 < Level && Level <= MaxLevels && "Level out of range"); in weakZeroSrcSIVtest()
1710 Level--; in weakZeroSrcSIVtest()
1717 if (Level < CommonLevels) { in weakZeroSrcSIVtest()
1718 Result.DV[Level].Direction &= Dependence::DVEntry::GE; in weakZeroSrcSIVtest()
1719 Result.DV[Level].PeelFirst = true; in weakZeroSrcSIVtest()
1745 if (Level < CommonLevels) { in weakZeroSrcSIVtest()
1746 Result.DV[Level].Direction &= Dependence::DVEntry::LE; in weakZeroSrcSIVtest()
1747 Result.DV[Level].PeelLast = true; in weakZeroSrcSIVtest()
1808 const Loop *CurLoop, unsigned Level, in weakZeroDstSIVtest() argument
1818 assert(0 < Level && Level <= SrcLevels && "Level out of range"); in weakZeroDstSIVtest()
1819 Level--; in weakZeroDstSIVtest()
1826 if (Level < CommonLevels) { in weakZeroDstSIVtest()
1827 Result.DV[Level].Direction &= Dependence::DVEntry::LE; in weakZeroDstSIVtest()
1828 Result.DV[Level].PeelFirst = true; in weakZeroDstSIVtest()
1854 if (Level < CommonLevels) { in weakZeroDstSIVtest()
1855 Result.DV[Level].Direction &= Dependence::DVEntry::GE; in weakZeroDstSIVtest()
1856 Result.DV[Level].PeelLast = true; in weakZeroDstSIVtest()
2146 bool DependenceInfo::testSIV(const SCEV *Src, const SCEV *Dst, unsigned &Level, in testSIV() argument
2161 Level = mapSrcLoop(CurLoop); in testSIV()
2165 Level, Result, NewConstraint); in testSIV()
2168 Level, Result, NewConstraint, SplitIter); in testSIV()
2171 Level, Result, NewConstraint); in testSIV()
2181 Level = mapSrcLoop(CurLoop); in testSIV()
2183 Level, Result, NewConstraint) || in testSIV()
2191 Level = mapDstLoop(CurLoop); in testSIV()
2193 CurLoop, Level, Result, NewConstraint) || in testSIV()
2479 unsigned Level = mapSrcLoop(CurLoop); in gcdMIVtest() local
2480 Result.DV[Level - 1].Direction &= unsigned(~Dependence::DVEntry::EQ); in gcdMIVtest()
2605 unsigned DependenceInfo::exploreDirections(unsigned Level, CoefficientInfo *A, in exploreDirections() argument
2610 if (Level > CommonLevels) { in exploreDirections()
2639 if (Loops[Level]) { in exploreDirections()
2640 if (Level > DepthExpanded) { in exploreDirections()
2641 DepthExpanded = Level; in exploreDirections()
2643 findBoundsLT(A, B, Bound, Level); in exploreDirections()
2644 findBoundsGT(A, B, Bound, Level); in exploreDirections()
2645 findBoundsEQ(A, B, Bound, Level); in exploreDirections()
2647 LLVM_DEBUG(dbgs() << "\tBound for level = " << Level << '\n'); in exploreDirections()
2649 if (Bound[Level].Lower[Dependence::DVEntry::LT]) in exploreDirections()
2650 LLVM_DEBUG(dbgs() << *Bound[Level].Lower[Dependence::DVEntry::LT] in exploreDirections()
2654 if (Bound[Level].Upper[Dependence::DVEntry::LT]) in exploreDirections()
2655 LLVM_DEBUG(dbgs() << *Bound[Level].Upper[Dependence::DVEntry::LT] in exploreDirections()
2660 if (Bound[Level].Lower[Dependence::DVEntry::EQ]) in exploreDirections()
2661 LLVM_DEBUG(dbgs() << *Bound[Level].Lower[Dependence::DVEntry::EQ] in exploreDirections()
2665 if (Bound[Level].Upper[Dependence::DVEntry::EQ]) in exploreDirections()
2666 LLVM_DEBUG(dbgs() << *Bound[Level].Upper[Dependence::DVEntry::EQ] in exploreDirections()
2671 if (Bound[Level].Lower[Dependence::DVEntry::GT]) in exploreDirections()
2672 LLVM_DEBUG(dbgs() << *Bound[Level].Lower[Dependence::DVEntry::GT] in exploreDirections()
2676 if (Bound[Level].Upper[Dependence::DVEntry::GT]) in exploreDirections()
2677 LLVM_DEBUG(dbgs() << *Bound[Level].Upper[Dependence::DVEntry::GT] in exploreDirections()
2687 if (testBounds(Dependence::DVEntry::LT, Level, Bound, Delta)) in exploreDirections()
2688 NewDeps += exploreDirections(Level + 1, A, B, Bound, in exploreDirections()
2692 if (testBounds(Dependence::DVEntry::EQ, Level, Bound, Delta)) in exploreDirections()
2693 NewDeps += exploreDirections(Level + 1, A, B, Bound, in exploreDirections()
2697 if (testBounds(Dependence::DVEntry::GT, Level, Bound, Delta)) in exploreDirections()
2698 NewDeps += exploreDirections(Level + 1, A, B, Bound, in exploreDirections()
2701 Bound[Level].Direction = Dependence::DVEntry::ALL; in exploreDirections()
2705 return exploreDirections(Level + 1, A, B, Bound, Loops, DepthExpanded, Delta); in exploreDirections()
2710 bool DependenceInfo::testBounds(unsigned char DirKind, unsigned Level, in testBounds() argument
2712 Bound[Level].Direction = DirKind; in testBounds()
3204 void DependenceInfo::updateDirection(Dependence::DVEntry &Level, in updateDirection() argument
3212 Level.Scalar = false; in updateDirection()
3213 Level.Distance = CurConstraint.getD(); in updateDirection()
3215 if (!SE->isKnownNonZero(Level.Distance)) // if may be zero in updateDirection()
3217 if (!SE->isKnownNonPositive(Level.Distance)) // if may be positive in updateDirection()
3219 if (!SE->isKnownNonNegative(Level.Distance)) // if may be negative in updateDirection()
3221 Level.Direction &= NewDirection; in updateDirection()
3224 Level.Scalar = false; in updateDirection()
3225 Level.Distance = nullptr; in updateDirection()
3229 Level.Scalar = false; in updateDirection()
3230 Level.Distance = nullptr; in updateDirection()
3247 Level.Direction &= NewDirection; in updateDirection()
3585 unsigned Level; in depends() local
3587 if (testSIV(Pair[SI].Src, Pair[SI].Dst, Level, Result, NewConstraint, in depends()
3636 unsigned Level; in depends() local
3639 if (testSIV(Pair[SJ].Src, Pair[SJ].Dst, Level, Result, NewConstraint, in depends()
3642 ConstrainedLevels.set(Level); in depends()
3643 if (intersectConstraints(&Constraints[Level], &NewConstraint)) { in depends()
3644 if (Constraints[Level].isEmpty()) { in depends()
3906 unsigned Level; in getSplitIteration() local
3908 (void) testSIV(Pair[SI].Src, Pair[SI].Dst, Level, in getSplitIteration()
3910 if (Level == SplitLevel) { in getSplitIteration()
3945 unsigned Level; in getSplitIteration() local
3947 (void) testSIV(Pair[SJ].Src, Pair[SJ].Dst, Level, in getSplitIteration()
3949 if (Level == SplitLevel && SplitIter) in getSplitIteration()
3951 ConstrainedLevels.set(Level); in getSplitIteration()
3952 if (intersectConstraints(&Constraints[Level], &NewConstraint)) in getSplitIteration()