Lines Matching refs:LoopB
592 void promoteTo(Instruction *In, IntegerType *DestTy, BasicBlock *LoopB);
593 bool promoteTypes(BasicBlock *LoopB, BasicBlock *ExitB);
604 bool convertShiftsToLeft(BasicBlock *LoopB, BasicBlock *ExitB,
606 void cleanupLoopBody(BasicBlock *LoopB);
624 bool scanSelect(SelectInst *SI, BasicBlock *LoopB, BasicBlock *PrehB,
868 BasicBlock *LoopB, BasicBlock *PrehB, Value *CIV, ParsedValues &PV, in scanSelect() argument
918 if (SelI != RPhi->getIncomingValueForBlock(LoopB)) in scanSelect()
939 if (!I1 || I1->getParent() != LoopB) { in scanSelect()
942 } else if (!I2 || I2->getParent() != LoopB) { in scanSelect()
1013 IntegerType *DestTy, BasicBlock *LoopB) { in promoteTo() argument
1027 if (InB == LoopB) in promoteTo()
1064 bool PolynomialMultiplyRecognize::promoteTypes(BasicBlock *LoopB, in promoteTypes() argument
1066 assert(LoopB); in promoteTypes()
1071 if (!ExitB || (ExitB->getSinglePredecessor() != LoopB)) in promoteTypes()
1080 assert(P.getIncomingBlock(0) == LoopB); in promoteTypes()
1087 for (Instruction &In : *LoopB) in promoteTypes()
1093 std::transform(LoopB->begin(), LoopB->end(), std::back_inserter(LoopIns), in promoteTypes()
1097 promoteTo(In, DestTy, LoopB); in promoteTypes()
1303 bool PolynomialMultiplyRecognize::convertShiftsToLeft(BasicBlock *LoopB, in convertShiftsToLeft() argument
1305 Value *CIV = getCountIV(LoopB); in convertShiftsToLeft()
1316 for (Instruction &I : *LoopB) { in convertShiftsToLeft()
1350 if (T->getParent() != LoopB || RShifts.count(T) || isa<PHINode>(T)) in convertShiftsToLeft()
1371 if (T && T->getParent() != LoopB) in convertShiftsToLeft()
1385 IRBuilder<> IRB(LoopB); in convertShiftsToLeft()
1402 for (auto I = LoopB->begin(), E = LoopB->end(); I != E; ++I) { in convertShiftsToLeft()
1411 replaceAllUsesOfWithIn(&*I, V, LoopB); in convertShiftsToLeft()
1464 Value *U = PN->getIncomingValueForBlock(LoopB); in convertShiftsToLeft()
1479 void PolynomialMultiplyRecognize::cleanupLoopBody(BasicBlock *LoopB) { in cleanupLoopBody() argument
1480 for (auto &I : *LoopB) in cleanupLoopBody()
1484 for (Instruction &I : llvm::make_early_inc_range(*LoopB)) in cleanupLoopBody()
1778 BasicBlock *LoopB = CurLoop->getHeader(); in recognize() local
1779 LLVM_DEBUG(dbgs() << "Loop header:\n" << *LoopB); in recognize()
1781 if (LoopB != CurLoop->getLoopLatch()) in recognize()
1797 Value *CIV = getCountIV(LoopB); in recognize()
1813 auto FeedsPHI = [LoopB](const Value *V) -> bool { in recognize()
1816 if (P->getParent() == LoopB) in recognize()
1821 for (Instruction &In : *LoopB) { in recognize()
1830 if (scanSelect(SelI, LoopB, EntryB, CIV, PV, true)) { in recognize()
1833 Value *NewSel = C.materialize(LoopB, SI->getIterator()); in recognize()
1851 if (!promoteTypes(LoopB, ExitB)) in recognize()
1856 for (Instruction &In : *LoopB) { in recognize()
1864 Value *NewSel = C.materialize(LoopB, SI->getIterator()); in recognize()
1871 if (!convertShiftsToLeft(LoopB, ExitB, IterCount)) in recognize()
1873 cleanupLoopBody(LoopB); in recognize()
1878 for (Instruction &In : *LoopB) { in recognize()
1883 FoundScan = scanSelect(SelI, LoopB, EntryB, CIV, PV, false); in recognize()