FreeTensor
Loading...
Searching...
No Matches
as_dnf.h
Go to the documentation of this file.
1#ifndef FREE_TENSOR_AS_DNF_H
2#define FREE_TENSOR_AS_DNF_H
3
4#include <visitor.h>
5
6namespace freetensor {
7
8typedef std::vector<std::vector<Expr>> DNF;
9
10class AsDNF : public Visitor {
11 std::unordered_map<Expr, DNF> results_;
12 bool neg_ = false;
13
14 public:
15 const DNF &results(const Expr &root) const { return results_.at(root); }
16
17 protected:
18 void visitExpr(const Expr &op) override;
19 void visit(const LAnd &op) override;
20 void visit(const LOr &op) override;
21 void visit(const LNot &op) override;
22 void visit(const EQ &op) override;
23 void visit(const NE &op) override;
24 void visit(const LE &op) override;
25 void visit(const LT &op) override;
26 void visit(const GE &op) override;
27 void visit(const GT &op) override;
28 void visit(const Load &op) override;
29 void visit(const Unbound &op) override;
30};
31
35DNF asDNF(const Expr &expr);
36
37} // namespace freetensor
38
39#endif // FREE_TENSOR_AS_DNF_H
Definition: as_dnf.h:10
const DNF & results(const Expr &root) const
Definition: as_dnf.h:15
void visit(const LAnd &op) override
Definition: as_dnf.cc:13
void visitExpr(const Expr &op) override
Definition: as_dnf.cc:6
Definition: visitor.h:11
Definition: allocator.h:9
DNF asDNF(const Expr &expr)
Definition: as_dnf.cc:114
std::vector< std::vector< Expr > > DNF
Definition: as_dnf.h:8
Ref< ExprNode > Expr
Definition: ast.h:184