Home | History | Annotate | Download | only in Scalar

Lines Matching refs:Store

14 // transformation.  The source value of each store then propagated to the user
54 /// \brief Represent a store-to-forwarding candidate.
57 StoreInst *Store;
59 StoreToLoadForwardingCandidate(LoadInst *Load, StoreInst *Store)
60 : Load(Load), Store(Store) {}
62 /// \brief Return true if the dependence from the store to the load has a
66 Value *StorePtr = Store->getPointerOperand();
94 OS << *Cand.Store << " -->\n";
101 /// \brief Check if the store dominates all latches, so as long as there is no
102 /// intervening store this value will be loaded in the next iteration.
121 /// this loop and find store->load dependences.
133 // Find store->load dependences (consequently true dep). Both lexically
159 auto *Store = dyn_cast<StoreInst>(Source);
160 if (!Store)
165 Candidates.emplace_front(Load, Store);
204 // If Store is nullptr it means that we have multiple stores forwarding to
205 // this store.
225 if (Cand.Store->getParent() == OtherCand->Store->getParent() &&
229 if (getInstrIndex(OtherCand->Store) < getInstrIndex(Cand.Store))
251 /// a pointer for a possibly intervening store.
264 /// forwarding store to a load.
297 return getInstrIndex(A.Store) <
298 getInstrIndex(B.Store);
300 ->Store;
302 // We're looking for stores after the first forwarding store until the end
362 // store %y, %gep_i_plus_1
372 // store %y, %gep_i_plus_1
384 PHI->addIncoming(Cand.Store->getOperand(0), L->getLoopLatch());
389 /// \brief Top-level driver for each loop: find store->load forwarding
394 // Look for store-to-load forwarding cases across the
400 // store %y, %gep_i_plus_1
410 // store %y, %gep_i_plus_1
412 // First start with store->load dependences.
417 // Generate an index for each load and store according to the original
434 if (!doesStoreDominatesAllLatches(Cand.Store->getParent(), L, DT))
445 << ". Valid store-to-load forwarding across the loop backedge\n");
477 // Next, propagate the value stored by the store to the users of the load.
491 /// \brief Maps the load/store instructions to their index according to