1#ifndef FREE_TENSOR_VAR_MERGE_H
2#define FREE_TENSOR_VAR_MERGE_H
10 std::string var_, newVar_;
16 VarMerge(
const ID &def,
int dim) : def_(def), dim_(dim) {}
18 bool found()
const {
return found_; }
21 template <
class T> T mergeMemAcc(
const T &op) {
22 if (op->var_ == var_) {
24 Expr a = op->indices_[dim_], b = op->indices_[dim_ + 1];
26 op->indices_.erase(op->indices_.begin() + dim_ + 1);
Definition: var_merge.h:8
Stmt visit(const VarDef &op) override
Definition: var_merge.cc:7
bool found() const
Definition: var_merge.h:18
VarMerge(const ID &def, int dim)
Definition: var_merge.h:16
Definition: allocator.h:9
Ref< VarDefNode > VarDef
Definition: stmt.h:107
Expr makeMul(T &&lhs, U &&rhs, std::source_location loc=std::source_location::current())
Definition: expr.h:202
Ref< LoadNode > Load
Definition: expr.h:61
Ref< StoreNode > Store
Definition: stmt.h:140
Expr makeAdd(T &&lhs, U &&rhs, std::source_location loc=std::source_location::current())
Definition: expr.h:174
Ref< ReduceToNode > ReduceTo
Definition: stmt.h:248
Ref< StmtNode > Stmt
Definition: ast.h:152
Stmt varMerge(const Stmt &ast, const ID &def, int dim)
Definition: var_merge.cc:69
Ref< ExprNode > Expr
Definition: ast.h:184