Lines Matching refs:SCEV
236 struct ScopExpander final : SCEVVisitor<ScopExpander, const SCEV *> {
237 friend struct SCEVVisitor<ScopExpander, const SCEV *>;
245 Value *expandCodeFor(const SCEV *E, Type *Ty, Instruction *I) { in expandCodeFor()
254 const SCEV *visit(const SCEV *E) { in visit()
260 const SCEV *Result = SCEVVisitor::visit(E); in visit()
272 DenseMap<const SCEV *, const SCEV *> SCEVCache;
274 const SCEV *visitGenericInst(const SCEVUnknown *E, Instruction *Inst, in visitGenericInst()
295 const SCEV *visitUnknown(const SCEVUnknown *E) { in visitUnknown()
321 const SCEV *LHSScev = SE.getSCEV(Inst->getOperand(0)); in visitUnknown()
322 const SCEV *RHSScev = SE.getSCEV(Inst->getOperand(1)); in visitUnknown()
339 const SCEV *visitConstant(const SCEVConstant *E) { return E; } in visitConstant()
340 const SCEV *visitPtrToIntExpr(const SCEVPtrToIntExpr *E) { in visitPtrToIntExpr()
343 const SCEV *visitTruncateExpr(const SCEVTruncateExpr *E) { in visitTruncateExpr()
346 const SCEV *visitZeroExtendExpr(const SCEVZeroExtendExpr *E) { in visitZeroExtendExpr()
349 const SCEV *visitSignExtendExpr(const SCEVSignExtendExpr *E) { in visitSignExtendExpr()
352 const SCEV *visitUDivExpr(const SCEVUDivExpr *E) { in visitUDivExpr()
358 const SCEV *visitAddExpr(const SCEVAddExpr *E) { in visitAddExpr()
359 SmallVector<const SCEV *, 4> NewOps; in visitAddExpr()
360 for (const SCEV *Op : E->operands()) in visitAddExpr()
364 const SCEV *visitMulExpr(const SCEVMulExpr *E) { in visitMulExpr()
365 SmallVector<const SCEV *, 4> NewOps; in visitMulExpr()
366 for (const SCEV *Op : E->operands()) in visitMulExpr()
370 const SCEV *visitUMaxExpr(const SCEVUMaxExpr *E) { in visitUMaxExpr()
371 SmallVector<const SCEV *, 4> NewOps; in visitUMaxExpr()
372 for (const SCEV *Op : E->operands()) in visitUMaxExpr()
376 const SCEV *visitSMaxExpr(const SCEVSMaxExpr *E) { in visitSMaxExpr()
377 SmallVector<const SCEV *, 4> NewOps; in visitSMaxExpr()
378 for (const SCEV *Op : E->operands()) in visitSMaxExpr()
382 const SCEV *visitUMinExpr(const SCEVUMinExpr *E) { in visitUMinExpr()
383 SmallVector<const SCEV *, 4> NewOps; in visitUMinExpr()
384 for (const SCEV *Op : E->operands()) in visitUMinExpr()
388 const SCEV *visitSMinExpr(const SCEVSMinExpr *E) { in visitSMinExpr()
389 SmallVector<const SCEV *, 4> NewOps; in visitSMinExpr()
390 for (const SCEV *Op : E->operands()) in visitSMinExpr()
394 const SCEV *visitSequentialUMinExpr(const SCEVSequentialUMinExpr *E) { in visitSequentialUMinExpr()
395 SmallVector<const SCEV *, 4> NewOps; in visitSequentialUMinExpr()
396 for (const SCEV *Op : E->operands()) in visitSequentialUMinExpr()
400 const SCEV *visitAddRecExpr(const SCEVAddRecExpr *E) { in visitAddRecExpr()
401 SmallVector<const SCEV *, 4> NewOps; in visitAddRecExpr()
402 for (const SCEV *Op : E->operands()) in visitAddRecExpr()
410 const char *Name, const SCEV *E, Type *Ty, in expandCodeFor()
508 const SCEV *PtrSCEV = SE.getSCEVAtScope(Val, L); in hasVariantIndex()
539 const SCEV *PtrSCEV = SE.getSCEVAtScope(Ptr, L); in isHoistableLoad()
609 if (const SCEV *Scev = SE->getSCEVAtScope(const_cast<Value *>(V), Scope)) in canSynthesize()