Lines Matching refs:Loop

1 //===- LoopInterchange.cpp - Loop interchange pass-------------------------===//
62 using LoopVector = SmallVector<Loop *, 8>;
86 Loop *L, DependenceInfo *DI,
215 static void populateWorklist(Loop &L, LoopVector &LoopList) {
217 << L.getHeader()->getParent()->getName() << " Loop: %"
220 Loop *CurrentLoop = &L;
221 const std::vector<Loop *> *Vec = &CurrentLoop->getSubLoops();
243 LoopInterchangeLegality(Loop *Outer, Loop *Inner, ScalarEvolution *SE,
253 bool findInductions(Loop *L, SmallVectorImpl<PHINode *> &Inductions);
270 bool tightlyNested(Loop *Outer, Loop *Inner);
277 bool findInductionAndReductions(Loop *L,
279 Loop *InnerLoop);
281 Loop *OuterLoop;
282 Loop *InnerLoop;
301 LoopInterchangeProfitability(Loop *Outer, Loop *Inner, ScalarEvolution *SE,
306 bool isProfitable(const Loop *InnerLoop, const Loop *OuterLoop,
309 const DenseMap<const Loop *, unsigned> &CostMap,
315 const DenseMap<const Loop *, unsigned> &CostMap,
321 Loop *OuterLoop;
322 Loop *InnerLoop;
334 LoopInterchangeTransform(Loop *Outer, Loop *Inner, ScalarEvolution *SE,
341 void restructureLoops(Loop *NewInner, Loop *NewOuter,
344 void removeChildLoop(Loop *OuterLoop, Loop *InnerLoop);
350 Loop *OuterLoop;
351 Loop *InnerLoop;
377 bool run(Loop *L) {
380 SmallVector<Loop *, 8> LoopList;
386 SmallVector<Loop *, 8> LoopList(LN.getLoops().begin(), LN.getLoops().end());
393 bool isComputableLoopNest(ArrayRef<Loop *> LoopList) {
394 for (Loop *L : LoopList) {
405 LLVM_DEBUG(dbgs() << "Loop doesn't have unique exit block\n");
412 unsigned selectLoopForInterchange(ArrayRef<Loop *> LoopList) {
418 bool processLoopList(SmallVectorImpl<Loop *> &LoopList) {
422 LLVM_DEBUG(dbgs() << "Loop doesn't contain minimum nesting level.\n");
439 Loop *OuterMostLoop = *(LoopList.begin());
459 // and put each <Loop, index> pair into a map for constant time query
466 DenseMap<const Loop *, unsigned> CostMap;
503 bool processLoop(Loop *InnerLoop, Loop *OuterLoop, unsigned InnerLoopId,
506 const DenseMap<const Loop *, unsigned> &CostMap) {
526 << "Loop interchanged with enclosing loop.";
547 bool LoopInterchangeLegality::tightlyNested(Loop *OuterLoop, Loop *InnerLoop) {
567 LLVM_DEBUG(dbgs() << "Checking instructions in Loop header and Loop latch\n");
706 static PHINode *findInnerReductionPhi(Loop *L, Value *V) {
730 Loop *L, SmallVector<PHINode *, 8> &Inductions, Loop *InnerLoop) {
811 Loop *CurLevelLoop = OuterLoop;
832 LLVM_DEBUG(dbgs() << "Loop structure not understood by pass\n");
846 Loop *L, SmallVectorImpl<PHINode *> &Inductions) {
859 areInnerLoopExitPHIsSupported(Loop *InnerL, Loop *OuterL,
884 static bool areOuterLoopExitPHIsSupported(Loop *OuterLoop, Loop *InnerLoop) {
917 static bool areInnerLoopLatchPHIsSupported(Loop *OuterLoop, Loop *InnerLoop) {
1097 const DenseMap<const Loop *, unsigned> &CostMap,
1154 const Loop *InnerLoop, const Loop *OuterLoop, unsigned InnerLoopId,
1156 const DenseMap<const Loop *, unsigned> &CostMap,
1196 void LoopInterchangeTransform::removeChildLoop(Loop *OuterLoop,
1197 Loop *InnerLoop) {
1198 for (Loop *L : *OuterLoop)
1230 Loop *NewInner, Loop *NewOuter, BasicBlock *OrigInnerPreHeader,
1232 Loop *OuterLoopParent = OuterLoop->getParentLoop();
1447 Loop *InnerLoop, LoopInfo *LI) {
1598 // Adjust Loop Preheader and headers.