1#ifndef HALIDE_DEVICE_ARGUMENT_H
2#define HALIDE_DEVICE_ARGUMENT_H
Base classes for Halide expressions (Halide::Expr) and statements (Halide::Internal::Stmt)
Routines for statically determining what expressions are divisible by.
A helper class to manage closures.
void visit(const Let *op) override
A Closure modified to inspect GPU-specific memory accesses, and produce a vector of DeviceArgument ob...
void visit(const Call *op) override
std::vector< DeviceArgument > arguments()
Get a description of the captured arguments.
void visit(const For *loop) override
This file defines the class FunctionDAG, which is our representation of a Halide pipeline,...
@ Internal
Not visible externally, similar to 'static' linkage in C.
MemoryType
An enum describing different address spaces to be used with Func::store_in.
@ Auto
Let Halide select a storage type automatically.
unsigned __INT8_TYPE__ uint8_t
A DeviceArgument looks similar to an Halide::Argument, but has behavioral differences that make it sp...
size_t packed_index
The index of the first element of the argument when packed into a wider type, such as packing scalar ...
bool read
For buffers, these two variables can be used to specify whether the buffer is read or written.
size_t size
The static size of the argument if known, or zero otherwise.
Type type
If this is a scalar parameter, then this is its type.
uint8_t dimensions
If is_buffer is true, this is the dimensionality of the buffer.
ModulusRemainder alignment
Alignment information for integer parameters.
MemoryType memory_type
If is_buffer == true and memory_type == GPUTexture, this argument should be passed and accessed throu...
std::string name
The name of the argument.
bool is_buffer
An argument is either a primitive type (for parameters), or a buffer pointer.
DeviceArgument(const std::string &_name, bool _is_buffer, MemoryType _mem, Type _type, uint8_t _dimensions, size_t _size=0)
The result of modulus_remainder analysis.
Types in the halide type system.