Halide
LICM.h
Go to the documentation of this file.
1 #ifndef HALIDE_LICM_H
2 #define HALIDE_LICM_H
3 
4 /** \file
5  * Methods for lifting loop invariants out of inner loops.
6  */
7 
8 #include "Expr.h"
9 
10 namespace Halide {
11 namespace Internal {
12 
13 /** Hoist loop-invariants out of inner loops. This is especially
14  * important in cases where LLVM would not do it for us
15  * automatically. For example, it hoists loop invariants out of cuda
16  * kernels. */
18 
19 /** Just hoist loop-invariant if statements as far up as
20  * possible. Does not lift other values. It's useful to run this
21  * earlier in lowering to simplify the IR. */
23 
24 } // namespace Internal
25 } // namespace Halide
26 
27 #endif
Halide
This file defines the class FunctionDAG, which is our representation of a Halide pipeline,...
Definition: AbstractGenerator.h:19
Halide::LinkageType::Internal
@ Internal
Not visible externally, similar to 'static' linkage in C.
Halide::Internal::hoist_loop_invariant_values
Stmt hoist_loop_invariant_values(Stmt)
Hoist loop-invariants out of inner loops.
Halide::Internal::hoist_loop_invariant_if_statements
Stmt hoist_loop_invariant_if_statements(Stmt)
Just hoist loop-invariant if statements as far up as possible.
Expr.h