Lines Matching refs:SCEV
250 const SCEV *FullDependence::getDistance(unsigned Level) const { in getDistance()
293 const SCEV *DependenceAnalysis::Constraint::getX() const { in getX()
301 const SCEV *DependenceAnalysis::Constraint::getY() const { in getY()
309 const SCEV *DependenceAnalysis::Constraint::getA() const { in getA()
318 const SCEV *DependenceAnalysis::Constraint::getB() const { in getB()
327 const SCEV *DependenceAnalysis::Constraint::getC() const { in getC()
336 const SCEV *DependenceAnalysis::Constraint::getD() const { in getD()
350 void DependenceAnalysis::Constraint::setPoint(const SCEV *X, in setPoint()
351 const SCEV *Y, in setPoint()
360 void DependenceAnalysis::Constraint::setLine(const SCEV *AA, in setLine()
361 const SCEV *BB, in setLine()
362 const SCEV *CC, in setLine()
372 void DependenceAnalysis::Constraint::setDistance(const SCEV *D, in setDistance()
468 const SCEV *Prod1 = SE->getMulExpr(X->getA(), Y->getB()); in intersectConstraints()
469 const SCEV *Prod2 = SE->getMulExpr(X->getB(), Y->getA()); in intersectConstraints()
487 const SCEV *C1B2 = SE->getMulExpr(X->getC(), Y->getB()); in intersectConstraints()
488 const SCEV *C1A2 = SE->getMulExpr(X->getC(), Y->getA()); in intersectConstraints()
489 const SCEV *C2B1 = SE->getMulExpr(Y->getC(), X->getB()); in intersectConstraints()
490 const SCEV *C2A1 = SE->getMulExpr(Y->getC(), X->getA()); in intersectConstraints()
491 const SCEV *A1B2 = SE->getMulExpr(X->getA(), Y->getB()); in intersectConstraints()
492 const SCEV *A2B1 = SE->getMulExpr(Y->getA(), X->getB()); in intersectConstraints()
553 const SCEV *A1X1 = SE->getMulExpr(Y->getA(), X->getX()); in intersectConstraints()
554 const SCEV *B1Y1 = SE->getMulExpr(Y->getB(), X->getY()); in intersectConstraints()
555 const SCEV *Sum = SE->getAddExpr(A1X1, B1Y1); in intersectConstraints()
597 const SCEV *Distance = getDistance(II); in dump()
762 bool DependenceAnalysis::isLoopInvariant(const SCEV *Expression, in isLoopInvariant()
774 void DependenceAnalysis::collectCommonLoops(const SCEV *Expression, in collectCommonLoops()
791 const SCEV *Src = Pair->Src; in removeMatchingExtensions()
792 const SCEV *Dst = Pair->Dst; in removeMatchingExtensions()
807 bool DependenceAnalysis::checkSrcSubscript(const SCEV *Src, in checkSrcSubscript()
813 const SCEV *Start = AddRec->getStart(); in checkSrcSubscript()
814 const SCEV *Step = AddRec->getStepRecurrence(*SE); in checkSrcSubscript()
825 bool DependenceAnalysis::checkDstSubscript(const SCEV *Dst, in checkDstSubscript()
831 const SCEV *Start = AddRec->getStart(); in checkDstSubscript()
832 const SCEV *Step = AddRec->getStepRecurrence(*SE); in checkDstSubscript()
844 DependenceAnalysis::classifyPair(const SCEV *Src, const Loop *SrcLoopNest, in classifyPair()
845 const SCEV *Dst, const Loop *DstLoopNest, in classifyPair()
879 const SCEV *X, in isKnownPredicate()
880 const SCEV *Y) const { in isKnownPredicate()
889 const SCEV *Xop = CX->getOperand(); in isKnownPredicate()
890 const SCEV *Yop = CY->getOperand(); in isKnownPredicate()
904 const SCEV *Delta = SE->getMinusSCEV(X, Y); in isKnownPredicate()
929 const SCEV *DependenceAnalysis::collectUpperBound(const Loop *L, in collectUpperBound()
932 const SCEV *UB = SE->getBackedgeTakenCount(L); in collectUpperBound()
944 if (const SCEV *UB = collectUpperBound(L, T)) in collectConstantUpperBound()
960 bool DependenceAnalysis::testZIV(const SCEV *Src, in testZIV()
961 const SCEV *Dst, in testZIV()
1008 bool DependenceAnalysis::strongSIVtest(const SCEV *Coeff, in strongSIVtest()
1009 const SCEV *SrcConst, in strongSIVtest()
1010 const SCEV *DstConst, in strongSIVtest()
1026 const SCEV *Delta = SE->getMinusSCEV(SrcConst, DstConst); in strongSIVtest()
1031 if (const SCEV *UpperBound = collectUpperBound(CurLoop, Delta->getType())) { in strongSIVtest()
1034 const SCEV *AbsDelta = in strongSIVtest()
1036 const SCEV *AbsCoeff = in strongSIVtest()
1038 const SCEV *Product = SE->getMulExpr(UpperBound, AbsCoeff); in strongSIVtest()
1147 bool DependenceAnalysis::weakCrossingSIVtest(const SCEV *Coeff, in weakCrossingSIVtest()
1148 const SCEV *SrcConst, in weakCrossingSIVtest()
1149 const SCEV *DstConst, in weakCrossingSIVtest()
1154 const SCEV *&SplitIter) const { in weakCrossingSIVtest()
1163 const SCEV *Delta = SE->getMinusSCEV(DstConst, SrcConst); in weakCrossingSIVtest()
1215 if (const SCEV *UpperBound = collectUpperBound(CurLoop, Delta->getType())) { in weakCrossingSIVtest()
1217 const SCEV *ConstantTwo = SE->getConstant(UpperBound->getType(), 2); in weakCrossingSIVtest()
1218 const SCEV *ML = SE->getMulExpr(SE->getMulExpr(ConstCoeff, UpperBound), in weakCrossingSIVtest()
1369 bool DependenceAnalysis::exactSIVtest(const SCEV *SrcCoeff, in exactSIVtest()
1370 const SCEV *DstCoeff, in exactSIVtest()
1371 const SCEV *SrcConst, in exactSIVtest()
1372 const SCEV *DstConst, in exactSIVtest()
1386 const SCEV *Delta = SE->getMinusSCEV(DstConst, SrcConst); in exactSIVtest()
1581 bool DependenceAnalysis::weakZeroSrcSIVtest(const SCEV *DstCoeff, in weakZeroSrcSIVtest()
1582 const SCEV *SrcConst, in weakZeroSrcSIVtest()
1583 const SCEV *DstConst, in weakZeroSrcSIVtest()
1599 const SCEV *Delta = SE->getMinusSCEV(SrcConst, DstConst); in weakZeroSrcSIVtest()
1614 const SCEV *AbsCoeff = in weakZeroSrcSIVtest()
1617 const SCEV *NewDelta = in weakZeroSrcSIVtest()
1622 if (const SCEV *UpperBound = collectUpperBound(CurLoop, Delta->getType())) { in weakZeroSrcSIVtest()
1624 const SCEV *Product = SE->getMulExpr(AbsCoeff, UpperBound); in weakZeroSrcSIVtest()
1692 bool DependenceAnalysis::weakZeroDstSIVtest(const SCEV *SrcCoeff, in weakZeroDstSIVtest()
1693 const SCEV *SrcConst, in weakZeroDstSIVtest()
1694 const SCEV *DstConst, in weakZeroDstSIVtest()
1709 const SCEV *Delta = SE->getMinusSCEV(DstConst, SrcConst); in weakZeroDstSIVtest()
1724 const SCEV *AbsCoeff = in weakZeroDstSIVtest()
1727 const SCEV *NewDelta = in weakZeroDstSIVtest()
1732 if (const SCEV *UpperBound = collectUpperBound(CurLoop, Delta->getType())) { in weakZeroDstSIVtest()
1734 const SCEV *Product = SE->getMulExpr(AbsCoeff, UpperBound); in weakZeroDstSIVtest()
1778 bool DependenceAnalysis::exactRDIVtest(const SCEV *SrcCoeff, in exactRDIVtest()
1779 const SCEV *DstCoeff, in exactRDIVtest()
1780 const SCEV *SrcConst, in exactRDIVtest()
1781 const SCEV *DstConst, in exactRDIVtest()
1792 const SCEV *Delta = SE->getMinusSCEV(DstConst, SrcConst); in exactRDIVtest()
1922 bool DependenceAnalysis::symbolicRDIVtest(const SCEV *A1, in symbolicRDIVtest()
1923 const SCEV *A2, in symbolicRDIVtest()
1924 const SCEV *C1, in symbolicRDIVtest()
1925 const SCEV *C2, in symbolicRDIVtest()
1935 const SCEV *N1 = collectUpperBound(Loop1, A1->getType()); in symbolicRDIVtest()
1936 const SCEV *N2 = collectUpperBound(Loop2, A1->getType()); in symbolicRDIVtest()
1939 const SCEV *C2_C1 = SE->getMinusSCEV(C2, C1); in symbolicRDIVtest()
1940 const SCEV *C1_C2 = SE->getMinusSCEV(C1, C2); in symbolicRDIVtest()
1948 const SCEV *A1N1 = SE->getMulExpr(A1, N1); in symbolicRDIVtest()
1957 const SCEV *A2N2 = SE->getMulExpr(A2, N2); in symbolicRDIVtest()
1969 const SCEV *A1N1 = SE->getMulExpr(A1, N1); in symbolicRDIVtest()
1970 const SCEV *A2N2 = SE->getMulExpr(A2, N2); in symbolicRDIVtest()
1971 const SCEV *A1N1_A2N2 = SE->getMinusSCEV(A1N1, A2N2); in symbolicRDIVtest()
1990 const SCEV *A1N1 = SE->getMulExpr(A1, N1); in symbolicRDIVtest()
1991 const SCEV *A2N2 = SE->getMulExpr(A2, N2); in symbolicRDIVtest()
1992 const SCEV *A1N1_A2N2 = SE->getMinusSCEV(A1N1, A2N2); in symbolicRDIVtest()
2009 const SCEV *A1N1 = SE->getMulExpr(A1, N1); in symbolicRDIVtest()
2018 const SCEV *A2N2 = SE->getMulExpr(A2, N2); in symbolicRDIVtest()
2039 bool DependenceAnalysis::testSIV(const SCEV *Src, in testSIV()
2040 const SCEV *Dst, in testSIV()
2044 const SCEV *&SplitIter) const { in testSIV()
2050 const SCEV *SrcConst = SrcAddRec->getStart(); in testSIV()
2051 const SCEV *DstConst = DstAddRec->getStart(); in testSIV()
2052 const SCEV *SrcCoeff = SrcAddRec->getStepRecurrence(*SE); in testSIV()
2053 const SCEV *DstCoeff = DstAddRec->getStepRecurrence(*SE); in testSIV()
2073 const SCEV *SrcConst = SrcAddRec->getStart(); in testSIV()
2074 const SCEV *SrcCoeff = SrcAddRec->getStepRecurrence(*SE); in testSIV()
2075 const SCEV *DstConst = Dst; in testSIV()
2083 const SCEV *DstConst = DstAddRec->getStart(); in testSIV()
2084 const SCEV *DstCoeff = DstAddRec->getStepRecurrence(*SE); in testSIV()
2085 const SCEV *SrcConst = Src; in testSIV()
2110 bool DependenceAnalysis::testRDIV(const SCEV *Src, in testRDIV()
2111 const SCEV *Dst, in testRDIV()
2119 const SCEV *SrcConst, *DstConst; in testRDIV()
2120 const SCEV *SrcCoeff, *DstCoeff; in testRDIV()
2177 bool DependenceAnalysis::testMIV(const SCEV *Src, in testMIV()
2178 const SCEV *Dst, in testMIV()
2219 bool DependenceAnalysis::gcdMIVtest(const SCEV *Src, in gcdMIVtest()
2220 const SCEV *Dst, in gcdMIVtest()
2231 const SCEV *Coefficients = Src; in gcdMIVtest()
2234 const SCEV *Coeff = AddRec->getStepRecurrence(*SE); in gcdMIVtest()
2246 const SCEV *SrcConst = Coefficients; in gcdMIVtest()
2255 const SCEV *Coeff = AddRec->getStepRecurrence(*SE); in gcdMIVtest()
2267 const SCEV *DstConst = Coefficients; in gcdMIVtest()
2270 const SCEV *Delta = SE->getMinusSCEV(DstConst, SrcConst); in gcdMIVtest()
2276 const SCEV *Operand = Sum->getOperand(Op); in gcdMIVtest()
2330 const SCEV *SrcCoeff = AddRec->getStepRecurrence(*SE); in gcdMIVtest()
2331 const SCEV *DstCoeff = SE->getMinusSCEV(SrcCoeff, SrcCoeff); in gcdMIVtest()
2332 const SCEV *Inner = Src; in gcdMIVtest()
2335 const SCEV *Coeff = AddRec->getStepRecurrence(*SE); in gcdMIVtest()
2353 const SCEV *Coeff = AddRec->getStepRecurrence(*SE); in gcdMIVtest()
2433 bool DependenceAnalysis::banerjeeMIVtest(const SCEV *Src, in banerjeeMIVtest()
2434 const SCEV *Dst, in banerjeeMIVtest()
2440 const SCEV *A0; in banerjeeMIVtest()
2443 const SCEV *B0; in banerjeeMIVtest()
2446 const SCEV *Delta = SE->getMinusSCEV(B0, A0); in banerjeeMIVtest()
2520 const SCEV *Delta) const { in exploreDirections()
2618 const SCEV *Delta) const { in testBounds()
2620 if (const SCEV *LowerBound = getLowerBound(Bound)) in testBounds()
2623 if (const SCEV *UpperBound = getUpperBound(Bound)) in testBounds()
2693 const SCEV *Delta = SE->getMinusSCEV(A[K].Coeff, B[K].Coeff); in findBoundsEQ()
2694 const SCEV *NegativePart = getNegativePart(Delta); in findBoundsEQ()
2697 const SCEV *PositivePart = getPositivePart(Delta); in findBoundsEQ()
2704 const SCEV *Delta = SE->getMinusSCEV(A[K].Coeff, B[K].Coeff); in findBoundsEQ()
2705 const SCEV *NegativePart = getNegativePart(Delta); in findBoundsEQ()
2708 const SCEV *PositivePart = getPositivePart(Delta); in findBoundsEQ()
2735 const SCEV *Iter_1 = in findBoundsLT()
2738 const SCEV *NegPart = in findBoundsLT()
2742 const SCEV *PosPart = in findBoundsLT()
2750 const SCEV *NegPart = in findBoundsLT()
2754 const SCEV *PosPart = in findBoundsLT()
2782 const SCEV *Iter_1 = in findBoundsGT()
2785 const SCEV *NegPart = in findBoundsGT()
2789 const SCEV *PosPart = in findBoundsGT()
2797 const SCEV *NegPart = getNegativePart(SE->getMinusSCEV(A[K].Coeff, B[K].PosPart)); in findBoundsGT()
2800 const SCEV *PosPart = getPositivePart(SE->getMinusSCEV(A[K].Coeff, B[K].NegPart)); in findBoundsGT()
2808 const SCEV *DependenceAnalysis::getPositivePart(const SCEV *X) const { in getPositivePart()
2814 const SCEV *DependenceAnalysis::getNegativePart(const SCEV *X) const { in getNegativePart()
2823 DependenceAnalysis::collectCoeffInfo(const SCEV *Subscript, in collectCoeffInfo()
2825 const SCEV *&Constant) const { in collectCoeffInfo()
2826 const SCEV *Zero = SE->getConstant(Subscript->getType(), 0); in collectCoeffInfo()
2869 const SCEV *DependenceAnalysis::getLowerBound(BoundInfo *Bound) const { in getLowerBound()
2870 const SCEV *Sum = Bound[1].Lower[Bound[1].Direction]; in getLowerBound()
2885 const SCEV *DependenceAnalysis::getUpperBound(BoundInfo *Bound) const { in getUpperBound()
2886 const SCEV *Sum = Bound[1].Upper[Bound[1].Direction]; in getUpperBound()
2906 const SCEV *DependenceAnalysis::findCoefficient(const SCEV *Expr, in findCoefficient()
2922 const SCEV *DependenceAnalysis::zeroCoefficient(const SCEV *Expr, in zeroCoefficient()
2941 const SCEV *DependenceAnalysis::addToCoefficient(const SCEV *Expr, in addToCoefficient()
2943 const SCEV *Value) const { in addToCoefficient()
2949 SCEV::FlagAnyWrap); // Worst case, with no info. in addToCoefficient()
2951 const SCEV *Sum = SE->getAddExpr(AddRec->getStepRecurrence(*SE), Value); in addToCoefficient()
2963 SCEV::FlagAnyWrap); in addToCoefficient()
2982 bool DependenceAnalysis::propagate(const SCEV *&Src, in propagate()
2983 const SCEV *&Dst, in propagate()
3007 bool DependenceAnalysis::propagateDistance(const SCEV *&Src, in propagateDistance()
3008 const SCEV *&Dst, in propagateDistance()
3013 const SCEV *A_K = findCoefficient(Src, CurLoop); in propagateDistance()
3016 const SCEV *DA_K = SE->getMulExpr(A_K, CurConstraint.getD()); in propagateDistance()
3034 bool DependenceAnalysis::propagateLine(const SCEV *&Src, in propagateLine()
3035 const SCEV *&Dst, in propagateLine()
3039 const SCEV *A = CurConstraint.getA(); in propagateLine()
3040 const SCEV *B = CurConstraint.getB(); in propagateLine()
3041 const SCEV *C = CurConstraint.getC(); in propagateLine()
3053 const SCEV *AP_K = findCoefficient(Dst, CurLoop); in propagateLine()
3068 const SCEV *A_K = findCoefficient(Src, CurLoop); in propagateLine()
3082 const SCEV *A_K = findCoefficient(Src, CurLoop); in propagateLine()
3091 const SCEV *A_K = findCoefficient(Src, CurLoop); in propagateLine()
3109 bool DependenceAnalysis::propagatePoint(const SCEV *&Src, in propagatePoint()
3110 const SCEV *&Dst, in propagatePoint()
3113 const SCEV *A_K = findCoefficient(Src, CurLoop); in propagatePoint()
3114 const SCEV *AP_K = findCoefficient(Dst, CurLoop); in propagatePoint()
3115 const SCEV *XA_K = SE->getMulExpr(A_K, CurConstraint.getX()); in propagatePoint()
3116 const SCEV *YAP_K = SE->getMulExpr(AP_K, CurConstraint.getY()); in propagatePoint()
3183 bool DependenceAnalysis::tryDelinearize(const SCEV *SrcSCEV, in tryDelinearize()
3184 const SCEV *DstSCEV, in tryDelinearize()
3186 const SCEV *ElementSize) const { in tryDelinearize()
3204 SmallVector<const SCEV *, 4> Terms; in tryDelinearize()
3209 SmallVector<const SCEV *, 4> Sizes; in tryDelinearize()
3213 SmallVector<const SCEV *, 4> SrcSubscripts, DstSubscripts; in tryDelinearize()
3328 const SCEV *SrcPtrSCEV = SE->getSCEV(SrcGEP->getPointerOperand()); in depends()
3329 const SCEV *DstPtrSCEV = SE->getSCEV(DstGEP->getPointerOperand()); in depends()
3353 const SCEV *SrcSCEV = SE->getSCEV(SrcPtr); in depends()
3354 const SCEV *DstSCEV = SE->getSCEV(DstPtr); in depends()
3509 const SCEV *SplitIter = nullptr; in depends()
3557 const SCEV *SplitIter = nullptr; in depends()
3732 const SCEV *DependenceAnalysis::getSplitIteration(const Dependence *Dep, in getSplitIteration()
3759 const SCEV *SrcPtrSCEV = SE->getSCEV(SrcGEP->getPointerOperand()); in getSplitIteration()
3760 const SCEV *DstPtrSCEV = SE->getSCEV(DstGEP->getPointerOperand()); in getSplitIteration()
3779 const SCEV *SrcSCEV = SE->getSCEV(SrcPtr); in getSplitIteration()
3780 const SCEV *DstSCEV = SE->getSCEV(DstPtr); in getSplitIteration()
3852 const SCEV *SplitIter = nullptr; in getSplitIteration()
3891 const SCEV *SplitIter = nullptr; in getSplitIteration()