Halide
Expr.h File Reference
#include <string>
#include <vector>
#include "IntrusivePtr.h"
#include "Type.h"

Go to the source code of this file.

Classes

struct  Halide::Internal::IRNode
 The abstract base classes for a node in the Halide IR. More...
 
struct  Halide::Internal::BaseStmtNode
 IR nodes are split into expressions and statements. More...
 
struct  Halide::Internal::BaseExprNode
 A base class for expression nodes. More...
 
struct  Halide::Internal::ExprNode< T >
 We use the "curiously recurring template pattern" to avoid duplicated code in the IR Nodes. More...
 
struct  Halide::Internal::StmtNode< T >
 
struct  Halide::Internal::IRHandle
 IR nodes are passed around opaque handles to them. More...
 
struct  Halide::Internal::IntImm
 Integer constants. More...
 
struct  Halide::Internal::UIntImm
 Unsigned integer constants. More...
 
struct  Halide::Internal::FloatImm
 Floating point constants. More...
 
struct  Halide::Internal::StringImm
 String constants. More...
 
struct  Halide::Expr
 A fragment of Halide syntax. More...
 
struct  Halide::ExprCompare
 This lets you use an Expr as a key in a map of the form map<Expr, Foo, ExprCompare> More...
 
struct  Halide::Range
 A single-dimensional span. More...
 
struct  Halide::Internal::Stmt
 A reference-counted handle to a statement node. More...
 
struct  Halide::Internal::Stmt::Compare
 This lets you use a Stmt as a key in a map of the form map<Stmt, Foo, Stmt::Compare> More...
 

Namespaces

 Halide
 This file defines the class FunctionDAG, which is our representation of a Halide pipeline, and contains methods to using Halide's bounds tools to query properties of it.
 
 Halide::Internal
 

Typedefs

typedef std::vector< Range > Halide::Region
 A multi-dimensional box. More...
 

Enumerations

enum  Halide::Internal::IRNodeType {
  Halide::Internal::IRNodeType::IntImm, Halide::Internal::IRNodeType::UIntImm, Halide::Internal::IRNodeType::FloatImm, Halide::Internal::IRNodeType::StringImm,
  Halide::Internal::IRNodeType::Broadcast, Halide::Internal::IRNodeType::Cast, Halide::Internal::IRNodeType::Reinterpret, Halide::Internal::IRNodeType::Variable,
  Halide::Internal::IRNodeType::Add, Halide::Internal::IRNodeType::Sub, Halide::Internal::IRNodeType::Mod, Halide::Internal::IRNodeType::Mul,
  Halide::Internal::IRNodeType::Div, Halide::Internal::IRNodeType::Min, Halide::Internal::IRNodeType::Max, Halide::Internal::IRNodeType::EQ,
  Halide::Internal::IRNodeType::NE, Halide::Internal::IRNodeType::LT, Halide::Internal::IRNodeType::LE, Halide::Internal::IRNodeType::GT,
  Halide::Internal::IRNodeType::GE, Halide::Internal::IRNodeType::And, Halide::Internal::IRNodeType::Or, Halide::Internal::IRNodeType::Not,
  Halide::Internal::IRNodeType::Select, Halide::Internal::IRNodeType::Load, Halide::Internal::IRNodeType::Ramp, Halide::Internal::IRNodeType::Call,
  Halide::Internal::IRNodeType::Let, Halide::Internal::IRNodeType::Shuffle, Halide::Internal::IRNodeType::VectorReduce, Halide::Internal::IRNodeType::LetStmt,
  Halide::Internal::IRNodeType::AssertStmt, Halide::Internal::IRNodeType::ProducerConsumer, Halide::Internal::IRNodeType::For, Halide::Internal::IRNodeType::Acquire,
  Halide::Internal::IRNodeType::Store, Halide::Internal::IRNodeType::Provide, Halide::Internal::IRNodeType::Allocate, Halide::Internal::IRNodeType::Free,
  Halide::Internal::IRNodeType::Realize, Halide::Internal::IRNodeType::Block, Halide::Internal::IRNodeType::Fork, Halide::Internal::IRNodeType::IfThenElse,
  Halide::Internal::IRNodeType::Evaluate, Halide::Internal::IRNodeType::Prefetch, Halide::Internal::IRNodeType::Atomic
}
 All our IR node types get unique IDs for the purposes of RTTI. More...
 
enum  Halide::MemoryType {
  Halide::MemoryType::Auto, Halide::MemoryType::Heap, Halide::MemoryType::Stack, Halide::MemoryType::Register,
  Halide::MemoryType::GPUShared, Halide::MemoryType::GPUTexture, Halide::MemoryType::LockedCache, Halide::MemoryType::VTCM,
  Halide::MemoryType::AMXTile
}
 An enum describing different address spaces to be used with Func::store_in. More...
 
enum  Halide::Internal::ForType {
  Halide::Internal::ForType::Serial, Halide::Internal::ForType::Parallel, Halide::Internal::ForType::Vectorized, Halide::Internal::ForType::Unrolled,
  Halide::Internal::ForType::Extern, Halide::Internal::ForType::GPUBlock, Halide::Internal::ForType::GPUThread, Halide::Internal::ForType::GPULane
}
 An enum describing a type of loop traversal. More...
 

Functions

template<>
RefCount & Halide::Internal::ref_count< IRNode > (const IRNode *t) noexcept
 
template<>
void Halide::Internal::destroy< IRNode > (const IRNode *t)
 
bool Halide::Internal::is_unordered_parallel (ForType for_type)
 Check if for_type executes for loop iterations in parallel and unordered. More...
 
bool Halide::Internal::is_parallel (ForType for_type)
 Returns true if for_type executes for loop iterations in parallel. More...
 

Variables

constexpr IRNodeType Halide::Internal::StrongestExprNodeType = IRNodeType::VectorReduce
 

Detailed Description

Base classes for Halide expressions (Halide::Expr) and statements (Halide::Internal::Stmt)

Definition in file Expr.h.