Lines Matching defs:LSR

135 /// bail out. This threshold is far beyond the number of users that LSR can
137 /// worst cases before LSR burns too much compile time and stack space.
146 // Cleanup congruent phis after LSR phi expansion.
149 cl::desc("Enable LSR phi elimination"));
154 cl::desc("Add instruction count to a LSR cost model"));
159 cl::desc("Narrow LSR complex solution using"
166 cl::desc("Narrow LSR search space by filtering non-optimal formulae"
185 cl::desc("LSR search space complexity limit"));
197 cl::desc("Enable analysis of vscale-relative immediates in LSR"));
207 cl::desc("Stress test LSR IV chains"));
498 /// together in LSR codegen.
650 /// field. Otherwise, we would have to do special cases everywhere in LSR
1303 /// This class holds the state that LSR keeps for each use in IVUsers, as well
1304 /// as uses invented by LSR itself. It includes information about what kinds of
1340 /// expressions cannot be expanded. This allows LSR to consider the registers
1418 // for now LSR only handles innermost loops).
1424 // It is bad to allow LSR for current loop to add induction variables
1773 OS << "LSR Use: Kind=";
2079 /// chain collection, before LSR replaces IV users. During chain generation,
2164 /// The cost of the current SCEV, the best solution by LSR will be dropped if
2179 // back to normal LSR behavior for those uses.
3088 // a register. LSR does not currently know how to form a complete chain unless
3122 // An IV chain with a single increment is handled by LSR's postinc
3260 /// this. However, such targets should probably disable LSR altogether.
3262 /// The job of LSR is to make a reasonable choice of induction variables across
3266 /// Finding the best IV chain is potentially a scheduling problem. Since LSR
3395 // by LSR.
3410 // wider phi, assuming the LSR checked for free truncation. In that case we
3497 // If LSR created a new, wider phi, we may also replace its postinc. We only
4788 // use the postinc form of the IV. LSR needs to provide these formulae
5555 "add option 'lsr-drop-solution' to drop LSR solution.\n");
5558 "solution, dropping LSR solution.\n";);
5780 // unfolded offsets. LSR assumes they both live next to their uses.
5951 // If LSR splits critical edge and phi node has other pending
6119 // sub is non-commutative - match handling elsewhere in LSR
6171 LLVM_DEBUG(dbgs() << "LSR skipping loop, too many IV Users in " << U
6209 LLVM_DEBUG(dbgs() << "LSR skipping outer loop " << *L << "\n");
6228 LLVM_DEBUG(dbgs() << "LSR found " << Uses.size() << " uses:\n";
6268 OS << "LSR has identified the following interesting factors and types: ";
6286 OS << "LSR is examining the following fixup sites:\n";
6296 OS << "LSR is examining the following uses:\n";
6664 /// Holds all the required data to salvage a dbg.value using the pre-LSR SCEVs
6772 /// Cached location ops may be erased during LSR, in which case a poison is
6781 /// Restore the DVI's pre-LSR arguments. Substitute undef for any erased values.
6784 LLVM_DEBUG(dbgs() << "scev-salvage: restore dbg.value to pre-LSR state\n"
6785 << "scev-salvage: post-LSR: " << *DbgVal << '\n');
6794 // LSR's unsuccessful salvage attempt may have added DIArgList, which in
6810 LLVM_DEBUG(dbgs() << "scev-salvage: pre-LSR: " << *DbgVal << '\n');
6828 // LSR may have caused several changes to the dbg.value in the failed salvage
6834 // LocationOpIndexMap[i] will store the post-LSR location index of
6835 // the non-optimised out location at pre-LSR index i.
6855 // optimised out by LSR.
6905 // The location doesn't have s SCEVDbgValueBuilder, so LSR did not
6939 "Anticipated a SCEV for the post-LSR induction variable");
7033 const LSRInstance &LSR) {
7046 for (const WeakVH &IV : LSR.getScalarEvolutionIVs()) {
7081 // Run the main LSR transformation.
7104 // LSR may at times remove all uses of an induction variable from a loop.