tvm
Loading...
Searching...
No Matches
Classes | Public Member Functions | Protected Member Functions | List of all members
tvm::relax::ExprMutatorBase Class Reference

A mutator works in unnormalized form. More...

#include <expr_functor.h>

Inheritance diagram for tvm::relax::ExprMutatorBase:
Collaboration diagram for tvm::relax::ExprMutatorBase:

Public Member Functions

Expr VisitExpr (const Expr &expr) override
 
Expr VisitExpr_ (const GenericConstNode *op) override
 
Expr VisitExpr_ (const TupleNode *op) override
 
Expr VisitExpr_ (const VarNode *op) override
 
Expr VisitExpr_ (const DataflowVarNode *op) override
 
Expr VisitExpr_ (const ShapeExprNode *op) override
 
Expr VisitExpr_ (const ExternFuncNode *op) override
 
Expr VisitExpr_ (const GlobalVarNode *op) override
 
Expr VisitExpr_ (const FunctionNode *op) override
 
Expr VisitExpr_ (const CallNode *op) override
 
Expr VisitExpr_ (const TensorLoadNode *op) override
 
Expr VisitExpr_ (const tvm::IntImmNode *op) override
 
Expr VisitExpr_ (const tvm::FloatImmNode *op) override
 
Expr VisitExpr_ (const SeqExprNode *op) override
 
Expr VisitExpr_ (const IfExprNode *op) override
 
Expr VisitExpr_ (const OpNode *op) override
 
Expr VisitExpr_ (const TupleGetItemNode *op) override
 
Expr VisitExpr_ (const StringImmNode *op) override
 
Expr VisitExpr_ (const DataTypeImmNode *op) override
 
Expr VisitExpr_ (const prim::AddNode *op) override
 
Expr VisitExpr_ (const prim::LShiftNode *op) override
 
Expr VisitExpr_ (const prim::RShiftNode *op) override
 
Expr VisitExpr_ (const prim::BitwiseAndNode *op) override
 
Expr VisitExpr_ (const prim::BitwiseOrNode *op) override
 
Expr VisitExpr_ (const prim::BitwiseXorNode *op) override
 
Expr VisitExpr_ (const prim::BitwiseNotNode *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 VisitExprFallback_ (const ExprNode *op) override
 
virtual BindingBlock VisitBindingBlock (const BindingBlock &block)
 Mutate BindingBlock.
 
virtual PrimExpr VisitTypePrimExprField (const PrimExpr &expr)
 Used to visit the PrimExpr inside of dependent type fields.
 
virtual Type VisitExprDepTypeField (const Type &ty)
 Visit ty that may recursively contain Expr/PrimExpr.
 

Protected Member Functions

bool VisitAndCheckTypeFieldUnchanged (const ffi::ObjectRef &ty)
 Check whether VisitExprDepTypeField change ty.
 

Detailed Description

A mutator works in unnormalized form.

ExprMutatorBase expects input AST to be in the unnormalized form, i.e., ty of expressions can be nullptr, and the expressions may nest(and as a result the AST is not in ANF).

Member Function Documentation

◆ VisitAndCheckTypeFieldUnchanged()

bool tvm::relax::ExprMutatorBase::VisitAndCheckTypeFieldUnchanged ( const ffi::ObjectRef &  ty)
inlineprotected

Check whether VisitExprDepTypeField change ty.

Returns
Whether type changed.
Note
This function is used by mutator implementations to check if previous Expr update will trigger a change in ty. If change is detected, the implementation can generate a fresh node without ty, and trigger normalizer to re-derive.

◆ VisitBindingBlock()

virtual BindingBlock tvm::relax::ExprMutatorBase::VisitBindingBlock ( const BindingBlock &  block)
virtual

Mutate BindingBlock.

Parameters
blockThe binding block to be visited.
Returns
The binding block after transformation.

Reimplemented in tvm::relax::ExprMutator.

◆ VisitExpr()

Expr tvm::relax::ExprMutatorBase::VisitExpr ( const Expr &  expr)
override

◆ VisitExpr_() [1/47]

Expr tvm::relax::ExprMutatorBase::VisitExpr_ ( const CallNode *  op)
override

◆ VisitExpr_() [2/47]

Expr tvm::relax::ExprMutatorBase::VisitExpr_ ( const DataflowVarNode *  op)
override

◆ VisitExpr_() [3/47]

Expr tvm::relax::ExprMutatorBase::VisitExpr_ ( const DataTypeImmNode *  op)
override

◆ VisitExpr_() [4/47]

Expr tvm::relax::ExprMutatorBase::VisitExpr_ ( const ExternFuncNode *  op)
override

◆ VisitExpr_() [5/47]

Expr tvm::relax::ExprMutatorBase::VisitExpr_ ( const FunctionNode *  op)
override

◆ VisitExpr_() [6/47]

Expr tvm::relax::ExprMutatorBase::VisitExpr_ ( const GenericConstNode *  op)
override

◆ VisitExpr_() [7/47]

Expr tvm::relax::ExprMutatorBase::VisitExpr_ ( const GlobalVarNode *  op)
override

◆ VisitExpr_() [8/47]

Expr tvm::relax::ExprMutatorBase::VisitExpr_ ( const IfExprNode *  op)
override

◆ VisitExpr_() [9/47]

Expr tvm::relax::ExprMutatorBase::VisitExpr_ ( const OpNode *  op)
override

◆ VisitExpr_() [10/47]

Expr tvm::relax::ExprMutatorBase::VisitExpr_ ( const prim::AddNode *  op)
override

◆ VisitExpr_() [11/47]

Expr tvm::relax::ExprMutatorBase::VisitExpr_ ( const prim::AndNode *  op)
override

◆ VisitExpr_() [12/47]

Expr tvm::relax::ExprMutatorBase::VisitExpr_ ( const prim::BitwiseAndNode *  op)
override

◆ VisitExpr_() [13/47]

Expr tvm::relax::ExprMutatorBase::VisitExpr_ ( const prim::BitwiseNotNode *  op)
override

◆ VisitExpr_() [14/47]

Expr tvm::relax::ExprMutatorBase::VisitExpr_ ( const prim::BitwiseOrNode *  op)
override

◆ VisitExpr_() [15/47]

Expr tvm::relax::ExprMutatorBase::VisitExpr_ ( const prim::BitwiseXorNode *  op)
override

◆ VisitExpr_() [16/47]

Expr tvm::relax::ExprMutatorBase::VisitExpr_ ( const prim::BroadcastNode *  op)
override

◆ VisitExpr_() [17/47]

Expr tvm::relax::ExprMutatorBase::VisitExpr_ ( const prim::CastNode *  op)
override

◆ VisitExpr_() [18/47]

Expr tvm::relax::ExprMutatorBase::VisitExpr_ ( const prim::DivNode *  op)
override

◆ VisitExpr_() [19/47]

Expr tvm::relax::ExprMutatorBase::VisitExpr_ ( const prim::EQNode *  op)
override

◆ VisitExpr_() [20/47]

Expr tvm::relax::ExprMutatorBase::VisitExpr_ ( const prim::FloorDivNode *  op)
override

◆ VisitExpr_() [21/47]

Expr tvm::relax::ExprMutatorBase::VisitExpr_ ( const prim::FloorModNode *  op)
override

◆ VisitExpr_() [22/47]

Expr tvm::relax::ExprMutatorBase::VisitExpr_ ( const prim::GENode *  op)
override

◆ VisitExpr_() [23/47]

Expr tvm::relax::ExprMutatorBase::VisitExpr_ ( const prim::GTNode *  op)
override

◆ VisitExpr_() [24/47]

Expr tvm::relax::ExprMutatorBase::VisitExpr_ ( const prim::LENode *  op)
override

◆ VisitExpr_() [25/47]

Expr tvm::relax::ExprMutatorBase::VisitExpr_ ( const prim::LShiftNode *  op)
override

◆ VisitExpr_() [26/47]

Expr tvm::relax::ExprMutatorBase::VisitExpr_ ( const prim::LTNode *  op)
override

◆ VisitExpr_() [27/47]

Expr tvm::relax::ExprMutatorBase::VisitExpr_ ( const prim::MaxNode *  op)
override

◆ VisitExpr_() [28/47]

Expr tvm::relax::ExprMutatorBase::VisitExpr_ ( const prim::MinNode *  op)
override

◆ VisitExpr_() [29/47]

Expr tvm::relax::ExprMutatorBase::VisitExpr_ ( const prim::ModNode *  op)
override

◆ VisitExpr_() [30/47]

Expr tvm::relax::ExprMutatorBase::VisitExpr_ ( const prim::MulNode *  op)
override

◆ VisitExpr_() [31/47]

Expr tvm::relax::ExprMutatorBase::VisitExpr_ ( const prim::NENode *  op)
override

◆ VisitExpr_() [32/47]

Expr tvm::relax::ExprMutatorBase::VisitExpr_ ( const prim::NotNode *  op)
override

◆ VisitExpr_() [33/47]

Expr tvm::relax::ExprMutatorBase::VisitExpr_ ( const prim::OrNode *  op)
override

◆ VisitExpr_() [34/47]

Expr tvm::relax::ExprMutatorBase::VisitExpr_ ( const prim::RampNode *  op)
override

◆ VisitExpr_() [35/47]

Expr tvm::relax::ExprMutatorBase::VisitExpr_ ( const prim::RShiftNode *  op)
override

◆ VisitExpr_() [36/47]

Expr tvm::relax::ExprMutatorBase::VisitExpr_ ( const prim::SelectNode *  op)
override

◆ VisitExpr_() [37/47]

Expr tvm::relax::ExprMutatorBase::VisitExpr_ ( const prim::ShuffleNode *  op)
override

◆ VisitExpr_() [38/47]

Expr tvm::relax::ExprMutatorBase::VisitExpr_ ( const prim::SubNode *  op)
override

◆ VisitExpr_() [39/47]

Expr tvm::relax::ExprMutatorBase::VisitExpr_ ( const SeqExprNode *  op)
override

◆ VisitExpr_() [40/47]

Expr tvm::relax::ExprMutatorBase::VisitExpr_ ( const ShapeExprNode *  op)
override

◆ VisitExpr_() [41/47]

Expr tvm::relax::ExprMutatorBase::VisitExpr_ ( const StringImmNode *  op)
override

◆ VisitExpr_() [42/47]

Expr tvm::relax::ExprMutatorBase::VisitExpr_ ( const TensorLoadNode *  op)
override

◆ VisitExpr_() [43/47]

Expr tvm::relax::ExprMutatorBase::VisitExpr_ ( const TupleGetItemNode *  op)
override

◆ VisitExpr_() [44/47]

Expr tvm::relax::ExprMutatorBase::VisitExpr_ ( const TupleNode *  op)
override

◆ VisitExpr_() [45/47]

Expr tvm::relax::ExprMutatorBase::VisitExpr_ ( const tvm::FloatImmNode *  op)
override

◆ VisitExpr_() [46/47]

Expr tvm::relax::ExprMutatorBase::VisitExpr_ ( const tvm::IntImmNode *  op)
override

◆ VisitExpr_() [47/47]

Expr tvm::relax::ExprMutatorBase::VisitExpr_ ( const VarNode *  op)
override

◆ VisitExprDepTypeField()

virtual Type tvm::relax::ExprMutatorBase::VisitExprDepTypeField ( const Type &  ty)
virtual

Visit ty that may recursively contain Expr/PrimExpr.

By default, this function recurse into type such as TensorType and ShapeType and call VisitExpr/VisitTypePrimExprField accordingly. It does not recurse into FunctionType as it does not contain Expr defined in the current scope.

Pass writers can overload this function to change to other behaviors. For example, if in Expr in Type won't change, we can override this function by an identity function.

Parameters
tyInput type field.
Returns
The updated type.

◆ VisitExprFallback_()

Expr tvm::relax::ExprMutatorBase::VisitExprFallback_ ( const ExprNode *  op)
override

◆ VisitTypePrimExprField()

virtual PrimExpr tvm::relax::ExprMutatorBase::VisitTypePrimExprField ( const PrimExpr &  expr)
virtual

Used to visit the PrimExpr inside of dependent type fields.

Can be overloaded to transform shape expressions without changing runtime PrimExpr traversal.


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