1#ifndef FREE_TENSOR_SIMPLIFY_H
2#define FREE_TENSOR_SIMPLIFY_H
5#include <unordered_map>
6#include <unordered_set>
26 const std::unordered_map<std::string, int> &varScope_;
31 : varScope_(varScope) {}
35 virtual void visit(
const Var &op)
override;
36 virtual void visit(
const Load &op)
override;
67 std::unordered_map<std::string, int> varScope_;
72 compUniqueBoundsFactory_;
73 bool leafFirstBoundAnalysis_;
78 compUniqueBoundsFactory,
79 bool leafFirstBoundAnalysis)
80 : compUniqueBoundsFactory_(compUniqueBoundsFactory),
81 leafFirstBoundAnalysis_(leafFirstBoundAnalysis) {}
84 template <
class T>
bool equals(
const Expr &op, T &&val)
const {
90 op.
as<FloatConstNode>()->val_ == val) {
virtual ASTNodeType nodeType() const =0
Definition: simplify.h:124
BuiltinSimplify()
Definition: simplify.h:126
Definition: comp_transient_bounds.h:24
Definition: comp_transient_bounds.h:50
BaseClass::StmtRetType visit(const For &op) override
Definition: comp_transient_bounds.h:128
Definition: simplify.h:25
virtual void visit(const Var &op) override
Definition: simplify.cc:127
FindInnerMostScope(const std::unordered_map< std::string, int > &varScope)
Definition: simplify.h:30
int innnerMost() const
Definition: simplify.h:32
int64_t val_
Definition: expr.h:95
Definition: simplify.h:134
PBSimplify()
Definition: simplify.h:136
static Ref make()
Definition: ref.h:105
Ref< U > as() const
Definition: ref.h:83
Definition: simplify.h:63
Expr visitExpr(const Expr &op) override
Definition: simplify.cc:158
Stmt visitStmt(const Stmt &op) override
Definition: simplify.cc:150
Expr visit(const Add &op) override
Definition: simplify.cc:203
SimplifyPass(std::function< Ref< CompUniqueBounds >(const CompTransientBoundsInterface &)> compUniqueBoundsFactory, bool leafFirstBoundAnalysis)
Definition: simplify.h:76
#define DEFINE_PASS_FOR_FUNC(pass)
Definition: func.h:88
Definition: allocator.h:9
Ref< RemainderNode > Remainder
Definition: expr.h:324
Ref< RoundTowards0DivNode > RoundTowards0Div
Definition: expr.h:277
Ref< VarDefNode > VarDef
Definition: stmt.h:107
Ref< CeilDivNode > CeilDiv
Definition: expr.h:257
Stmt simplify(const Stmt &op)
Definition: simplify.cc:1036
Stmt pbSimplify(const Stmt &op)
Definition: simplify.cc:1032
Ref< ReduceToNode > ReduceTo
Definition: stmt.h:248
Ref< SubNode > Sub
Definition: expr.h:186
Ref< IfNode > If
Definition: stmt.h:352
Ref< IfExprNode > IfExpr
Definition: expr.h:705
Ref< ForNode > For
Definition: stmt.h:308
Stmt builtinSimplify(const Stmt &op)
Definition: simplify.cc:1028
Ref< GENode > GE
Definition: expr.h:408
Ref< GTNode > GT
Definition: expr.h:394
Ref< FloorDivNode > FloorDiv
Definition: expr.h:237
Ref< MulNode > Mul
Definition: expr.h:200
Ref< LTNode > LT
Definition: expr.h:366
Ref< NENode > NE
Definition: expr.h:436
Ref< StmtNode > Stmt
Definition: ast.h:152
int findInnerMostScope(const std::unordered_map< std::string, int > &varScope, const Expr &op)
Definition: simplify.cc:143
Ref< EQNode > EQ
Definition: expr.h:422
Ref< AddNode > Add
Definition: expr.h:172
Ref< ExprNode > Expr
Definition: ast.h:184
Ref< ModNode > Mod
Definition: expr.h:301
Ref< AssertNode > Assert
Definition: stmt.h:392
Ref< LENode > LE
Definition: expr.h:380