Lines Matching defs:CurLoop
139 Loop *CurLoop = nullptr;
291 CurLoop = L;
318 const SCEV *BECount = SE->getBackedgeTakenCount(CurLoop);
330 CurLoop->getUniqueExitBlocks(ExitBlocks);
333 << CurLoop->getHeader()->getParent()->getName()
334 << "] Countable Loop %" << CurLoop->getHeader()->getName()
340 SafetyInfo.computeLoopSafetyInfo(CurLoop);
347 for (auto *BB : CurLoop->getBlocks()) {
349 if (LI->getLoopFor(BB) != CurLoop)
440 if (!StoreEv || StoreEv->getLoop() != CurLoop || !StoreEv->isAffine())
463 CurLoop->isLoopInvariant(SplatValue)) {
499 if (!LoadEv || LoadEv->getLoop() != CurLoop || !LoadEv->isAffine())
777 if (!StoreEv || StoreEv->getLoop() != CurLoop || !StoreEv->isAffine())
780 if (!LoadEv || LoadEv->getLoop() != CurLoop || !LoadEv->isAffine())
843 if (!Ev || Ev->getLoop() != CurLoop)
885 if (!SE->isLoopInvariant(MemsetSizeSCEV, CurLoop)) {
904 SE->applyLoopGuards(PositiveStrideSCEV, CurLoop);
906 SE->applyLoopGuards(MemsetSizeSCEV, CurLoop);
923 if (!SplatValue || !CurLoop->isLoopInvariant(SplatValue))
994 const SCEV *StoreSizeSCEV, Loop *CurLoop,
997 SE->getTripCountFromExitCount(BECount, IntPtr, CurLoop);
1024 BasicBlock *Preheader = CurLoop->getLoopPreheader();
1060 if (mayLoopAccessLocation(BasePtr, ModRefInfo::ModRef, CurLoop, BECount,
1070 getNumBytes(BECount, IntIdxTy, StoreSizeSCEV, CurLoop, DL, SE);
1258 BasicBlock *Preheader = CurLoop->getLoopPreheader();
1308 mayLoopAccessLocation(StoreBasePtr, ModRefInfo::ModRef, CurLoop, BECount,
1317 if (mayLoopAccessLocation(StoreBasePtr, ModRefInfo::ModRef, CurLoop,
1350 if (mayLoopAccessLocation(LoadBasePtr, ModRefInfo::Mod, CurLoop, BECount,
1374 getNumBytes(BECount, IntIdxTy, StoreSizeSCEV, CurLoop, DL, SE);
1473 if (ApplyCodeSizeHeuristics && CurLoop->getNumBlocks() > 1) {
1474 if (CurLoop->isOutermost() && (!IsMemset || !IsLoopMemset)) {
1475 LLVM_DEBUG(dbgs() << " " << CurLoop->getHeader()->getParent()->getName()
1487 << CurLoop->getHeader()->getParent()->getName()
1489 << CurLoop->getHeader()->getName() << "\n");
1594 static bool detectShiftUntilLessThanIdiom(Loop *CurLoop, const DataLayout &DL,
1604 LoopEntry = *(CurLoop->block_begin());
1636 InitX = VarPhi->getIncomingValueForBlock(CurLoop->getLoopPreheader());
1692 static bool detectPopcountIdiom(Loop *CurLoop, BasicBlock *PreCondBB,
1705 LoopEntry = *(CurLoop->block_begin());
1786 Value *T = matchCondition(PreCondBr, CurLoop->getLoopPreheader());
1825 static bool detectShiftUntilZeroIdiom(Loop *CurLoop, const DataLayout &DL,
1835 LoopEntry = *(CurLoop->block_begin());
1859 InitX = PhiX->getIncomingValueForBlock(CurLoop->getLoopPreheader());
1905 auto InstWithoutDebugIt = CurLoop->getHeader()->instructionsWithoutDebug();
1927 if (!CurLoop->contains(cast<Instruction>(U))) {
1933 if (!CurLoop->contains(cast<Instruction>(U))) {
1948 BasicBlock *PH = CurLoop->getLoopPreheader();
1988 if (CurLoop->getNumBackEdges() != 1 || CurLoop->getNumBlocks() != 1)
1997 if (!detectShiftUntilZeroIdiom(CurLoop, *DL, IntrinID, InitX, CntInst, CntPhi,
2006 if (CurLoop->getNumBackEdges() != 1 || CurLoop->getNumBlocks() != 1)
2016 if (!detectShiftUntilLessThanIdiom(CurLoop, *DL, IntrinID, InitX, CntInst,
2031 if (!CurLoop->contains(cast<Instruction>(U)))
2036 BasicBlock *PH = CurLoop->getLoopPreheader();
2084 if (CurLoop->getNumBackEdges() != 1 || CurLoop->getNumBlocks() != 1)
2087 BasicBlock *LoopBody = *(CurLoop->block_begin());
2094 BasicBlock *PH = CurLoop->getLoopPreheader();
2113 if (!detectPopcountIdiom(CurLoop, PreCondBB, CntInst, CntPhi, Val))
2240 BasicBlock *Body = *(CurLoop->block_begin());
2269 SE->forgetLoop(CurLoop);
2275 BasicBlock *PreHead = CurLoop->getLoopPreheader();
2345 BasicBlock *Body = *(CurLoop->block_begin());
2376 SE->forgetLoop(CurLoop);
2420 static bool detectShiftUntilBitTestIdiom(Loop *CurLoop, Value *&BaseX,
2427 if (CurLoop->getNumBlocks() != 1 || CurLoop->getNumBackEdges() != 1) {
2432 BasicBlock *LoopHeaderBB = CurLoop->getHeader();
2433 BasicBlock *LoopPreheaderBB = CurLoop->getLoopPreheader();
2459 CurLoop))));
2492 assert(CurLoop->isLoopInvariant(BaseX) &&
2578 if (!detectShiftUntilBitTestIdiom(CurLoop, X, BitMask, BitPos, XCurr,
2589 BasicBlock *LoopHeaderBB = CurLoop->getHeader();
2590 BasicBlock *LoopPreheaderBB = CurLoop->getLoopPreheader();
2593 BasicBlock *SuccessorBB = CurLoop->getExitBlock();
2664 BitPos, XMaskedLeadingOnePos, CurLoop->getName() + ".backedgetakencount",
2670 CurLoop->getName() + ".tripcount", /*HasNUW=*/true,
2714 auto *IV = Builder.CreatePHI(Ty, 2, CurLoop->getName() + ".iv");
2725 CurLoop->getName() + ".ivcheck");
2736 SE->forgetLoop(CurLoop);
2774 static bool detectShiftUntilZeroIdiom(Loop *CurLoop, ScalarEvolution *SE,
2784 if (CurLoop->getNumBlocks() != 1 || CurLoop->getNumBackEdges() != 1) {
2792 BasicBlock *LoopHeaderBB = CurLoop->getHeader();
2793 BasicBlock *LoopPreheaderBB = CurLoop->getLoopPreheader();
2814 if (!match(ValShifted, m_Shift(m_LoopInvariant(m_Value(Val), CurLoop),
2825 m_LoopInvariant(m_Value(ExtraOffset), CurLoop))) &&
2830 m_LoopInvariant(m_Value(ExtraOffset), CurLoop))) &&
2879 !isMustProgress(CurLoop) && !SE->isKnownNonNegative(SE->getSCEV(Val))) {
2951 if (!detectShiftUntilZeroIdiom(CurLoop, SE, ValShiftedIsZero, IntrID, IV,
2962 BasicBlock *LoopHeaderBB = CurLoop->getHeader();
2963 BasicBlock *LoopPreheaderBB = CurLoop->getLoopPreheader();
2966 BasicBlock *SuccessorBB = CurLoop->getExitBlock();
3019 IVFinal, Start, CurLoop->getName() + ".backedgetakencount",
3026 CurLoop->getName() + ".tripcount", /*HasNUW=*/true,
3038 auto *CIV = Builder.CreatePHI(Ty, 2, CurLoop->getName() + ".iv");
3048 CurLoop->getName() + ".ivcheck");
3072 SE->forgetLoop(CurLoop);