Lines Matching refs:Cand

132                                  const StoreToLoadForwardingCandidate &Cand) {  in operator <<()  argument
133 OS << *Cand.Store << " -->\n"; in operator <<()
134 OS.indent(2) << *Cand.Load << "\n"; in operator <<()
264 for (const auto &Cand : Candidates) { in removeDependencesFromMultipleStores() local
269 LoadToSingleCand.insert(std::make_pair(Cand.Load, &Cand)); in removeDependencesFromMultipleStores()
279 if (Cand.Store->getParent() == OtherCand->Store->getParent() && in removeDependencesFromMultipleStores()
280 Cand.isDependenceDistanceOfOne(PSE, L) && in removeDependencesFromMultipleStores()
283 if (getInstrIndex(OtherCand->Store) < getInstrIndex(Cand.Store)) in removeDependencesFromMultipleStores()
284 OtherCand = &Cand; in removeDependencesFromMultipleStores()
290 Candidates.remove_if([&](const StoreToLoadForwardingCandidate &Cand) { in removeDependencesFromMultipleStores() argument
291 if (LoadToSingleCand[Cand.Load] != &Cand) { in removeDependencesFromMultipleStores()
294 << Cand in removeDependencesFromMultipleStores()
411 propagateStoredValueToLoadUsers(const StoreToLoadForwardingCandidate &Cand, in propagateStoredValueToLoadUsers() argument
428 Value *Ptr = Cand.Load->getPointerOperand(); in propagateStoredValueToLoadUsers()
435 Cand.Load->getType(), InitialPtr, "load_initial", in propagateStoredValueToLoadUsers()
436 /* isVolatile */ false, Cand.Load->getAlign(), PH->getTerminator()); in propagateStoredValueToLoadUsers()
441 PHI->addIncoming(Cand.Store->getOperand(0), L->getLoopLatch()); in propagateStoredValueToLoadUsers()
443 Cand.Load->replaceAllUsesWith(PHI); in propagateStoredValueToLoadUsers()
487 for (const StoreToLoadForwardingCandidate &Cand : StoreToLoadDependences) { in processLoop() local
488 LLVM_DEBUG(dbgs() << "Candidate " << Cand); in processLoop()
492 if (!doesStoreDominatesAllLatches(Cand.Store->getParent(), L, DT)) in processLoop()
498 if (isLoadConditional(Cand.Load, L)) in processLoop()
503 if (!Cand.isDependenceDistanceOfOne(PSE, L)) in processLoop()
506 assert(isa<SCEVAddRecExpr>(PSE.getSCEV(Cand.Load->getPointerOperand())) && in processLoop()
509 isa<SCEVAddRecExpr>(PSE.getSCEV(Cand.Store->getPointerOperand())) && in processLoop()
512 Candidates.push_back(Cand); in processLoop()
570 const StoreToLoadForwardingCandidate &Cand) { in processLoop() argument
572 PSE.getSCEV(Cand.Load->getPointerOperand())) || in processLoop()
574 PSE.getSCEV(Cand.Store->getPointerOperand())); in processLoop()
583 for (const auto &Cand : Candidates) in processLoop() local
584 propagateStoredValueToLoadUsers(Cand, SEE); in processLoop()