Halide
PrefetchDirective.h
Go to the documentation of this file.
1 #ifndef HALIDE_PREFETCH_DIRECTIVE_H
2 #define HALIDE_PREFETCH_DIRECTIVE_H
3 
4 /** \file
5  * Defines the PrefetchDirective struct
6  */
7 
8 #include <string>
9 
10 #include "Expr.h"
11 #include "Parameter.h"
12 
13 namespace Halide {
14 
15 /** Different ways to handle accesses outside the original extents in a prefetch. */
17  /** Clamp the prefetched exprs by intersecting the prefetched region with
18  * the original extents. This may make the exprs of the prefetched region
19  * more complicated. */
20  Clamp,
21 
22  /** Guard the prefetch with if-guards that ignores the prefetch if
23  * any of the prefetched region ever goes beyond the original extents
24  * (i.e. all or nothing). */
26 
27  /** Leave the prefetched exprs as-is (no if-guards around the prefetch
28  * and no intersecting with the original extents). This makes the prefetch
29  * exprs simpler but this may cause prefetching of the region outside the original
30  * extents. This is good if prefetch won't fault when accessing region
31  * outside the original extents. */
33 };
34 
35 namespace Internal {
36 
38  std::string name;
39  std::string at; // the loop in which to do the prefetch
40  std::string from; // the loop-var to use as the base for prefetching. It must be nested outside loop_var (or be equal to loop_var).
41  Expr offset; // 'from + offset' will determine the bounds being prefetched.
43  // If it's a prefetch load from an image parameter, this points to that.
45 };
46 
47 } // namespace Internal
48 
49 } // namespace Halide
50 
51 #endif // HALIDE_PREFETCH_DIRECTIVE_H
Parameter.h
Halide::Internal::Parameter
A reference-counted handle to a parameter to a halide pipeline.
Definition: Parameter.h:28
Halide::PrefetchBoundStrategy::GuardWithIf
@ GuardWithIf
Guard the prefetch with if-guards that ignores the prefetch if any of the prefetched region ever goes...
Halide::Internal::PrefetchDirective::name
std::string name
Definition: PrefetchDirective.h:38
Halide
This file defines the class FunctionDAG, which is our representation of a Halide pipeline,...
Definition: AbstractGenerator.h:19
Halide::Internal::PrefetchDirective::at
std::string at
Definition: PrefetchDirective.h:39
Halide::PrefetchBoundStrategy::NonFaulting
@ NonFaulting
Leave the prefetched exprs as-is (no if-guards around the prefetch and no intersecting with the origi...
Halide::PrefetchBoundStrategy::Clamp
@ Clamp
Clamp the prefetched exprs by intersecting the prefetched region with the original extents.
Halide::Internal::PrefetchDirective::param
Parameter param
Definition: PrefetchDirective.h:44
Halide::Internal::PrefetchDirective::strategy
PrefetchBoundStrategy strategy
Definition: PrefetchDirective.h:42
Expr.h
Halide::Internal::PrefetchDirective
Definition: PrefetchDirective.h:37
Halide::Internal::PrefetchDirective::offset
Expr offset
Definition: PrefetchDirective.h:41
Halide::PrefetchBoundStrategy
PrefetchBoundStrategy
Different ways to handle accesses outside the original extents in a prefetch.
Definition: PrefetchDirective.h:16
Halide::Expr
A fragment of Halide syntax.
Definition: Expr.h:257
Halide::Internal::PrefetchDirective::from
std::string from
Definition: PrefetchDirective.h:40