1#ifndef FREE_TENSOR_SELECTOR_H
2#define FREE_TENSOR_SELECTOR_H
5#include <unordered_map>
13 std::unordered_map<Stmt, bool> cache_;
22 if (
auto it = cache_.find(stmt); it != cache_.end()) {
90 : ancestor_(ancestor), middle_(middle) {}
112 : descendant_(descendant), middle_(middle) {}
123 : following_(following) {}
135 : following_(following), middle_(middle) {}
157 : leading_(leading), middle_(middle) {}
241 std::vector<Ref<MetadataSelector>> sources_;
249 : op_(op), sources_(sources) {}
272 : caller_(caller), middle_(middle) {}
Definition: selector.h:148
bool matchImpl(const Stmt &stmt) override
Definition: selector.cc:111
AfterSelector(const Ref< Selector > &leading, const Ref< Selector > &middle=nullptr)
Definition: selector.h:155
Definition: selector.h:103
AncestorSelector(const Ref< Selector > &descendant, const Ref< Selector > &middle=nullptr)
Definition: selector.h:110
bool matchImpl(const Stmt &stmt) override
Definition: selector.cc:50
Definition: selector.h:126
bool matchImpl(const Stmt &stmt) override
Definition: selector.cc:85
BeforeSelector(const Ref< Selector > &following, const Ref< Selector > &middle=nullptr)
Definition: selector.h:133
Definition: selector.h:39
BothSelector(const Ref< Selector > &lhs, const Ref< Selector > &rhs)
Definition: selector.h:46
bool matchImpl(const Stmt &stmt) override
Definition: selector.cc:12
Definition: selector.h:263
CallerSelector(const Ref< MetadataSelector > &caller, const Ref< MetadataSelector > &middle=nullptr)
Definition: selector.h:270
bool matchImpl(const Metadata &md) override
Definition: selector.cc:178
Definition: selector.h:71
ChildSelector(const Ref< Selector > &parent)
Definition: selector.h:78
bool matchImpl(const Stmt &stmt) override
Definition: selector.cc:24
Definition: selector.h:81
DescendantSelector(const Ref< Selector > &ancestor, const Ref< Selector > &middle=nullptr)
Definition: selector.h:88
bool matchImpl(const Stmt &stmt) override
Definition: selector.cc:29
Definition: selector.h:138
bool matchImpl(const Stmt &stmt) override
Definition: selector.cc:99
DirectAfterSelector(const Ref< Selector > &leading)
Definition: selector.h:145
Definition: selector.h:115
DirectBeforeSelector(const Ref< Selector > &following)
Definition: selector.h:122
bool matchImpl(const Stmt &stmt) override
Definition: selector.cc:73
Definition: selector.h:252
bool matchImpl(const Metadata &md) override
Definition: selector.cc:169
DirectCallerSelector(const Ref< MetadataSelector > &caller)
Definition: selector.h:259
Definition: selector.h:50
bool matchImpl(const Stmt &stmt) override
Definition: selector.cc:16
EitherSelector(const Ref< Selector > &lhs, const Ref< Selector > &rhs)
Definition: selector.h:57
Definition: selector.h:218
IDSelector(const ID &id)
Definition: selector.h:226
bool matchImpl(const Metadata &md) override
Definition: selector.cc:146
Definition: selector.h:229
LabelSelector(const std::string &label)
Definition: selector.h:236
bool matchImpl(const Metadata &md) override
Definition: selector.cc:151
Definition: selector.h:165
bool matchImpl(const Stmt &stmt) override
Definition: selector.cc:129
Definition: selector.h:61
NodeTypeSelector(const ASTNodeType &nodeType)
Definition: selector.h:68
bool matchImpl(const Stmt &stmt) override
Definition: selector.cc:20
Definition: selector.h:29
NotSelector(const Ref< Selector > &sub)
Definition: selector.h:36
bool matchImpl(const Stmt &stmt) override
Definition: selector.cc:10
Definition: selector.h:93
ParentSelector(const Ref< Selector > &child)
Definition: selector.h:100
bool matchImpl(const Stmt &stmt) override
Definition: selector.cc:41
bool isValid() const
Definition: ref.h:89
Definition: selector.h:275
bool matchImpl(const Metadata &md) override
Definition: selector.cc:195
Definition: selector.h:160
bool matchImpl(const Stmt &stmt) override
Definition: selector.cc:125
Definition: selector.h:12
virtual bool matchImpl(const Stmt &stmt)=0
virtual ~Selector()
Definition: selector.h:19
bool match(const Stmt &stmt)
Definition: selector.h:21
const Metadata & metadata() const
Definition: ast.h:233
Definition: allocator.h:9
auto && lhs
Definition: const_fold.cc:70
Ref< Selector > parseSelector(const std::string &str)
Definition: selector.cc:201
UpperBound sub(const UpperBound &b1, const LowerBound &b2)
Definition: bounds.cc:200
auto auto && rhs
Definition: const_fold.cc:70
ASTNodeType
Definition: ast.h:20