24 return ((
int *)(
this))[idx];
28 return ((
const int *)(
this))[idx];
100 void dump(std::ostream &os)
const {
102 const char *type_names[] = {
"Bool",
"UInt8",
"UInt16",
"UInt32",
"UInt64",
"Float",
"Double"};
108 os <<
" Featurization for type " << type_names[i] <<
"\n"
109 <<
" Op histogram:\n"
134 <<
" Memory access patterns. Columns are calls to other Funcs, self-calls, input image access, and stores\n"
170 return ((
double *)(
this))[idx];
174 return ((
const double *)(
this))[idx];
310 void dump(std::ostream &os)
const {
354 for (
size_t i = 0; i < n_features; i++) {
355 if ((*
this)[i] != other[i]) {
A scalar parameter to a halide pipeline.
This file defines the class FunctionDAG, which is our representation of a Halide pipeline,...
Type Float(int bits, int lanes=1)
Construct a floating-point type.
@ Internal
Not visible externally, similar to 'static' linkage in C.
Type Bool(int lanes=1)
Construct a boolean type.
unsigned __INT32_TYPE__ uint32_t
The sum of two expressions.
Logical and - are both expressions true.
The actual IR nodes begin here.
The ratio of two expressions.
Is the first expression equal to the second.
Is the first expression less than or equal to the second.
Is the first expression less than the second.
A let expression, like you might find in a functional language.
The greater of two values.
The lesser of two values.
The product of two expressions.
Is the first expression not equal to the second.
Logical not - true if the expression false.
Logical or - is at least one of the expression true.
void dump(std::ostream &os) const
static constexpr uint32_t version()
int pointwise_accesses[(int) AccessType::NumAccessTypes][(int) ScalarType::NumScalarTypes]
int & operator[](int idx)
int broadcast_accesses[(int) AccessType::NumAccessTypes][(int) ScalarType::NumScalarTypes]
static constexpr size_t num_features()
int op_histogram[(int) OpType::NumOpTypes][(int) ScalarType::NumScalarTypes]
int transpose_accesses[(int) AccessType::NumAccessTypes][(int) ScalarType::NumScalarTypes]
int types_in_use[(int) ScalarType::NumScalarTypes]
int operator[](int idx) const
int slice_accesses[(int) AccessType::NumAccessTypes][(int) ScalarType::NumScalarTypes]
double working_set_at_production
bool equal(const ScheduleFeatures &other) const
double innermost_loop_extent
double unique_bytes_read_per_vector
double points_computed_total
double points_computed_per_realization
double innermost_bytes_at_root
double innermost_bytes_at_realization
double operator[](int idx) const
double working_set_at_realization
double bytes_at_production
double native_vector_size
void dump(std::ostream &os) const
double working_set_at_task
static constexpr uint32_t version()
double scalar_loads_per_vector
double innermost_pure_loop_extent
double vector_loads_per_vector
double unique_bytes_read_per_task
static constexpr size_t num_features()
double unique_bytes_read_per_realization
double innermost_bytes_at_task
double innermost_bytes_at_production
double allocation_bytes_read_per_realization
double & operator[](int idx)
double points_computed_minimum
double unique_lines_read_per_realization
double working_set_at_root
double unique_lines_read_per_vector
double points_computed_per_production
double unique_lines_read_per_task
double unrolled_loop_extent
double bytes_at_realization
double scalar_loads_per_scalar
Store a 'value' to the buffer called 'name' at a given 'index' if 'predicate' is true.
The difference of two expressions.