Lines Matching defs:CurLoop

138   Loop *CurLoop = nullptr;
290 CurLoop = L;
317 const SCEV *BECount = SE->getBackedgeTakenCount(CurLoop);
329 CurLoop->getUniqueExitBlocks(ExitBlocks);
332 << CurLoop->getHeader()->getParent()->getName()
333 << "] Countable Loop %" << CurLoop->getHeader()->getName()
339 SafetyInfo.computeLoopSafetyInfo(CurLoop);
346 for (auto *BB : CurLoop->getBlocks()) {
348 if (LI->getLoopFor(BB) != CurLoop)
439 if (!StoreEv || StoreEv->getLoop() != CurLoop || !StoreEv->isAffine())
462 CurLoop->isLoopInvariant(SplatValue)) {
498 if (!LoadEv || LoadEv->getLoop() != CurLoop || !LoadEv->isAffine())
776 if (!StoreEv || StoreEv->getLoop() != CurLoop || !StoreEv->isAffine())
779 if (!LoadEv || LoadEv->getLoop() != CurLoop || !LoadEv->isAffine())
842 if (!Ev || Ev->getLoop() != CurLoop)
884 if (!SE->isLoopInvariant(MemsetSizeSCEV, CurLoop)) {
903 SE->applyLoopGuards(PositiveStrideSCEV, CurLoop);
905 SE->applyLoopGuards(MemsetSizeSCEV, CurLoop);
922 if (!SplatValue || !CurLoop->isLoopInvariant(SplatValue))
993 const SCEV *StoreSizeSCEV, Loop *CurLoop,
996 SE->getTripCountFromExitCount(BECount, IntPtr, CurLoop);
1023 BasicBlock *Preheader = CurLoop->getLoopPreheader();
1059 if (mayLoopAccessLocation(BasePtr, ModRefInfo::ModRef, CurLoop, BECount,
1069 getNumBytes(BECount, IntIdxTy, StoreSizeSCEV, CurLoop, DL, SE);
1257 BasicBlock *Preheader = CurLoop->getLoopPreheader();
1307 mayLoopAccessLocation(StoreBasePtr, ModRefInfo::ModRef, CurLoop, BECount,
1316 if (mayLoopAccessLocation(StoreBasePtr, ModRefInfo::ModRef, CurLoop,
1349 if (mayLoopAccessLocation(LoadBasePtr, ModRefInfo::Mod, CurLoop, BECount,
1395 getNumBytes(BECount, IntIdxTy, StoreSizeSCEV, CurLoop, DL, SE);
1477 if (ApplyCodeSizeHeuristics && CurLoop->getNumBlocks() > 1) {
1478 if (CurLoop->isOutermost() && (!IsMemset || !IsLoopMemset)) {
1479 LLVM_DEBUG(dbgs() << " " << CurLoop->getHeader()->getParent()->getName()
1491 << CurLoop->getHeader()->getParent()->getName()
1493 << CurLoop->getHeader()->getName() << "\n");
1598 static bool detectShiftUntilLessThanIdiom(Loop *CurLoop, const DataLayout &DL,
1608 LoopEntry = *(CurLoop->block_begin());
1640 InitX = VarPhi->getIncomingValueForBlock(CurLoop->getLoopPreheader());
1696 static bool detectPopcountIdiom(Loop *CurLoop, BasicBlock *PreCondBB,
1709 LoopEntry = *(CurLoop->block_begin());
1790 Value *T = matchCondition(PreCondBr, CurLoop->getLoopPreheader());
1829 static bool detectShiftUntilZeroIdiom(Loop *CurLoop, const DataLayout &DL,
1839 LoopEntry = *(CurLoop->block_begin());
1863 InitX = PhiX->getIncomingValueForBlock(CurLoop->getLoopPreheader());
1909 auto InstWithoutDebugIt = CurLoop->getHeader()->instructionsWithoutDebug();
1931 if (!CurLoop->contains(cast<Instruction>(U))) {
1937 if (!CurLoop->contains(cast<Instruction>(U))) {
1952 BasicBlock *PH = CurLoop->getLoopPreheader();
1992 if (CurLoop->getNumBackEdges() != 1 || CurLoop->getNumBlocks() != 1)
2001 if (!detectShiftUntilZeroIdiom(CurLoop, *DL, IntrinID, InitX, CntInst, CntPhi,
2010 if (CurLoop->getNumBackEdges() != 1 || CurLoop->getNumBlocks() != 1)
2020 if (!detectShiftUntilLessThanIdiom(CurLoop, *DL, IntrinID, InitX, CntInst,
2035 if (!CurLoop->contains(cast<Instruction>(U)))
2040 BasicBlock *PH = CurLoop->getLoopPreheader();
2088 if (CurLoop->getNumBackEdges() != 1 || CurLoop->getNumBlocks() != 1)
2091 BasicBlock *LoopBody = *(CurLoop->block_begin());
2098 BasicBlock *PH = CurLoop->getLoopPreheader();
2117 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))));
2497 assert(CurLoop->isLoopInvariant(BaseX) &&
2583 if (!detectShiftUntilBitTestIdiom(CurLoop, X, BitMask, BitPos, XCurr,
2594 BasicBlock *LoopHeaderBB = CurLoop->getHeader();
2595 BasicBlock *LoopPreheaderBB = CurLoop->getLoopPreheader();
2598 BasicBlock *SuccessorBB = CurLoop->getExitBlock();
2669 BitPos, XMaskedLeadingOnePos, CurLoop->getName() + ".backedgetakencount",
2675 CurLoop->getName() + ".tripcount", /*HasNUW=*/true,
2719 auto *IV = Builder.CreatePHI(Ty, 2, CurLoop->getName() + ".iv");
2730 CurLoop->getName() + ".ivcheck");
2741 SE->forgetLoop(CurLoop);
2779 static bool detectShiftUntilZeroIdiom(Loop *CurLoop, ScalarEvolution *SE,
2789 if (CurLoop->getNumBlocks() != 1 || CurLoop->getNumBackEdges() != 1) {
2797 BasicBlock *LoopHeaderBB = CurLoop->getHeader();
2798 BasicBlock *LoopPreheaderBB = CurLoop->getLoopPreheader();
2819 if (!match(ValShifted, m_Shift(m_LoopInvariant(m_Value(Val), CurLoop),
2830 m_LoopInvariant(m_Value(ExtraOffset), CurLoop))) &&
2835 m_LoopInvariant(m_Value(ExtraOffset), CurLoop))) &&
2884 !isMustProgress(CurLoop) && !SE->isKnownNonNegative(SE->getSCEV(Val))) {
2956 if (!detectShiftUntilZeroIdiom(CurLoop, SE, ValShiftedIsZero, IntrID, IV,
2967 BasicBlock *LoopHeaderBB = CurLoop->getHeader();
2968 BasicBlock *LoopPreheaderBB = CurLoop->getLoopPreheader();
2971 BasicBlock *SuccessorBB = CurLoop->getExitBlock();
3024 IVFinal, Start, CurLoop->getName() + ".backedgetakencount",
3031 CurLoop->getName() + ".tripcount", /*HasNUW=*/true,
3043 auto *CIV = Builder.CreatePHI(Ty, 2, CurLoop->getName() + ".iv");
3053 CurLoop->getName() + ".ivcheck");
3077 SE->forgetLoop(CurLoop);