Lines Matching refs:SCEV
278 const SCEV *FullDependence::getDistance(unsigned Level) const { in getDistance()
321 const SCEV *DependenceInfo::Constraint::getX() const { in getX()
329 const SCEV *DependenceInfo::Constraint::getY() const { in getY()
337 const SCEV *DependenceInfo::Constraint::getA() const { in getA()
346 const SCEV *DependenceInfo::Constraint::getB() const { in getB()
355 const SCEV *DependenceInfo::Constraint::getC() const { in getC()
364 const SCEV *DependenceInfo::Constraint::getD() const { in getD()
377 void DependenceInfo::Constraint::setPoint(const SCEV *X, const SCEV *Y, in setPoint()
385 void DependenceInfo::Constraint::setLine(const SCEV *AA, const SCEV *BB, in setLine()
386 const SCEV *CC, const Loop *CurLoop) { in setLine()
394 void DependenceInfo::Constraint::setDistance(const SCEV *D, in setDistance()
486 const SCEV *Prod1 = SE->getMulExpr(X->getA(), Y->getB()); in intersectConstraints()
487 const SCEV *Prod2 = SE->getMulExpr(X->getB(), Y->getA()); in intersectConstraints()
505 const SCEV *C1B2 = SE->getMulExpr(X->getC(), Y->getB()); in intersectConstraints()
506 const SCEV *C1A2 = SE->getMulExpr(X->getC(), Y->getA()); in intersectConstraints()
507 const SCEV *C2B1 = SE->getMulExpr(Y->getC(), X->getB()); in intersectConstraints()
508 const SCEV *C2A1 = SE->getMulExpr(Y->getC(), X->getA()); in intersectConstraints()
509 const SCEV *A1B2 = SE->getMulExpr(X->getA(), Y->getB()); in intersectConstraints()
510 const SCEV *A2B1 = SE->getMulExpr(Y->getA(), X->getB()); in intersectConstraints()
571 const SCEV *A1X1 = SE->getMulExpr(Y->getA(), X->getX()); in intersectConstraints()
572 const SCEV *B1Y1 = SE->getMulExpr(Y->getB(), X->getY()); in intersectConstraints()
573 const SCEV *Sum = SE->getAddExpr(A1X1, B1Y1); in intersectConstraints()
615 const SCEV *Distance = getDistance(II); in dump()
795 bool DependenceInfo::isLoopInvariant(const SCEV *Expression, in isLoopInvariant()
813 void DependenceInfo::collectCommonLoops(const SCEV *Expression, in collectCommonLoops()
832 const SCEV *Src = Pair->Src; in unifySubscriptType()
833 const SCEV *Dst = Pair->Dst; in unifySubscriptType()
857 const SCEV *Src = Pair->Src; in unifySubscriptType()
858 const SCEV *Dst = Pair->Dst; in unifySubscriptType()
882 const SCEV *Src = Pair->Src; in removeMatchingExtensions()
883 const SCEV *Dst = Pair->Dst; in removeMatchingExtensions()
888 const SCEV *SrcCastOp = SrcCast->getOperand(); in removeMatchingExtensions()
889 const SCEV *DstCastOp = DstCast->getOperand(); in removeMatchingExtensions()
899 bool DependenceInfo::checkSubscript(const SCEV *Expr, const Loop *LoopNest, in checkSubscript()
916 const SCEV *Start = AddRec->getStart(); in checkSubscript()
917 const SCEV *Step = AddRec->getStepRecurrence(*SE); in checkSubscript()
918 const SCEV *UB = SE->getBackedgeTakenCount(AddRec->getLoop()); in checkSubscript()
937 bool DependenceInfo::checkSrcSubscript(const SCEV *Src, const Loop *LoopNest, in checkSrcSubscript()
944 bool DependenceInfo::checkDstSubscript(const SCEV *Dst, const Loop *LoopNest, in checkDstSubscript()
954 DependenceInfo::classifyPair(const SCEV *Src, const Loop *SrcLoopNest, in classifyPair()
955 const SCEV *Dst, const Loop *DstLoopNest, in classifyPair()
988 bool DependenceInfo::isKnownPredicate(ICmpInst::Predicate Pred, const SCEV *X, in isKnownPredicate()
989 const SCEV *Y) const { in isKnownPredicate()
998 const SCEV *Xop = CX->getOperand(); in isKnownPredicate()
999 const SCEV *Yop = CY->getOperand(); in isKnownPredicate()
1013 const SCEV *Delta = SE->getMinusSCEV(X, Y); in isKnownPredicate()
1035 bool DependenceInfo::isKnownLessThan(const SCEV *S, const SCEV *Size) const { in isKnownLessThan()
1047 const SCEV *Bound = SE->getMinusSCEV(S, Size); in isKnownLessThan()
1050 const SCEV *BECount = SE->getBackedgeTakenCount(AddRec->getLoop()); in isKnownLessThan()
1052 const SCEV *Limit = AddRec->evaluateAtIteration(BECount, *SE); in isKnownLessThan()
1060 const SCEV *LimitedBound = in isKnownLessThan()
1065 bool DependenceInfo::isKnownNonNegative(const SCEV *S, const Value *Ptr) const { in isKnownNonNegative()
1091 const SCEV *DependenceInfo::collectUpperBound(const Loop *L, Type *T) const { in collectUpperBound()
1093 const SCEV *UB = SE->getBackedgeTakenCount(L); in collectUpperBound()
1104 if (const SCEV *UB = collectUpperBound(L, T)) in collectConstantUpperBound()
1120 bool DependenceInfo::testZIV(const SCEV *Src, const SCEV *Dst, in testZIV()
1167 bool DependenceInfo::strongSIVtest(const SCEV *Coeff, const SCEV *SrcConst, in strongSIVtest()
1168 const SCEV *DstConst, const Loop *CurLoop, in strongSIVtest()
1182 const SCEV *Delta = SE->getMinusSCEV(SrcConst, DstConst); in strongSIVtest()
1187 if (const SCEV *UpperBound = collectUpperBound(CurLoop, Delta->getType())) { in strongSIVtest()
1190 const SCEV *AbsDelta = in strongSIVtest()
1192 const SCEV *AbsCoeff = in strongSIVtest()
1194 const SCEV *Product = SE->getMulExpr(UpperBound, AbsCoeff); in strongSIVtest()
1304 const SCEV *Coeff, const SCEV *SrcConst, const SCEV *DstConst, in weakCrossingSIVtest()
1306 Constraint &NewConstraint, const SCEV *&SplitIter) const { in weakCrossingSIVtest()
1315 const SCEV *Delta = SE->getMinusSCEV(DstConst, SrcConst); in weakCrossingSIVtest()
1365 if (const SCEV *UpperBound = collectUpperBound(CurLoop, Delta->getType())) { in weakCrossingSIVtest()
1367 const SCEV *ConstantTwo = SE->getConstant(UpperBound->getType(), 2); in weakCrossingSIVtest()
1368 const SCEV *ML = SE->getMulExpr(SE->getMulExpr(ConstCoeff, UpperBound), in weakCrossingSIVtest()
1503 bool DependenceInfo::exactSIVtest(const SCEV *SrcCoeff, const SCEV *DstCoeff, in exactSIVtest()
1504 const SCEV *SrcConst, const SCEV *DstConst, in exactSIVtest()
1517 const SCEV *Delta = SE->getMinusSCEV(DstConst, SrcConst); in exactSIVtest()
1696 bool DependenceInfo::weakZeroSrcSIVtest(const SCEV *DstCoeff, in weakZeroSrcSIVtest()
1697 const SCEV *SrcConst, in weakZeroSrcSIVtest()
1698 const SCEV *DstConst, in weakZeroSrcSIVtest()
1713 const SCEV *Delta = SE->getMinusSCEV(SrcConst, DstConst); in weakZeroSrcSIVtest()
1728 const SCEV *AbsCoeff = in weakZeroSrcSIVtest()
1731 const SCEV *NewDelta = in weakZeroSrcSIVtest()
1736 if (const SCEV *UpperBound = collectUpperBound(CurLoop, Delta->getType())) { in weakZeroSrcSIVtest()
1738 const SCEV *Product = SE->getMulExpr(AbsCoeff, UpperBound); in weakZeroSrcSIVtest()
1806 bool DependenceInfo::weakZeroDstSIVtest(const SCEV *SrcCoeff, in weakZeroDstSIVtest()
1807 const SCEV *SrcConst, in weakZeroDstSIVtest()
1808 const SCEV *DstConst, in weakZeroDstSIVtest()
1822 const SCEV *Delta = SE->getMinusSCEV(DstConst, SrcConst); in weakZeroDstSIVtest()
1837 const SCEV *AbsCoeff = in weakZeroDstSIVtest()
1840 const SCEV *NewDelta = in weakZeroDstSIVtest()
1845 if (const SCEV *UpperBound = collectUpperBound(CurLoop, Delta->getType())) { in weakZeroDstSIVtest()
1847 const SCEV *Product = SE->getMulExpr(AbsCoeff, UpperBound); in weakZeroDstSIVtest()
1891 bool DependenceInfo::exactRDIVtest(const SCEV *SrcCoeff, const SCEV *DstCoeff, in exactRDIVtest()
1892 const SCEV *SrcConst, const SCEV *DstConst, in exactRDIVtest()
1902 const SCEV *Delta = SE->getMinusSCEV(DstConst, SrcConst); in exactRDIVtest()
2048 bool DependenceInfo::symbolicRDIVtest(const SCEV *A1, const SCEV *A2, in symbolicRDIVtest()
2049 const SCEV *C1, const SCEV *C2, in symbolicRDIVtest()
2059 const SCEV *N1 = collectUpperBound(Loop1, A1->getType()); in symbolicRDIVtest()
2060 const SCEV *N2 = collectUpperBound(Loop2, A1->getType()); in symbolicRDIVtest()
2063 const SCEV *C2_C1 = SE->getMinusSCEV(C2, C1); in symbolicRDIVtest()
2064 const SCEV *C1_C2 = SE->getMinusSCEV(C1, C2); in symbolicRDIVtest()
2072 const SCEV *A1N1 = SE->getMulExpr(A1, N1); in symbolicRDIVtest()
2081 const SCEV *A2N2 = SE->getMulExpr(A2, N2); in symbolicRDIVtest()
2093 const SCEV *A1N1 = SE->getMulExpr(A1, N1); in symbolicRDIVtest()
2094 const SCEV *A2N2 = SE->getMulExpr(A2, N2); in symbolicRDIVtest()
2095 const SCEV *A1N1_A2N2 = SE->getMinusSCEV(A1N1, A2N2); in symbolicRDIVtest()
2114 const SCEV *A1N1 = SE->getMulExpr(A1, N1); in symbolicRDIVtest()
2115 const SCEV *A2N2 = SE->getMulExpr(A2, N2); in symbolicRDIVtest()
2116 const SCEV *A1N1_A2N2 = SE->getMinusSCEV(A1N1, A2N2); in symbolicRDIVtest()
2133 const SCEV *A1N1 = SE->getMulExpr(A1, N1); in symbolicRDIVtest()
2142 const SCEV *A2N2 = SE->getMulExpr(A2, N2); in symbolicRDIVtest()
2163 bool DependenceInfo::testSIV(const SCEV *Src, const SCEV *Dst, unsigned &Level, in testSIV()
2165 const SCEV *&SplitIter) const { in testSIV()
2171 const SCEV *SrcConst = SrcAddRec->getStart(); in testSIV()
2172 const SCEV *DstConst = DstAddRec->getStart(); in testSIV()
2173 const SCEV *SrcCoeff = SrcAddRec->getStepRecurrence(*SE); in testSIV()
2174 const SCEV *DstCoeff = DstAddRec->getStepRecurrence(*SE); in testSIV()
2194 const SCEV *SrcConst = SrcAddRec->getStart(); in testSIV()
2195 const SCEV *SrcCoeff = SrcAddRec->getStepRecurrence(*SE); in testSIV()
2196 const SCEV *DstConst = Dst; in testSIV()
2204 const SCEV *DstConst = DstAddRec->getStart(); in testSIV()
2205 const SCEV *DstCoeff = DstAddRec->getStepRecurrence(*SE); in testSIV()
2206 const SCEV *SrcConst = Src; in testSIV()
2231 bool DependenceInfo::testRDIV(const SCEV *Src, const SCEV *Dst, in testRDIV()
2239 const SCEV *SrcConst, *DstConst; in testRDIV()
2240 const SCEV *SrcCoeff, *DstCoeff; in testRDIV()
2297 bool DependenceInfo::testMIV(const SCEV *Src, const SCEV *Dst, in testMIV()
2311 const SCEVConstant *getConstantPart(const SCEV *Expr) { in getConstantPart()
2339 bool DependenceInfo::gcdMIVtest(const SCEV *Src, const SCEV *Dst, in gcdMIVtest()
2350 const SCEV *Coefficients = Src; in gcdMIVtest()
2353 const SCEV *Coeff = AddRec->getStepRecurrence(*SE); in gcdMIVtest()
2363 const SCEV *SrcConst = Coefficients; in gcdMIVtest()
2372 const SCEV *Coeff = AddRec->getStepRecurrence(*SE); in gcdMIVtest()
2382 const SCEV *DstConst = Coefficients; in gcdMIVtest()
2385 const SCEV *Delta = SE->getMinusSCEV(DstConst, SrcConst); in gcdMIVtest()
2391 const SCEV *Operand = Sum->getOperand(Op); in gcdMIVtest()
2445 const SCEV *SrcCoeff = AddRec->getStepRecurrence(*SE); in gcdMIVtest()
2446 const SCEV *DstCoeff = SE->getMinusSCEV(SrcCoeff, SrcCoeff); in gcdMIVtest()
2447 const SCEV *Inner = Src; in gcdMIVtest()
2450 const SCEV *Coeff = AddRec->getStepRecurrence(*SE); in gcdMIVtest()
2467 const SCEV *Coeff = AddRec->getStepRecurrence(*SE); in gcdMIVtest()
2542 bool DependenceInfo::banerjeeMIVtest(const SCEV *Src, const SCEV *Dst, in banerjeeMIVtest()
2548 const SCEV *A0; in banerjeeMIVtest()
2551 const SCEV *B0; in banerjeeMIVtest()
2554 const SCEV *Delta = SE->getMinusSCEV(B0, A0); in banerjeeMIVtest()
2626 const SCEV *Delta) const { in exploreDirections()
2741 BoundInfo *Bound, const SCEV *Delta) const { in testBounds()
2743 if (const SCEV *LowerBound = getLowerBound(Bound)) in testBounds()
2746 if (const SCEV *UpperBound = getUpperBound(Bound)) in testBounds()
2812 const SCEV *Delta = SE->getMinusSCEV(A[K].Coeff, B[K].Coeff); in findBoundsEQ()
2813 const SCEV *NegativePart = getNegativePart(Delta); in findBoundsEQ()
2816 const SCEV *PositivePart = getPositivePart(Delta); in findBoundsEQ()
2823 const SCEV *Delta = SE->getMinusSCEV(A[K].Coeff, B[K].Coeff); in findBoundsEQ()
2824 const SCEV *NegativePart = getNegativePart(Delta); in findBoundsEQ()
2827 const SCEV *PositivePart = getPositivePart(Delta); in findBoundsEQ()
2852 const SCEV *Iter_1 = SE->getMinusSCEV( in findBoundsLT()
2854 const SCEV *NegPart = in findBoundsLT()
2858 const SCEV *PosPart = in findBoundsLT()
2866 const SCEV *NegPart = in findBoundsLT()
2870 const SCEV *PosPart = in findBoundsLT()
2896 const SCEV *Iter_1 = SE->getMinusSCEV( in findBoundsGT()
2898 const SCEV *NegPart = in findBoundsGT()
2902 const SCEV *PosPart = in findBoundsGT()
2910 const SCEV *NegPart = getNegativePart(SE->getMinusSCEV(A[K].Coeff, B[K].PosPart)); in findBoundsGT()
2913 const SCEV *PosPart = getPositivePart(SE->getMinusSCEV(A[K].Coeff, B[K].NegPart)); in findBoundsGT()
2921 const SCEV *DependenceInfo::getPositivePart(const SCEV *X) const { in getPositivePart()
2927 const SCEV *DependenceInfo::getNegativePart(const SCEV *X) const { in getNegativePart()
2936 DependenceInfo::collectCoeffInfo(const SCEV *Subscript, bool SrcFlag, in collectCoeffInfo()
2937 const SCEV *&Constant) const { in collectCoeffInfo()
2938 const SCEV *Zero = SE->getZero(Subscript->getType()); in collectCoeffInfo()
2981 const SCEV *DependenceInfo::getLowerBound(BoundInfo *Bound) const { in getLowerBound()
2982 const SCEV *Sum = Bound[1].Lower[Bound[1].Direction]; in getLowerBound()
2997 const SCEV *DependenceInfo::getUpperBound(BoundInfo *Bound) const { in getUpperBound()
2998 const SCEV *Sum = Bound[1].Upper[Bound[1].Direction]; in getUpperBound()
3018 const SCEV *DependenceInfo::findCoefficient(const SCEV *Expr, in findCoefficient()
3034 const SCEV *DependenceInfo::zeroCoefficient(const SCEV *Expr, in zeroCoefficient()
3053 const SCEV *DependenceInfo::addToCoefficient(const SCEV *Expr, in addToCoefficient()
3055 const SCEV *Value) const { in addToCoefficient()
3061 SCEV::FlagAnyWrap); // Worst case, with no info. in addToCoefficient()
3063 const SCEV *Sum = SE->getAddExpr(AddRec->getStepRecurrence(*SE), Value); in addToCoefficient()
3072 return SE->getAddRecExpr(AddRec, Value, TargetLoop, SCEV::FlagAnyWrap); in addToCoefficient()
3090 bool DependenceInfo::propagate(const SCEV *&Src, const SCEV *&Dst, in propagate()
3114 bool DependenceInfo::propagateDistance(const SCEV *&Src, const SCEV *&Dst, in propagateDistance()
3119 const SCEV *A_K = findCoefficient(Src, CurLoop); in propagateDistance()
3122 const SCEV *DA_K = SE->getMulExpr(A_K, CurConstraint.getD()); in propagateDistance()
3140 bool DependenceInfo::propagateLine(const SCEV *&Src, const SCEV *&Dst, in propagateLine()
3144 const SCEV *A = CurConstraint.getA(); in propagateLine()
3145 const SCEV *B = CurConstraint.getB(); in propagateLine()
3146 const SCEV *C = CurConstraint.getC(); in propagateLine()
3159 const SCEV *AP_K = findCoefficient(Dst, CurLoop); in propagateLine()
3174 const SCEV *A_K = findCoefficient(Src, CurLoop); in propagateLine()
3188 const SCEV *A_K = findCoefficient(Src, CurLoop); in propagateLine()
3197 const SCEV *A_K = findCoefficient(Src, CurLoop); in propagateLine()
3215 bool DependenceInfo::propagatePoint(const SCEV *&Src, const SCEV *&Dst, in propagatePoint()
3218 const SCEV *A_K = findCoefficient(Src, CurLoop); in propagatePoint()
3219 const SCEV *AP_K = findCoefficient(Dst, CurLoop); in propagatePoint()
3220 const SCEV *XA_K = SE->getMulExpr(A_K, CurConstraint.getX()); in propagatePoint()
3221 const SCEV *YAP_K = SE->getMulExpr(AP_K, CurConstraint.getY()); in propagatePoint()
3295 const SCEV *SrcAccessFn = SE->getSCEVAtScope(SrcPtr, SrcLoop); in tryDelinearize()
3296 const SCEV *DstAccessFn = SE->getSCEVAtScope(DstPtr, DstLoop); in tryDelinearize()
3305 SmallVector<const SCEV *, 4> SrcSubscripts, DstSubscripts; in tryDelinearize()
3341 Instruction *Src, Instruction *Dst, const SCEV *SrcAccessFn, in tryDelinearizeFixedSize()
3342 const SCEV *DstAccessFn, SmallVectorImpl<const SCEV *> &SrcSubscripts, in tryDelinearizeFixedSize()
3343 SmallVectorImpl<const SCEV *> &DstSubscripts) { in tryDelinearizeFixedSize()
3385 SmallVectorImpl<const SCEV *> &Subscripts, in tryDelinearizeFixedSize()
3389 const SCEV *S = Subscripts[I]; in tryDelinearizeFixedSize()
3393 const SCEV *Range = SE->getConstant( in tryDelinearizeFixedSize()
3418 Instruction *Src, Instruction *Dst, const SCEV *SrcAccessFn, in tryDelinearizeParametricSize()
3419 const SCEV *DstAccessFn, SmallVectorImpl<const SCEV *> &SrcSubscripts, in tryDelinearizeParametricSize()
3420 SmallVectorImpl<const SCEV *> &DstSubscripts) { in tryDelinearizeParametricSize()
3431 const SCEV *ElementSize = SE->getElementSize(Src); in tryDelinearizeParametricSize()
3435 const SCEV *SrcSCEV = SE->getMinusSCEV(SrcAccessFn, SrcBase); in tryDelinearizeParametricSize()
3436 const SCEV *DstSCEV = SE->getMinusSCEV(DstAccessFn, DstBase); in tryDelinearizeParametricSize()
3444 SmallVector<const SCEV *, 4> Terms; in tryDelinearizeParametricSize()
3449 SmallVector<const SCEV *, 4> Sizes; in tryDelinearizeParametricSize()
3573 const SCEV *SrcSCEV = SE->getSCEV(SrcPtr); in depends()
3574 const SCEV *DstSCEV = SE->getSCEV(DstPtr); in depends()
3738 const SCEV *SplitIter = nullptr; in depends()
3789 const SCEV *SplitIter = nullptr; in depends()
3961 const SCEV *DependenceInfo::getSplitIteration(const Dependence &Dep, in getSplitIteration()
3984 const SCEV *SrcSCEV = SE->getSCEV(SrcPtr); in getSplitIteration()
3985 const SCEV *DstSCEV = SE->getSCEV(DstPtr); in getSplitIteration()
4057 const SCEV *SplitIter = nullptr; in getSplitIteration()
4096 const SCEV *SplitIter = nullptr; in getSplitIteration()