Lines Matching full:loop

1 //===---- CGLoopInfo.h - LLVM CodeGen for loop metadata -*- C++ -*---------===//
9 // This is the internal state used for llvm translation for loop statement
40 /// Generate llvm.loop.parallel metadata for loads and stores.
43 /// State of loop vectorization or unrolling.
46 /// Value for llvm.loop.vectorize.enable metadata.
49 /// Value for llvm.loop.unroll.* metadata (enable, disable, or full).
52 /// Value for llvm.loop.unroll_and_jam.* metadata (enable, disable, or full).
55 /// Value for llvm.loop.vectorize.predicate metadata
58 /// Value for llvm.loop.vectorize.width metadata.
61 // Value for llvm.loop.vectorize.scalable.enable
64 /// Value for llvm.loop.interleave.count metadata.
73 /// Value for llvm.loop.distribute.enable metadata.
76 /// Value for llvm.loop.pipeline.disable metadata.
79 /// Value for llvm.loop.pipeline.iicount metadata.
82 /// Value for 'llvm.loop.align' metadata.
85 /// Value for whether the loop is required to make progress.
89 /// Information used when generating a structured loop.
92 /// Construct a new LoopInfo for the loop with entry Header.
97 /// Get the loop id metadata for this loop.
100 /// Get the header block of this loop.
103 /// Get the set of attributes active for this loop.
106 /// Return this loop's access group or nullptr if it does not have one.
109 /// Create the loop's metadata. Must be called after its nested loops have
113 /// Returns the first outer loop containing this loop if any, nullptr
118 /// Loop ID metadata.
120 /// Header block of this loop.
122 /// The attributes for this loop.
124 /// The access group for memory accesses parallel to this loop.
126 /// Start location of this loop.
128 /// End location of this loop.
130 /// The next outer loop, or nullptr if this is the outermost loop.
132 /// If this loop has unroll-and-jam metadata, this can be set by the inner
133 /// loop's LoopInfo to set the llvm.loop.unroll_and_jam.followup_inner
144 /// to a loop. The transformation first to be applied will use LoopID of the
147 /// @param Attrs The loop's transformations.
155 /// @return A LoopID (metadata node) that can be used for the llvm.loop
184 /// Create a LoopID for this loop, including transformation-unspecific
187 /// @param Attrs This loop's attributes and transformations.
194 /// @return A LoopID (metadata node) that can be used for the llvm.loop
201 /// A stack of loop information corresponding to loop nesting levels.
202 /// This stack can be used to prepare attributes which are applied when a loop
211 /// Begin a new structured loop. The set of staged attributes will be
212 /// applied to the loop and then cleared.
216 /// Begin a new structured loop. Stage attributes from the Attrs list.
217 /// The staged attributes are applied to the loop and then cleared.
223 /// End the current loop.
226 /// Return the top loop id metadata.
229 /// Return true if the top loop is parallel.
238 /// Set the next pushed loop as parallel.
241 /// Set the next pushed loop 'vectorize.enable'
247 /// Set the next pushed loop as a distribution candidate.
253 /// Set the next pushed loop unroll state.
263 /// Set the next pushed loop unroll_and_jam state.
268 /// Set the vectorize width for the next loop pushed.
275 /// Set the interleave count for the next loop pushed.
278 /// Set the unroll count for the next loop pushed.
281 /// \brief Set the unroll count for the next loop pushed.
292 /// Set value of code align for the next loop pushed.
295 /// Set no progress for the next loop pushed.
300 /// Return the LoopInfo for the current loop. HasInfo should be called
305 /// The set of attributes that will be applied to the next pushed loop.