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. */
16
enum class
PrefetchBoundStrategy
{
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). */
25
GuardWithIf
,
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. */
32
NonFaulting
33
};
34
35
namespace
Internal {
36
37
struct
PrefetchDirective
{
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.
42
PrefetchBoundStrategy
strategy
;
43
// If it's a prefetch load from an image parameter, this points to that.
44
Parameter
param
;
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
src
PrefetchDirective.h
Generated by
1.8.17