tvm
Loading...
Searching...
No Matches
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:

Protected Member Functions

Expr VisitExpr (const Expr &e) override
 Visitor to Exprs, can be overriden to do recursive changes to Exprs.
 
Expr VisitExpr_ (const VarNode *op) override
 
Expr VisitExpr_ (const TensorLoadNode *op) override
 
Expr VisitExpr_ (const BufferRegionNode *op) override
 
Expr VisitExpr_ (const VarNode *op) override
 
Expr VisitExpr_ (const TensorLoadNode *op) override
 
Expr VisitExpr_ (const OpaqueExprNode *op) override
 
Expr VisitExpr_ (const BufferRegionNode *op) override
 
Expr VisitExpr_ (const TupleNode *op) override
 
Expr VisitExpr_ (const TupleGetItemNode *op) override
 
Expr VisitExpr_ (const prim::LetNode *op) override
 
Expr VisitExpr_ (const CallNode *op) override
 
Expr VisitExpr_ (const prim::AddNode *op) override
 
Expr VisitExpr_ (const prim::SubNode *op) override
 
Expr VisitExpr_ (const prim::MulNode *op) override
 
Expr VisitExpr_ (const prim::DivNode *op) override
 
Expr VisitExpr_ (const prim::ModNode *op) override
 
Expr VisitExpr_ (const prim::FloorDivNode *op) override
 
Expr VisitExpr_ (const prim::FloorModNode *op) override
 
Expr VisitExpr_ (const prim::MinNode *op) override
 
Expr VisitExpr_ (const prim::MaxNode *op) override
 
Expr VisitExpr_ (const prim::EQNode *op) override
 
Expr VisitExpr_ (const prim::NENode *op) override
 
Expr VisitExpr_ (const prim::LTNode *op) override
 
Expr VisitExpr_ (const prim::LENode *op) override
 
Expr VisitExpr_ (const prim::GTNode *op) override
 
Expr VisitExpr_ (const prim::GENode *op) override
 
Expr VisitExpr_ (const prim::AndNode *op) override
 
Expr VisitExpr_ (const prim::OrNode *op) override
 
Expr VisitExpr_ (const prim::CastNode *op) override
 
Expr VisitExpr_ (const prim::NotNode *op) override
 
Expr VisitExpr_ (const prim::SelectNode *op) override
 
Expr VisitExpr_ (const prim::RampNode *op) override
 
Expr VisitExpr_ (const prim::BroadcastNode *op) override
 
Expr VisitExpr_ (const prim::ShuffleNode *op) override
 
Expr VisitExpr_ (const IntImmNode *op) override
 
Expr VisitExpr_ (const FloatImmNode *op) override
 
Expr VisitExpr_ (const prim::StringImmNode *op) override
 
PrimExpr VisitPrimExpr (const PrimExpr &expr)
 Visit a primitive expression and verify that it remains primitive.
 
Stmt VisitStmt (const Stmt &stmt) override
 Internal mutator that everyone calls.
 
- Protected Member Functions inherited from tvm::tirx::ExprMutator
PrimExpr VisitPrimExpr (const PrimExpr &expr)
 Visit a primitive expression and verify that it remains primitive.
 
Expr VisitExpr_ (const VarNode *op) override
 
Expr VisitExpr_ (const TensorLoadNode *op) override
 
Expr VisitExpr_ (const OpaqueExprNode *op) override
 
Expr VisitExpr_ (const BufferRegionNode *op) override
 
Expr VisitExpr_ (const TupleNode *op) override
 
Expr VisitExpr_ (const TupleGetItemNode *op) override
 
Expr VisitExpr_ (const prim::LetNode *op) override
 
Expr VisitExpr_ (const CallNode *op) override
 
Expr VisitExpr_ (const prim::AddNode *op) override
 
Expr VisitExpr_ (const prim::SubNode *op) override
 
Expr VisitExpr_ (const prim::MulNode *op) override
 
Expr VisitExpr_ (const prim::DivNode *op) override
 
Expr VisitExpr_ (const prim::ModNode *op) override
 
Expr VisitExpr_ (const prim::FloorDivNode *op) override
 
Expr VisitExpr_ (const prim::FloorModNode *op) override
 
Expr VisitExpr_ (const prim::MinNode *op) override
 
Expr VisitExpr_ (const prim::MaxNode *op) override
 
Expr VisitExpr_ (const prim::EQNode *op) override
 
Expr VisitExpr_ (const prim::NENode *op) override
 
Expr VisitExpr_ (const prim::LTNode *op) override
 
Expr VisitExpr_ (const prim::LENode *op) override
 
Expr VisitExpr_ (const prim::GTNode *op) override
 
Expr VisitExpr_ (const prim::GENode *op) override
 
Expr VisitExpr_ (const prim::AndNode *op) override
 
Expr VisitExpr_ (const prim::OrNode *op) override
 
Expr VisitExpr_ (const prim::CastNode *op) override
 
Expr VisitExpr_ (const prim::NotNode *op) override
 
Expr VisitExpr_ (const prim::SelectNode *op) override
 
Expr VisitExpr_ (const prim::RampNode *op) override
 
Expr VisitExpr_ (const prim::BroadcastNode *op) override
 
Expr VisitExpr_ (const prim::ShuffleNode *op) override
 
Expr VisitExpr_ (const IntImmNode *op) override
 
Expr VisitExpr_ (const FloatImmNode *op) override
 
Expr VisitExpr_ (const prim::StringImmNode *op) override
 
- Protected Member Functions inherited from tvm::tirx::StmtMutator
template<typename TNode >
ffi::ObjectPtr< TNodeCopyOnWrite (const TNode *node)
 Perform copy on write on node.
 
Stmt VisitStmt (const Stmt &stmt) override
 Internal mutator that everyone calls.
 
PrimExpr VisitPrimExpr (const PrimExpr &e)
 Mutate a primitive expression and verify that it remains primitive.
 
virtual BufferVar VisitBufferDef (const BufferVar &buffer, bool alloc_data)
 Visit buffer at definition site. Visits shape/strides/elem_offset via VisitExpr. If any field changes, creates a new buffer and records it in buffer_remap_.
 
virtual BufferVar VisitBufferUse (const BufferVar &buffer)
 Visit buffer at use site (BufferStore, BufferLoad, SBlock reads/writes). By default, returns the remapped buffer from buffer_remap_ if exists, otherwise returns the original buffer. BufferVar fields are visited at their definition site.
 
Stmt VisitStmt_ (const BindNode *op) override
 
Stmt VisitStmt_ (const AttrStmtNode *op) override
 
Stmt VisitStmt_ (const IfThenElseNode *op) override
 
Stmt VisitStmt_ (const ForNode *op) override
 
Stmt VisitStmt_ (const WhileNode *op) override
 
Stmt VisitStmt_ (const ReturnNode *op) override
 
Stmt VisitStmt_ (const BreakNode *op) override
 
Stmt VisitStmt_ (const ContinueNode *op) override
 
Stmt VisitStmt_ (const AllocBufferNode *op) override
 
Stmt VisitStmt_ (const DeclBufferNode *op) override
 
Stmt VisitStmt_ (const BufferStoreNode *op) override
 
Stmt VisitStmt_ (const AssertStmtNode *op) override
 
Stmt VisitStmt_ (const SeqStmtNode *op) override
 
Stmt VisitStmt_ (const EvaluateNode *op) override
 
Stmt VisitStmt_ (const SBlockNode *op) override
 
Stmt VisitStmt_ (const SBlockRealizeNode *op) override
 
Stmt VisitStmt_ (const ScopeIdDefStmtNode *op) override
 
Stmt VisitStmt_ (const tirx::TilePrimitiveCallNode *op) override
 
Stmt VisitSeqStmt_ (const SeqStmtNode *op, bool flatten_before_visit, std::function< Stmt(const Stmt &)> fmutate=nullptr)
 Alternative advance method for SeqStmtNode.
 

Additional Inherited Members

- Public Member Functions inherited from tvm::tirx::StmtMutator
Stmt operator() (Stmt stmt)
 Mutate stmt.
 
- Protected Attributes inherited from tvm::tirx::StmtMutator
ffi::Map< BufferVar, BufferVarbuffer_remap_
 Map from old buffer to new buffer, populated by VisitBufferDef.
 
bool allow_copy_on_write_ {false}
 Internal state to indicate whether copy on write is enabled. COW is enabled iff all the parents of the node are unique.
 

Detailed Description

Mutator that recursively mutates stmts and exprs on them.

Member Function Documentation

◆ VisitExpr()

Expr tvm::tirx::StmtExprMutator::VisitExpr ( const Expr e)
inlineoverrideprotectedvirtual

Visitor to Exprs, can be overriden to do recursive changes to Exprs.

Note
A common pattern is to call ExprMutator here, or have a class sub-class both StmtMutator and ExprMutator and redirect Mutate to ExprMutator::Mutate(Expr)

Reimplemented from tvm::tirx::StmtMutator.

◆ VisitExpr_() [1/37]

Expr tvm::tirx::ExprMutator::VisitExpr_ ( const BufferRegionNode op)
overrideprotected

◆ VisitExpr_() [2/37]

Expr tvm::tirx::StmtExprMutator::VisitExpr_ ( const BufferRegionNode op)
overrideprotected

◆ VisitExpr_() [3/37]

Expr tvm::tirx::ExprMutator::VisitExpr_ ( const CallNode op)
overrideprotected

◆ VisitExpr_() [4/37]

Expr tvm::tirx::ExprMutator::VisitExpr_ ( const FloatImmNode op)
overrideprotected

◆ VisitExpr_() [5/37]

Expr tvm::tirx::ExprMutator::VisitExpr_ ( const IntImmNode op)
overrideprotected

◆ VisitExpr_() [6/37]

Expr tvm::tirx::ExprMutator::VisitExpr_ ( const OpaqueExprNode op)
overrideprotected

◆ VisitExpr_() [7/37]

Expr tvm::tirx::ExprMutator::VisitExpr_ ( const prim::AddNode op)
overrideprotected

◆ VisitExpr_() [8/37]

Expr tvm::tirx::ExprMutator::VisitExpr_ ( const prim::AndNode op)
overrideprotected

◆ VisitExpr_() [9/37]

Expr tvm::tirx::ExprMutator::VisitExpr_ ( const prim::BroadcastNode op)
overrideprotected

◆ VisitExpr_() [10/37]

Expr tvm::tirx::ExprMutator::VisitExpr_ ( const prim::CastNode op)
overrideprotected

◆ VisitExpr_() [11/37]

Expr tvm::tirx::ExprMutator::VisitExpr_ ( const prim::DivNode op)
overrideprotected

◆ VisitExpr_() [12/37]

Expr tvm::tirx::ExprMutator::VisitExpr_ ( const prim::EQNode op)
overrideprotected

◆ VisitExpr_() [13/37]

Expr tvm::tirx::ExprMutator::VisitExpr_ ( const prim::FloorDivNode op)
overrideprotected

◆ VisitExpr_() [14/37]

Expr tvm::tirx::ExprMutator::VisitExpr_ ( const prim::FloorModNode op)
overrideprotected

◆ VisitExpr_() [15/37]

Expr tvm::tirx::ExprMutator::VisitExpr_ ( const prim::GENode op)
overrideprotected

◆ VisitExpr_() [16/37]

Expr tvm::tirx::ExprMutator::VisitExpr_ ( const prim::GTNode op)
overrideprotected

◆ VisitExpr_() [17/37]

Expr tvm::tirx::ExprMutator::VisitExpr_ ( const prim::LENode op)
overrideprotected

◆ VisitExpr_() [18/37]

Expr tvm::tirx::ExprMutator::VisitExpr_ ( const prim::LetNode op)
overrideprotected

◆ VisitExpr_() [19/37]

Expr tvm::tirx::ExprMutator::VisitExpr_ ( const prim::LTNode op)
overrideprotected

◆ VisitExpr_() [20/37]

Expr tvm::tirx::ExprMutator::VisitExpr_ ( const prim::MaxNode op)
overrideprotected

◆ VisitExpr_() [21/37]

Expr tvm::tirx::ExprMutator::VisitExpr_ ( const prim::MinNode op)
overrideprotected

◆ VisitExpr_() [22/37]

Expr tvm::tirx::ExprMutator::VisitExpr_ ( const prim::ModNode op)
overrideprotected

◆ VisitExpr_() [23/37]

Expr tvm::tirx::ExprMutator::VisitExpr_ ( const prim::MulNode op)
overrideprotected

◆ VisitExpr_() [24/37]

Expr tvm::tirx::ExprMutator::VisitExpr_ ( const prim::NENode op)
overrideprotected

◆ VisitExpr_() [25/37]

Expr tvm::tirx::ExprMutator::VisitExpr_ ( const prim::NotNode op)
overrideprotected

◆ VisitExpr_() [26/37]

Expr tvm::tirx::ExprMutator::VisitExpr_ ( const prim::OrNode op)
overrideprotected

◆ VisitExpr_() [27/37]

Expr tvm::tirx::ExprMutator::VisitExpr_ ( const prim::RampNode op)
overrideprotected

◆ VisitExpr_() [28/37]

Expr tvm::tirx::ExprMutator::VisitExpr_ ( const prim::SelectNode op)
overrideprotected

◆ VisitExpr_() [29/37]

Expr tvm::tirx::ExprMutator::VisitExpr_ ( const prim::ShuffleNode op)
overrideprotected

◆ VisitExpr_() [30/37]

Expr tvm::tirx::ExprMutator::VisitExpr_ ( const prim::StringImmNode op)
overrideprotected

◆ VisitExpr_() [31/37]

Expr tvm::tirx::ExprMutator::VisitExpr_ ( const prim::SubNode op)
overrideprotected

◆ VisitExpr_() [32/37]

Expr tvm::tirx::ExprMutator::VisitExpr_ ( const TensorLoadNode op)
overrideprotected

◆ VisitExpr_() [33/37]

Expr tvm::tirx::StmtExprMutator::VisitExpr_ ( const TensorLoadNode op)
overrideprotected

◆ VisitExpr_() [34/37]

Expr tvm::tirx::ExprMutator::VisitExpr_ ( const TupleGetItemNode op)
overrideprotected

◆ VisitExpr_() [35/37]

Expr tvm::tirx::ExprMutator::VisitExpr_ ( const TupleNode op)
overrideprotected

◆ VisitExpr_() [36/37]

Expr tvm::tirx::ExprMutator::VisitExpr_ ( const VarNode op)
overrideprotected

◆ VisitExpr_() [37/37]

Expr tvm::tirx::StmtExprMutator::VisitExpr_ ( const VarNode op)
overrideprotected

◆ VisitPrimExpr()

PrimExpr tvm::tirx::ExprMutator::VisitPrimExpr ( const PrimExpr expr)
inlineprotected

Visit a primitive expression and verify that it remains primitive.

◆ VisitStmt()

Stmt tvm::tirx::StmtMutator::VisitStmt ( const Stmt stmt)
inlineoverrideprotected

Internal mutator that everyone calls.

Note
To override mutate's behavior, override VisitExpr instead.
Parameters
stmtThe input stmt.
Returns
The mutated results.

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