Home
last modified time | relevance | path

Searched refs:SCEV (Results 1 – 25 of 72) sorted by relevance

123

/third_party/skia/third_party/externals/swiftshader/third_party/llvm-10.0/llvm/include/llvm/Analysis/
DScalarEvolution.h76 class SCEV : public FoldingSetNode {
77 friend struct FoldingSetTrait<SCEV>;
121 explicit SCEV(const FoldingSetNodeIDRef ID, unsigned SCEVTy,
124 SCEV(const SCEV &) = delete;
125 SCEV &operator=(const SCEV &) = delete;
167 template <> struct FoldingSetTrait<SCEV> : DefaultFoldingSetTrait<SCEV> {
168 static void Profile(const SCEV &X, FoldingSetNodeID &ID) { ID = X.FastID; }
170 static bool Equals(const SCEV &X, const FoldingSetNodeID &ID, unsigned IDHash,
175 static unsigned ComputeHash(const SCEV &X, FoldingSetNodeID &TempID) {
180 inline raw_ostream &operator<<(raw_ostream &OS, const SCEV &S) {
[all …]
DDependenceAnalysis.h52 class SCEV; variable
101 const SCEV *Distance; // NULL implies no distance available.
161 virtual const SCEV *getDistance(unsigned Level) const { return nullptr; } in getDistance()
242 const SCEV *getDistance(unsigned Level) const override;
331 const SCEV *getSplitIteration(const Dependence &Dep, unsigned Level);
345 const SCEV *Src;
346 const SCEV *Dst;
354 const SCEV *Coeff;
355 const SCEV *PosPart;
356 const SCEV *NegPart;
[all …]
DScalarEvolutionExpressions.h47 class SCEVConstant : public SCEV {
53 SCEV(ID, scConstant, 1), V(v) {} in SCEVConstant()
62 static bool classof(const SCEV *S) { in classof()
67 static unsigned short computeExpressionSize(ArrayRef<const SCEV *> Args) { in computeExpressionSize()
75 class SCEVCastExpr : public SCEV {
77 const SCEV *Op;
81 unsigned SCEVTy, const SCEV *op, Type *ty);
84 const SCEV *getOperand() const { return Op; } in getOperand()
88 static bool classof(const SCEV *S) { in classof()
101 const SCEV *op, Type *ty);
[all …]
DScalarEvolutionExpander.h31 bool isSafeToExpand(const SCEV *S, ScalarEvolution &SE);
36 bool isSafeToExpandAt(const SCEV *S, const Instruction *InsertionPoint,
53 DenseMap<std::pair<const SCEV *, Instruction *>, TrackingVH<Value>>
61 DenseMap<const SCEV *, const Loop *> RelevantLoops;
180 bool isHighCostExpansion(const SCEV *Expr, Loop *L,
182 SmallPtrSet<const SCEV *, 8> Processed;
207 Value *expandCodeFor(const SCEV *SH, Type *Ty, Instruction *I);
213 Value *expandCodeFor(const SCEV *SH, Type *Ty = nullptr);
303 Value *getExactExistingExpansion(const SCEV *S, const Instruction *At,
319 getRelatedExistingExpansion(const SCEV *S, const Instruction *At, Loop *L);
[all …]
DScalarEvolutionNormalization.h46 class SCEV; variable
54 const SCEV *normalizeForPostIncUse(const SCEV *S, const PostIncLoopSet &Loops,
59 const SCEV *normalizeForPostIncUseIf(const SCEV *S, NormalizePredTy Pred,
64 const SCEV *denormalizeForPostIncUse(const SCEV *S, const PostIncLoopSet &Loops,
DLoopCacheAnalysis.h53 const SCEV *getBasePointer() const { return BasePointer; } in getBasePointer()
55 const SCEV *getSubscript(unsigned SubNum) const { in getSubscript()
59 const SCEV *getFirstSubscript() const { in getFirstSubscript()
63 const SCEV *getLastSubscript() const { in getLastSubscript()
108 const SCEV *getLastCoefficient() const;
112 bool isCoeffForLoopZeroOrInvariant(const SCEV &Subscript,
117 bool isSimpleAddRecurrence(const SCEV &Subscript, const Loop &L) const;
131 const SCEV *BasePointer = nullptr;
134 SmallVector<const SCEV *, 3> Subscripts;
137 SmallVector<const SCEV *, 3> Sizes;
DLoopAccessAnalysis.h35 class SCEV; variable
341 const SCEV *Start;
344 const SCEV *End;
353 const SCEV *Expr;
355 PointerInfo(Value *PointerValue, const SCEV *Start, const SCEV *End, in PointerInfo()
357 const SCEV *Expr) in PointerInfo()
408 const SCEV *High;
411 const SCEV *Low;
679 const SCEV *replaceSymbolicStrideSCEV(PredicatedScalarEvolution &PSE,
/third_party/skia/third_party/externals/swiftshader/third_party/llvm-10.0/llvm/lib/Analysis/
DScalarEvolution.cpp239 LLVM_DUMP_METHOD void SCEV::dump() const { in dump()
245 void SCEV::print(raw_ostream &OS) const { in print()
252 const SCEV *Op = Trunc->getOperand(); in print()
259 const SCEV *Op = ZExt->getOperand(); in print()
266 const SCEV *Op = SExt->getOperand(); in print()
363 Type *SCEV::getType() const { in getType()
390 bool SCEV::isZero() const { in isZero()
396 bool SCEV::isOne() const { in isOne()
402 bool SCEV::isAllOnesValue() const { in isAllOnesValue()
408 bool SCEV::isNonConstantNegative() const { in isNonConstantNegative()
[all …]
DDependenceAnalysis.cpp276 const SCEV *FullDependence::getDistance(unsigned Level) const { in getDistance()
319 const SCEV *DependenceInfo::Constraint::getX() const { in getX()
327 const SCEV *DependenceInfo::Constraint::getY() const { in getY()
335 const SCEV *DependenceInfo::Constraint::getA() const { in getA()
344 const SCEV *DependenceInfo::Constraint::getB() const { in getB()
353 const SCEV *DependenceInfo::Constraint::getC() const { in getC()
362 const SCEV *DependenceInfo::Constraint::getD() const { in getD()
375 void DependenceInfo::Constraint::setPoint(const SCEV *X, const SCEV *Y, in setPoint()
383 void DependenceInfo::Constraint::setLine(const SCEV *AA, const SCEV *BB, in setLine()
384 const SCEV *CC, const Loop *CurLoop) { in setLine()
[all …]
DLoopCacheAnalysis.cpp75 static bool isOneDimensionalArray(const SCEV &AccessFn, const SCEV &ElemSize, in isOneDimensionalArray()
84 const SCEV *Start = AR->getStart(); in isOneDimensionalArray()
85 const SCEV *Step = AR->getStepRecurrence(SE); in isOneDimensionalArray()
98 static const SCEV *computeTripCount(const Loop &L, ScalarEvolution &SE) { in computeTripCount()
99 const SCEV *BackedgeTakenCount = SE.getBackedgeTakenCount(&L); in computeTripCount()
119 for (const SCEV *Subscript : R.Subscripts) in operator <<()
123 for (const SCEV *Size : R.Sizes) in operator <<()
171 const SCEV *LastSubscript = getLastSubscript(); in hasSpacialReuse()
172 const SCEV *OtherLastSubscript = Other.getLastSubscript(); in hasSpacialReuse()
228 const SCEV *Distance = D->getDistance(Level); in hasTemporalReuse()
[all …]
DScalarEvolutionNormalization.cpp42 const SCEV *visitAddRecExpr(const SCEVAddRecExpr *Expr);
46 const SCEV *
48 SmallVector<const SCEV *, 8> Operands; in visitAddRecExpr()
51 [&](const SCEV *Op) { return visit(Op); }); in visitAddRecExpr()
54 return SE.getAddRecExpr(Operands, AR->getLoop(), SCEV::FlagAnyWrap); in visitAddRecExpr()
93 return SE.getAddRecExpr(Operands, AR->getLoop(), SCEV::FlagAnyWrap); in visitAddRecExpr()
96 const SCEV *llvm::normalizeForPostIncUse(const SCEV *S, in normalizeForPostIncUse()
105 const SCEV *llvm::normalizeForPostIncUseIf(const SCEV *S, NormalizePredTy Pred, in normalizeForPostIncUseIf()
110 const SCEV *llvm::denormalizeForPostIncUse(const SCEV *S, in denormalizeForPostIncUse()
DScalarEvolutionExpander.cpp171 SCEV::NoWrapFlags Flags, bool IsSafeToHoist) { in InsertBinop()
193 if (I->hasNoSignedWrap() != (Flags & SCEV::FlagNSW)) in InsertBinop()
195 if (I->hasNoUnsignedWrap() != (Flags & SCEV::FlagNUW)) in InsertBinop()
230 if (Flags & SCEV::FlagNUW) in InsertBinop()
232 if (Flags & SCEV::FlagNSW) in InsertBinop()
243 static bool FactorOutConstant(const SCEV *&S, const SCEV *&Remainder, in FactorOutConstant()
244 const SCEV *Factor, ScalarEvolution &SE, in FactorOutConstant()
269 const SCEV *Div = SE.getConstant(CI); in FactorOutConstant()
286 SmallVector<const SCEV *, 4> NewMulOps(M->op_begin(), M->op_end()); in FactorOutConstant()
295 const SCEV *Step = A->getStepRecurrence(SE); in FactorOutConstant()
[all …]
DLoopAccessAnalysis.cpp145 const SCEV *llvm::replaceSymbolicStrideSCEV(PredicatedScalarEvolution &PSE, in replaceSymbolicStrideSCEV()
148 const SCEV *OrigSCEV = PSE.getSCEV(Ptr); in replaceSymbolicStrideSCEV()
195 const SCEV *Sc = replaceSymbolicStrideSCEV(PSE, Strides, Ptr); in insert()
198 const SCEV *ScStart; in insert()
199 const SCEV *ScEnd; in insert()
206 const SCEV *Ex = PSE.getBackedgeTakenCount(); in insert()
210 const SCEV *Step = AR->getStepRecurrence(*SE); in insert()
227 const SCEV *EltSizeSCEV = SE->getConstant(ScEnd->getType(), EltSize); in insert()
268 static const SCEV *getMinFromExprs(const SCEV *I, const SCEV *J, in getMinFromExprs()
270 const SCEV *Diff = SE->getMinusSCEV(J, I); in getMinFromExprs()
[all …]
DScalarEvolutionAliasAnalysis.cpp34 const SCEV *AS = SE.getSCEV(const_cast<Value *>(LocA.Ptr)); in alias()
35 const SCEV *BS = SE.getSCEV(const_cast<Value *>(LocB.Ptr)); in alias()
54 const SCEV *BA = SE.getMinusSCEV(BS, AS); in alias()
68 const SCEV *AB = SE.getMinusSCEV(AS, BS); in alias()
100 Value *SCEVAAResult::GetBaseValue(const SCEV *S) { in GetBaseValue()
107 const SCEV *Last = A->getOperand(A->getNumOperands() - 1); in GetBaseValue()
DIVUsers.cpp60 static bool isInteresting(const SCEV *S, const Instruction *I, const Loop *L, in isInteresting()
199 const SCEV *ISE = SE->getSCEV(I); in AddUsersImpl()
254 const SCEV *OriginalISE = ISE; in AddUsersImpl()
271 const SCEV *DenormalizedISE = in AddUsersImpl()
385 const SCEV *IVUsers::getReplacementExpr(const IVStrideUse &IU) const { in getReplacementExpr()
390 const SCEV *IVUsers::getExpr(const IVStrideUse &IU) const { in getExpr()
395 static const SCEVAddRecExpr *findAddRecForLoop(const SCEV *S, const Loop *L) { in findAddRecForLoop()
412 const SCEV *IVUsers::getStride(const IVStrideUse &IU, const Loop *L) const { in getStride()
/third_party/skia/third_party/externals/swiftshader/third_party/llvm-10.0/llvm/lib/Transforms/Scalar/
DLoopStrengthReduce.cpp235 using RegUsesTy = DenseMap<const SCEV *, RegSortData>;
238 SmallVector<const SCEV *, 16> RegSequence;
241 void countRegister(const SCEV *Reg, size_t LUIdx);
242 void dropRegister(const SCEV *Reg, size_t LUIdx);
245 bool isRegUsedByUsesOtherThan(const SCEV *Reg, size_t LUIdx) const;
247 const SmallBitVector &getUsedByIndices(const SCEV *Reg) const;
251 using iterator = SmallVectorImpl<const SCEV *>::iterator;
252 using const_iterator = SmallVectorImpl<const SCEV *>::const_iterator;
263 RegUseTracker::countRegister(const SCEV *Reg, size_t LUIdx) { in countRegister()
274 RegUseTracker::dropRegister(const SCEV *Reg, size_t LUIdx) { in dropRegister()
[all …]
DInductiveRangeCheckElimination.cpp142 const SCEV *Begin = nullptr;
143 const SCEV *Step = nullptr;
144 const SCEV *End = nullptr;
158 const SCEV *getBegin() const { return Begin; } in getBegin()
159 const SCEV *getStep() const { return Step; } in getStep()
160 const SCEV *getEnd() const { return End; } in getEnd()
187 const SCEV *Begin;
188 const SCEV *End;
191 Range(const SCEV *Begin, const SCEV *End) : Begin(Begin), End(End) { in Range()
196 const SCEV *getBegin() const { return Begin; } in getBegin()
[all …]
DAlignmentFromAssumptions.cpp93 static unsigned getNewAlignmentDiff(const SCEV *DiffSCEV, in getNewAlignmentDiff()
94 const SCEV *AlignSCEV, in getNewAlignmentDiff()
97 const SCEV *DiffUnitsSCEV = SE->getURemExpr(DiffSCEV, AlignSCEV); in getNewAlignmentDiff()
126 static unsigned getNewAlignment(const SCEV *AASCEV, const SCEV *AlignSCEV, in getNewAlignment()
127 const SCEV *OffSCEV, Value *Ptr, in getNewAlignment()
129 const SCEV *PtrSCEV = SE->getSCEV(Ptr); in getNewAlignment()
130 const SCEV *DiffSCEV = SE->getMinusSCEV(PtrSCEV, AASCEV); in getNewAlignment()
158 const SCEV *DiffStartSCEV = DiffARSCEV->getStart(); in getNewAlignment()
159 const SCEV *DiffIncSCEV = DiffARSCEV->getStepRecurrence(*SE); in getNewAlignment()
200 const SCEV *&AlignSCEV, in extractAlignmentInfo()
[all …]
DLoopPredication.cpp241 const SCEV *Limit;
243 const SCEV *Limit) in LoopICmp()
264 bool isSupportedStep(const SCEV* Step);
277 Instruction *findInsertPt(Instruction *User, ArrayRef<const SCEV*> Ops);
282 bool isLoopInvariantValue(const SCEV* S);
285 ICmpInst::Predicate Pred, const SCEV *LHS,
286 const SCEV *RHS);
378 const SCEV *LHSS = SE->getSCEV(LHS); in parseLoopICmp()
381 const SCEV *RHSS = SE->getSCEV(RHS); in parseLoopICmp()
401 ICmpInst::Predicate Pred, const SCEV *LHS, in expandCheck()
[all …]
DIndVarSimplify.cpp164 const SCEV *ExitCount,
219 const SCEV *FromBase = SE->getPointerBase(SE->getSCEV(FromPtr)); in isValidRewrite()
220 const SCEV *ToBase = SE->getPointerBase(SE->getSCEV(ToPtr)); in isValidRewrite()
644 const SCEV *ExitValue = SE->getSCEVAtScope(Inst, L->getParentLoop()); in rewriteLoopExitValues()
652 const SCEV *ExitCount = SE->getExitCount(L, PN->getIncomingBlock(i)); in rewriteLoopExitValues()
984 const SCEV *WideIncExpr = nullptr;
1057 const SCEV *getSCEVByOpCode(const SCEV *LHS, const SCEV *RHS,
1160 const SCEV *WideLHS; in cloneArithmeticIVUser()
1161 const SCEV *WideRHS; in cloneArithmeticIVUser()
1163 auto GetExtend = [this, SignExt](const SCEV *S, Type *Ty) { in cloneArithmeticIVUser()
[all …]
DNaryReassociate.cpp238 const SCEV *OldSCEV = SE->getSCEV(&*I); in doOneIteration()
258 const SCEV *NewSCEV = SE->getSCEV(&*I); in doOneIteration()
372 SmallVector<const SCEV *, 4> IndexExprs; in tryReassociateGEPAtIndex()
387 const SCEV *CandidateExpr = SE->getGEPExpr(cast<GEPOperator>(GEP), in tryReassociateGEPAtIndex()
457 const SCEV *AExpr = SE->getSCEV(A), *BExpr = SE->getSCEV(B); in tryReassociateBinaryOp()
458 const SCEV *RHSExpr = SE->getSCEV(RHS); in tryReassociateBinaryOp()
473 Instruction *NaryReassociatePass::tryReassociatedBinaryOp(const SCEV *LHSExpr, in tryReassociatedBinaryOp()
510 const SCEV *NaryReassociatePass::getBinarySCEV(BinaryOperator *I, in getBinarySCEV()
511 const SCEV *LHS, in getBinarySCEV()
512 const SCEV *RHS) { in getBinarySCEV()
[all …]
DLoopIdiomRecognize.cpp164 bool runOnLoopBlock(BasicBlock *BB, const SCEV *BECount,
170 bool processLoopStores(SmallVectorImpl<StoreInst *> &SL, const SCEV *BECount,
172 bool processLoopMemSet(MemSetInst *MSI, const SCEV *BECount);
178 const SCEVAddRecExpr *Ev, const SCEV *BECount,
180 bool processLoopStoreOfLoopLoad(StoreInst *SI, const SCEV *BECount);
323 const SCEV *BECount = SE->getBackedgeTakenCount(CurLoop); in runOnCountableLoop()
556 BasicBlock *BB, const SCEV *BECount, in runOnLoopBlock()
604 const SCEV *BECount, ForMemset For) { in processLoopStores()
748 const SCEV *BECount) { in processLoopMemSet()
800 const SCEV *BECount, unsigned StoreSize, in mayLoopAccessLocation()
[all …]
DStraightLineStrengthReduce.cpp111 Candidate(Kind CT, const SCEV *B, ConstantInt *Idx, Value *S, in Candidate()
117 const SCEV *Base = nullptr;
205 void allocateCandidatesAndFindBasisForGEP(const SCEV *B, ConstantInt *Idx,
211 void allocateCandidatesAndFindBasis(Candidate::Kind CT, const SCEV *B,
221 void factorArrayIndex(Value *ArrayIdx, const SCEV *Base, uint64_t ElementSize,
283 static bool isAddFoldable(const SCEV *Base, ConstantInt *Index, Value *Stride, in isAddFoldable()
337 Candidate::Kind CT, const SCEV *B, ConstantInt *Idx, Value *S, in allocateCandidatesAndFindBasis()
471 const SCEV *B, ConstantInt *Idx, Value *S, uint64_t ElementSize, in allocateCandidatesAndFindBasisForGEP()
484 const SCEV *Base, in factorArrayIndex()
524 SmallVector<const SCEV *, 4> IndexExprs; in allocateCandidatesAndFindBasisForGEP()
[all …]
/third_party/skia/third_party/externals/swiftshader/third_party/llvm-10.0/llvm/lib/Transforms/Utils/
DSimplifyIndVar.cpp111 const SCEV *FoldedExpr = nullptr; in foldIVUser()
189 const SCEV *S = SE->getSCEVAtScope(ICmp->getOperand(IVOperIdx), ICmpLoop); in makeIVComparisonInvariant()
190 const SCEV *X = SE->getSCEVAtScope(ICmp->getOperand(1 - IVOperIdx), ICmpLoop); in makeIVComparisonInvariant()
193 const SCEV *InvariantLHS, *InvariantRHS; in makeIVComparisonInvariant()
206 SmallDenseMap<const SCEV*, Value*> CheapExpansions; in makeIVComparisonInvariant()
216 const SCEV *IncomingS = SE->getSCEV(Incoming); in makeIVComparisonInvariant()
259 const SCEV *S = SE->getSCEVAtScope(ICmp->getOperand(IVOperIdx), ICmpLoop); in eliminateIVComparison()
260 const SCEV *X = SE->getSCEVAtScope(ICmp->getOperand(1 - IVOperIdx), ICmpLoop); in eliminateIVComparison()
367 const SCEV *N = SE->getSCEV(NValue); in simplifyIVRemainder()
379 const SCEV *D = SE->getSCEV(DValue); in simplifyIVRemainder()
[all …]
/third_party/skia/third_party/externals/swiftshader/third_party/llvm-10.0/llvm/include/llvm/Transforms/Scalar/
DNaryReassociate.h96 class SCEV; variable
146 Instruction *tryReassociatedBinaryOp(const SCEV *LHS, Value *RHS,
153 const SCEV *getBinarySCEV(BinaryOperator *I, const SCEV *LHS,
154 const SCEV *RHS);
158 Instruction *findClosestMatchingDominator(const SCEV *CandidateExpr,
183 DenseMap<const SCEV *, SmallVector<WeakTrackingVH, 2>> SeenExprs;

123