Lines Matching defs:ScopExpander
236 struct ScopExpander final : SCEVVisitor<ScopExpander, const SCEV *> { struct
239 explicit ScopExpander(const Region &R, ScalarEvolution &SE, in ScopExpander() function
245 Value *expandCodeFor(const SCEV *E, Type *Ty, Instruction *I) { in expandCodeFor()
254 const SCEV *visit(const SCEV *E) { in visit()
266 SCEVExpander Expander;
267 ScalarEvolution &SE;
268 const char *Name;
269 const Region &R;
270 ValueMapT *VMap;
271 BasicBlock *RTCBB;
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()
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()
364 const SCEV *visitMulExpr(const SCEVMulExpr *E) { in visitMulExpr()
370 const SCEV *visitUMaxExpr(const SCEVUMaxExpr *E) { in visitUMaxExpr()
376 const SCEV *visitSMaxExpr(const SCEVSMaxExpr *E) { in visitSMaxExpr()
382 const SCEV *visitUMinExpr(const SCEVUMinExpr *E) { in visitUMinExpr()
388 const SCEV *visitSMinExpr(const SCEVSMinExpr *E) { in visitSMinExpr()
413 ScopExpander Expander(S.getRegion(), SE, DL, Name, VMap, RTCBB); in expandCodeFor() argument