1#ifndef FREE_TENSOR_CHECK_NOT_MODIFIED
2#define FREE_TENSOR_CHECK_NOT_MODIFIED
5#include <unordered_map>
6#include <unordered_set>
20 const std::unordered_set<std::string> &names_;
21 std::unordered_map<std::string, ID> name2def_;
25 const std::unordered_set<std::string> &
names)
26 : pos_(pos), names_(
names) {}
28 const std::unordered_map<std::string, ID> &
name2def()
const {
40 const std::unordered_set<std::string> &reads_;
41 std::unordered_map<std::string, ID> read2scope_;
45 const ID &pos,
const std::unordered_set<std::string> &reads)
46 : pos_(pos), reads_(reads) {}
55 Expr s0Expr_, s1Expr_;
56 ID s0_, s1_, s0Eval_, s1Eval_;
63 : s0Expr_(s0Expr), s1Expr_(s1Expr), s0_(s0), s1_(s1), s0Side_(s0Side),
Definition: check_not_modified.h:16
const std::unordered_map< std::string, ID > & name2def() const
Definition: check_not_modified.h:28
void visitStmt(const Stmt &stmt) override
Definition: check_not_modified.cc:20
CheckNameToDefMapping(const ID &pos, const std::unordered_set< std::string > &names)
Definition: check_not_modified.h:24
Definition: check_not_modified.h:36
const auto & read2scope() const
Definition: check_not_modified.h:48
void visitStmt(const Stmt &stmt) override
Definition: check_not_modified.cc:41
CheckReadToParallelScopeMapping(const ID &pos, const std::unordered_set< std::string > &reads)
Definition: check_not_modified.h:44
Definition: check_not_modified.h:54
Stmt visitStmt(const Stmt &op) override
Definition: check_not_modified.cc:76
InsertTmpEval(const Expr &s0Expr, const Expr &s1Expr, CheckNotModifiedSide s0Side, const ID &s0, CheckNotModifiedSide s1Side, const ID &s1)
Definition: check_not_modified.h:60
const ID & s1Eval() const
Definition: check_not_modified.h:67
const ID & s0Eval() const
Definition: check_not_modified.h:66
Definition: symbol_table.h:122
const std::unordered_set< std::string > & names() const override
Definition: symbol_table.h:129
Definition: allocator.h:9
std::optional< bool > checkNotModifiedFastPreCheck(const Stmt &op, const Expr &expr, CheckNotModifiedSide s0Side, const ID &s0, CheckNotModifiedSide s1Side, const ID &s1)
Definition: check_not_modified.cc:125
bool checkNotModified(const Stmt &op, const Expr &expr, CheckNotModifiedSide s0Side, const ID &s0, CheckNotModifiedSide s1Side, const ID &s1)
Definition: check_not_modified.cc:223
Ref< StmtNode > Stmt
Definition: ast.h:152
CheckNotModifiedSide
Definition: check_not_modified.h:14
Ref< ExprNode > Expr
Definition: ast.h:184