1#ifndef HALIDE_DEFINITION_H
2#define HALIDE_DEFINITION_H
17struct DefinitionContents;
18struct FunctionContents;
62 return contents.
same_as(other.contents);
86 const std::vector<Expr> &
args()
const;
97 const std::vector<Expr> &
values()
const;
Base classes for Halide expressions (Halide::Expr) and statements (Halide::Internal::Stmt)
Support classes for reference-counting via intrusive shared pointers.
Defines the internal representation of the schedule for a function.
A Function definition which can either represent a init or an update definition.
const std::vector< Expr > & values() const
Get the default (no-specialization) right-hand-side of the definition.
bool same_as(const Definition &other) const
Equality of identity.
std::vector< Expr > split_predicate() const
Split predicate into vector of ANDs.
std::vector< Expr > & args()
Definition(bool is_init, const Expr &predicate, const std::vector< Expr > &args, const std::vector< Expr > &values, const StageSchedule &schedule, const std::vector< Specialization > &specializations)
Construct a Definition with deserialized data.
Definition(const IntrusivePtr< DefinitionContents > &)
Construct a Definition from an existing DefinitionContents pointer.
const Expr & predicate() const
Get the predicate on the definition.
const Specialization & add_specialization(Expr condition)
Definition()
Construct an undefined Definition object.
std::vector< Expr > & values()
StageSchedule & schedule()
void mutate(IRMutator *)
Pass an IRMutator through to all Exprs referenced in the definition.
const std::vector< Expr > & args() const
Get the default (no-specialization) arguments (left-hand-side) of the definition.
bool is_init() const
Is this an init definition; otherwise it's an update definition.
const std::vector< Specialization > & specializations() const
You may create several specialized versions of a func with different stage-specific schedules.
const StageSchedule & schedule() const
Get the default (no-specialization) stage-specific schedule associated with this definition.
bool defined() const
Definition objects are nullable.
void accept(IRVisitor *) const
Pass an IRVisitor through to all Exprs referenced in the definition.
Definition get_copy() const
Return a copy of this Definition.
std::vector< Specialization > & specializations()
Definition(const std::vector< Expr > &args, const std::vector< Expr > &values, const ReductionDomain &rdom, bool is_init)
Construct a Definition with the supplied args, values, and reduction domain.
A base class for passes over the IR which modify it (e.g.
A base class for algorithms that need to recursively walk over the IR.
A reference-counted handle on a reduction domain, which is just a vector of ReductionVariable.
A schedule for a single stage of a Halide pipeline.
This file defines the class FunctionDAG, which is our representation of a Halide pipeline,...
@ Internal
Not visible externally, similar to 'static' linkage in C.
A fragment of Halide syntax.
Intrusive shared pointers have a reference count (a RefCount object) stored in the class itself.
HALIDE_ALWAYS_INLINE bool same_as(const IntrusivePtr &other) const
std::string failure_message