|
FreeTensor
|
#include <comp_unique_bounds_combination.h>


Classes | |
| class | Bound |
Public Member Functions | |
| CompUniqueBoundsCombination (const CompTransientBoundsInterface &transients) | |
| Ref< CompUniqueBounds::Bound > | getBound (const Expr &op) override |
| bool | alwaysLT (const Expr &lhs, const Expr &rhs) override |
| bool | alwaysLE (const Expr &lhs, const Expr &rhs) override |
| std::pair< Expr, Expr > | unionBounds (const std::vector< Ref< CompUniqueBounds::Bound > > &bounds) override |
Public Member Functions inherited from freetensor::CompUniqueBounds | |
| CompUniqueBounds (const CompTransientBoundsInterface &transients) | |
| virtual | ~CompUniqueBounds () |
| virtual Ref< Bound > | getBound (const Expr &op)=0 |
| int64_t | getIntLower (const Expr &op) |
| int64_t | getIntUpper (const Expr &op) |
| std::optional< int64_t > | getInt (const Expr &op) |
| virtual bool | alwaysLT (const Expr &lhs, const Expr &rhs)=0 |
| virtual bool | alwaysLE (const Expr &lhs, const Expr &rhs)=0 |
| virtual std::pair< Expr, Expr > | unionBounds (const std::vector< Ref< Bound > > &bounds)=0 |
Public Member Functions inherited from freetensor::Visitor | |
| virtual | ~Visitor () |
| virtual void | operator() (const AST &op) final |
Protected Member Functions | |
| LowerBoundsList | getLower (const Expr &op) |
| UpperBoundsList | getUpper (const Expr &op) |
| template<class T > | |
| void | setLower (const Expr &op, T &&list) |
| template<class T > | |
| void | setUpper (const Expr &op, T &&list) |
| void | visitExpr (const Expr &op) override |
| void | visit (const Var &op) override |
| void | visit (const Load &op) override |
| void | visit (const Cast &op) override |
| void | visit (const Intrinsic &op) override |
| void | visit (const IntConst &op) override |
| void | visit (const Add &op) override |
| void | visit (const Sub &op) override |
| void | visit (const Mul &op) override |
| void | visit (const Square &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 | updLower (LowerBoundsList &list, const LowerBound &bound) const |
| void | updUpper (UpperBoundsList &list, const UpperBound &bound) const |
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) |
Additional Inherited Members | |
Public Types inherited from freetensor::CompUniqueBounds | |
| enum class | BoundType { Combination , Presburger } |
Public Types inherited from freetensor::Visitor | |
| typedef void | ExprRetType |
| typedef void | StmtRetType |
Protected Attributes inherited from freetensor::CompUniqueBounds | |
| const CompTransientBoundsInterface & | transients_ |
Compute bounds of each UNIQUE INTEGER (sub)expression
E.g.
Two UNIQUE expressions x have different upper bounds
For each statements in the AST, a corresponding instance of this class should be created to deal with all (sub)expressions in the statement, so as to distinguish different x sites in the example above
This pass is not accurate. Simplifying passes using this analysis may need to run for multiple rounds
|
inline |
|
overridevirtual |
Implements freetensor::CompUniqueBounds.
|
overridevirtual |
Check wheter lhs is always less than rhs
This is a fast non-recursing function, which check the less-than relation literally, without invoking CompUniqueBounds again, but maybe imprecise. For precise comparison, please use getLower or getUpper on makeSub(lhs, rhs)
Implements freetensor::CompUniqueBounds.
|
overridevirtual |
Implements freetensor::CompUniqueBounds.
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
overridevirtual |
Implements freetensor::CompUniqueBounds.
|
protected |
Insert a new bound to a list of bounds. But if the new bound is a trivial deduction of existing bounds in the list, it will not be inserted
|
protected |
|
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.