Halide 21.0.0
Halide compiler and libraries
Loading...
Searching...
No Matches
Halide::Internal::Allocate Struct Reference

Allocate a scratch area called with the given name, type, and size. More...

#include <IR.h>

Inheritance diagram for Halide::Internal::Allocate:
Halide::Internal::StmtNode< Allocate > Halide::Internal::BaseStmtNode Halide::Internal::IRNode

Public Member Functions

int32_t constant_allocation_size () const
Public Member Functions inherited from Halide::Internal::StmtNode< Allocate >
void accept (IRVisitor *v) const override
 We use the visitor pattern to traverse IR nodes throughout the compiler, so we have a virtual accept method which accepts visitors.
Stmt mutate_stmt (IRMutator *v) const override
 StmtNode ()
 ~StmtNode () override=default
Public Member Functions inherited from Halide::Internal::BaseStmtNode
 BaseStmtNode (IRNodeType t)
Public Member Functions inherited from Halide::Internal::IRNode
 IRNode (IRNodeType t)
virtual ~IRNode ()=default

Static Public Member Functions

static Stmt make (const std::string &name, Type type, MemoryType memory_type, const std::vector< Expr > &extents, Expr condition, Stmt body, Expr new_expr=Expr(), const std::string &free_function=std::string(), int padding=0)
static int32_t constant_allocation_size (const std::vector< Expr > &extents, const std::string &name)
 A routine to check if the extents are all constants, and if so verify the total size is less than 2^31 - 1.

Public Attributes

std::string name
Type type
MemoryType memory_type
std::vector< Exprextents
Expr condition
Expr new_expr
std::string free_function
int padding
Stmt body
Public Attributes inherited from Halide::Internal::IRNode
RefCount ref_count
 These classes are all managed with intrusive reference counting, so we also track a reference count.
IRNodeType node_type
 Each IR node subclass has a unique identifier.

Static Public Attributes

static const IRNodeType _node_type = IRNodeType::Allocate

Detailed Description

Allocate a scratch area called with the given name, type, and size.

The buffer lives for at most the duration of the body statement, within which it may or may not be freed explicitly with a Free node with a matching name. Allocation only occurs if the condition evaluates to true. Within the body of the allocation, defines a symbol with the given name and the type Handle().

Definition at line 371 of file IR.h.

Member Function Documentation

◆ make()

Stmt Halide::Internal::Allocate::make ( const std::string & name,
Type type,
MemoryType memory_type,
const std::vector< Expr > & extents,
Expr condition,
Stmt body,
Expr new_expr = Expr(),
const std::string & free_function = std::string(),
int padding = 0 )
static

◆ constant_allocation_size() [1/2]

int32_t Halide::Internal::Allocate::constant_allocation_size ( const std::vector< Expr > & extents,
const std::string & name )
static

A routine to check if the extents are all constants, and if so verify the total size is less than 2^31 - 1.

If the result is constant, but overflows, this routine asserts. This returns 0 if the extents are not all constants; otherwise, it returns the total constant allocation size. Does not include any padding bytes.

References extents, and name.

◆ constant_allocation_size() [2/2]

int32_t Halide::Internal::Allocate::constant_allocation_size ( ) const

Member Data Documentation

◆ name

std::string Halide::Internal::Allocate::name

Definition at line 372 of file IR.h.

Referenced by constant_allocation_size(), and make().

◆ type

Type Halide::Internal::Allocate::type

Definition at line 373 of file IR.h.

Referenced by make().

◆ memory_type

MemoryType Halide::Internal::Allocate::memory_type

Definition at line 374 of file IR.h.

Referenced by make().

◆ extents

std::vector<Expr> Halide::Internal::Allocate::extents

Definition at line 375 of file IR.h.

Referenced by constant_allocation_size(), and make().

◆ condition

Expr Halide::Internal::Allocate::condition

Definition at line 378 of file IR.h.

Referenced by make().

◆ new_expr

Expr Halide::Internal::Allocate::new_expr

Definition at line 387 of file IR.h.

Referenced by make().

◆ free_function

std::string Halide::Internal::Allocate::free_function

Definition at line 388 of file IR.h.

Referenced by make().

◆ padding

int Halide::Internal::Allocate::padding

Definition at line 392 of file IR.h.

Referenced by make().

◆ body

Stmt Halide::Internal::Allocate::body

Definition at line 394 of file IR.h.

Referenced by make().

◆ _node_type

const IRNodeType Halide::Internal::Allocate::_node_type = IRNodeType::Allocate
static

Definition at line 409 of file IR.h.


The documentation for this struct was generated from the following file: