Halide 22.0.0
Halide compiler and libraries
Halide::Internal::LambdaMutator< Lambdas > Struct Template Referencefinal

A lambda-based IR mutator that accepts multiple lambdas for different node types. More...

#include <IRMutator.h>

Inheritance diagram for Halide::Internal::LambdaMutator< Lambdas >:
Halide::Internal::IRMutator

Public Member Functions

 LambdaMutator (Lambdas... lambdas)
 
template<typename T >
auto visit_base (const T *op)
 Public helper to call the base visitor from lambdas. More...
 
- Public Member Functions inherited from Halide::Internal::IRMutator
 IRMutator ()=default
 
virtual ~IRMutator ()=default
 
virtual Expr mutate (const Expr &expr)
 This is the main interface for using a mutator. More...
 
virtual Stmt mutate (const Stmt &stmt)
 
std::pair< std::vector< Expr >, bool > mutate_with_changes (const std::vector< Expr > &)
 
std::vector< Exprmutate (const std::vector< Expr > &exprs)
 

Protected Member Functions

Expr visit (const IntImm *op) override
 
Expr visit (const UIntImm *op) override
 
Expr visit (const FloatImm *op) override
 
Expr visit (const StringImm *op) override
 
Expr visit (const Cast *op) override
 
Expr visit (const Reinterpret *op) override
 
Expr visit (const Add *op) override
 
Expr visit (const Sub *op) override
 
Expr visit (const Mul *op) override
 
Expr visit (const Div *op) override
 
Expr visit (const Mod *op) override
 
Expr visit (const Min *op) override
 
Expr visit (const Max *op) override
 
Expr visit (const EQ *op) override
 
Expr visit (const NE *op) override
 
Expr visit (const LT *op) override
 
Expr visit (const LE *op) override
 
Expr visit (const GT *op) override
 
Expr visit (const GE *op) override
 
Expr visit (const And *op) override
 
Expr visit (const Or *op) override
 
Expr visit (const Not *op) override
 
Expr visit (const Select *op) override
 
Expr visit (const Load *op) override
 
Expr visit (const Ramp *op) override
 
Expr visit (const Broadcast *op) override
 
Expr visit (const Let *op) override
 
Stmt visit (const LetStmt *op) override
 
Stmt visit (const AssertStmt *op) override
 
Stmt visit (const ProducerConsumer *op) override
 
Stmt visit (const Store *op) override
 
Stmt visit (const Provide *op) override
 
Stmt visit (const Allocate *op) override
 
Stmt visit (const Free *op) override
 
Stmt visit (const Realize *op) override
 
Stmt visit (const Block *op) override
 
Stmt visit (const Fork *op) override
 
Stmt visit (const IfThenElse *op) override
 
Stmt visit (const Evaluate *op) override
 
Expr visit (const Call *op) override
 
Expr visit (const Variable *op) override
 
Stmt visit (const For *op) override
 
Stmt visit (const Acquire *op) override
 
Expr visit (const Shuffle *op) override
 
Stmt visit (const Prefetch *op) override
 
Stmt visit (const HoistedStorage *op) override
 
Stmt visit (const Atomic *op) override
 
Expr visit (const VectorReduce *op) override
 
virtual Expr visit (const IntImm *)
 
virtual Expr visit (const UIntImm *)
 
virtual Expr visit (const FloatImm *)
 
virtual Expr visit (const StringImm *)
 
virtual Expr visit (const Cast *)
 
virtual Expr visit (const Reinterpret *)
 
virtual Expr visit (const Add *)
 
virtual Expr visit (const Sub *)
 
virtual Expr visit (const Mul *)
 
virtual Expr visit (const Div *)
 
virtual Expr visit (const Mod *)
 
virtual Expr visit (const Min *)
 
virtual Expr visit (const Max *)
 
virtual Expr visit (const EQ *)
 
virtual Expr visit (const NE *)
 
virtual Expr visit (const LT *)
 
virtual Expr visit (const LE *)
 
virtual Expr visit (const GT *)
 
virtual Expr visit (const GE *)
 
virtual Expr visit (const And *)
 
virtual Expr visit (const Or *)
 
virtual Expr visit (const Not *)
 
virtual Expr visit (const Select *)
 
virtual Expr visit (const Load *)
 
virtual Expr visit (const Ramp *)
 
virtual Expr visit (const Broadcast *)
 
virtual Expr visit (const Let *)
 
virtual Stmt visit (const LetStmt *)
 
virtual Stmt visit (const AssertStmt *)
 
virtual Stmt visit (const ProducerConsumer *)
 
virtual Stmt visit (const Store *)
 
virtual Stmt visit (const Provide *)
 
virtual Stmt visit (const Allocate *)
 
virtual Stmt visit (const Free *)
 
virtual Stmt visit (const Realize *)
 
virtual Stmt visit (const Block *)
 
virtual Stmt visit (const Fork *)
 
virtual Stmt visit (const IfThenElse *)
 
virtual Stmt visit (const Evaluate *)
 
virtual Expr visit (const Call *)
 
virtual Expr visit (const Variable *)
 
virtual Stmt visit (const For *)
 
virtual Stmt visit (const Acquire *)
 
virtual Expr visit (const Shuffle *)
 
virtual Stmt visit (const Prefetch *)
 
virtual Stmt visit (const HoistedStorage *)
 
virtual Stmt visit (const Atomic *)
 
virtual Expr visit (const VectorReduce *)
 

Detailed Description

template<typename... Lambdas>
struct Halide::Internal::LambdaMutator< Lambdas >

A lambda-based IR mutator that accepts multiple lambdas for different node types.

Definition at line 123 of file IRMutator.h.

Constructor & Destructor Documentation

◆ LambdaMutator()

template<typename... Lambdas>
Halide::Internal::LambdaMutator< Lambdas >::LambdaMutator ( Lambdas...  lambdas)
inlineexplicit

Definition at line 124 of file IRMutator.h.

Member Function Documentation

◆ visit_base()

template<typename... Lambdas>
template<typename T >
auto Halide::Internal::LambdaMutator< Lambdas >::visit_base ( const T *  op)
inline

Public helper to call the base visitor from lambdas.

Definition at line 130 of file IRMutator.h.

References Halide::Internal::IRMutator::visit().

◆ visit() [1/48]

template<typename... Lambdas>
Expr Halide::Internal::LambdaMutator< Lambdas >::visit ( const IntImm op)
inlineoverrideprotectedvirtual

Reimplemented from Halide::Internal::IRMutator.

Definition at line 147 of file IRMutator.h.

◆ visit() [2/48]

template<typename... Lambdas>
Expr Halide::Internal::LambdaMutator< Lambdas >::visit ( const UIntImm op)
inlineoverrideprotectedvirtual

Reimplemented from Halide::Internal::IRMutator.

Definition at line 150 of file IRMutator.h.

◆ visit() [3/48]

template<typename... Lambdas>
Expr Halide::Internal::LambdaMutator< Lambdas >::visit ( const FloatImm op)
inlineoverrideprotectedvirtual

Reimplemented from Halide::Internal::IRMutator.

Definition at line 153 of file IRMutator.h.

◆ visit() [4/48]

template<typename... Lambdas>
Expr Halide::Internal::LambdaMutator< Lambdas >::visit ( const StringImm op)
inlineoverrideprotectedvirtual

Reimplemented from Halide::Internal::IRMutator.

Definition at line 156 of file IRMutator.h.

◆ visit() [5/48]

template<typename... Lambdas>
Expr Halide::Internal::LambdaMutator< Lambdas >::visit ( const Cast op)
inlineoverrideprotectedvirtual

Reimplemented from Halide::Internal::IRMutator.

Definition at line 159 of file IRMutator.h.

◆ visit() [6/48]

template<typename... Lambdas>
Expr Halide::Internal::LambdaMutator< Lambdas >::visit ( const Reinterpret op)
inlineoverrideprotectedvirtual

Reimplemented from Halide::Internal::IRMutator.

Definition at line 162 of file IRMutator.h.

◆ visit() [7/48]

template<typename... Lambdas>
Expr Halide::Internal::LambdaMutator< Lambdas >::visit ( const Add op)
inlineoverrideprotectedvirtual

Reimplemented from Halide::Internal::IRMutator.

Definition at line 165 of file IRMutator.h.

◆ visit() [8/48]

template<typename... Lambdas>
Expr Halide::Internal::LambdaMutator< Lambdas >::visit ( const Sub op)
inlineoverrideprotectedvirtual

Reimplemented from Halide::Internal::IRMutator.

Definition at line 168 of file IRMutator.h.

◆ visit() [9/48]

template<typename... Lambdas>
Expr Halide::Internal::LambdaMutator< Lambdas >::visit ( const Mul op)
inlineoverrideprotectedvirtual

Reimplemented from Halide::Internal::IRMutator.

Definition at line 171 of file IRMutator.h.

◆ visit() [10/48]

template<typename... Lambdas>
Expr Halide::Internal::LambdaMutator< Lambdas >::visit ( const Div op)
inlineoverrideprotectedvirtual

Reimplemented from Halide::Internal::IRMutator.

Definition at line 174 of file IRMutator.h.

◆ visit() [11/48]

template<typename... Lambdas>
Expr Halide::Internal::LambdaMutator< Lambdas >::visit ( const Mod op)
inlineoverrideprotectedvirtual

Reimplemented from Halide::Internal::IRMutator.

Definition at line 177 of file IRMutator.h.

◆ visit() [12/48]

template<typename... Lambdas>
Expr Halide::Internal::LambdaMutator< Lambdas >::visit ( const Min op)
inlineoverrideprotectedvirtual

Reimplemented from Halide::Internal::IRMutator.

Definition at line 180 of file IRMutator.h.

◆ visit() [13/48]

template<typename... Lambdas>
Expr Halide::Internal::LambdaMutator< Lambdas >::visit ( const Max op)
inlineoverrideprotectedvirtual

Reimplemented from Halide::Internal::IRMutator.

Definition at line 183 of file IRMutator.h.

◆ visit() [14/48]

template<typename... Lambdas>
Expr Halide::Internal::LambdaMutator< Lambdas >::visit ( const EQ op)
inlineoverrideprotectedvirtual

Reimplemented from Halide::Internal::IRMutator.

Definition at line 186 of file IRMutator.h.

◆ visit() [15/48]

template<typename... Lambdas>
Expr Halide::Internal::LambdaMutator< Lambdas >::visit ( const NE op)
inlineoverrideprotectedvirtual

Reimplemented from Halide::Internal::IRMutator.

Definition at line 189 of file IRMutator.h.

◆ visit() [16/48]

template<typename... Lambdas>
Expr Halide::Internal::LambdaMutator< Lambdas >::visit ( const LT op)
inlineoverrideprotectedvirtual

Reimplemented from Halide::Internal::IRMutator.

Definition at line 192 of file IRMutator.h.

◆ visit() [17/48]

template<typename... Lambdas>
Expr Halide::Internal::LambdaMutator< Lambdas >::visit ( const LE op)
inlineoverrideprotectedvirtual

Reimplemented from Halide::Internal::IRMutator.

Definition at line 195 of file IRMutator.h.

◆ visit() [18/48]

template<typename... Lambdas>
Expr Halide::Internal::LambdaMutator< Lambdas >::visit ( const GT op)
inlineoverrideprotectedvirtual

Reimplemented from Halide::Internal::IRMutator.

Definition at line 198 of file IRMutator.h.

◆ visit() [19/48]

template<typename... Lambdas>
Expr Halide::Internal::LambdaMutator< Lambdas >::visit ( const GE op)
inlineoverrideprotectedvirtual

Reimplemented from Halide::Internal::IRMutator.

Definition at line 201 of file IRMutator.h.

◆ visit() [20/48]

template<typename... Lambdas>
Expr Halide::Internal::LambdaMutator< Lambdas >::visit ( const And op)
inlineoverrideprotectedvirtual

Reimplemented from Halide::Internal::IRMutator.

Definition at line 204 of file IRMutator.h.

◆ visit() [21/48]

template<typename... Lambdas>
Expr Halide::Internal::LambdaMutator< Lambdas >::visit ( const Or op)
inlineoverrideprotectedvirtual

Reimplemented from Halide::Internal::IRMutator.

Definition at line 207 of file IRMutator.h.

◆ visit() [22/48]

template<typename... Lambdas>
Expr Halide::Internal::LambdaMutator< Lambdas >::visit ( const Not op)
inlineoverrideprotectedvirtual

Reimplemented from Halide::Internal::IRMutator.

Definition at line 210 of file IRMutator.h.

◆ visit() [23/48]

template<typename... Lambdas>
Expr Halide::Internal::LambdaMutator< Lambdas >::visit ( const Select op)
inlineoverrideprotectedvirtual

Reimplemented from Halide::Internal::IRMutator.

Definition at line 213 of file IRMutator.h.

◆ visit() [24/48]

template<typename... Lambdas>
Expr Halide::Internal::LambdaMutator< Lambdas >::visit ( const Load op)
inlineoverrideprotectedvirtual

Reimplemented from Halide::Internal::IRMutator.

Definition at line 216 of file IRMutator.h.

◆ visit() [25/48]

template<typename... Lambdas>
Expr Halide::Internal::LambdaMutator< Lambdas >::visit ( const Ramp op)
inlineoverrideprotectedvirtual

Reimplemented from Halide::Internal::IRMutator.

Definition at line 219 of file IRMutator.h.

◆ visit() [26/48]

template<typename... Lambdas>
Expr Halide::Internal::LambdaMutator< Lambdas >::visit ( const Broadcast op)
inlineoverrideprotectedvirtual

Reimplemented from Halide::Internal::IRMutator.

Definition at line 222 of file IRMutator.h.

◆ visit() [27/48]

template<typename... Lambdas>
Expr Halide::Internal::LambdaMutator< Lambdas >::visit ( const Let op)
inlineoverrideprotectedvirtual

Reimplemented from Halide::Internal::IRMutator.

Definition at line 225 of file IRMutator.h.

◆ visit() [28/48]

template<typename... Lambdas>
Stmt Halide::Internal::LambdaMutator< Lambdas >::visit ( const LetStmt op)
inlineoverrideprotectedvirtual

Reimplemented from Halide::Internal::IRMutator.

Definition at line 228 of file IRMutator.h.

◆ visit() [29/48]

template<typename... Lambdas>
Stmt Halide::Internal::LambdaMutator< Lambdas >::visit ( const AssertStmt op)
inlineoverrideprotectedvirtual

Reimplemented from Halide::Internal::IRMutator.

Definition at line 231 of file IRMutator.h.

◆ visit() [30/48]

template<typename... Lambdas>
Stmt Halide::Internal::LambdaMutator< Lambdas >::visit ( const ProducerConsumer op)
inlineoverrideprotectedvirtual

Reimplemented from Halide::Internal::IRMutator.

Definition at line 234 of file IRMutator.h.

◆ visit() [31/48]

template<typename... Lambdas>
Stmt Halide::Internal::LambdaMutator< Lambdas >::visit ( const Store op)
inlineoverrideprotectedvirtual

Reimplemented from Halide::Internal::IRMutator.

Definition at line 237 of file IRMutator.h.

◆ visit() [32/48]

template<typename... Lambdas>
Stmt Halide::Internal::LambdaMutator< Lambdas >::visit ( const Provide op)
inlineoverrideprotectedvirtual

Reimplemented from Halide::Internal::IRMutator.

Definition at line 240 of file IRMutator.h.

◆ visit() [33/48]

template<typename... Lambdas>
Stmt Halide::Internal::LambdaMutator< Lambdas >::visit ( const Allocate op)
inlineoverrideprotectedvirtual

Reimplemented from Halide::Internal::IRMutator.

Definition at line 243 of file IRMutator.h.

◆ visit() [34/48]

template<typename... Lambdas>
Stmt Halide::Internal::LambdaMutator< Lambdas >::visit ( const Free op)
inlineoverrideprotectedvirtual

Reimplemented from Halide::Internal::IRMutator.

Definition at line 246 of file IRMutator.h.

◆ visit() [35/48]

template<typename... Lambdas>
Stmt Halide::Internal::LambdaMutator< Lambdas >::visit ( const Realize op)
inlineoverrideprotectedvirtual

Reimplemented from Halide::Internal::IRMutator.

Definition at line 249 of file IRMutator.h.

◆ visit() [36/48]

template<typename... Lambdas>
Stmt Halide::Internal::LambdaMutator< Lambdas >::visit ( const Block op)
inlineoverrideprotectedvirtual

Reimplemented from Halide::Internal::IRMutator.

Definition at line 252 of file IRMutator.h.

◆ visit() [37/48]

template<typename... Lambdas>
Stmt Halide::Internal::LambdaMutator< Lambdas >::visit ( const Fork op)
inlineoverrideprotectedvirtual

Reimplemented from Halide::Internal::IRMutator.

Definition at line 255 of file IRMutator.h.

◆ visit() [38/48]

template<typename... Lambdas>
Stmt Halide::Internal::LambdaMutator< Lambdas >::visit ( const IfThenElse op)
inlineoverrideprotectedvirtual

Reimplemented from Halide::Internal::IRMutator.

Definition at line 258 of file IRMutator.h.

◆ visit() [39/48]

template<typename... Lambdas>
Stmt Halide::Internal::LambdaMutator< Lambdas >::visit ( const Evaluate op)
inlineoverrideprotectedvirtual

Reimplemented from Halide::Internal::IRMutator.

Definition at line 261 of file IRMutator.h.

◆ visit() [40/48]

template<typename... Lambdas>
Expr Halide::Internal::LambdaMutator< Lambdas >::visit ( const Call op)
inlineoverrideprotectedvirtual

Reimplemented from Halide::Internal::IRMutator.

Definition at line 264 of file IRMutator.h.

◆ visit() [41/48]

template<typename... Lambdas>
Expr Halide::Internal::LambdaMutator< Lambdas >::visit ( const Variable op)
inlineoverrideprotectedvirtual

Reimplemented from Halide::Internal::IRMutator.

Definition at line 267 of file IRMutator.h.

◆ visit() [42/48]

template<typename... Lambdas>
Stmt Halide::Internal::LambdaMutator< Lambdas >::visit ( const For op)
inlineoverrideprotectedvirtual

Reimplemented from Halide::Internal::IRMutator.

Definition at line 270 of file IRMutator.h.

◆ visit() [43/48]

template<typename... Lambdas>
Stmt Halide::Internal::LambdaMutator< Lambdas >::visit ( const Acquire op)
inlineoverrideprotectedvirtual

Reimplemented from Halide::Internal::IRMutator.

Definition at line 273 of file IRMutator.h.

◆ visit() [44/48]

template<typename... Lambdas>
Expr Halide::Internal::LambdaMutator< Lambdas >::visit ( const Shuffle op)
inlineoverrideprotectedvirtual

Reimplemented from Halide::Internal::IRMutator.

Definition at line 276 of file IRMutator.h.

◆ visit() [45/48]

template<typename... Lambdas>
Stmt Halide::Internal::LambdaMutator< Lambdas >::visit ( const Prefetch op)
inlineoverrideprotectedvirtual

Reimplemented from Halide::Internal::IRMutator.

Definition at line 279 of file IRMutator.h.

◆ visit() [46/48]

template<typename... Lambdas>
Stmt Halide::Internal::LambdaMutator< Lambdas >::visit ( const HoistedStorage op)
inlineoverrideprotectedvirtual

Reimplemented from Halide::Internal::IRMutator.

Definition at line 282 of file IRMutator.h.

◆ visit() [47/48]

template<typename... Lambdas>
Stmt Halide::Internal::LambdaMutator< Lambdas >::visit ( const Atomic op)
inlineoverrideprotectedvirtual

Reimplemented from Halide::Internal::IRMutator.

Definition at line 285 of file IRMutator.h.

◆ visit() [48/48]

template<typename... Lambdas>
Expr Halide::Internal::LambdaMutator< Lambdas >::visit ( const VectorReduce op)
inlineoverrideprotectedvirtual

Reimplemented from Halide::Internal::IRMutator.

Definition at line 288 of file IRMutator.h.


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