FreeTensor
Loading...
Searching...
No Matches
replace_iter.h
Go to the documentation of this file.
1#ifndef FREE_TENSOR_REPLACE_ITER_H
2#define FREE_TENSOR_REPLACE_ITER_H
3
4#include <unordered_map>
5
6#include <hash.h>
7#include <mutator.h>
8
9namespace freetensor {
10
14class ReplaceIter : public Mutator {
15 std::unordered_map<std::string, Expr> replace_;
16
17 public:
18 ReplaceIter(const std::string &name, const Expr &expr)
19 : replace_({{name, expr}}) {}
20 ReplaceIter(const std::unordered_map<std::string, Expr> &replace)
21 : replace_(replace) {}
22
23 protected:
24 Expr visit(const Var &op) override {
25 if (auto it = replace_.find(op->name_); it != replace_.end()) {
26 return it->second;
27 } else {
28 return op;
29 }
30 }
31};
32
33} // namespace freetensor
34
35#endif // FREE_TENSOR_REPLACE_ITER_H
Definition: mutator.h:11
Definition: replace_iter.h:14
ReplaceIter(const std::unordered_map< std::string, Expr > &replace)
Definition: replace_iter.h:20
ReplaceIter(const std::string &name, const Expr &expr)
Definition: replace_iter.h:18
Expr visit(const Var &op) override
Definition: replace_iter.h:24
Definition: allocator.h:9