FreeTensor
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Protected Member Functions | List of all members
freetensor::GenPBExpr Class Reference

#include <gen_pb_expr.h>

Inheritance diagram for freetensor::GenPBExpr:
Inheritance graph
[legend]
Collaboration diagram for freetensor::GenPBExpr:
Collaboration graph
[legend]

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, VarMapgen (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)
 

Detailed Description

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

Member Typedef Documentation

◆ VarMap

Constructor & Destructor Documentation

◆ GenPBExpr()

freetensor::GenPBExpr::GenPBExpr ( const std::string &  varSuffix = "",
const ASTHashSet< Expr > &  noNeedToBeVars = {} 
)
inline

Member Function Documentation

◆ gen()

std::pair< std::string, GenPBExpr::VarMap > freetensor::GenPBExpr::gen ( const Expr op)

◆ varSuffix()

const std::string & freetensor::GenPBExpr::varSuffix ( ) const
inline

◆ visit() [1/22]

void freetensor::GenPBExpr::visit ( const Add op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [2/22]

void freetensor::GenPBExpr::visit ( const BoolConst op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [3/22]

void freetensor::GenPBExpr::visit ( const CeilDiv op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [4/22]

void freetensor::GenPBExpr::visit ( const EQ op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [5/22]

void freetensor::GenPBExpr::visit ( const FloorDiv op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [6/22]

void freetensor::GenPBExpr::visit ( const GE op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [7/22]

void freetensor::GenPBExpr::visit ( const GT op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [8/22]

void freetensor::GenPBExpr::visit ( const IfExpr op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [9/22]

void freetensor::GenPBExpr::visit ( const IntConst op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [10/22]

void freetensor::GenPBExpr::visit ( const LAnd op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [11/22]

void freetensor::GenPBExpr::visit ( const LE op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [12/22]

void freetensor::GenPBExpr::visit ( const LNot op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [13/22]

void freetensor::GenPBExpr::visit ( const LOr op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [14/22]

void freetensor::GenPBExpr::visit ( const LT op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [15/22]

void freetensor::GenPBExpr::visit ( const Max op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [16/22]

void freetensor::GenPBExpr::visit ( const Min op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [17/22]

void freetensor::GenPBExpr::visit ( const Mod op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [18/22]

void freetensor::GenPBExpr::visit ( const Mul op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [19/22]

void freetensor::GenPBExpr::visit ( const NE op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [20/22]

void freetensor::GenPBExpr::visit ( const Sub op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [21/22]

void freetensor::GenPBExpr::visit ( const Unbound op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [22/22]

void freetensor::GenPBExpr::visit ( const Var op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visitExpr()

void freetensor::GenPBExpr::visitExpr ( const Expr op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.


The documentation for this class was generated from the following files: