1#ifndef FREE_TENSOR_SEPERATE_TAIL_H
2#define FREE_TENSOR_SEPERATE_TAIL_H
5#include <unordered_set>
56 bool noDuplicateVarDefs_;
58 const std::unordered_set<ID> &candidates_;
59 std::unordered_set<ID> nextCandidates_;
61 std::vector<std::vector<If>> ifStack_;
62 std::vector<bool> hasVarDefStack_;
66 const std::unordered_set<ID> &candidates)
67 : noDuplicateVarDefs_(noDuplicateVarDefs), candidates_(candidates) {}
70 return nextCandidates_;
74 void genSeparation(
const Expr &iterVar,
const Expr &cond,
75 const std::unordered_set<std::string> &bodyAllWrites,
76 const std::function<
void(
const Expr &)> &callback);
Definition: separate_tail.h:53
SeparateTail(bool noDuplicateVarDefs, const std::unordered_set< ID > &candidates)
Definition: separate_tail.h:65
Stmt visit(const If &op) override
Definition: separate_tail.cc:61
const std::unordered_set< ID > & nextCandidates() const
Definition: separate_tail.h:69
Definition: symbol_table.h:122
Definition: allocator.h:9
Ref< StmtNode > Stmt
Definition: ast.h:152
Stmt separateTail(const Stmt &ast, bool noDuplicateVarDefs)
Definition: separate_tail.cc:149