• Home
  • Raw
  • Download

Lines Matching refs:SCEV

256 const SCEV *FullDependence::getDistance(unsigned Level) const {  in getDistance()
299 const SCEV *DependenceInfo::Constraint::getX() const { in getX()
307 const SCEV *DependenceInfo::Constraint::getY() const { in getY()
315 const SCEV *DependenceInfo::Constraint::getA() const { in getA()
324 const SCEV *DependenceInfo::Constraint::getB() const { in getB()
333 const SCEV *DependenceInfo::Constraint::getC() const { in getC()
342 const SCEV *DependenceInfo::Constraint::getD() const { in getD()
355 void DependenceInfo::Constraint::setPoint(const SCEV *X, const SCEV *Y, in setPoint()
363 void DependenceInfo::Constraint::setLine(const SCEV *AA, const SCEV *BB, in setLine()
364 const SCEV *CC, const Loop *CurLoop) { in setLine()
372 void DependenceInfo::Constraint::setDistance(const SCEV *D, in setDistance()
463 const SCEV *Prod1 = SE->getMulExpr(X->getA(), Y->getB()); in intersectConstraints()
464 const SCEV *Prod2 = SE->getMulExpr(X->getB(), Y->getA()); in intersectConstraints()
482 const SCEV *C1B2 = SE->getMulExpr(X->getC(), Y->getB()); in intersectConstraints()
483 const SCEV *C1A2 = SE->getMulExpr(X->getC(), Y->getA()); in intersectConstraints()
484 const SCEV *C2B1 = SE->getMulExpr(Y->getC(), X->getB()); in intersectConstraints()
485 const SCEV *C2A1 = SE->getMulExpr(Y->getC(), X->getA()); in intersectConstraints()
486 const SCEV *A1B2 = SE->getMulExpr(X->getA(), Y->getB()); in intersectConstraints()
487 const SCEV *A2B1 = SE->getMulExpr(Y->getA(), X->getB()); in intersectConstraints()
548 const SCEV *A1X1 = SE->getMulExpr(Y->getA(), X->getX()); in intersectConstraints()
549 const SCEV *B1Y1 = SE->getMulExpr(Y->getB(), X->getY()); in intersectConstraints()
550 const SCEV *Sum = SE->getAddExpr(A1X1, B1Y1); in intersectConstraints()
592 const SCEV *Distance = getDistance(II); in dump()
754 bool DependenceInfo::isLoopInvariant(const SCEV *Expression, in isLoopInvariant()
766 void DependenceInfo::collectCommonLoops(const SCEV *Expression, in collectCommonLoops()
785 const SCEV *Src = Pair->Src; in unifySubscriptType()
786 const SCEV *Dst = Pair->Dst; in unifySubscriptType()
810 const SCEV *Src = Pair->Src; in unifySubscriptType()
811 const SCEV *Dst = Pair->Dst; in unifySubscriptType()
835 const SCEV *Src = Pair->Src; in removeMatchingExtensions()
836 const SCEV *Dst = Pair->Dst; in removeMatchingExtensions()
841 const SCEV *SrcCastOp = SrcCast->getOperand(); in removeMatchingExtensions()
842 const SCEV *DstCastOp = DstCast->getOperand(); in removeMatchingExtensions()
853 bool DependenceInfo::checkSrcSubscript(const SCEV *Src, const Loop *LoopNest, in checkSrcSubscript()
858 const SCEV *Start = AddRec->getStart(); in checkSrcSubscript()
859 const SCEV *Step = AddRec->getStepRecurrence(*SE); in checkSrcSubscript()
860 const SCEV *UB = SE->getBackedgeTakenCount(AddRec->getLoop()); in checkSrcSubscript()
878 bool DependenceInfo::checkDstSubscript(const SCEV *Dst, const Loop *LoopNest, in checkDstSubscript()
883 const SCEV *Start = AddRec->getStart(); in checkDstSubscript()
884 const SCEV *Step = AddRec->getStepRecurrence(*SE); in checkDstSubscript()
885 const SCEV *UB = SE->getBackedgeTakenCount(AddRec->getLoop()); in checkDstSubscript()
904 DependenceInfo::classifyPair(const SCEV *Src, const Loop *SrcLoopNest, in classifyPair()
905 const SCEV *Dst, const Loop *DstLoopNest, in classifyPair()
938 bool DependenceInfo::isKnownPredicate(ICmpInst::Predicate Pred, const SCEV *X, in isKnownPredicate()
939 const SCEV *Y) const { in isKnownPredicate()
948 const SCEV *Xop = CX->getOperand(); in isKnownPredicate()
949 const SCEV *Yop = CY->getOperand(); in isKnownPredicate()
963 const SCEV *Delta = SE->getMinusSCEV(X, Y); in isKnownPredicate()
990 const SCEV *DependenceInfo::collectUpperBound(const Loop *L, Type *T) const { in collectUpperBound()
992 const SCEV *UB = SE->getBackedgeTakenCount(L); in collectUpperBound()
1003 if (const SCEV *UB = collectUpperBound(L, T)) in collectConstantUpperBound()
1019 bool DependenceInfo::testZIV(const SCEV *Src, const SCEV *Dst, in testZIV()
1066 bool DependenceInfo::strongSIVtest(const SCEV *Coeff, const SCEV *SrcConst, in strongSIVtest()
1067 const SCEV *DstConst, const Loop *CurLoop, in strongSIVtest()
1081 const SCEV *Delta = SE->getMinusSCEV(SrcConst, DstConst); in strongSIVtest()
1086 if (const SCEV *UpperBound = collectUpperBound(CurLoop, Delta->getType())) { in strongSIVtest()
1089 const SCEV *AbsDelta = in strongSIVtest()
1091 const SCEV *AbsCoeff = in strongSIVtest()
1093 const SCEV *Product = SE->getMulExpr(UpperBound, AbsCoeff); in strongSIVtest()
1203 const SCEV *Coeff, const SCEV *SrcConst, const SCEV *DstConst, in weakCrossingSIVtest()
1205 Constraint &NewConstraint, const SCEV *&SplitIter) const { in weakCrossingSIVtest()
1214 const SCEV *Delta = SE->getMinusSCEV(DstConst, SrcConst); in weakCrossingSIVtest()
1264 if (const SCEV *UpperBound = collectUpperBound(CurLoop, Delta->getType())) { in weakCrossingSIVtest()
1266 const SCEV *ConstantTwo = SE->getConstant(UpperBound->getType(), 2); in weakCrossingSIVtest()
1267 const SCEV *ML = SE->getMulExpr(SE->getMulExpr(ConstCoeff, UpperBound), in weakCrossingSIVtest()
1413 bool DependenceInfo::exactSIVtest(const SCEV *SrcCoeff, const SCEV *DstCoeff, in exactSIVtest()
1414 const SCEV *SrcConst, const SCEV *DstConst, in exactSIVtest()
1427 const SCEV *Delta = SE->getMinusSCEV(DstConst, SrcConst); in exactSIVtest()
1622 bool DependenceInfo::weakZeroSrcSIVtest(const SCEV *DstCoeff, in weakZeroSrcSIVtest()
1623 const SCEV *SrcConst, in weakZeroSrcSIVtest()
1624 const SCEV *DstConst, in weakZeroSrcSIVtest()
1639 const SCEV *Delta = SE->getMinusSCEV(SrcConst, DstConst); in weakZeroSrcSIVtest()
1654 const SCEV *AbsCoeff = in weakZeroSrcSIVtest()
1657 const SCEV *NewDelta = in weakZeroSrcSIVtest()
1662 if (const SCEV *UpperBound = collectUpperBound(CurLoop, Delta->getType())) { in weakZeroSrcSIVtest()
1664 const SCEV *Product = SE->getMulExpr(AbsCoeff, UpperBound); in weakZeroSrcSIVtest()
1732 bool DependenceInfo::weakZeroDstSIVtest(const SCEV *SrcCoeff, in weakZeroDstSIVtest()
1733 const SCEV *SrcConst, in weakZeroDstSIVtest()
1734 const SCEV *DstConst, in weakZeroDstSIVtest()
1748 const SCEV *Delta = SE->getMinusSCEV(DstConst, SrcConst); in weakZeroDstSIVtest()
1763 const SCEV *AbsCoeff = in weakZeroDstSIVtest()
1766 const SCEV *NewDelta = in weakZeroDstSIVtest()
1771 if (const SCEV *UpperBound = collectUpperBound(CurLoop, Delta->getType())) { in weakZeroDstSIVtest()
1773 const SCEV *Product = SE->getMulExpr(AbsCoeff, UpperBound); in weakZeroDstSIVtest()
1817 bool DependenceInfo::exactRDIVtest(const SCEV *SrcCoeff, const SCEV *DstCoeff, in exactRDIVtest()
1818 const SCEV *SrcConst, const SCEV *DstConst, in exactRDIVtest()
1828 const SCEV *Delta = SE->getMinusSCEV(DstConst, SrcConst); in exactRDIVtest()
1958 bool DependenceInfo::symbolicRDIVtest(const SCEV *A1, const SCEV *A2, in symbolicRDIVtest()
1959 const SCEV *C1, const SCEV *C2, in symbolicRDIVtest()
1969 const SCEV *N1 = collectUpperBound(Loop1, A1->getType()); in symbolicRDIVtest()
1970 const SCEV *N2 = collectUpperBound(Loop2, A1->getType()); in symbolicRDIVtest()
1973 const SCEV *C2_C1 = SE->getMinusSCEV(C2, C1); in symbolicRDIVtest()
1974 const SCEV *C1_C2 = SE->getMinusSCEV(C1, C2); in symbolicRDIVtest()
1982 const SCEV *A1N1 = SE->getMulExpr(A1, N1); in symbolicRDIVtest()
1991 const SCEV *A2N2 = SE->getMulExpr(A2, N2); in symbolicRDIVtest()
2003 const SCEV *A1N1 = SE->getMulExpr(A1, N1); in symbolicRDIVtest()
2004 const SCEV *A2N2 = SE->getMulExpr(A2, N2); in symbolicRDIVtest()
2005 const SCEV *A1N1_A2N2 = SE->getMinusSCEV(A1N1, A2N2); in symbolicRDIVtest()
2024 const SCEV *A1N1 = SE->getMulExpr(A1, N1); in symbolicRDIVtest()
2025 const SCEV *A2N2 = SE->getMulExpr(A2, N2); in symbolicRDIVtest()
2026 const SCEV *A1N1_A2N2 = SE->getMinusSCEV(A1N1, A2N2); in symbolicRDIVtest()
2043 const SCEV *A1N1 = SE->getMulExpr(A1, N1); in symbolicRDIVtest()
2052 const SCEV *A2N2 = SE->getMulExpr(A2, N2); in symbolicRDIVtest()
2073 bool DependenceInfo::testSIV(const SCEV *Src, const SCEV *Dst, unsigned &Level, in testSIV()
2075 const SCEV *&SplitIter) const { in testSIV()
2081 const SCEV *SrcConst = SrcAddRec->getStart(); in testSIV()
2082 const SCEV *DstConst = DstAddRec->getStart(); in testSIV()
2083 const SCEV *SrcCoeff = SrcAddRec->getStepRecurrence(*SE); in testSIV()
2084 const SCEV *DstCoeff = DstAddRec->getStepRecurrence(*SE); in testSIV()
2104 const SCEV *SrcConst = SrcAddRec->getStart(); in testSIV()
2105 const SCEV *SrcCoeff = SrcAddRec->getStepRecurrence(*SE); in testSIV()
2106 const SCEV *DstConst = Dst; in testSIV()
2114 const SCEV *DstConst = DstAddRec->getStart(); in testSIV()
2115 const SCEV *DstCoeff = DstAddRec->getStepRecurrence(*SE); in testSIV()
2116 const SCEV *SrcConst = Src; in testSIV()
2141 bool DependenceInfo::testRDIV(const SCEV *Src, const SCEV *Dst, in testRDIV()
2149 const SCEV *SrcConst, *DstConst; in testRDIV()
2150 const SCEV *SrcCoeff, *DstCoeff; in testRDIV()
2207 bool DependenceInfo::testMIV(const SCEV *Src, const SCEV *Dst, in testMIV()
2221 const SCEVConstant *getConstantPart(const SCEV *Expr) { in getConstantPart()
2249 bool DependenceInfo::gcdMIVtest(const SCEV *Src, const SCEV *Dst, in gcdMIVtest()
2260 const SCEV *Coefficients = Src; in gcdMIVtest()
2263 const SCEV *Coeff = AddRec->getStepRecurrence(*SE); in gcdMIVtest()
2273 const SCEV *SrcConst = Coefficients; in gcdMIVtest()
2282 const SCEV *Coeff = AddRec->getStepRecurrence(*SE); in gcdMIVtest()
2292 const SCEV *DstConst = Coefficients; in gcdMIVtest()
2295 const SCEV *Delta = SE->getMinusSCEV(DstConst, SrcConst); in gcdMIVtest()
2301 const SCEV *Operand = Sum->getOperand(Op); in gcdMIVtest()
2355 const SCEV *SrcCoeff = AddRec->getStepRecurrence(*SE); in gcdMIVtest()
2356 const SCEV *DstCoeff = SE->getMinusSCEV(SrcCoeff, SrcCoeff); in gcdMIVtest()
2357 const SCEV *Inner = Src; in gcdMIVtest()
2360 const SCEV *Coeff = AddRec->getStepRecurrence(*SE); in gcdMIVtest()
2377 const SCEV *Coeff = AddRec->getStepRecurrence(*SE); in gcdMIVtest()
2452 bool DependenceInfo::banerjeeMIVtest(const SCEV *Src, const SCEV *Dst, in banerjeeMIVtest()
2458 const SCEV *A0; in banerjeeMIVtest()
2461 const SCEV *B0; in banerjeeMIVtest()
2464 const SCEV *Delta = SE->getMinusSCEV(B0, A0); in banerjeeMIVtest()
2536 const SCEV *Delta) const { in exploreDirections()
2632 BoundInfo *Bound, const SCEV *Delta) const { in testBounds()
2634 if (const SCEV *LowerBound = getLowerBound(Bound)) in testBounds()
2637 if (const SCEV *UpperBound = getUpperBound(Bound)) in testBounds()
2703 const SCEV *Delta = SE->getMinusSCEV(A[K].Coeff, B[K].Coeff); in findBoundsEQ()
2704 const SCEV *NegativePart = getNegativePart(Delta); in findBoundsEQ()
2707 const SCEV *PositivePart = getPositivePart(Delta); in findBoundsEQ()
2714 const SCEV *Delta = SE->getMinusSCEV(A[K].Coeff, B[K].Coeff); in findBoundsEQ()
2715 const SCEV *NegativePart = getNegativePart(Delta); in findBoundsEQ()
2718 const SCEV *PositivePart = getPositivePart(Delta); in findBoundsEQ()
2743 const SCEV *Iter_1 = SE->getMinusSCEV( in findBoundsLT()
2745 const SCEV *NegPart = in findBoundsLT()
2749 const SCEV *PosPart = in findBoundsLT()
2757 const SCEV *NegPart = in findBoundsLT()
2761 const SCEV *PosPart = in findBoundsLT()
2787 const SCEV *Iter_1 = SE->getMinusSCEV( in findBoundsGT()
2789 const SCEV *NegPart = in findBoundsGT()
2793 const SCEV *PosPart = in findBoundsGT()
2801 const SCEV *NegPart = getNegativePart(SE->getMinusSCEV(A[K].Coeff, B[K].PosPart)); in findBoundsGT()
2804 const SCEV *PosPart = getPositivePart(SE->getMinusSCEV(A[K].Coeff, B[K].NegPart)); in findBoundsGT()
2812 const SCEV *DependenceInfo::getPositivePart(const SCEV *X) const { in getPositivePart()
2818 const SCEV *DependenceInfo::getNegativePart(const SCEV *X) const { in getNegativePart()
2827 DependenceInfo::collectCoeffInfo(const SCEV *Subscript, bool SrcFlag, in collectCoeffInfo()
2828 const SCEV *&Constant) const { in collectCoeffInfo()
2829 const SCEV *Zero = SE->getZero(Subscript->getType()); in collectCoeffInfo()
2872 const SCEV *DependenceInfo::getLowerBound(BoundInfo *Bound) const { in getLowerBound()
2873 const SCEV *Sum = Bound[1].Lower[Bound[1].Direction]; in getLowerBound()
2888 const SCEV *DependenceInfo::getUpperBound(BoundInfo *Bound) const { in getUpperBound()
2889 const SCEV *Sum = Bound[1].Upper[Bound[1].Direction]; in getUpperBound()
2909 const SCEV *DependenceInfo::findCoefficient(const SCEV *Expr, in findCoefficient()
2925 const SCEV *DependenceInfo::zeroCoefficient(const SCEV *Expr, in zeroCoefficient()
2944 const SCEV *DependenceInfo::addToCoefficient(const SCEV *Expr, in addToCoefficient()
2946 const SCEV *Value) const { in addToCoefficient()
2952 SCEV::FlagAnyWrap); // Worst case, with no info. in addToCoefficient()
2954 const SCEV *Sum = SE->getAddExpr(AddRec->getStepRecurrence(*SE), Value); in addToCoefficient()
2963 return SE->getAddRecExpr(AddRec, Value, TargetLoop, SCEV::FlagAnyWrap); in addToCoefficient()
2981 bool DependenceInfo::propagate(const SCEV *&Src, const SCEV *&Dst, in propagate()
3005 bool DependenceInfo::propagateDistance(const SCEV *&Src, const SCEV *&Dst, in propagateDistance()
3010 const SCEV *A_K = findCoefficient(Src, CurLoop); in propagateDistance()
3013 const SCEV *DA_K = SE->getMulExpr(A_K, CurConstraint.getD()); in propagateDistance()
3031 bool DependenceInfo::propagateLine(const SCEV *&Src, const SCEV *&Dst, in propagateLine()
3035 const SCEV *A = CurConstraint.getA(); in propagateLine()
3036 const SCEV *B = CurConstraint.getB(); in propagateLine()
3037 const SCEV *C = CurConstraint.getC(); in propagateLine()
3049 const SCEV *AP_K = findCoefficient(Dst, CurLoop); in propagateLine()
3064 const SCEV *A_K = findCoefficient(Src, CurLoop); in propagateLine()
3078 const SCEV *A_K = findCoefficient(Src, CurLoop); in propagateLine()
3087 const SCEV *A_K = findCoefficient(Src, CurLoop); in propagateLine()
3105 bool DependenceInfo::propagatePoint(const SCEV *&Src, const SCEV *&Dst, in propagatePoint()
3108 const SCEV *A_K = findCoefficient(Src, CurLoop); in propagatePoint()
3109 const SCEV *AP_K = findCoefficient(Dst, CurLoop); in propagatePoint()
3110 const SCEV *XA_K = SE->getMulExpr(A_K, CurConstraint.getX()); in propagatePoint()
3111 const SCEV *YAP_K = SE->getMulExpr(AP_K, CurConstraint.getY()); in propagatePoint()
3186 const SCEV *SrcAccessFn = in tryDelinearize()
3188 const SCEV *DstAccessFn = in tryDelinearize()
3199 const SCEV *ElementSize = SE->getElementSize(Src); in tryDelinearize()
3203 const SCEV *SrcSCEV = SE->getMinusSCEV(SrcAccessFn, SrcBase); in tryDelinearize()
3204 const SCEV *DstSCEV = SE->getMinusSCEV(DstAccessFn, DstBase); in tryDelinearize()
3212 SmallVector<const SCEV *, 4> Terms; in tryDelinearize()
3217 SmallVector<const SCEV *, 4> Sizes; in tryDelinearize()
3221 SmallVector<const SCEV *, 4> SrcSubscripts, DstSubscripts; in tryDelinearize()
3337 const SCEV *SrcPtrSCEV = SE->getSCEV(SrcGEP->getPointerOperand()); in depends()
3338 const SCEV *DstPtrSCEV = SE->getSCEV(DstGEP->getPointerOperand()); in depends()
3363 const SCEV *SrcSCEV = SE->getSCEV(SrcPtr); in depends()
3364 const SCEV *DstSCEV = SE->getSCEV(DstPtr); in depends()
3519 const SCEV *SplitIter = nullptr; in depends()
3570 const SCEV *SplitIter = nullptr; in depends()
3745 const SCEV *DependenceInfo::getSplitIteration(const Dependence &Dep, in getSplitIteration()
3771 const SCEV *SrcPtrSCEV = SE->getSCEV(SrcGEP->getPointerOperand()); in getSplitIteration()
3772 const SCEV *DstPtrSCEV = SE->getSCEV(DstGEP->getPointerOperand()); in getSplitIteration()
3791 const SCEV *SrcSCEV = SE->getSCEV(SrcPtr); in getSplitIteration()
3792 const SCEV *DstSCEV = SE->getSCEV(DstPtr); in getSplitIteration()
3865 const SCEV *SplitIter = nullptr; in getSplitIteration()
3904 const SCEV *SplitIter = nullptr; in getSplitIteration()