1#ifndef FREE_TENSOR_COMP_ACCESS_BOUND_H
2#define FREE_TENSOR_COMP_ACCESS_BOUND_H
5#include <unordered_map>
6#include <unordered_set>
51 std::vector<Ref<CompUniqueBounds::Bound>>
bounds_;
54 const std::vector<Expr> &
conds,
55 const std::unordered_set<std::string> &
names)
57 for (
auto &&idx : indices) {
64 const std::vector<Expr> &
conds)
66 for (
auto &&idx : indices) {
81 std::vector<Access> access_;
84 std::unordered_set<std::string> defs_;
85 std::unordered_map<std::string, std::unordered_set<std::string>>
89 bool includeTrivialBound_;
92 bool filtered_ =
false;
99 bool includeTrivialBound =
true,
100 const ID &filterSubTree =
ID())
101 : varDefId_(varDefId), mtype_(mtype), mode_(mode),
102 includeTrivialBound_(includeTrivialBound),
103 filterSubTree_(filterSubTree) {
104 if (!filterSubTree_.
isValid()) {
135 bool includeTrivialBound =
true,
136 const ID &filterSubTree = ID());
Definition: comp_access_bound.h:45
CompAccessBound(const ID &varDefId, MemType mtype, CompAccessBoundMode mode=COMP_ACCESS_BOUND_ALL, bool includeTrivialBound=true, const ID &filterSubTree=ID())
Definition: comp_access_bound.h:97
void visit(const VarDef &op) override
Definition: comp_access_bound.cc:64
const AccessBound & result() const
Definition: comp_access_bound.h:109
void visitStmt(const Stmt &stmt) override
Definition: comp_access_bound.cc:48
Definition: comp_transient_bounds.h:50
BaseClass::StmtRetType visit(const For &op) override
Definition: comp_transient_bounds.h:128
const std::vector< Expr > & conds() const override
Definition: comp_transient_bounds.h:66
Definition: comp_unique_bounds.h:13
virtual Ref< Bound > getBound(const Expr &op)=0
Definition: comp_access_bound.h:32
MemType mtype() const
Definition: comp_access_bound.h:39
void visit(const VarDef &op) override
Definition: comp_access_bound.cc:41
FindMemType(const ID &varDefId)
Definition: comp_access_bound.h:37
bool isValid() const
Definition: id.h:33
const std::unordered_set< std::string > & names() const override
Definition: symbol_table.h:129
Definition: allocator.h:9
const CompAccessBoundMode COMP_ACCESS_BOUND_WRITE
Definition: comp_access_bound.h:28
const CompAccessBoundMode COMP_ACCESS_BOUND_READ
Definition: comp_access_bound.h:27
const CompAccessBoundMode COMP_ACCESS_BOUND_ALL
Definition: comp_access_bound.h:29
AccessBound compAccessBound(const Stmt &op, const ID &varDefId, CompAccessBoundMode mode=COMP_ACCESS_BOUND_ALL, bool includeTrivialBound=true, const ID &filterSubTree=ID())
Definition: comp_access_bound.cc:195
Ref< StmtNode > Stmt
Definition: ast.h:152
int CompAccessBoundMode
Definition: comp_access_bound.h:26
MemType
Definition: mem_type.h:14
Definition: comp_access_bound.h:15
std::vector< Expr > lower_
Definition: comp_access_bound.h:16
Expr cond_
upper_bound(access) - lower_bound(access) + 1
Definition: comp_access_bound.h:19
std::vector< Expr > len_
upper_bound(access)
Definition: comp_access_bound.h:18
std::vector< Expr > upper_
lower_bound(access)
Definition: comp_access_bound.h:17
Definition: comp_access_bound.h:49
Access(CompUniqueBounds &unique, const std::vector< Expr > &indices, const std::vector< Expr > &conds)
Definition: comp_access_bound.h:63
std::vector< Expr > conds_
Definition: comp_access_bound.h:50
Access(CompUniqueBounds &unique, const std::vector< Expr > &indices, const std::vector< Expr > &conds, const std::unordered_set< std::string > &names)
Definition: comp_access_bound.h:53
std::vector< Ref< CompUniqueBounds::Bound > > bounds_
Definition: comp_access_bound.h:51
std::vector< Expr > indices_
Definition: comp_access_bound.h:50