1#ifndef FREE_TENSOR_SINK_VAR_H
2#define FREE_TENSOR_SINK_VAR_H
5#include <unordered_set>
17 const std::optional<std::unordered_set<ID>> &toSink_;
18 const std::unordered_set<std::pair<ID, ID>> &deps_;
19 const std::unordered_set<ID> &analyzedDeps_;
20 std::unordered_set<ID> &needDepAnalysis_;
22 std::function<bool(
const Stmt &)> scopeFilter_;
23 bool isFixPoint_ =
true;
26 bool hasDep(
const ID &vardef,
const ID &loop);
29 SinkVar(
const std::optional<std::unordered_set<ID>> &toSink,
30 const std::unordered_set<std::pair<ID, ID>> &deps,
31 const std::unordered_set<ID> &analyzedDeps,
32 std::unordered_set<ID> &needDepAnalysis,
34 const std::function<
bool(
const Stmt &)> &scopeFilter)
35 : toSink_(toSink), deps_(deps), analyzedDeps_(analyzedDeps),
36 needDepAnalysis_(needDepAnalysis), variantMap_(variantMap),
37 scopeFilter_(scopeFilter) {}
55 const std::optional<std::unordered_set<ID>> &toSink = std::nullopt,
56 const std::function<
bool(
const Stmt &)> &scopeFilter =
nullptr);
Definition: sink_var.h:16
SinkVar(const std::optional< std::unordered_set< ID > > &toSink, const std::unordered_set< std::pair< ID, ID > > &deps, const std::unordered_set< ID > &analyzedDeps, std::unordered_set< ID > &needDepAnalysis, Lazy< LoopVariUniqVarMap > &variantMap, const std::function< bool(const Stmt &)> &scopeFilter)
Definition: sink_var.h:29
bool isFixPoint() const
Definition: sink_var.h:39
Stmt visit(const VarDef &op) override
Definition: sink_var.cc:20
#define DEFINE_PASS_FOR_FUNC(pass)
Definition: func.h:88
Definition: allocator.h:9
Stmt sinkVar(const Stmt &op, const std::optional< std::unordered_set< ID > > &toSink=std::nullopt, const std::function< bool(const Stmt &)> &scopeFilter=nullptr)
Definition: sink_var.cc:182
Ref< StmtNode > Stmt
Definition: ast.h:152