MLIR
20.0.0git
|
A PresburgerRelation represents a union of IntegerRelations that live in the same PresburgerSpace with support for union, intersection, subtraction, and complement operations, as well as sampling. More...
#include "mlir/Analysis/Presburger/PresburgerRelation.h"
Public Member Functions | |
PresburgerRelation (const IntegerRelation &disjunct) | |
unsigned | getNumDomainVars () const |
unsigned | getNumRangeVars () const |
unsigned | getNumSymbolVars () const |
unsigned | getNumLocalVars () const |
unsigned | getNumVars () const |
unsigned | getNumDisjuncts () const |
Return the number of disjuncts in the union. More... | |
const PresburgerSpace & | getSpace () const |
void | setSpace (const PresburgerSpace &oSpace) |
Set the space to oSpace . More... | |
void | insertVarInPlace (VarKind kind, unsigned pos, unsigned num=1) |
void | convertVarKind (VarKind srcKind, unsigned srcPos, unsigned num, VarKind dstKind, unsigned dstPos) |
Converts variables of the specified kind in the column range [srcPos, srcPos + num) to variables of the specified kind at position dstPos. More... | |
ArrayRef< IntegerRelation > | getAllDisjuncts () const |
Return a reference to the list of disjuncts. More... | |
const IntegerRelation & | getDisjunct (unsigned index) const |
Return the disjunct at the specified index. More... | |
void | unionInPlace (const IntegerRelation &disjunct) |
Mutate this set, turning it into the union of this set and the given disjunct. More... | |
void | unionInPlace (const PresburgerRelation &set) |
Mutate this set, turning it into the union of this set and the given set. More... | |
PresburgerRelation | unionSet (const PresburgerRelation &set) const |
Return the union of this set and the given set. More... | |
PresburgerRelation | intersect (const PresburgerRelation &set) const |
Return the intersection of this set and the given set. More... | |
PresburgerRelation | intersectRange (const PresburgerSet &set) const |
Return the range intersection of the given set with this relation. More... | |
PresburgerRelation | intersectDomain (const PresburgerSet &set) const |
Return the domain intersection of the given set with this relation. More... | |
PresburgerSet | getDomainSet () const |
Return a set corresponding to the domain of the relation. More... | |
PresburgerSet | getRangeSet () const |
Return a set corresponding to the range of the relation. More... | |
void | inverse () |
Invert the relation, i.e. More... | |
void | compose (const PresburgerRelation &rel) |
Compose this relation with the given relation rel in-place. More... | |
void | applyDomain (const PresburgerRelation &rel) |
Apply the domain of given relation rel to this relation. More... | |
void | applyRange (const PresburgerRelation &rel) |
Same as compose, provided for uniformity with applyDomain. More... | |
SymbolicLexOpt | findSymbolicIntegerLexMin () const |
Compute the symbolic integer lexmin of the relation, i.e. More... | |
SymbolicLexOpt | findSymbolicIntegerLexMax () const |
Compute the symbolic integer lexmax of the relation, i.e. More... | |
bool | containsPoint (ArrayRef< DynamicAPInt > point) const |
Return true if the set contains the given point, and false otherwise. More... | |
bool | containsPoint (ArrayRef< int64_t > point) const |
PresburgerRelation | complement () const |
Return the complement of this set. More... | |
PresburgerRelation | subtract (const PresburgerRelation &set) const |
Return the set difference of this set and the given set, i.e., return this \ set . More... | |
bool | isSubsetOf (const PresburgerRelation &set) const |
Return true if this set is a subset of the given set, and false otherwise. More... | |
bool | isEqual (const PresburgerRelation &set) const |
Return true if this set is equal to the given set, and false otherwise. More... | |
bool | isIntegerEmpty () const |
Return true if all the sets in the union are known to be integer empty false otherwise. More... | |
bool | isObviouslyEmpty () const |
Return true if there is no disjunct, false otherwise. More... | |
bool | isObviouslyUniverse () const |
Return true if the set is known to have one unconstrained disjunct, false otherwise. More... | |
bool | isObviouslyEqual (const PresburgerRelation &set) const |
Perform a quick equality check on this and other . More... | |
bool | isConvexNoLocals () const |
Return true if the set is consist of a single disjunct, without any local variables, false otherwise. More... | |
bool | findIntegerSample (SmallVectorImpl< DynamicAPInt > &sample) |
Find an integer sample from the given set. More... | |
std::optional< DynamicAPInt > | computeVolume () const |
Compute an overapproximation of the number of integer points in the disjunct. More... | |
PresburgerRelation | coalesce () const |
Simplifies the representation of a PresburgerRelation. More... | |
bool | hasOnlyDivLocals () const |
Check whether all local ids in all disjuncts have a div representation. More... | |
PresburgerRelation | computeReprWithOnlyDivLocals () const |
Compute an equivalent representation of the same relation, such that all local ids in all disjuncts have division representations. More... | |
PresburgerRelation | simplify () const |
Simplify each disjunct, canonicalizing each disjunct and removing redundencies. More... | |
bool | isFullDim () const |
Return whether the given PresburgerRelation is full-dimensional. More... | |
void | print (raw_ostream &os) const |
Print the set's internal state. More... | |
void | dump () const |
Static Public Member Functions | |
static PresburgerRelation | getUniverse (const PresburgerSpace &space) |
Return a universe set of the specified type that contains all points. More... | |
static PresburgerRelation | getEmpty (const PresburgerSpace &space) |
Return an empty set of the specified type that contains no points. More... | |
Protected Member Functions | |
PresburgerRelation (const PresburgerSpace &space) | |
Construct an empty PresburgerRelation with the specified number of dimension and symbols. More... | |
Protected Attributes | |
PresburgerSpace | space |
SmallVector< IntegerRelation, 2 > | disjuncts |
The list of disjuncts that this set is the union of. More... | |
Friends | |
class | SetCoalescer |
A PresburgerRelation represents a union of IntegerRelations that live in the same PresburgerSpace with support for union, intersection, subtraction, and complement operations, as well as sampling.
The IntegerRelations (disjuncts) are stored in a vector, and the set represents the union of these relations. An empty list corresponds to the empty set.
Note that there are no invariants guaranteed on the list of disjuncts other than that they are all in the same PresburgerSpace. For example, the relations may overlap with each other.
Definition at line 38 of file PresburgerRelation.h.
|
explicit |
Definition at line 29 of file PresburgerRelation.cpp.
References unionInPlace().
Referenced by getEmpty(), and simplify().
|
inlineexplicitprotected |
Construct an empty PresburgerRelation with the specified number of dimension and symbols.
Definition at line 231 of file PresburgerRelation.h.
References mlir::presburger::PresburgerSpace::getNumLocalVars(), and space.
void PresburgerRelation::applyDomain | ( | const PresburgerRelation & | rel | ) |
Apply the domain of given relation rel
to this
relation.
Formally, R1.applyDomain(R2) = R2.inverse().compose(R1).
Definition at line 232 of file PresburgerRelation.cpp.
References compose(), mlir::presburger::PresburgerSpace::getDomainSpace(), getSpace(), and inverse().
void PresburgerRelation::applyRange | ( | const PresburgerRelation & | rel | ) |
Same as compose, provided for uniformity with applyDomain.
Definition at line 242 of file PresburgerRelation.cpp.
References compose().
PresburgerRelation PresburgerRelation::coalesce | ( | ) | const |
Simplifies the representation of a PresburgerRelation.
In particular, removes all disjuncts which are subsets of other disjuncts in the union.
Definition at line 1025 of file PresburgerRelation.cpp.
References SetCoalescer.
Referenced by mlir::presburger::PresburgerSet::coalesce().
PresburgerRelation PresburgerRelation::complement | ( | ) | const |
Return the complement of this set.
All local variables in the set must correspond to floor divisions.
Definition at line 598 of file PresburgerRelation.cpp.
References getSetDifference(), getSpace(), and mlir::presburger::IntegerRelation::getUniverse().
Referenced by mlir::presburger::PresburgerSet::complement().
void PresburgerRelation::compose | ( | const PresburgerRelation & | rel | ) |
Compose this
relation with the given relation rel
in-place.
Formally, if this
: A -> B, and rel
: B -> C, then this function updates this
to result
: A -> C where a point (a, c) belongs to result
iff there exists b such that (a, b) is in this
and, (b, c) is in rel.
Definition at line 213 of file PresburgerRelation.cpp.
References mlir::presburger::IntegerRelation::compose(), disjuncts, mlir::presburger::PresburgerSpace::getDomainSpace(), getEmpty(), getNumDomainVars(), getNumRangeVars(), getNumSymbolVars(), mlir::presburger::PresburgerSpace::getRelationSpace(), getSpace(), mlir::presburger::IntegerRelation::isEmpty(), and unionInPlace().
Referenced by applyDomain(), and applyRange().
PresburgerRelation PresburgerRelation::computeReprWithOnlyDivLocals | ( | ) | const |
Compute an equivalent representation of the same relation, such that all local ids in all disjuncts have division representations.
This representation may involve local ids that correspond to divisions, and may also be a union of convex disjuncts.
Definition at line 302 of file PresburgerRelation.cpp.
References disjuncts, getSpace(), hasOnlyDivLocals(), and unionInPlace().
Referenced by getSetDifference().
std::optional< DynamicAPInt > PresburgerRelation::computeVolume | ( | ) | const |
Compute an overapproximation of the number of integer points in the disjunct.
Symbol vars are currently not supported. If the computed overapproximation is infinite, an empty optional is returned.
This currently just sums up the overapproximations of the volumes of the disjuncts, so the approximation might be far from the true volume in the case when there is a lot of overlap between disjuncts.
Definition at line 690 of file PresburgerRelation.cpp.
References disjuncts, and getNumSymbolVars().
bool PresburgerRelation::containsPoint | ( | ArrayRef< DynamicAPInt > | point | ) | const |
Return true if the set contains the given point, and false otherwise.
A point is contained in the union iff any of the parts contain the point.
Definition at line 123 of file PresburgerRelation.cpp.
References mlir::presburger::IntegerRelation::containsPointNoLocal(), and disjuncts.
Referenced by containsPoint().
|
inline |
Definition at line 146 of file PresburgerRelation.h.
References containsPoint(), and mlir::presburger::getDynamicAPIntVec().
void PresburgerRelation::convertVarKind | ( | VarKind | srcKind, |
unsigned | srcPos, | ||
unsigned | num, | ||
VarKind | dstKind, | ||
unsigned | dstPos | ||
) |
Converts variables of the specified kind in the column range [srcPos, srcPos + num) to variables of the specified kind at position dstPos.
The ranges are relative to the kind of variable.
srcKind and dstKind must be different.
Definition at line 48 of file PresburgerRelation.cpp.
References mlir::presburger::PresburgerSpace::convertVarKind(), disjuncts, mlir::presburger::PresburgerSpace::getNumVarKind(), mlir::presburger::Local, and space.
void PresburgerRelation::dump | ( | ) | const |
Definition at line 1060 of file PresburgerRelation.cpp.
References print().
bool PresburgerRelation::findIntegerSample | ( | SmallVectorImpl< DynamicAPInt > & | sample | ) |
Find an integer sample from the given set.
This should not be called if any of the disjuncts in the union are unbounded.
Definition at line 677 of file PresburgerRelation.cpp.
References disjuncts.
SymbolicLexOpt PresburgerRelation::findSymbolicIntegerLexMax | ( | ) | const |
Compute the symbolic integer lexmax of the relation, i.e.
for every assignment of the symbols and domain the lexicographically maximum value attained by the range.
Definition at line 269 of file PresburgerRelation.cpp.
References findSymbolicIntegerLexOpt().
SymbolicLexOpt PresburgerRelation::findSymbolicIntegerLexMin | ( | ) | const |
Compute the symbolic integer lexmin of the relation, i.e.
for every assignment of the symbols and domain the lexicographically minimum value attained by the range.
Definition at line 265 of file PresburgerRelation.cpp.
References findSymbolicIntegerLexOpt().
ArrayRef< IntegerRelation > PresburgerRelation::getAllDisjuncts | ( | ) | const |
Return a reference to the list of disjuncts.
Definition at line 69 of file PresburgerRelation.cpp.
References disjuncts.
Referenced by findSymbolicIntegerLexOpt(), mlir::presburger::MultiAffineFunction::isEqual(), isFullDim(), and isObviouslyUniverse().
const IntegerRelation & PresburgerRelation::getDisjunct | ( | unsigned | index | ) | const |
Return the disjunct at the specified index.
Definition at line 73 of file PresburgerRelation.cpp.
References disjuncts.
Referenced by getSetDifference(), inverse(), and isObviouslyEqual().
PresburgerSet PresburgerRelation::getDomainSet | ( | ) | const |
Return a set corresponding to the domain of the relation.
Definition at line 191 of file PresburgerRelation.cpp.
References disjuncts, mlir::presburger::PresburgerSpace::getDomainSpace(), mlir::presburger::PresburgerSet::getEmpty(), space, and unionInPlace().
|
static |
Return an empty set of the specified type that contains no points.
Definition at line 136 of file PresburgerRelation.cpp.
References PresburgerRelation(), and space.
Referenced by compose(), and getSetDifference().
unsigned PresburgerRelation::getNumDisjuncts | ( | ) | const |
Return the number of disjuncts in the union.
Definition at line 65 of file PresburgerRelation.cpp.
References disjuncts.
Referenced by getSetDifference(), inverse(), isConvexNoLocals(), isObviouslyEmpty(), isObviouslyEqual(), print(), and mlir::presburger::SetCoalescer::SetCoalescer().
|
inline |
Definition at line 48 of file PresburgerRelation.h.
References mlir::presburger::PresburgerSpace::getNumDomainVars(), and space.
Referenced by compose(), and intersectRange().
|
inline |
Definition at line 51 of file PresburgerRelation.h.
References mlir::presburger::PresburgerSpace::getNumLocalVars(), and space.
|
inline |
Definition at line 49 of file PresburgerRelation.h.
References mlir::presburger::PresburgerSpace::getNumRangeVars(), and space.
Referenced by compose(), and intersectDomain().
|
inline |
Definition at line 50 of file PresburgerRelation.h.
References mlir::presburger::PresburgerSpace::getNumSymbolVars(), and space.
Referenced by compose(), and computeVolume().
|
inline |
Definition at line 52 of file PresburgerRelation.h.
References mlir::presburger::PresburgerSpace::getNumVars(), and space.
PresburgerSet PresburgerRelation::getRangeSet | ( | ) | const |
Return a set corresponding to the range of the relation.
Definition at line 198 of file PresburgerRelation.cpp.
References disjuncts, mlir::presburger::PresburgerSet::getEmpty(), mlir::presburger::PresburgerSpace::getRangeSpace(), space, and unionInPlace().
|
inline |
Definition at line 57 of file PresburgerRelation.h.
References space.
Referenced by applyDomain(), complement(), compose(), computeReprWithOnlyDivLocals(), findSymbolicIntegerLexOpt(), getSetDifference(), intersect(), intersectDomain(), intersectRange(), mlir::presburger::PWMAFunction::Piece::isConsistent(), isConvexNoLocals(), isEqual(), isObviouslyEqual(), simplify(), subtract(), unionInPlace(), and unionSet().
|
static |
Return a universe set of the specified type that contains all points.
Definition at line 130 of file PresburgerRelation.cpp.
References mlir::presburger::IntegerRelation::getUniverse(), space, and unionInPlace().
bool PresburgerRelation::hasOnlyDivLocals | ( | ) | const |
Check whether all local ids in all disjuncts have a div representation.
Definition at line 1029 of file PresburgerRelation.cpp.
References disjuncts, and mlir::presburger::IntegerRelation::hasOnlyDivLocals().
Referenced by computeReprWithOnlyDivLocals(), and getSetDifference().
void PresburgerRelation::insertVarInPlace | ( | VarKind | kind, |
unsigned | pos, | ||
unsigned | num = 1 |
||
) |
Definition at line 41 of file PresburgerRelation.cpp.
References disjuncts, mlir::presburger::PresburgerSpace::insertVar(), and space.
Referenced by intersectDomain(), and intersectRange().
PresburgerRelation PresburgerRelation::intersect | ( | const PresburgerRelation & | set | ) | const |
Return the intersection of this set and the given set.
Definition at line 148 of file PresburgerRelation.cpp.
References disjuncts, getSpace(), mlir::presburger::IntegerRelation::intersect(), mlir::presburger::PresburgerSpace::isCompatible(), mlir::presburger::IntegerRelation::isEmpty(), isObviouslyEmpty(), isObviouslyUniverse(), space, and unionInPlace().
Referenced by mlir::presburger::PresburgerSet::intersect(), intersectDomain(), and intersectRange().
PresburgerRelation PresburgerRelation::intersectDomain | ( | const PresburgerSet & | set | ) | const |
Return the domain intersection of the given set
with this
relation.
Formally, let the relation this
be R: A -> B and set
is C, then this operation returns (A intersection C) -> B.
Definition at line 181 of file PresburgerRelation.cpp.
References mlir::presburger::Domain, mlir::presburger::PresburgerSpace::getDomainSpace(), getNumRangeVars(), getSpace(), insertVarInPlace(), intersect(), inverse(), mlir::presburger::PresburgerSpace::isCompatible(), and space.
PresburgerRelation PresburgerRelation::intersectRange | ( | const PresburgerSet & | set | ) | const |
Return the range intersection of the given set
with this
relation.
Formally, let the relation this
be R: A -> B and set
is C, then this operation returns A -> (B intersection C).
Definition at line 171 of file PresburgerRelation.cpp.
References mlir::presburger::Domain, getNumDomainVars(), mlir::presburger::PresburgerSpace::getRangeSpace(), getSpace(), insertVarInPlace(), intersect(), mlir::presburger::PresburgerSpace::isCompatible(), and space.
void PresburgerRelation::inverse | ( | ) |
Invert the relation, i.e.
swap its domain and range.
Formally, if this
: A -> B then inverse
updates this
in-place to this
: B -> A.
Definition at line 205 of file PresburgerRelation.cpp.
References disjuncts, getDisjunct(), getNumDisjuncts(), and setSpace().
Referenced by applyDomain(), and intersectDomain().
bool PresburgerRelation::isConvexNoLocals | ( | ) | const |
Return true if the set is consist of a single disjunct, without any local variables, false otherwise.
Definition at line 661 of file PresburgerRelation.cpp.
References getNumDisjuncts(), mlir::presburger::PresburgerSpace::getNumLocalVars(), and getSpace().
bool PresburgerRelation::isEqual | ( | const PresburgerRelation & | set | ) | const |
Return true if this set is equal to the given set, and false otherwise.
Two sets are equal iff they are subsets of each other.
All local variables in both sets must correspond to floor divisions.
Definition at line 628 of file PresburgerRelation.cpp.
References getSpace(), mlir::presburger::PresburgerSpace::isCompatible(), isSubsetOf(), and space.
Referenced by mlir::presburger::IntegerRelation::isEqual().
bool PresburgerRelation::isFullDim | ( | ) | const |
Return whether the given PresburgerRelation is full-dimensional.
By full- dimensional we mean that it is not flat along any dimension.
Definition at line 1046 of file PresburgerRelation.cpp.
References getAllDisjuncts(), and mlir::presburger::IntegerRelation::isFullDim().
Referenced by mlir::presburger::detail::computeChamberDecomposition().
bool PresburgerRelation::isIntegerEmpty | ( | ) | const |
Return true if all the sets in the union are known to be integer empty false otherwise.
Return true if all the sets in the union are known to be integer empty, false otherwise.
Definition at line 672 of file PresburgerRelation.cpp.
References disjuncts, and mlir::presburger::IntegerRelation::isIntegerEmpty().
Referenced by mlir::affine::ComputationSliceState::isMaximal(), mlir::affine::ComputationSliceState::isSliceValid(), and isSubsetOf().
bool PresburgerRelation::isObviouslyEmpty | ( | ) | const |
Return true if there is no disjunct, false otherwise.
Definition at line 666 of file PresburgerRelation.cpp.
References getNumDisjuncts().
Referenced by intersect(), and unionInPlace().
bool PresburgerRelation::isObviouslyEqual | ( | const PresburgerRelation & | set | ) | const |
Perform a quick equality check on this
and other
.
The relations are equal if the check return true, but may or may not be equal if the check returns false. This is doing by directly comparing whether each internal disjunct is the same.
Definition at line 633 of file PresburgerRelation.cpp.
References getDisjunct(), getNumDisjuncts(), getSpace(), mlir::presburger::PresburgerSpace::isCompatible(), and space.
Referenced by subtract(), and unionInPlace().
bool PresburgerRelation::isObviouslyUniverse | ( | ) | const |
Return true if the set is known to have one unconstrained disjunct, false otherwise.
Return true if the Presburger relation represents the universe set, false otherwise.
It is a simple check that only check if the relation has at least one unconstrained disjunct, indicating the absence of constraints or conditions.
Definition at line 653 of file PresburgerRelation.cpp.
References getAllDisjuncts().
Referenced by intersect(), and unionInPlace().
bool PresburgerRelation::isSubsetOf | ( | const PresburgerRelation & | set | ) | const |
Return true if this set is a subset of the given set, and false otherwise.
T is a subset of S iff T \ S is empty, since if T \ S contains a point then this is a point that is contained in T but not S, and if T contains a point that is not in S, this also lies in T \ S.
Definition at line 623 of file PresburgerRelation.cpp.
References isIntegerEmpty(), and subtract().
Referenced by isEqual(), and mlir::presburger::IntegerRelation::isSubsetOf().
void PresburgerRelation::print | ( | raw_ostream & | os | ) | const |
Print the set's internal state.
Definition at line 1052 of file PresburgerRelation.cpp.
References disjuncts, getNumDisjuncts(), and mlir::presburger::IntegerRelation::print().
Referenced by dump().
void PresburgerRelation::setSpace | ( | const PresburgerSpace & | oSpace | ) |
Set the space to oSpace
.
oSpace
should not contain any local ids. oSpace
need not have the same number of ids as the current space; it could have more or less. If it has less, the extra ids become locals of the disjuncts. It can also have more, in which case the disjuncts will have fewer locals. If its total number of ids exceeds that of some disjunct, an assert failure will occur.
Definition at line 34 of file PresburgerRelation.cpp.
References disjuncts, mlir::presburger::PresburgerSpace::getNumLocalVars(), and space.
Referenced by mlir::presburger::IntegerRelation::computeReprWithOnlyDivLocals(), and inverse().
PresburgerRelation PresburgerRelation::simplify | ( | ) | const |
Simplify each disjunct, canonicalizing each disjunct and removing redundencies.
Definition at line 1035 of file PresburgerRelation.cpp.
References disjuncts, getSpace(), mlir::presburger::IntegerRelation::isObviouslyEmpty(), PresburgerRelation(), mlir::presburger::IntegerRelation::simplify(), and unionInPlace().
Referenced by getSetDifference().
PresburgerRelation PresburgerRelation::subtract | ( | const PresburgerRelation & | set | ) | const |
Return the set difference of this set and the given set, i.e., return this \ set
.
Return the result of subtract the given set from this set, i.e., return this \ set
.
All local variables in set
must correspond to floor divisions, but local variables in this
need not correspond to divisions.
Definition at line 605 of file PresburgerRelation.cpp.
References disjuncts, getSetDifference(), getSpace(), mlir::presburger::PresburgerSpace::isCompatible(), isObviouslyEqual(), space, and unionInPlace().
Referenced by isSubsetOf(), mlir::presburger::IntegerRelation::subtract(), and mlir::presburger::PresburgerSet::subtract().
void PresburgerRelation::unionInPlace | ( | const IntegerRelation & | disjunct | ) |
Mutate this set, turning it into the union of this set and the given disjunct.
Mutate this set, turning it into the union of this set and the given IntegerRelation.
Definition at line 80 of file PresburgerRelation.cpp.
References disjuncts, mlir::presburger::IntegerRelation::getSpace(), mlir::presburger::PresburgerSpace::isCompatible(), and space.
Referenced by mlir::presburger::SetCoalescer::coalesce(), compose(), computeReprWithOnlyDivLocals(), mlir::presburger::PWMAFunction::getDomain(), getDomainSet(), mlir::presburger::MultiAffineFunction::getLexSet(), getRangeSet(), getSetDifference(), getUniverse(), mlir::presburger::PresburgerSet::getUniverse(), intersect(), PresburgerRelation(), simplify(), subtract(), unionInPlace(), and unionSet().
void PresburgerRelation::unionInPlace | ( | const PresburgerRelation & | set | ) |
Mutate this set, turning it into the union of this set and the given set.
This is accomplished by simply adding all the disjuncts of the given set to this set.
Definition at line 89 of file PresburgerRelation.cpp.
References disjuncts, getSpace(), mlir::presburger::PresburgerSpace::isCompatible(), isObviouslyEmpty(), isObviouslyEqual(), isObviouslyUniverse(), space, and unionInPlace().
PresburgerRelation PresburgerRelation::unionSet | ( | const PresburgerRelation & | set | ) | const |
Return the union of this set and the given set.
Definition at line 115 of file PresburgerRelation.cpp.
References getSpace(), mlir::presburger::PresburgerSpace::isCompatible(), space, and unionInPlace().
Referenced by mlir::presburger::PresburgerSet::unionSet().
|
friend |
Definition at line 241 of file PresburgerRelation.h.
Referenced by coalesce().
|
protected |
The list of disjuncts that this set is the union of.
Definition at line 239 of file PresburgerRelation.h.
Referenced by compose(), computeReprWithOnlyDivLocals(), computeVolume(), containsPoint(), convertVarKind(), findIntegerSample(), getAllDisjuncts(), getDisjunct(), getDomainSet(), getNumDisjuncts(), getRangeSet(), hasOnlyDivLocals(), insertVarInPlace(), intersect(), inverse(), isIntegerEmpty(), print(), mlir::presburger::SetCoalescer::SetCoalescer(), setSpace(), simplify(), subtract(), and unionInPlace().
|
protected |
Definition at line 236 of file PresburgerRelation.h.
Referenced by convertVarKind(), getDomainSet(), getEmpty(), mlir::presburger::PresburgerSet::getEmpty(), getNumDomainVars(), getNumLocalVars(), getNumRangeVars(), getNumSymbolVars(), getNumVars(), getRangeSet(), getSpace(), getUniverse(), mlir::presburger::PresburgerSet::getUniverse(), insertVarInPlace(), intersect(), intersectDomain(), intersectRange(), isEqual(), isObviouslyEqual(), PresburgerRelation(), mlir::presburger::PresburgerSet::PresburgerSet(), setSpace(), subtract(), unionInPlace(), and unionSet().