|
FreeTensor
|
#include <gen_pb_expr.h>


Public Types | |
| typedef ASTHashMap< Expr, std::string > | VarMap |
Public Types inherited from freetensor::Visitor | |
| typedef void | ExprRetType |
| typedef void | StmtRetType |
Public Member Functions | |
| GenPBExpr (const std::string &varSuffix="", const ASTHashSet< Expr > &noNeedToBeVars={}) | |
| const std::string & | varSuffix () const |
| std::pair< std::string, VarMap > | gen (const Expr &op) |
Public Member Functions inherited from freetensor::Visitor | |
| virtual | ~Visitor () |
| virtual void | operator() (const AST &op) final |
Protected Member Functions | |
| void | visitExpr (const Expr &op) override |
| void | visit (const Var &op) override |
| void | visit (const IntConst &op) override |
| void | visit (const BoolConst &op) override |
| void | visit (const Add &op) override |
| void | visit (const Sub &op) override |
| void | visit (const Mul &op) override |
| void | visit (const LAnd &op) override |
| void | visit (const LOr &op) override |
| void | visit (const LNot &op) override |
| void | visit (const LT &op) override |
| void | visit (const LE &op) override |
| void | visit (const GT &op) override |
| void | visit (const GE &op) override |
| void | visit (const EQ &op) override |
| void | visit (const NE &op) override |
| void | visit (const FloorDiv &op) override |
| void | visit (const CeilDiv &op) override |
| void | visit (const Mod &op) override |
| void | visit (const Min &op) override |
| void | visit (const Max &op) override |
| void | visit (const IfExpr &op) override |
| void | visit (const Unbound &op) override |
Protected Member Functions inherited from freetensor::Visitor | |
| virtual void | visitExpr (const Expr &op) |
| virtual void | visitStmt (const Stmt &op) |
| virtual void | visit (const Any &op) |
| virtual void | visit (const AnyExpr &op) |
| virtual void | visit (const Func &op) |
| virtual void | visit (const StmtSeq &op) |
| virtual void | visit (const VarDef &op) |
| virtual void | visit (const Var &op) |
| virtual void | visit (const Store &op) |
| virtual void | visit (const Alloc &op) |
| virtual void | visit (const Free &op) |
| virtual void | visit (const Load &op) |
| virtual void | visit (const ReduceTo &op) |
| virtual void | visit (const IntConst &op) |
| virtual void | visit (const FloatConst &op) |
| virtual void | visit (const BoolConst &op) |
| virtual void | visit (const Add &op) |
| virtual void | visit (const Sub &op) |
| virtual void | visit (const Mul &op) |
| virtual void | visit (const RealDiv &op) |
| virtual void | visit (const FloorDiv &op) |
| virtual void | visit (const CeilDiv &op) |
| virtual void | visit (const RoundTowards0Div &op) |
| virtual void | visit (const Mod &op) |
| virtual void | visit (const Remainder &op) |
| virtual void | visit (const Min &op) |
| virtual void | visit (const Max &op) |
| virtual void | visit (const LT &op) |
| virtual void | visit (const LE &op) |
| virtual void | visit (const GT &op) |
| virtual void | visit (const GE &op) |
| virtual void | visit (const EQ &op) |
| virtual void | visit (const NE &op) |
| virtual void | visit (const LAnd &op) |
| virtual void | visit (const LOr &op) |
| virtual void | visit (const LNot &op) |
| virtual void | visit (const Sqrt &op) |
| virtual void | visit (const Exp &op) |
| virtual void | visit (const Ln &op) |
| virtual void | visit (const Square &op) |
| virtual void | visit (const Sigmoid &op) |
| virtual void | visit (const Sin &op) |
| virtual void | visit (const Cos &op) |
| virtual void | visit (const Tan &op) |
| virtual void | visit (const Tanh &op) |
| virtual void | visit (const Abs &op) |
| virtual void | visit (const Floor &op) |
| virtual void | visit (const Ceil &op) |
| virtual void | visit (const Unbound &op) |
| virtual void | visit (const For &op) |
| virtual void | visit (const If &op) |
| virtual void | visit (const Assert &op) |
| virtual void | visit (const Assume &op) |
| virtual void | visit (const IfExpr &op) |
| virtual void | visit (const Cast &op) |
| virtual void | visit (const Intrinsic &op) |
| virtual void | visit (const Eval &op) |
| virtual void | visit (const MatMul &op) |
| virtual void | visit (const MarkVersion &op) |
| virtual void | visit (const LoadAtVersion &op) |
Serialize expressions to an Presburger expression string
If an expression or its sub-expression is not a Presburger expression, it will be represented by a free variable. E.g., a + b * (b + 1) is non-Presburger, because b is multiplied by a non-constant. This expression will be converted to a + free_var. Since b * (b + 1) is already been converted to free_var, the sub-expressions b and b + 1 will be dropped, although they are Presburger themselves. The free variable free_var will be named by the expression itself, with an optional suffix.
Sometimes there will be too many free varaibles if directly converted from a user program. For example, if the program accesses an index x + 2 * y, where x and y are unique to this access, this index can be simplify represented by one free variable z, where z = x + 2 * y. If some (sub-)expressions are not preferred to be a free variable, they can be specified in the noNeedToBeVars_ set.
Use GenPBExpr::gen to generate a string, and its free variables
| typedef ASTHashMap<Expr, std::string> freetensor::GenPBExpr::VarMap |
|
inline |
| std::pair< std::string, GenPBExpr::VarMap > freetensor::GenPBExpr::gen | ( | const Expr & | op | ) |
|
inline |
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.
|
overrideprotectedvirtual |
Reimplemented from freetensor::Visitor.