Halide 19.0.0
Halide compiler and libraries
|
A helper class to manage closures. More...
#include <Closure.h>
Classes | |
struct | Buffer |
Information about a buffer reference from a closure. More... | |
Public Member Functions | |
Closure ()=default | |
Closure (const Closure &)=delete | |
Closure & | operator= (const Closure &)=delete |
Closure (Closure &&)=default | |
Closure & | operator= (Closure &&)=default |
void | include (const Stmt &s, const std::string &loop_variable="") |
Traverse a statement and find all references to external symbols. | |
Expr | pack_into_struct () const |
Pack a closure into a struct. | |
Stmt | unpack_from_struct (const Expr &, const Stmt &) const |
Unpack a closure around a Stmt, putting all the names in scope. | |
Public Member Functions inherited from Halide::Internal::IRVisitor | |
IRVisitor ()=default | |
virtual | ~IRVisitor ()=default |
Public Attributes | |
std::map< std::string, Type > | vars |
External variables referenced. | |
std::map< std::string, Buffer > | buffers |
External allocations referenced. | |
Protected Member Functions | |
void | visit (const Let *op) override |
void | visit (const LetStmt *op) override |
void | visit (const For *op) override |
void | visit (const Load *op) override |
void | visit (const Store *op) override |
void | visit (const Allocate *op) override |
void | visit (const Variable *op) override |
void | visit (const Atomic *op) override |
void | found_buffer_ref (const std::string &name, Type type, bool read, bool written, const Halide::Buffer<> &image) |
virtual void | visit (const IntImm *) |
virtual void | visit (const UIntImm *) |
virtual void | visit (const FloatImm *) |
virtual void | visit (const StringImm *) |
virtual void | visit (const Cast *) |
virtual void | visit (const Reinterpret *) |
virtual void | visit (const Add *) |
virtual void | visit (const Sub *) |
virtual void | visit (const Mul *) |
virtual void | visit (const Div *) |
virtual void | visit (const Mod *) |
virtual void | visit (const Min *) |
virtual void | visit (const Max *) |
virtual void | visit (const EQ *) |
virtual void | visit (const NE *) |
virtual void | visit (const LT *) |
virtual void | visit (const LE *) |
virtual void | visit (const GT *) |
virtual void | visit (const GE *) |
virtual void | visit (const And *) |
virtual void | visit (const Or *) |
virtual void | visit (const Not *) |
virtual void | visit (const Select *) |
virtual void | visit (const Ramp *) |
virtual void | visit (const Broadcast *) |
virtual void | visit (const Call *) |
virtual void | visit (const AssertStmt *) |
virtual void | visit (const ProducerConsumer *) |
virtual void | visit (const Provide *) |
virtual void | visit (const Free *) |
virtual void | visit (const Realize *) |
virtual void | visit (const Block *) |
virtual void | visit (const IfThenElse *) |
virtual void | visit (const Evaluate *) |
virtual void | visit (const Shuffle *) |
virtual void | visit (const VectorReduce *) |
virtual void | visit (const Prefetch *) |
virtual void | visit (const Fork *) |
virtual void | visit (const Acquire *) |
virtual void | visit (const HoistedStorage *) |
Protected Member Functions inherited from Halide::Internal::IRVisitor |
Protected Attributes | |
Scope | ignore |
A helper class to manage closures.
Walks over a statement and retrieves all the references within it to external symbols (variables and allocations). It then helps you build a struct containing the current values of these symbols that you can use as a closure if you want to migrate the body of the statement to its own function (e.g. because it's the body of a parallel for loop.
|
default |
|
delete |
|
default |
|
overrideprotectedvirtual |
Reimplemented from Halide::Internal::IRVisitor.
|
overrideprotectedvirtual |
Reimplemented from Halide::Internal::IRVisitor.
|
overrideprotectedvirtual |
Reimplemented from Halide::Internal::IRVisitor.
Reimplemented in Halide::Internal::HostClosure.
|
overrideprotectedvirtual |
Reimplemented from Halide::Internal::IRVisitor.
|
overrideprotectedvirtual |
Reimplemented from Halide::Internal::IRVisitor.
|
overrideprotectedvirtual |
Reimplemented from Halide::Internal::IRVisitor.
|
overrideprotectedvirtual |
Reimplemented from Halide::Internal::IRVisitor.
|
overrideprotectedvirtual |
Reimplemented from Halide::Internal::IRVisitor.
|
protected |
void Halide::Internal::Closure::include | ( | const Stmt & | s, |
const std::string & | loop_variable = "" ) |
Traverse a statement and find all references to external symbols.
When the closure encounters a read or write to 'foo', it assumes that the host pointer is found in the symbol table as 'foo.host', and any halide_buffer_t pointer is found under 'foo.buffer'.
Calling this multiple times (on multiple statements) is legal (and will produce a unified closure).
Expr Halide::Internal::Closure::pack_into_struct | ( | ) | const |
Pack a closure into a struct.
Unpack a closure around a Stmt, putting all the names in scope.
|
protectedvirtual |
Reimplemented from Halide::Internal::IRVisitor.
|
protectedvirtual |
Reimplemented from Halide::Internal::IRVisitor.
|
protectedvirtual |
Reimplemented from Halide::Internal::IRVisitor.
|
protectedvirtual |
Reimplemented from Halide::Internal::IRVisitor.
|
protectedvirtual |
Reimplemented from Halide::Internal::IRVisitor.
|
protectedvirtual |
Reimplemented from Halide::Internal::IRVisitor.
|
protectedvirtual |
Reimplemented from Halide::Internal::IRVisitor.
|
protectedvirtual |
Reimplemented from Halide::Internal::IRVisitor.
|
protectedvirtual |
Reimplemented from Halide::Internal::IRVisitor.
|
protectedvirtual |
Reimplemented from Halide::Internal::IRVisitor.
|
protectedvirtual |
Reimplemented from Halide::Internal::IRVisitor.
|
protectedvirtual |
Reimplemented from Halide::Internal::IRVisitor.
|
protectedvirtual |
Reimplemented from Halide::Internal::IRVisitor.
|
protectedvirtual |
Reimplemented from Halide::Internal::IRVisitor.
|
protectedvirtual |
Reimplemented from Halide::Internal::IRVisitor.
|
protectedvirtual |
Reimplemented from Halide::Internal::IRVisitor.
|
protectedvirtual |
Reimplemented from Halide::Internal::IRVisitor.
|
protectedvirtual |
Reimplemented from Halide::Internal::IRVisitor.
|
protectedvirtual |
Reimplemented from Halide::Internal::IRVisitor.
|
protectedvirtual |
Reimplemented from Halide::Internal::IRVisitor.
|
protectedvirtual |
Reimplemented from Halide::Internal::IRVisitor.
|
protectedvirtual |
Reimplemented from Halide::Internal::IRVisitor.
|
protectedvirtual |
Reimplemented from Halide::Internal::IRVisitor.
|
protectedvirtual |
Reimplemented from Halide::Internal::IRVisitor.
|
protectedvirtual |
Reimplemented from Halide::Internal::IRVisitor.
|
protectedvirtual |
Reimplemented from Halide::Internal::IRVisitor.
Reimplemented in Halide::Internal::HostClosure.
|
protectedvirtual |
Reimplemented from Halide::Internal::IRVisitor.
|
protectedvirtual |
Reimplemented from Halide::Internal::IRVisitor.
|
protectedvirtual |
Reimplemented from Halide::Internal::IRVisitor.
|
protectedvirtual |
Reimplemented from Halide::Internal::IRVisitor.
|
protectedvirtual |
Reimplemented from Halide::Internal::IRVisitor.
|
protectedvirtual |
Reimplemented from Halide::Internal::IRVisitor.
|
protectedvirtual |
Reimplemented from Halide::Internal::IRVisitor.
|
protectedvirtual |
Reimplemented from Halide::Internal::IRVisitor.
|
protectedvirtual |
Reimplemented from Halide::Internal::IRVisitor.
|
protectedvirtual |
Reimplemented from Halide::Internal::IRVisitor.
|
protectedvirtual |
Reimplemented from Halide::Internal::IRVisitor.
|
protectedvirtual |
Reimplemented from Halide::Internal::IRVisitor.
|
protectedvirtual |
Reimplemented from Halide::Internal::IRVisitor.
|
protectedvirtual |
Reimplemented from Halide::Internal::IRVisitor.
std::map<std::string, Type> Halide::Internal::Closure::vars |
std::map<std::string, Buffer> Halide::Internal::Closure::buffers |