1#ifndef FREE_TENSOR_FUSE_H
2#define FREE_TENSOR_FUSE_H
18 ID id0_, id1_, fused_;
19 std::string iter0_, iter1_, newIter_;
20 ID beforeId_, afterId_;
21 Expr begin0_, begin1_, step0_, step1_;
22 bool strict_, inLoop0_ =
false, inLoop1_ =
false;
26 const std::string &newIter,
bool strict)
27 : root_(root), id0_(id0), id1_(id1), newIter_(newIter),
30 const ID &
fused()
const {
return fused_; }
56std::pair<Stmt, ID>
fuse(
const Stmt &ast,
const ID &loop0,
const ID &loop1,
const LoopInScopes & loop1() const
Definition: fuse.h:48
void check(const Stmt &ast)
Definition: fuse.cc:242
void visit(const StmtSeq &op) override
Definition: fuse.cc:217
const LoopInScopes & loop0() const
Definition: fuse.h:47
CheckFuseAccessible(const ID &id0, const ID &id1)
Definition: fuse.h:45
FuseFor(const Stmt &root, const ID &id0, const ID &id1, const std::string &newIter, bool strict)
Definition: fuse.h:25
const ID & beforeId() const
Definition: fuse.h:31
const ID & afterId() const
Definition: fuse.h:32
const ID & fused() const
Definition: fuse.h:30
Expr visit(const Var &op) override
Definition: fuse.cc:101
Definition: allocator.h:9
FindLoopInScopesDirection
Definition: fuse.h:14
Ref< StmtNode > Stmt
Definition: ast.h:152
std::pair< Stmt, ID > fuse(const Stmt &ast, const ID &loop0, const ID &loop1, bool strict)
Definition: fuse.cc:250
For loop_
Definition: fuse.h:10
std::vector< Stmt > scopes_
Definition: fuse.h:11