reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
478 const SCEV *Prod1 = SE->getMulExpr(X->getA(), Y->getB()); 479 const SCEV *Prod2 = SE->getMulExpr(X->getB(), Y->getA()); 483 Prod1 = SE->getMulExpr(X->getC(), Y->getB()); 484 Prod2 = SE->getMulExpr(X->getB(), Y->getC()); 497 const SCEV *C1B2 = SE->getMulExpr(X->getC(), Y->getB()); 498 const SCEV *C1A2 = SE->getMulExpr(X->getC(), Y->getA()); 499 const SCEV *C2B1 = SE->getMulExpr(Y->getC(), X->getB()); 500 const SCEV *C2A1 = SE->getMulExpr(Y->getC(), X->getA()); 501 const SCEV *A1B2 = SE->getMulExpr(X->getA(), Y->getB()); 502 const SCEV *A2B1 = SE->getMulExpr(Y->getA(), X->getB()); 504 dyn_cast<SCEVConstant>(SE->getMinusSCEV(C1A2, C2A1)); 506 dyn_cast<SCEVConstant>(SE->getMinusSCEV(C1B2, C2B1)); 508 dyn_cast<SCEVConstant>(SE->getMinusSCEV(A1B2, A2B1)); 510 dyn_cast<SCEVConstant>(SE->getMinusSCEV(A2B1, A1B2)); 549 X->setPoint(SE->getConstant(Xq), 550 SE->getConstant(Yq), 563 const SCEV *A1X1 = SE->getMulExpr(Y->getA(), X->getX()); 564 const SCEV *B1Y1 = SE->getMulExpr(Y->getB(), X->getY()); 565 const SCEV *Sum = SE->getAddExpr(A1X1, B1Y1); 787 return SE->isLoopInvariant(Expression, LoopNest) && 800 if (Level <= CommonLevels && !SE->isLoopInvariant(Expression, LoopNest)) 851 Pair->Src = SE->getSignExtendExpr(Src, widestType); 854 Pair->Dst = SE->getSignExtendExpr(Dst, widestType); 888 const SCEV *Step = AddRec->getStepRecurrence(*SE); 889 const SCEV *UB = SE->getBackedgeTakenCount(AddRec->getLoop()); 891 if (SE->getTypeSizeInBits(Start->getType()) < 892 SE->getTypeSizeInBits(UB->getType())) { 913 const SCEV *Step = AddRec->getStepRecurrence(*SE); 914 const SCEV *UB = SE->getBackedgeTakenCount(AddRec->getLoop()); 916 if (SE->getTypeSizeInBits(Start->getType()) < 917 SE->getTypeSizeInBits(UB->getType())) { 985 if (SE->isKnownPredicate(Pred, X, Y)) 992 const SCEV *Delta = SE->getMinusSCEV(X, Y); 997 return SE->isKnownNonZero(Delta); 999 return SE->isKnownNonNegative(Delta); 1001 return SE->isKnownNonPositive(Delta); 1003 return SE->isKnownPositive(Delta); 1005 return SE->isKnownNegative(Delta); 1022 S = SE->getTruncateOrZeroExtend(S, MaxType); 1023 Size = SE->getTruncateOrZeroExtend(Size, MaxType); 1026 const SCEV *Bound = SE->getMinusSCEV(S, Size); 1029 const SCEV *BECount = SE->getBackedgeTakenCount(AddRec->getLoop()); 1031 const SCEV *Limit = AddRec->evaluateAtIteration(BECount, *SE); 1032 if (SE->isKnownNegative(Limit)) 1040 SE->getMinusSCEV(S, SE->getSMaxExpr(Size, SE->getOne(Size->getType()))); 1040 SE->getMinusSCEV(S, SE->getSMaxExpr(Size, SE->getOne(Size->getType()))); 1040 SE->getMinusSCEV(S, SE->getSMaxExpr(Size, SE->getOne(Size->getType()))); 1041 return SE->isKnownNegative(LimitedBound); 1053 if (SE->isKnownNonNegative(AddRec->getStart()) && 1054 SE->isKnownNonNegative(AddRec->getOperand(1))) 1060 return SE->isKnownNonNegative(S); 1071 if (SE->hasLoopInvariantBackedgeTakenCount(L)) { 1072 const SCEV *UB = SE->getBackedgeTakenCount(L); 1073 return SE->getTruncateOrZeroExtend(UB, T); 1161 const SCEV *Delta = SE->getMinusSCEV(SrcConst, DstConst); 1170 SE->isKnownNonNegative(Delta) ? Delta : SE->getNegativeSCEV(Delta); 1170 SE->isKnownNonNegative(Delta) ? Delta : SE->getNegativeSCEV(Delta); 1172 SE->isKnownNonNegative(Coeff) ? Coeff : SE->getNegativeSCEV(Coeff); 1172 SE->isKnownNonNegative(Coeff) ? Coeff : SE->getNegativeSCEV(Coeff); 1173 const SCEV *Product = SE->getMulExpr(UpperBound, AbsCoeff); 1198 Result.DV[Level].Distance = SE->getConstant(Distance); 1199 NewConstraint.setDistance(SE->getConstant(Distance), CurLoop); 1224 SE->getNegativeSCEV(Coeff), 1225 SE->getNegativeSCEV(Delta), CurLoop); 1229 bool DeltaMaybeZero = !SE->isKnownNonZero(Delta); 1230 bool DeltaMaybePositive = !SE->isKnownNonPositive(Delta); 1231 bool DeltaMaybeNegative = !SE->isKnownNonNegative(Delta); 1232 bool CoeffMaybePositive = !SE->isKnownNonPositive(Coeff); 1233 bool CoeffMaybeNegative = !SE->isKnownNonNegative(Coeff); 1294 const SCEV *Delta = SE->getMinusSCEV(DstConst, SrcConst); 1313 if (SE->isKnownNegative(ConstCoeff)) { 1314 ConstCoeff = dyn_cast<SCEVConstant>(SE->getNegativeSCEV(ConstCoeff)); 1317 Delta = SE->getNegativeSCEV(Delta); 1319 assert(SE->isKnownPositive(ConstCoeff) && "ConstCoeff should be positive"); 1322 SplitIter = SE->getUDivExpr( 1323 SE->getSMaxExpr(SE->getZero(Delta->getType()), Delta), 1323 SE->getSMaxExpr(SE->getZero(Delta->getType()), Delta), 1324 SE->getMulExpr(SE->getConstant(Delta->getType(), 2), ConstCoeff)); 1324 SE->getMulExpr(SE->getConstant(Delta->getType(), 2), ConstCoeff)); 1335 if (SE->isKnownNegative(Delta)) { 1346 const SCEV *ConstantTwo = SE->getConstant(UpperBound->getType(), 2); 1347 const SCEV *ML = SE->getMulExpr(SE->getMulExpr(ConstCoeff, UpperBound), 1347 const SCEV *ML = SE->getMulExpr(SE->getMulExpr(ConstCoeff, UpperBound), 1366 Result.DV[Level].Distance = SE->getZero(Delta->getType()); 1507 const SCEV *Delta = SE->getMinusSCEV(DstConst, SrcConst); 1509 NewConstraint.setLine(SrcCoeff, SE->getNegativeSCEV(DstCoeff), 1719 const SCEV *Delta = SE->getMinusSCEV(SrcConst, DstConst); 1720 NewConstraint.setLine(SE->getZero(Delta->getType()), DstCoeff, Delta, 1735 SE->isKnownNegative(ConstCoeff) ? 1736 SE->getNegativeSCEV(ConstCoeff) : ConstCoeff; 1738 SE->isKnownNegative(ConstCoeff) ? SE->getNegativeSCEV(Delta) : Delta; 1738 SE->isKnownNegative(ConstCoeff) ? SE->getNegativeSCEV(Delta) : Delta; 1744 const SCEV *Product = SE->getMulExpr(AbsCoeff, UpperBound); 1763 if (SE->isKnownNegative(NewDelta)) { 1828 const SCEV *Delta = SE->getMinusSCEV(DstConst, SrcConst); 1829 NewConstraint.setLine(SrcCoeff, SE->getZero(Delta->getType()), Delta, 1844 SE->isKnownNegative(ConstCoeff) ? 1845 SE->getNegativeSCEV(ConstCoeff) : ConstCoeff; 1847 SE->isKnownNegative(ConstCoeff) ? SE->getNegativeSCEV(Delta) : Delta; 1847 SE->isKnownNegative(ConstCoeff) ? SE->getNegativeSCEV(Delta) : Delta; 1853 const SCEV *Product = SE->getMulExpr(AbsCoeff, UpperBound); 1872 if (SE->isKnownNegative(NewDelta)) { 1908 const SCEV *Delta = SE->getMinusSCEV(DstConst, SrcConst); 2053 const SCEV *C2_C1 = SE->getMinusSCEV(C2, C1); 2054 const SCEV *C1_C2 = SE->getMinusSCEV(C1, C2); 2057 if (SE->isKnownNonNegative(A1)) { 2058 if (SE->isKnownNonNegative(A2)) { 2062 const SCEV *A1N1 = SE->getMulExpr(A1, N1); 2071 const SCEV *A2N2 = SE->getMulExpr(A2, N2); 2079 else if (SE->isKnownNonPositive(A2)) { 2083 const SCEV *A1N1 = SE->getMulExpr(A1, N1); 2084 const SCEV *A2N2 = SE->getMulExpr(A2, N2); 2085 const SCEV *A1N1_A2N2 = SE->getMinusSCEV(A1N1, A2N2); 2093 if (SE->isKnownNegative(C2_C1)) { 2099 else if (SE->isKnownNonPositive(A1)) { 2100 if (SE->isKnownNonNegative(A2)) { 2104 const SCEV *A1N1 = SE->getMulExpr(A1, N1); 2105 const SCEV *A2N2 = SE->getMulExpr(A2, N2); 2106 const SCEV *A1N1_A2N2 = SE->getMinusSCEV(A1N1, A2N2); 2114 if (SE->isKnownPositive(C2_C1)) { 2119 else if (SE->isKnownNonPositive(A2)) { 2123 const SCEV *A1N1 = SE->getMulExpr(A1, N1); 2132 const SCEV *A2N2 = SE->getMulExpr(A2, N2); 2163 const SCEV *SrcCoeff = SrcAddRec->getStepRecurrence(*SE); 2164 const SCEV *DstCoeff = DstAddRec->getStepRecurrence(*SE); 2173 else if (SrcCoeff == SE->getNegativeSCEV(DstCoeff)) 2185 const SCEV *SrcCoeff = SrcAddRec->getStepRecurrence(*SE); 2195 const SCEV *DstCoeff = DstAddRec->getStepRecurrence(*SE); 2239 SrcCoeff = SrcAddRec->getStepRecurrence(*SE); 2242 DstCoeff = DstAddRec->getStepRecurrence(*SE); 2249 SrcCoeff = tmpAddRec->getStepRecurrence(*SE); 2252 DstCoeff = SE->getNegativeSCEV(SrcAddRec->getStepRecurrence(*SE)); 2252 DstCoeff = SE->getNegativeSCEV(SrcAddRec->getStepRecurrence(*SE)); 2262 DstCoeff = tmpAddRec->getStepRecurrence(*SE); 2265 SrcCoeff = SE->getNegativeSCEV(DstAddRec->getStepRecurrence(*SE)); 2265 SrcCoeff = SE->getNegativeSCEV(DstAddRec->getStepRecurrence(*SE)); 2333 unsigned BitWidth = SE->getTypeSizeInBits(Src->getType()); 2343 const SCEV *Coeff = AddRec->getStepRecurrence(*SE); 2362 const SCEV *Coeff = AddRec->getStepRecurrence(*SE); 2375 const SCEV *Delta = SE->getMinusSCEV(DstConst, SrcConst); 2435 const SCEV *SrcCoeff = AddRec->getStepRecurrence(*SE); 2436 const SCEV *DstCoeff = SE->getMinusSCEV(SrcCoeff, SrcCoeff); 2440 const SCEV *Coeff = AddRec->getStepRecurrence(*SE); 2457 const SCEV *Coeff = AddRec->getStepRecurrence(*SE); 2471 Delta = SE->getMinusSCEV(SrcCoeff, DstCoeff); 2544 const SCEV *Delta = SE->getMinusSCEV(B0, A0); 2751 SE->getMulExpr(SE->getMinusSCEV(A[K].NegPart, B[K].PosPart), 2751 SE->getMulExpr(SE->getMinusSCEV(A[K].NegPart, B[K].PosPart), 2754 SE->getMulExpr(SE->getMinusSCEV(A[K].PosPart, B[K].NegPart), 2754 SE->getMulExpr(SE->getMinusSCEV(A[K].PosPart, B[K].NegPart), 2761 SE->getZero(A[K].Coeff->getType()); 2764 SE->getZero(A[K].Coeff->getType()); 2789 const SCEV *Delta = SE->getMinusSCEV(A[K].Coeff, B[K].Coeff); 2792 SE->getMulExpr(NegativePart, Bound[K].Iterations); 2795 SE->getMulExpr(PositivePart, Bound[K].Iterations); 2800 const SCEV *Delta = SE->getMinusSCEV(A[K].Coeff, B[K].Coeff); 2829 const SCEV *Iter_1 = SE->getMinusSCEV( 2830 Bound[K].Iterations, SE->getOne(Bound[K].Iterations->getType())); 2832 getNegativePart(SE->getMinusSCEV(A[K].NegPart, B[K].Coeff)); 2834 SE->getMinusSCEV(SE->getMulExpr(NegPart, Iter_1), B[K].Coeff); 2834 SE->getMinusSCEV(SE->getMulExpr(NegPart, Iter_1), B[K].Coeff); 2836 getPositivePart(SE->getMinusSCEV(A[K].PosPart, B[K].Coeff)); 2838 SE->getMinusSCEV(SE->getMulExpr(PosPart, Iter_1), B[K].Coeff); 2838 SE->getMinusSCEV(SE->getMulExpr(PosPart, Iter_1), B[K].Coeff); 2844 getNegativePart(SE->getMinusSCEV(A[K].NegPart, B[K].Coeff)); 2846 Bound[K].Lower[Dependence::DVEntry::LT] = SE->getNegativeSCEV(B[K].Coeff); 2848 getPositivePart(SE->getMinusSCEV(A[K].PosPart, B[K].Coeff)); 2850 Bound[K].Upper[Dependence::DVEntry::LT] = SE->getNegativeSCEV(B[K].Coeff); 2873 const SCEV *Iter_1 = SE->getMinusSCEV( 2874 Bound[K].Iterations, SE->getOne(Bound[K].Iterations->getType())); 2876 getNegativePart(SE->getMinusSCEV(A[K].Coeff, B[K].PosPart)); 2878 SE->getAddExpr(SE->getMulExpr(NegPart, Iter_1), A[K].Coeff); 2878 SE->getAddExpr(SE->getMulExpr(NegPart, Iter_1), A[K].Coeff); 2880 getPositivePart(SE->getMinusSCEV(A[K].Coeff, B[K].NegPart)); 2882 SE->getAddExpr(SE->getMulExpr(PosPart, Iter_1), A[K].Coeff); 2882 SE->getAddExpr(SE->getMulExpr(PosPart, Iter_1), A[K].Coeff); 2887 const SCEV *NegPart = getNegativePart(SE->getMinusSCEV(A[K].Coeff, B[K].PosPart)); 2890 const SCEV *PosPart = getPositivePart(SE->getMinusSCEV(A[K].Coeff, B[K].NegPart)); 2899 return SE->getSMaxExpr(X, SE->getZero(X->getType())); 2899 return SE->getSMaxExpr(X, SE->getZero(X->getType())); 2905 return SE->getSMinExpr(X, SE->getZero(X->getType())); 2905 return SE->getSMinExpr(X, SE->getZero(X->getType())); 2915 const SCEV *Zero = SE->getZero(Subscript->getType()); 2926 CI[K].Coeff = AddRec->getStepRecurrence(*SE); 2962 Sum = SE->getAddExpr(Sum, Bound[K].Lower[Bound[K].Direction]); 2978 Sum = SE->getAddExpr(Sum, Bound[K].Upper[Bound[K].Direction]); 2999 return SE->getZero(Expr->getType()); 3001 return AddRec->getStepRecurrence(*SE); 3018 return SE->getAddRecExpr(zeroCoefficient(AddRec->getStart(), TargetLoop), 3019 AddRec->getStepRecurrence(*SE), 3035 return SE->getAddRecExpr(Expr, 3040 const SCEV *Sum = SE->getAddExpr(AddRec->getStepRecurrence(*SE), Value); 3040 const SCEV *Sum = SE->getAddExpr(AddRec->getStepRecurrence(*SE), Value); 3043 return SE->getAddRecExpr(AddRec->getStart(), 3048 if (SE->isLoopInvariant(AddRec, TargetLoop)) 3049 return SE->getAddRecExpr(AddRec, Value, TargetLoop, SCEV::FlagAnyWrap); 3050 return SE->getAddRecExpr( 3052 AddRec->getStepRecurrence(*SE), AddRec->getLoop(), 3099 const SCEV *DA_K = SE->getMulExpr(A_K, CurConstraint.getD()); 3100 Src = SE->getMinusSCEV(Src, DA_K); 3104 Dst = addToCoefficient(Dst, CurLoop, SE->getNegativeSCEV(A_K)); 3138 Src = SE->getMinusSCEV(Src, SE->getMulExpr(AP_K, SE->getConstant(CdivB))); 3138 Src = SE->getMinusSCEV(Src, SE->getMulExpr(AP_K, SE->getConstant(CdivB))); 3138 Src = SE->getMinusSCEV(Src, SE->getMulExpr(AP_K, SE->getConstant(CdivB))); 3152 Src = SE->getAddExpr(Src, SE->getMulExpr(A_K, SE->getConstant(CdivA))); 3152 Src = SE->getAddExpr(Src, SE->getMulExpr(A_K, SE->getConstant(CdivA))); 3152 Src = SE->getAddExpr(Src, SE->getMulExpr(A_K, SE->getConstant(CdivA))); 3166 Src = SE->getAddExpr(Src, SE->getMulExpr(A_K, SE->getConstant(CdivA))); 3166 Src = SE->getAddExpr(Src, SE->getMulExpr(A_K, SE->getConstant(CdivA))); 3166 Src = SE->getAddExpr(Src, SE->getMulExpr(A_K, SE->getConstant(CdivA))); 3175 Src = SE->getMulExpr(Src, A); 3176 Dst = SE->getMulExpr(Dst, A); 3177 Src = SE->getAddExpr(Src, SE->getMulExpr(A_K, C)); 3177 Src = SE->getAddExpr(Src, SE->getMulExpr(A_K, C)); 3179 Dst = addToCoefficient(Dst, CurLoop, SE->getMulExpr(A_K, B)); 3197 const SCEV *XA_K = SE->getMulExpr(A_K, CurConstraint.getX()); 3198 const SCEV *YAP_K = SE->getMulExpr(AP_K, CurConstraint.getY()); 3200 Src = SE->getAddExpr(Src, SE->getMinusSCEV(XA_K, YAP_K)); 3200 Src = SE->getAddExpr(Src, SE->getMinusSCEV(XA_K, YAP_K)); 3222 if (!SE->isKnownNonZero(Level.Distance)) // if may be zero 3224 if (!SE->isKnownNonPositive(Level.Distance)) // if may be positive 3226 if (!SE->isKnownNonNegative(Level.Distance)) // if may be negative 3276 SE->getSCEVAtScope(SrcPtr, SrcLoop); 3278 SE->getSCEVAtScope(DstPtr, DstLoop); 3281 dyn_cast<SCEVUnknown>(SE->getPointerBase(SrcAccessFn)); 3283 dyn_cast<SCEVUnknown>(SE->getPointerBase(DstAccessFn)); 3288 const SCEV *ElementSize = SE->getElementSize(Src); 3289 if (ElementSize != SE->getElementSize(Dst)) 3292 const SCEV *SrcSCEV = SE->getMinusSCEV(SrcAccessFn, SrcBase); 3293 const SCEV *DstSCEV = SE->getMinusSCEV(DstAccessFn, DstBase); 3302 SE->collectParametricTerms(SrcAR, Terms); 3303 SE->collectParametricTerms(DstAR, Terms); 3307 SE->findArrayDimensions(Terms, Sizes, ElementSize); 3311 SE->computeAccessFunctions(SrcAR, SrcSubscripts, Sizes); 3312 SE->computeAccessFunctions(DstAR, DstSubscripts, Sizes); 3452 const SCEV *SrcSCEV = SE->getSCEV(SrcPtr); 3453 const SCEV *DstSCEV = SE->getSCEV(DstPtr); 3593 NewConstraint.setAny(SE); 3634 Constraints[II].setAny(SE); 3855 const SCEV *SrcSCEV = SE->getSCEV(SrcPtr); 3856 const SCEV *DstSCEV = SE->getSCEV(DstPtr); 3921 NewConstraint.setAny(SE); 3950 Constraints[II].setAny(SE);