1#ifndef FREE_TENSOR_COMP_UNIQUE_BOUNDS_COMBINATION_H
2#define FREE_TENSOR_COMP_UNIQUE_BOUNDS_COMBINATION_H
6#include <unordered_map>
7#include <unordered_set>
41 typedef std::vector<LowerBound> LowerBoundsList;
42 typedef std::vector<UpperBound> UpperBoundsList;
46 LowerBoundsMap lower_;
47 UpperBoundsMap upper_;
53 mutable std::vector<LowerBound> lowerBounds_;
54 mutable std::vector<UpperBound> upperBounds_;
59 Bound(std::vector<LowerBound> lowerBounds,
60 std::vector<UpperBound> upperBounds)
61 : lowerBounds_(
std::move(lowerBounds)),
62 upperBounds_(
std::move(upperBounds)) {}
68 std::optional<int64_t>
getInt()
const override;
74 const std::unordered_set<std::string> &scope)
const override;
77 const std::unordered_map<std::string, int>
78 &orderedScope)
const override;
111 lower_[op] = std::forward<T>(list);
114 upper_[op] = std::forward<T>(list);
134 void visitLinear(
const Expr &op);
136 void insertSignDataTypeInfo(
const Expr &op);
Definition: comp_transient_bounds.h:24
Definition: comp_unique_bounds_combination.h:50
BoundType type() const override
Definition: comp_unique_bounds_combination.h:64
Ref< CompUniqueBounds::Bound > restrictScope(const std::unordered_set< std::string > &scope) const override
Definition: comp_unique_bounds_combination.cc:63
Expr simplestExpr(const Expr &reference, const std::unordered_map< std::string, int > &orderedScope) const override
Definition: comp_unique_bounds_combination.cc:72
Bound(std::vector< LowerBound > lowerBounds, std::vector< UpperBound > upperBounds)
Definition: comp_unique_bounds_combination.h:59
int64_t upperInt() const override
Definition: comp_unique_bounds_combination.cc:26
std::optional< int64_t > getInt() const override
Definition: comp_unique_bounds_combination.cc:36
Expr lowerExpr() const override
Definition: comp_unique_bounds_combination.cc:42
int64_t lowerInt() const override
Definition: comp_unique_bounds_combination.cc:16
Expr upperExpr() const override
Definition: comp_unique_bounds_combination.cc:52
Definition: comp_unique_bounds_combination.h:38
void visit(const Var &op) override
Definition: comp_unique_bounds_combination.cc:270
LowerBoundsList getLower(const Expr &op)
Definition: comp_unique_bounds_combination.h:101
UpperBoundsList getUpper(const Expr &op)
Definition: comp_unique_bounds_combination.h:105
Ref< CompUniqueBounds::Bound > getBound(const Expr &op) override
Definition: comp_unique_bounds_combination.cc:150
void updUpper(UpperBoundsList &list, const UpperBound &bound) const
Definition: comp_unique_bounds_combination.cc:128
void visitExpr(const Expr &op) override
Definition: comp_unique_bounds_combination.cc:235
void updLower(LowerBoundsList &list, const LowerBound &bound) const
Definition: comp_unique_bounds_combination.cc:107
void setLower(const Expr &op, T &&list)
Definition: comp_unique_bounds_combination.h:110
void setUpper(const Expr &op, T &&list)
Definition: comp_unique_bounds_combination.h:113
std::pair< Expr, Expr > unionBounds(const std::vector< Ref< CompUniqueBounds::Bound > > &bounds) override
Definition: comp_unique_bounds_combination.cc:196
bool alwaysLT(const Expr &lhs, const Expr &rhs) override
Definition: comp_unique_bounds_combination.cc:174
bool alwaysLE(const Expr &lhs, const Expr &rhs) override
Definition: comp_unique_bounds_combination.cc:185
CompUniqueBoundsCombination(const CompTransientBoundsInterface &transients)
Definition: comp_unique_bounds_combination.h:81
Definition: comp_unique_bounds.h:17
Definition: comp_unique_bounds.h:13
BoundType
Definition: comp_unique_bounds.h:15
Definition: allocator.h:9
std::unordered_map< K, V, Hasher, HashComparator > ASTHashMap
Definition: hash.h:114
auto && lhs
Definition: const_fold.cc:70
auto auto && rhs
Definition: const_fold.cc:70
int64_t lower_
Definition: shrink_linear_indices.cc:19
int64_t upper_
Definition: shrink_linear_indices.cc:19