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< Range > | Halide::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<>
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.
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.