Lines Matching defs:LSR
136 /// bail out. This threshold is far beyond the number of users that LSR can
138 /// worst cases before LSR burns too much compile time and stack space.
147 // Cleanup congruent phis after LSR phi expansion.
150 cl::desc("Enable LSR phi elimination"));
155 cl::desc("Add instruction count to a LSR cost model"));
160 cl::desc("Narrow LSR complex solution using"
167 cl::desc("Narrow LSR search space by filtering non-optimal formulae"
186 cl::desc("LSR search space complexity limit"));
202 cl::desc("Enable analysis of vscale-relative immediates in LSR"));
215 cl::desc("Stress test LSR IV chains"));
506 /// together in LSR codegen.
655 /// field. Otherwise, we would have to do special cases everywhere in LSR
1308 /// This class holds the state that LSR keeps for each use in IVUsers, as well
1309 /// as uses invented by LSR itself. It includes information about what kinds of
1345 /// expressions cannot be expanded. This allows LSR to consider the registers
1423 // for now LSR only handles innermost loops).
1429 // It is bad to allow LSR for current loop to add induction variables
1778 OS << "LSR Use: Kind=";
2084 /// chain collection, before LSR replaces IV users. During chain generation,
2169 /// The cost of the current SCEV, the best solution by LSR will be dropped if
2184 // back to normal LSR behavior for those uses.
3087 // a register. LSR does not currently know how to form a complete chain unless
3121 // An IV chain with a single increment is handled by LSR's postinc
3259 /// this. However, such targets should probably disable LSR altogether.
3261 /// The job of LSR is to make a reasonable choice of induction variables across
3265 /// Finding the best IV chain is potentially a scheduling problem. Since LSR
3394 // by LSR.
3409 // wider phi, assuming the LSR checked for free truncation. In that case we
3496 // If LSR created a new, wider phi, we may also replace its postinc. We only
4786 // use the postinc form of the IV. LSR needs to provide these formulae
5553 "add option 'lsr-drop-solution' to drop LSR solution.\n");
5556 "solution, dropping LSR solution.\n";);
5778 // unfolded offsets. LSR assumes they both live next to their uses.
5955 // If LSR splits critical edge and phi node has other pending
6122 // sub is non-commutative - match handling elsewhere in LSR
6174 LLVM_DEBUG(dbgs() << "LSR skipping loop, too many IV Users in " << U
6212 LLVM_DEBUG(dbgs() << "LSR skipping outer loop " << *L << "\n");
6231 LLVM_DEBUG(dbgs() << "LSR found " << Uses.size() << " uses:\n";
6271 OS << "LSR has identified the following interesting factors and types: ";
6289 OS << "LSR is examining the following fixup sites:\n";
6299 OS << "LSR is examining the following uses:\n";
6667 /// Holds all the required data to salvage a dbg.value using the pre-LSR SCEVs
6775 /// Cached location ops may be erased during LSR, in which case a poison is
6784 /// Restore the DVI's pre-LSR arguments. Substitute undef for any erased values.
6787 LLVM_DEBUG(dbgs() << "scev-salvage: restore dbg.value to pre-LSR state\n"
6788 << "scev-salvage: post-LSR: " << *DbgVal << '\n');
6797 // LSR's unsuccessful salvage attempt may have added DIArgList, which in
6813 LLVM_DEBUG(dbgs() << "scev-salvage: pre-LSR: " << *DbgVal << '\n');
6831 // LSR may have caused several changes to the dbg.value in the failed salvage
6837 // LocationOpIndexMap[i] will store the post-LSR location index of
6838 // the non-optimised out location at pre-LSR index i.
6858 // optimised out by LSR.
6906 // The location doesn't have s SCEVDbgValueBuilder, so LSR did not
6940 "Anticipated a SCEV for the post-LSR induction variable");
7034 const LSRInstance &LSR) {
7047 for (const WeakVH &IV : LSR.getScalarEvolutionIVs()) {
7262 // Run the main LSR transformation.
7285 // LSR may at times remove all uses of an induction variable from a loop.