tvm
Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions | Static Protected Member Functions | List of all members
tvm::tirx::StmtExprMutator Class Reference

Mutator that recursively mutates stmts and exprs on them. More...

#include <stmt_functor.h>

Inheritance diagram for tvm::tirx::StmtExprMutator:
Collaboration diagram for tvm::tirx::StmtExprMutator:

Public Member Functions

TVM_FFI_INLINE UnchangedOr< Stmt > Mutate (const Stmt &stmt, InplaceMode inplace_mode=InplaceMode::kDisallow)
 Mutate a borrowed statement through the virtual generic entry.
 
TVM_FFI_INLINE UnchangedOr< SeqStmt > Mutate (const SeqStmt &stmt, InplaceMode inplace_mode=InplaceMode::kDisallow)
 Mutate a scope body without collapsing its sequence container.
 
TVM_FFI_INLINE UnchangedOr< ffi::Optional< SeqStmt > > Mutate (const ffi::Optional< SeqStmt > &stmt, InplaceMode inplace_mode=InplaceMode::kDisallow)
 
TVM_FFI_INLINE UnchangedOr< ffi::Optional< Stmt > > Mutate (const ffi::Optional< Stmt > &stmt, InplaceMode inplace_mode=InplaceMode::kDisallow)
 Mutate an optional statement, preserving an absent function body.
 
virtual UnchangedOr< Stmt > Mutate_ (const BindNode *op, InplaceMode inplace_mode)
 
virtual UnchangedOr< Stmt > Mutate_ (const RegionStmtNode *op, InplaceMode inplace_mode)
 
virtual UnchangedOr< Stmt > Mutate_ (const IfNode *op, InplaceMode inplace_mode)
 
virtual UnchangedOr< Stmt > Mutate_ (const ForNode *op, InplaceMode inplace_mode)
 
virtual UnchangedOr< Stmt > Mutate_ (const WhileNode *op, InplaceMode inplace_mode)
 
virtual UnchangedOr< Stmt > Mutate_ (const ReturnNode *op, InplaceMode inplace_mode)
 
virtual UnchangedOr< Stmt > Mutate_ (const BreakNode *op, InplaceMode inplace_mode)
 
virtual UnchangedOr< Stmt > Mutate_ (const ContinueNode *op, InplaceMode inplace_mode)
 
virtual UnchangedOr< Stmt > Mutate_ (const TensorStoreNode *op, InplaceMode inplace_mode)
 
virtual UnchangedOr< Stmt > Mutate_ (const AssertStmtNode *op, InplaceMode inplace_mode)
 
virtual UnchangedOr< Stmt > Mutate_ (const SeqStmtNode *op, InplaceMode inplace_mode)
 
virtual UnchangedOr< Stmt > Mutate_ (const EvaluateNode *op, InplaceMode inplace_mode)
 
- Public Member Functions inherited from tvm::ExprMutator
TVM_FFI_INLINE UnchangedOr< PrimExpr > Mutate (const PrimExpr &expr, InplaceMode inplace_mode=InplaceMode::kDisallow)
 Mutate a primitive expression, preserving its expression category.
 
TVM_FFI_INLINE UnchangedOr< Expr > Mutate (const Expr &expr, InplaceMode inplace_mode=InplaceMode::kDisallow)
 Mutate an expression, preserving its expression category.
 
virtual UnchangedOr< Expr > Mutate_ (const OpaqueExprNode *node, InplaceMode inplace_mode)
 
virtual UnchangedOr< Expr > Mutate_ (const TupleNode *node, InplaceMode inplace_mode)
 
virtual UnchangedOr< Expr > Mutate_ (const TupleGetItemNode *node, InplaceMode inplace_mode)
 
virtual UnchangedOr< PrimExpr > Mutate_ (const TensorLoadNode *node, InplaceMode inplace_mode)
 
virtual UnchangedOr< Expr > Mutate_ (const TensorRegionNode *node, InplaceMode inplace_mode)
 
virtual UnchangedOr< Expr > Mutate_ (const VarNode *node, InplaceMode inplace_mode)
 
virtual UnchangedOr< Expr > Mutate_ (const GlobalVarNode *node, InplaceMode inplace_mode)
 
virtual UnchangedOr< Expr > Mutate_ (const CallNode *node, InplaceMode inplace_mode)
 
virtual UnchangedOr< Expr > Mutate_ (const GenericConstNode *node, InplaceMode inplace_mode)
 
virtual UnchangedOr< Expr > Mutate_ (const DataTypeImmNode *node, InplaceMode inplace_mode)
 
virtual UnchangedOr< PrimExpr > Mutate_ (const IntImmNode *node, InplaceMode inplace_mode)
 
virtual UnchangedOr< PrimExpr > Mutate_ (const FloatImmNode *node, InplaceMode inplace_mode)
 
virtual UnchangedOr< Expr > Mutate_ (const OpNode *node, InplaceMode inplace_mode)
 
virtual UnchangedOr< Expr > Mutate_ (const StringImmNode *node, InplaceMode inplace_mode)
 
virtual UnchangedOr< PrimExpr > Mutate_ (const prim::CastNode *node, InplaceMode inplace_mode)
 
virtual UnchangedOr< PrimExpr > Mutate_ (const prim::AddNode *node, InplaceMode inplace_mode)
 
virtual UnchangedOr< PrimExpr > Mutate_ (const prim::LShiftNode *node, InplaceMode inplace_mode)
 
virtual UnchangedOr< PrimExpr > Mutate_ (const prim::RShiftNode *node, InplaceMode inplace_mode)
 
virtual UnchangedOr< PrimExpr > Mutate_ (const prim::BitwiseAndNode *node, InplaceMode inplace_mode)
 
virtual UnchangedOr< PrimExpr > Mutate_ (const prim::BitwiseOrNode *node, InplaceMode inplace_mode)
 
virtual UnchangedOr< PrimExpr > Mutate_ (const prim::BitwiseXorNode *node, InplaceMode inplace_mode)
 
virtual UnchangedOr< PrimExpr > Mutate_ (const prim::BitwiseNotNode *node, InplaceMode inplace_mode)
 
virtual UnchangedOr< PrimExpr > Mutate_ (const prim::SubNode *node, InplaceMode inplace_mode)
 
virtual UnchangedOr< PrimExpr > Mutate_ (const prim::MulNode *node, InplaceMode inplace_mode)
 
virtual UnchangedOr< PrimExpr > Mutate_ (const prim::DivNode *node, InplaceMode inplace_mode)
 
virtual UnchangedOr< PrimExpr > Mutate_ (const prim::ModNode *node, InplaceMode inplace_mode)
 
virtual UnchangedOr< PrimExpr > Mutate_ (const prim::FloorDivNode *node, InplaceMode inplace_mode)
 
virtual UnchangedOr< PrimExpr > Mutate_ (const prim::FloorModNode *node, InplaceMode inplace_mode)
 
virtual UnchangedOr< PrimExpr > Mutate_ (const prim::MinNode *node, InplaceMode inplace_mode)
 
virtual UnchangedOr< PrimExpr > Mutate_ (const prim::MaxNode *node, InplaceMode inplace_mode)
 
virtual UnchangedOr< PrimExpr > Mutate_ (const prim::EQNode *node, InplaceMode inplace_mode)
 
virtual UnchangedOr< PrimExpr > Mutate_ (const prim::NENode *node, InplaceMode inplace_mode)
 
virtual UnchangedOr< PrimExpr > Mutate_ (const prim::LTNode *node, InplaceMode inplace_mode)
 
virtual UnchangedOr< PrimExpr > Mutate_ (const prim::LENode *node, InplaceMode inplace_mode)
 
virtual UnchangedOr< PrimExpr > Mutate_ (const prim::GTNode *node, InplaceMode inplace_mode)
 
virtual UnchangedOr< PrimExpr > Mutate_ (const prim::GENode *node, InplaceMode inplace_mode)
 
virtual UnchangedOr< PrimExpr > Mutate_ (const prim::AndNode *node, InplaceMode inplace_mode)
 
virtual UnchangedOr< PrimExpr > Mutate_ (const prim::OrNode *node, InplaceMode inplace_mode)
 
virtual UnchangedOr< PrimExpr > Mutate_ (const prim::NotNode *node, InplaceMode inplace_mode)
 
virtual UnchangedOr< PrimExpr > Mutate_ (const prim::SelectNode *node, InplaceMode inplace_mode)
 
virtual UnchangedOr< PrimExpr > Mutate_ (const prim::LetNode *node, InplaceMode inplace_mode)
 
virtual UnchangedOr< PrimExpr > Mutate_ (const prim::RampNode *node, InplaceMode inplace_mode)
 
virtual UnchangedOr< PrimExpr > Mutate_ (const prim::BroadcastNode *node, InplaceMode inplace_mode)
 
virtual UnchangedOr< PrimExpr > Mutate_ (const prim::ShuffleNode *node, InplaceMode inplace_mode)
 
virtual UnchangedOr< ffi::Any > Mutate (ffi::AnyView value, InplaceMode inplace_mode=InplaceMode::kDisallow)
 Construct a mutator with the core expression hooks.
 
- Public Member Functions inherited from tvm::ObjectMutator
 ObjectMutator ()
 Construct a mutator using structural fallback for every object.
 
 ObjectMutator (const ObjectMutator &other)=delete
 
ObjectMutator & operator= (const ObjectMutator &other)=delete
 
Expected< UnchangedOr< ffi::Any > > MutateExpected (ffi::AnyView value, InplaceMode inplace_mode=InplaceMode::kDisallow) noexcept
 Adapt the virtual throwing entrypoint to the structural ABI.
 
ffi::Any VarRemapGet (ffi::AnyView var)
 Look up a variable replacement, throwing on failure.
 
void VarRemapSet (ffi::AnyView var, ffi::AnyView value)
 Record a variable replacement, throwing on failure.
 
TVM_FFI_INLINE Expected< ffi::Any > VarRemapGetExpected (ffi::AnyView var) noexcept
 Look up a replacement in the variable-remap environment.
 
TVM_FFI_INLINE Expected< void > VarRemapSetExpected (ffi::AnyView var, ffi::AnyView mapped_value) noexcept
 Record a replacement in the variable-remap environment.
 

Protected Member Functions

 StmtExprMutator (const VTable *vtable)
 
- Protected Member Functions inherited from tvm::ExprMutator
 ExprMutator (const VTable *vtable)
 Construct a mutator with an extended native dispatch table.
 
- Protected Member Functions inherited from tvm::ObjectMutator
 ObjectMutator (const VTable *vtable)
 Construct a mutator with a finalized native dispatch table.
 

Static Protected Member Functions

static void InitVTable (VTable *vtable)
 
- Static Protected Member Functions inherited from tvm::ExprMutator
static UnchangedOr< Expr > ReinferMutatedCallType (UnchangedOr< Expr > mutated, const CallNode *original, InplaceMode inplace_mode)
 Reinfer the result type of a Call after ordinary mutation.
 
static void InitVTable (VTable *vtable)
 Register core expression hooks in a fresh mutable table.
 
- Static Protected Member Functions inherited from tvm::ObjectMutator
static void InitVTable (VTable *vtable)
 Initialize the base registrations in a fresh mutable table.
 
template<typename Self , typename Node >
static void SetDispatch (VTable *vtable)
 Register an exact node type in a fresh table initialized by its parent. Derived node types require separate registrations.
 

Additional Inherited Members

- Protected Types inherited from tvm::ObjectMutator
using VTable = ObjectFunctor< UnchangedOr< ffi::Any >(const ffi::Object *, ObjectMutator *, InplaceMode)>
 Exact native dispatch table with owning replacement results.
 

Detailed Description

Mutator that recursively mutates stmts and exprs on them.

Base hooks preserve stored types and derived fields. They rewrite structural children without re-inferring types or repeating constructor validation, including on in-place writes. Passes that change dtypes or index lanes must provide the corresponding TensorLoad, TensorStore, or TensorRegion inference.

Constructor & Destructor Documentation

◆ StmtExprMutator()

tvm::tirx::StmtExprMutator::StmtExprMutator ( const VTable *  vtable)
inlineexplicitprotected

Member Function Documentation

◆ InitVTable()

static void tvm::tirx::StmtExprMutator::InitVTable ( VTable *  vtable)
staticprotected

◆ Mutate() [1/4]

TVM_FFI_INLINE UnchangedOr< ffi::Optional< SeqStmt > > tvm::tirx::StmtExprMutator::Mutate ( const ffi::Optional< SeqStmt > &  stmt,
InplaceMode  inplace_mode = InplaceMode::kDisallow 
)
inline

◆ Mutate() [2/4]

TVM_FFI_INLINE UnchangedOr< ffi::Optional< Stmt > > tvm::tirx::StmtExprMutator::Mutate ( const ffi::Optional< Stmt > &  stmt,
InplaceMode  inplace_mode = InplaceMode::kDisallow 
)
inline

Mutate an optional statement, preserving an absent function body.

◆ Mutate() [3/4]

TVM_FFI_INLINE UnchangedOr< SeqStmt > tvm::tirx::StmtExprMutator::Mutate ( const SeqStmt &  stmt,
InplaceMode  inplace_mode = InplaceMode::kDisallow 
)
inline

Mutate a scope body without collapsing its sequence container.

◆ Mutate() [4/4]

TVM_FFI_INLINE UnchangedOr< Stmt > tvm::tirx::StmtExprMutator::Mutate ( const Stmt &  stmt,
InplaceMode  inplace_mode = InplaceMode::kDisallow 
)
inline

Mutate a borrowed statement through the virtual generic entry.

Parameters
stmtThe borrowed statement.
inplace_modeInherited permission along the complete ownership chain.
Returns
Unchanged or an owning statement replacement.
Note
Entry overrides must preserve the statement category. Result storage is transferred without a runtime category check, as for Expr/PrimExpr.

◆ Mutate_() [1/12]

virtual UnchangedOr< Stmt > tvm::tirx::StmtExprMutator::Mutate_ ( const AssertStmtNode *  op,
InplaceMode  inplace_mode 
)
virtual

◆ Mutate_() [2/12]

virtual UnchangedOr< Stmt > tvm::tirx::StmtExprMutator::Mutate_ ( const BindNode *  op,
InplaceMode  inplace_mode 
)
virtual

◆ Mutate_() [3/12]

virtual UnchangedOr< Stmt > tvm::tirx::StmtExprMutator::Mutate_ ( const BreakNode *  op,
InplaceMode  inplace_mode 
)
virtual

◆ Mutate_() [4/12]

virtual UnchangedOr< Stmt > tvm::tirx::StmtExprMutator::Mutate_ ( const ContinueNode *  op,
InplaceMode  inplace_mode 
)
virtual

◆ Mutate_() [5/12]

virtual UnchangedOr< Stmt > tvm::tirx::StmtExprMutator::Mutate_ ( const EvaluateNode *  op,
InplaceMode  inplace_mode 
)
virtual

◆ Mutate_() [6/12]

virtual UnchangedOr< Stmt > tvm::tirx::StmtExprMutator::Mutate_ ( const ForNode *  op,
InplaceMode  inplace_mode 
)
virtual

◆ Mutate_() [7/12]

virtual UnchangedOr< Stmt > tvm::tirx::StmtExprMutator::Mutate_ ( const IfNode *  op,
InplaceMode  inplace_mode 
)
virtual

◆ Mutate_() [8/12]

virtual UnchangedOr< Stmt > tvm::tirx::StmtExprMutator::Mutate_ ( const RegionStmtNode *  op,
InplaceMode  inplace_mode 
)
virtual

◆ Mutate_() [9/12]

virtual UnchangedOr< Stmt > tvm::tirx::StmtExprMutator::Mutate_ ( const ReturnNode *  op,
InplaceMode  inplace_mode 
)
virtual

◆ Mutate_() [10/12]

virtual UnchangedOr< Stmt > tvm::tirx::StmtExprMutator::Mutate_ ( const SeqStmtNode *  op,
InplaceMode  inplace_mode 
)
virtual

◆ Mutate_() [11/12]

virtual UnchangedOr< Stmt > tvm::tirx::StmtExprMutator::Mutate_ ( const TensorStoreNode *  op,
InplaceMode  inplace_mode 
)
virtual

◆ Mutate_() [12/12]

virtual UnchangedOr< Stmt > tvm::tirx::StmtExprMutator::Mutate_ ( const WhileNode *  op,
InplaceMode  inplace_mode 
)
virtual

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