1#ifndef FREE_TENSOR_MERGE_H
2#define FREE_TENSOR_MERGE_H
14 For oldOuter_, oldInner_;
15 Expr outerLen_, innerLen_;
20 bool insideOuter_ =
false, insideInner_ =
false;
21 bool visitedInner_ =
false;
25 : root_(root), oldOuter_(oldOuter), oldInner_(oldInner),
26 outerLen_(oldOuter_->len_), innerLen_(oldInner_->len_),
27 newIter_(
"m." + oldOuter_->
iter_ +
"." + oldInner_->
iter_) {}
29 const std::string &
newIter()
const {
return newIter_; }
30 const ID &
newId()
const {
return newId_; }
38std::pair<Stmt, ID>
merge(
const Stmt &ast,
const ID &loop1,
const ID &loop2);
MergeFor(const Stmt &root, const For oldOuter, const For &oldInner)
Definition: merge.h:24
const ID & newId() const
Definition: merge.h:30
const std::string & newIter() const
Definition: merge.h:29
Stmt visit(const For &op) override
Definition: merge.cc:11
std::vector< IterAxis > iter_
Definition: invert_stmts.cc:56
Definition: allocator.h:9
std::pair< Stmt, ID > merge(const Stmt &ast, const ID &loop1, const ID &loop2)
Definition: merge.cc:114
Ref< StmtNode > Stmt
Definition: ast.h:152