Lines Matching full:live
1 //===- SplitKit.h - Toolkit for splitting live ranges -----------*- C++ -*-===//
10 // live range splitting.
57 /// live into a landing pad or inlineasm_br successor.
94 /// SplitAnalysis - Analyze a LiveInterval, looking for live range splitting
105 /// live. Such a block will look like one of these templates:
107 /// 1. | o---x | Internal to block. Variable is only live in this block.
108 /// 2. |---x | Live-in, kill.
109 /// 3. | o---| Def, live-out.
110 /// 4. |---x o---| Live-in, kill, def, live-out. Counted by NumGapBlocks.
111 /// 5. |---o---o---| Live-through with uses or defs.
112 /// 6. |-----------| Live-through without uses. Counted by NumThroughBlocks.
114 /// Two BlockInfo entries are created for template 4. One for the live-in
115 /// segment, and one for the live-out segment. These entries look as if the
116 /// block were split in the middle where the live range isn't live.
118 /// Live-through blocks without any uses don't get BlockInfo entries. They
126 bool LiveIn; ///< Current reg is live in.
127 bool LiveOut; ///< Current reg is live out.
140 // Current live interval.
153 /// the live range has a gap.
156 /// ThroughBlocks - Block numbers where CurLI is live through without uses.
159 /// NumThroughBlocks - Number of live-through blocks.
187 /// isOriginalEndpoint - Return true if the original live range was killed or
190 /// This can be used to recognize code inserted by earlier live range
205 /// isThroughBlock - Return true if CurLI is live through MBB without uses.
211 /// getNumLiveBlocks - Return the number of blocks where CurLI is live.
218 /// countLiveBlocks - Return the number of blocks where li is live. This is
226 /// live range for the instructions in BI. There is normally no benefit to
227 /// creating a live range for a single instruction, but it does enable
252 /// SplitEditor - Edit machine code and LiveIntervals for live range
256 /// - Start a new live interval with openIntv.
275 /// ComplementSpillMode - Select how the complement live range should be
320 /// Edit.get(RegAssign.lookup(Idx)) is the register that should be live at
332 /// Edit.get(RegIdx). Each value is represented by a minimal live range at
333 /// its def. The full live range can be inferred exactly from the range
336 /// the live range must be recomputed using ::extend().
338 /// The new value has no live ranges anywhere.
341 /// LICalc - Cache for computing live ranges and SSA update. Each instance
342 /// can only handle non-overlapping live ranges, so use a separate
363 /// ParentVNI's live range in ParentLI. The new value is added to the value
372 /// forceRecompute - Force the live range of ParentVNI in RegIdx to be
374 /// This is used for values whose live range doesn't match RegAssign exactly.
410 /// Live range @p LR corresponding to the lane Mask @p LM has a live
453 /// Create a new virtual register and live interval.
465 /// If the parent interval is not live before Idx, a COPY is not inserted.
466 /// Return the beginning of the new live range.
470 /// Return the beginning of the new live range.
475 /// Return the beginning of the new live range.
485 /// Return the end of the live range.
489 /// Return the end of the live range.
494 /// Return the end of the live range.
499 /// case complement interval is used. Let the complement interval be live.
510 /// finish - after all the new live ranges have been created, compute the
511 /// remaining live range, and rewrite instructions to use the new registers.
512 /// @param LRMap When not null, this vector will map each live range in Edit
522 /// splitSingleBlock - Split CurLI into a separate live interval around the
552 /// block on the stack (or isn't live-in at all) and leaves it in IntvOut.