FreeTensor
Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions | List of all members
freetensor::SimplifyPass Class Reference

#include <simplify.h>

Inheritance diagram for freetensor::SimplifyPass:
Inheritance graph
[legend]
Collaboration diagram for freetensor::SimplifyPass:
Collaboration graph
[legend]

Public Member Functions

 SimplifyPass (std::function< Ref< CompUniqueBounds >(const CompTransientBoundsInterface &)> compUniqueBoundsFactory, bool leafFirstBoundAnalysis)
 
- Public Member Functions inherited from freetensor::CompTransientBounds< SymbolTable< ConstFold > >
TransientBound transient (const Expr &op) const override
 
const std::vector< Expr > & conds () const override
 
- Public Member Functions inherited from freetensor::SymbolTable< ConstFold >
 SymbolTable (T &&...args)
 
const std::unordered_set< std::string > & names () const override
 
const std::unordered_map< std::string, VarDef > & defs () const override
 
const std::unordered_map< std::string, For > & loops () const override
 
bool hasDef (const std::string &name) const override
 
const VarDefdef (const std::string &name) const override
 
Ref< Bufferbuffer (const std::string &name) const override
 
bool hasLoop (const std::string &name) const override
 
const Forloop (const std::string &name) const override
 
void pushDef (const VarDef &op) override
 
void popDef (const VarDef &op) override
 
void pushFor (const For &op) override
 
void popFor (const For &op) override
 
const SymbolTableDatasymbolTableSnapshot () const
 
- Public Member Functions inherited from freetensor::Mutator
virtual ~Mutator ()
 
virtual Stmt operator() (const Stmt &op) final
 
virtual Expr operator() (const Expr &op) final
 
virtual const std::unordered_set< std::string > & names () const =0
 
virtual const std::unordered_map< std::string, VarDef > & defs () const =0
 
virtual const std::unordered_map< std::string, For > & loops () const =0
 
virtual bool hasDef (const std::string &name) const =0
 
virtual const VarDefdef (const std::string &name) const =0
 
virtual Ref< Bufferbuffer (const std::string &name) const =0
 
virtual bool hasLoop (const std::string &name) const =0
 
virtual const Forloop (const std::string &name) const =0
 
virtual void pushDef (const VarDef &op)=0
 
virtual void popDef (const VarDef &op)=0
 
virtual void pushFor (const For &op)=0
 
virtual void popFor (const For &op)=0
 
virtual TransientBound transient (const Expr &op) const =0
 
virtual const std::vector< Expr > & conds () const =0
 

Protected Member Functions

Stmt visitStmt (const Stmt &op) override
 
Expr visitExpr (const Expr &op) override
 
Expr visit (const Add &op) override
 
Expr visit (const Sub &op) override
 
Expr visit (const Mul &op) override
 
Expr visit (const FloorDiv &op) override
 
Expr visit (const CeilDiv &op) override
 
Expr visit (const RoundTowards0Div &op) override
 
Expr visit (const Mod &op) override
 
Expr visit (const Remainder &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 EQ &op) override
 
Expr visit (const NE &op) override
 
Expr visit (const IfExpr &op) override
 
Stmt visit (const ReduceTo &op) override
 
Stmt visit (const VarDef &op) override
 
Stmt visit (const For &op) override
 
Stmt visit (const If &op) override
 
Stmt visit (const Assert &op) override
 
- Protected Member Functions inherited from freetensor::CompTransientBounds< SymbolTable< ConstFold > >
BaseClass::StmtRetType visit (const For &op) override
 
BaseClass::StmtRetType visit (const If &op) override
 
BaseClass::StmtRetType visit (const Assert &op) override
 
BaseClass::StmtRetType visit (const Assume &op) override
 
- Protected Member Functions inherited from freetensor::SymbolTable< ConstFold >
BaseClass::StmtRetType visit (const VarDef &op) override
 
BaseClass::StmtRetType visit (const For &op) override
 
- Protected Member Functions inherited from freetensor::ConstFold
Expr visit (const Add &op) override
 
Expr visit (const Sub &op) override
 
Expr visit (const Mul &op) override
 
Expr visit (const RealDiv &op) override
 
Expr visit (const FloorDiv &op) override
 
Expr visit (const CeilDiv &op) override
 
Expr visit (const RoundTowards0Div &op) override
 
Expr visit (const Mod &op) override
 
Expr visit (const Remainder &op) override
 
Expr visit (const Min &op) override
 
Expr visit (const Max &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 EQ &op) override
 
Expr visit (const NE &op) override
 
Expr visit (const LAnd &op) override
 
Expr visit (const LOr &op) override
 
Expr visit (const LNot &op) override
 
Expr visit (const Sqrt &op) override
 
Expr visit (const Exp &op) override
 
Expr visit (const Square &op) override
 
Expr visit (const Sigmoid &op) override
 
Expr visit (const Sin &op) override
 
Expr visit (const Cos &op) override
 
Expr visit (const Tan &op) override
 
Expr visit (const Tanh &op) override
 
Expr visit (const Abs &op) override
 
Expr visit (const Floor &op) override
 
Expr visit (const Ceil &op) override
 
Expr visit (const Unbound &op) override
 
Expr visit (const Cast &op) override
 
Expr visit (const IfExpr &op) override
 
virtual Stmt visit (const Any &op)
 
virtual Stmt visit (const StmtSeq &op)
 
virtual Stmt visit (const VarDef &op)
 
virtual Expr visit (const Var &op)
 
virtual Stmt visit (const Store &op)
 
virtual Stmt visit (const Alloc &op)
 
virtual Stmt visit (const Free &op)
 
virtual Expr visit (const Load &op)
 
virtual Stmt visit (const ReduceTo &op)
 
virtual Expr visit (const AnyExpr &op)
 
virtual Expr visit (const IntConst &op)
 
virtual Expr visit (const FloatConst &op)
 
virtual Expr visit (const BoolConst &op)
 
virtual Expr visit (const Add &op)
 
virtual Expr visit (const Sub &op)
 
virtual Expr visit (const Mul &op)
 
virtual Expr visit (const RealDiv &op)
 
virtual Expr visit (const FloorDiv &op)
 
virtual Expr visit (const CeilDiv &op)
 
virtual Expr visit (const RoundTowards0Div &op)
 
virtual Expr visit (const Mod &op)
 
virtual Expr visit (const Remainder &op)
 
virtual Expr visit (const Min &op)
 
virtual Expr visit (const Max &op)
 
virtual Expr visit (const LT &op)
 
virtual Expr visit (const LE &op)
 
virtual Expr visit (const GT &op)
 
virtual Expr visit (const GE &op)
 
virtual Expr visit (const EQ &op)
 
virtual Expr visit (const NE &op)
 
virtual Expr visit (const LAnd &op)
 
virtual Expr visit (const LOr &op)
 
virtual Expr visit (const LNot &op)
 
virtual Expr visit (const Sqrt &op)
 
virtual Expr visit (const Exp &op)
 
virtual Expr visit (const Ln &op)
 
virtual Expr visit (const Square &op)
 
virtual Expr visit (const Sigmoid &op)
 
virtual Expr visit (const Sin &op)
 
virtual Expr visit (const Cos &op)
 
virtual Expr visit (const Tan &op)
 
virtual Expr visit (const Tanh &op)
 
virtual Expr visit (const Abs &op)
 
virtual Expr visit (const Floor &op)
 
virtual Expr visit (const Ceil &op)
 
virtual Expr visit (const Unbound &op)
 
virtual Stmt visit (const For &op)
 
virtual Stmt visit (const If &op)
 
virtual Stmt visit (const Assert &op)
 
virtual Stmt visit (const Assume &op)
 
virtual Expr visit (const IfExpr &op)
 
virtual Expr visit (const Cast &op)
 
virtual Expr visit (const Intrinsic &op)
 
virtual Stmt visit (const Eval &op)
 
virtual Stmt visit (const MatMul &op)
 
virtual Stmt visit (const MarkVersion &op)
 
virtual Expr visit (const LoadAtVersion &op)
 
virtual Expr visitExpr (const Expr &op)
 
virtual Stmt visitStmt (const Stmt &op)
 
virtual Stmt visit (const Any &op)
 
virtual Stmt visit (const StmtSeq &op)
 
virtual Stmt visit (const VarDef &op)
 
virtual Expr visit (const Var &op)
 
virtual Stmt visit (const Store &op)
 
virtual Stmt visit (const Alloc &op)
 
virtual Stmt visit (const Free &op)
 
virtual Expr visit (const Load &op)
 
virtual Stmt visit (const ReduceTo &op)
 
virtual Expr visit (const AnyExpr &op)
 
virtual Expr visit (const IntConst &op)
 
virtual Expr visit (const FloatConst &op)
 
virtual Expr visit (const BoolConst &op)
 
virtual Expr visit (const Add &op)
 
virtual Expr visit (const Sub &op)
 
virtual Expr visit (const Mul &op)
 
virtual Expr visit (const RealDiv &op)
 
virtual Expr visit (const FloorDiv &op)
 
virtual Expr visit (const CeilDiv &op)
 
virtual Expr visit (const RoundTowards0Div &op)
 
virtual Expr visit (const Mod &op)
 
virtual Expr visit (const Remainder &op)
 
virtual Expr visit (const Min &op)
 
virtual Expr visit (const Max &op)
 
virtual Expr visit (const LT &op)
 
virtual Expr visit (const LE &op)
 
virtual Expr visit (const GT &op)
 
virtual Expr visit (const GE &op)
 
virtual Expr visit (const EQ &op)
 
virtual Expr visit (const NE &op)
 
virtual Expr visit (const LAnd &op)
 
virtual Expr visit (const LOr &op)
 
virtual Expr visit (const LNot &op)
 
virtual Expr visit (const Sqrt &op)
 
virtual Expr visit (const Exp &op)
 
virtual Expr visit (const Ln &op)
 
virtual Expr visit (const Square &op)
 
virtual Expr visit (const Sigmoid &op)
 
virtual Expr visit (const Sin &op)
 
virtual Expr visit (const Cos &op)
 
virtual Expr visit (const Tan &op)
 
virtual Expr visit (const Tanh &op)
 
virtual Expr visit (const Abs &op)
 
virtual Expr visit (const Floor &op)
 
virtual Expr visit (const Ceil &op)
 
virtual Expr visit (const Unbound &op)
 
virtual Stmt visit (const For &op)
 
virtual Stmt visit (const If &op)
 
virtual Stmt visit (const Assert &op)
 
virtual Stmt visit (const Assume &op)
 
virtual Expr visit (const IfExpr &op)
 
virtual Expr visit (const Cast &op)
 
virtual Expr visit (const Intrinsic &op)
 
virtual Stmt visit (const Eval &op)
 
virtual Stmt visit (const MatMul &op)
 
virtual Stmt visit (const MarkVersion &op)
 
virtual Expr visit (const LoadAtVersion &op)
 

Additional Inherited Members

- Public Types inherited from freetensor::Mutator
typedef Expr ExprRetType
 
typedef Stmt StmtRetType
 
- Static Protected Member Functions inherited from freetensor::ConstFold
static Const castType (DataType type, const Const &val)
 Cast the data type of a Const node.
 

Detailed Description

Base class for integer simplify passes

Simplification from 3 mechanisms:

Parameters
compUniqueBoundsFactor: A factory function creating a specific CompUniqueBounds instance for bound analysis.
leafFirstBoundAnalysis: Whether to simplify sub-expressions with bound analysis before simplifying their parents. This is useful when the simplification of a sub-expression helps analyzing its parent, but will only waste time if the analysis is based on a unified representation and does not depend on the specific form of the sub-expression.

Constructor & Destructor Documentation

◆ SimplifyPass()

freetensor::SimplifyPass::SimplifyPass ( std::function< Ref< CompUniqueBounds >(const CompTransientBoundsInterface &)>  compUniqueBoundsFactory,
bool  leafFirstBoundAnalysis 
)
inline

Member Function Documentation

◆ visit() [1/20]

Expr freetensor::SimplifyPass::visit ( const Add op)
overrideprotectedvirtual

Reimplemented from freetensor::ConstFold.

◆ visit() [2/20]

Stmt freetensor::SimplifyPass::visit ( const Assert op)
overrideprotectedvirtual

Reimplemented from freetensor::Mutator.

◆ visit() [3/20]

Expr freetensor::SimplifyPass::visit ( const CeilDiv op)
overrideprotectedvirtual

Reimplemented from freetensor::ConstFold.

◆ visit() [4/20]

Expr freetensor::SimplifyPass::visit ( const EQ op)
overrideprotectedvirtual

Reimplemented from freetensor::ConstFold.

◆ visit() [5/20]

Expr freetensor::SimplifyPass::visit ( const FloorDiv op)
overrideprotectedvirtual

Reimplemented from freetensor::ConstFold.

◆ visit() [6/20]

Stmt freetensor::SimplifyPass::visit ( const For op)
overrideprotectedvirtual

Reimplemented from freetensor::Mutator.

◆ visit() [7/20]

Expr freetensor::SimplifyPass::visit ( const GE op)
overrideprotectedvirtual

Reimplemented from freetensor::ConstFold.

◆ visit() [8/20]

Expr freetensor::SimplifyPass::visit ( const GT op)
overrideprotectedvirtual

Reimplemented from freetensor::ConstFold.

◆ visit() [9/20]

Stmt freetensor::SimplifyPass::visit ( const If op)
overrideprotectedvirtual

Reimplemented from freetensor::Mutator.

◆ visit() [10/20]

Expr freetensor::SimplifyPass::visit ( const IfExpr op)
overrideprotectedvirtual

Reimplemented from freetensor::ConstFold.

◆ visit() [11/20]

Expr freetensor::SimplifyPass::visit ( const LE op)
overrideprotectedvirtual

Reimplemented from freetensor::ConstFold.

◆ visit() [12/20]

Expr freetensor::SimplifyPass::visit ( const LT op)
overrideprotectedvirtual

Reimplemented from freetensor::ConstFold.

◆ visit() [13/20]

Expr freetensor::SimplifyPass::visit ( const Mod op)
overrideprotectedvirtual

Reimplemented from freetensor::ConstFold.

◆ visit() [14/20]

Expr freetensor::SimplifyPass::visit ( const Mul op)
overrideprotectedvirtual

Reimplemented from freetensor::ConstFold.

◆ visit() [15/20]

Expr freetensor::SimplifyPass::visit ( const NE op)
overrideprotectedvirtual

Reimplemented from freetensor::ConstFold.

◆ visit() [16/20]

Stmt freetensor::SimplifyPass::visit ( const ReduceTo op)
overrideprotectedvirtual

Reimplemented from freetensor::Mutator.

◆ visit() [17/20]

Expr freetensor::SimplifyPass::visit ( const Remainder op)
overrideprotectedvirtual

Reimplemented from freetensor::ConstFold.

◆ visit() [18/20]

Expr freetensor::SimplifyPass::visit ( const RoundTowards0Div op)
overrideprotectedvirtual

Reimplemented from freetensor::ConstFold.

◆ visit() [19/20]

Expr freetensor::SimplifyPass::visit ( const Sub op)
overrideprotectedvirtual

Reimplemented from freetensor::ConstFold.

◆ visit() [20/20]

Stmt freetensor::SimplifyPass::visit ( const VarDef op)
overrideprotectedvirtual

Reimplemented from freetensor::Mutator.

◆ visitExpr()

Expr freetensor::SimplifyPass::visitExpr ( const Expr op)
overrideprotectedvirtual

Reimplemented from freetensor::Mutator.

◆ visitStmt()

Stmt freetensor::SimplifyPass::visitStmt ( const Stmt op)
overrideprotectedvirtual

Reimplemented from freetensor::Mutator.


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