Halide 19.0.0
Halide compiler and libraries
Loading...
Searching...
No Matches
Expr.h File Reference

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

#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

namespace  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.
 
namespace  Halide::Internal
 

Typedefs

typedef std::vector< RangeHalide::Region
 A multi-dimensional box.
 

Enumerations

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

Functions

template<>
RefCountHalide::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.
 
bool Halide::Internal::is_parallel (ForType for_type)
 Returns true if for_type executes for loop iterations in parallel.
 
bool Halide::Internal::is_gpu (ForType for_type)
 Returns true if for_type is GPUBlock, GPUThread, or GPULane.
 

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.