MLIR  16.0.0git
Namespaces | Classes | Enumerations | Functions
mlir::presburger Namespace Reference

Namespaces

 detail
 

Classes

class  DivisionRepr
 Class storing division representation of local variables of a constraint system. More...
 
struct  Fraction
 A class to represent fractions. More...
 
class  GBRSimplex
 Given a simplex for a polytope, construct a new simplex whose variables are identified with a pair of points (x, y) in the original polytope. More...
 
class  IntegerPolyhedron
 An IntegerPolyhedron represents the set of points from a PresburgerSpace that satisfy a list of affine constraints. More...
 
class  IntegerRelation
 An IntegerRelation represents the set of points from a PresburgerSpace that satisfy a list of affine constraints. More...
 
class  LexSimplex
 A class for lexicographic optimization without any symbols. More...
 
class  LexSimplexBase
 Simplex class using the lexicographic pivot rule. More...
 
class  LinearTransform
 
class  Matrix
 This is a class to represent a resizable matrix. More...
 
struct  MaybeLocalRepr
 MaybeLocalRepr contains the indices of the constraints that can be expressed as a floordiv of an affine function. More...
 
class  MaybeOptimum
 
class  MPInt
 This class provides support for multi-precision arithmetic. More...
 
class  MultiAffineFunction
 This class represents a multi-affine function whose domain is given by an IntegerPolyhedron. More...
 
class  PresburgerRelation
 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...
 
class  PresburgerSet
 
class  PresburgerSpace
 PresburgerSpace is the space of all possible values of a tuple of integer valued variables/variables. More...
 
class  PWMAFunction
 This class represents a piece-wise MultiAffineFunction. More...
 
class  SetCoalescer
 The SetCoalescer class contains all functionality concerning the coalesce heuristic. More...
 
class  Simplex
 The Simplex class uses the Normal pivot rule and supports integer emptiness checks as well as detecting redundancies. More...
 
class  SimplexBase
 The Simplex class implements a version of the Simplex and Generalized Basis Reduction algorithms, which can perform analysis of integer sets with affine inequalities and equalities. More...
 
class  SimplexRollbackScopeExit
 Takes a snapshot of the simplex state on construction and rolls back to the snapshot on destruction. More...
 
struct  SymbolicLexMin
 Represents the result of a symbolic lexicographic minimization computation. More...
 
class  SymbolicLexSimplex
 A class to perform symbolic lexicographic optimization, i.e., to find, for every assignment to the symbols the specified symbolDomain, the lexicographically minimum value integer value attained by the non-symbol variables. More...
 

Enumerations

enum  VarKind {
  VarKind::Symbol, VarKind::Local, VarKind::Domain, VarKind::Range,
  VarKind::SetDim = Range
}
 Kind of variable. More...
 
enum  OptimumKind { OptimumKind::Empty, OptimumKind::Unbounded, OptimumKind::Bounded }
 This class represents the result of operations optimizing something subject to some constraints. More...
 
enum  ReprKind { ReprKind::Inequality, ReprKind::Equality, ReprKind::None }
 ReprKind enum is used to set the constraint type in MaybeLocalRepr. More...
 

Functions

int compare (Fraction x, Fraction y)
 Three-way comparison between two fractions. More...
 
int64_t floor (Fraction f)
 
int64_t ceil (Fraction f)
 
Fraction operator- (Fraction x)
 
bool operator< (Fraction x, Fraction y)
 
bool operator<= (Fraction x, Fraction y)
 
bool operator== (Fraction x, Fraction y)
 
bool operator!= (Fraction x, Fraction y)
 
bool operator> (Fraction x, Fraction y)
 
bool operator>= (Fraction x, Fraction y)
 
Fraction operator* (Fraction x, Fraction y)
 
llvm::hash_code hash_value (const MPInt &x)
 Redeclarations of friend declaration above to make it discoverable by lookups. More...
 
static int64_t int64FromMPInt (const MPInt &x)
 This just calls through to the operator int64_t, but it's useful when a function pointer is required. More...
 
LLVM_ATTRIBUTE_ALWAYS_INLINE MPInt mpintFromInt64 (int64_t x)
 
llvm::raw_ostream & operator<< (llvm::raw_ostream &os, const MPInt &x)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE MPInt mod (const MPInt &lhs, const MPInt &rhs)
 is always non-negative. More...
 
LLVM_ATTRIBUTE_ALWAYS_INLINE MPInt abs (const MPInt &x)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE MPInt ceilDiv (const MPInt &lhs, const MPInt &rhs)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE MPInt floorDiv (const MPInt &lhs, const MPInt &rhs)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE MPInt gcd (const MPInt &a, const MPInt &b)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE MPInt lcm (const MPInt &a, const MPInt &b)
 Returns the least common multiple of 'a' and 'b'. More...
 
LLVM_ATTRIBUTE_ALWAYS_INLINE MPIntoperator+= (MPInt &a, int64_t b)
 

Convenience operator overloads for int64_t. More...

 
LLVM_ATTRIBUTE_ALWAYS_INLINE MPIntoperator-= (MPInt &a, int64_t b)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE MPIntoperator*= (MPInt &a, int64_t b)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE MPIntoperator/= (MPInt &a, int64_t b)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE MPIntoperator%= (MPInt &a, int64_t b)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE MPInt operator+ (const MPInt &a, int64_t b)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE MPInt operator- (const MPInt &a, int64_t b)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE MPInt operator* (const MPInt &a, int64_t b)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE MPInt operator/ (const MPInt &a, int64_t b)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE MPInt operator% (const MPInt &a, int64_t b)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE MPInt operator+ (int64_t a, const MPInt &b)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE MPInt operator- (int64_t a, const MPInt &b)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE MPInt operator* (int64_t a, const MPInt &b)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE MPInt operator/ (int64_t a, const MPInt &b)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE MPInt operator% (int64_t a, const MPInt &b)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE bool operator== (const MPInt &a, int64_t b)
 We provide special implementations of the comparison operators rather than calling through as above, as this would result in a 1.2x slowdown. More...
 
LLVM_ATTRIBUTE_ALWAYS_INLINE bool operator!= (const MPInt &a, int64_t b)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE bool operator> (const MPInt &a, int64_t b)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE bool operator< (const MPInt &a, int64_t b)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE bool operator<= (const MPInt &a, int64_t b)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE bool operator>= (const MPInt &a, int64_t b)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE bool operator== (int64_t a, const MPInt &b)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE bool operator!= (int64_t a, const MPInt &b)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE bool operator> (int64_t a, const MPInt &b)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE bool operator< (int64_t a, const MPInt &b)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE bool operator<= (int64_t a, const MPInt &b)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE bool operator>= (int64_t a, const MPInt &b)
 
SmallVector< int64_t, 8 > getDivUpperBound (ArrayRef< int64_t > dividend, int64_t divisor, unsigned localVarIdx)
 If q is defined to be equal to expr floordiv d, this equivalent to saying that q is an integer and q is subject to the inequalities 0 <= expr - d*q <= c - 1 (quotient remainder theorem). More...
 
SmallVector< int64_t, 8 > getDivLowerBound (ArrayRef< int64_t > dividend, int64_t divisor, unsigned localVarIdx)
 
llvm::SmallBitVector getSubrangeBitVector (unsigned len, unsigned setOffset, unsigned numSet)
 
SmallVector< MPInt, 8 > getMPIntVec (ArrayRef< int64_t > range)
 Check if the pos^th variable can be expressed as a floordiv of an affine function of other variables (where the divisor is a positive constant). More...
 
SmallVector< int64_t, 8 > getInt64Vec (ArrayRef< MPInt > range)
 Return the given array as an array of int64_t. More...
 
MaybeLocalRepr computeSingleVarRepr (const IntegerRelation &cst, ArrayRef< bool > foundRepr, unsigned pos, MutableArrayRef< int64_t > dividend, unsigned &divisor)
 Returns the MaybeLocalRepr struct which contains the indices of the constraints that can be expressed as a floordiv of an affine function. More...
 
void mergeLocalVars (IntegerRelation &relA, IntegerRelation &relB, llvm::function_ref< bool(unsigned i, unsigned j)> merge)
 Given two relations, A and B, add additional local vars to the sets such that both have the union of the local vars in each set, without changing the set of points that lie in A and B. More...
 
int64_t gcdRange (ArrayRef< int64_t > range)
 Compute the gcd of the range. More...
 
int64_t normalizeRange (MutableArrayRef< int64_t > range)
 Divide the range by its gcd and return the gcd. More...
 
void normalizeDiv (MutableArrayRef< int64_t > num, int64_t &denom)
 Normalize the given (numerator, denominator) pair by dividing out the common factors between them. More...
 
SmallVector< int64_t, 8 > getNegatedCoeffs (ArrayRef< int64_t > coeffs)
 Return coeffs with all the elements negated. More...
 
SmallVector< int64_t, 8 > getComplementIneq (ArrayRef< int64_t > ineq)
 Return the complement of the given inequality. More...
 

Enumeration Type Documentation

◆ OptimumKind

This class represents the result of operations optimizing something subject to some constraints.

If the constraints were not satisfiable the, kind will be Empty. If the optimum is unbounded, the kind is Unbounded, and if the optimum is bounded, the kind will be Bounded and optimum holds the optimal value.

Enumerator
Empty 
Unbounded 
Bounded 

Definition at line 33 of file Utils.h.

◆ ReprKind

ReprKind enum is used to set the constraint type in MaybeLocalRepr.

Enumerator
Inequality 
Equality 
None 

Definition at line 90 of file Utils.h.

◆ VarKind

Kind of variable.

Implementation wise SetDims are treated as Range vars, and spaces with no distinction between dimension vars are treated as relations with zero domain vars.

Enumerator
Symbol 
Local 
Domain 
Range 
SetDim 

Definition at line 29 of file PresburgerSpace.h.

Function Documentation

◆ abs()

LLVM_ATTRIBUTE_ALWAYS_INLINE MPInt mlir::presburger::abs ( const MPInt x)

◆ ceil()

int64_t mlir::presburger::ceil ( Fraction  f)
inline

◆ ceilDiv()

LLVM_ATTRIBUTE_ALWAYS_INLINE MPInt mlir::presburger::ceilDiv ( const MPInt lhs,
const MPInt rhs 
)

◆ compare()

int mlir::presburger::compare ( Fraction  x,
Fraction  y 
)
inline

Three-way comparison between two fractions.

Returns +1, 0, and -1 if the first fraction is greater than, equal to, or less than the second fraction, respectively.

Definition at line 54 of file Fraction.h.

References mlir::presburger::Fraction::den, and mlir::presburger::Fraction::num.

Referenced by createConst(), mlir::impl::findAttrSorted(), llvm::cl::OptionValue< mlir::OpPassManager >::getValue(), mlir::detail::InterfaceMap::insert(), insertCasts(), matchSelectReduction(), operator!=(), operator<(), operator<=(), operator==(), operator>(), and operator>=().

◆ computeSingleVarRepr()

MaybeLocalRepr mlir::presburger::computeSingleVarRepr ( const IntegerRelation cst,
ArrayRef< bool >  foundRepr,
unsigned  pos,
MutableArrayRef< int64_t >  dividend,
unsigned divisor 
)

Returns the MaybeLocalRepr struct which contains the indices of the constraints that can be expressed as a floordiv of an affine function.

Check if the pos^th variable can be expressed as a floordiv of an affine function of other variables (where the divisor is a positive constant).

If the representation could be computed, dividend and denominator are set. If the representation could not be computed, the kind attribute in MaybeLocalRepr is set to None.

foundRepr contains a boolean for each variable indicating if the explicit representation for that variable has already been computed. Returns the MaybeLocalRepr struct which contains the indices of the constraints that can be expressed as a floordiv of an affine function. If the representation could be computed, dividend and denominator are set. If the representation could not be computed, the kind attribute in MaybeLocalRepr is set to None.

Definition at line 216 of file Utils.cpp.

References checkExplicitRepresentation(), Equality, mlir::failed(), getDivRepr(), mlir::presburger::IntegerRelation::getLowerAndUpperBoundIndices(), mlir::presburger::IntegerRelation::getNumCols(), mlir::presburger::IntegerRelation::getNumVars(), Inequality, and mlir::presburger::MaybeLocalRepr::kind.

Referenced by detectAsFloorDiv(), and mlir::presburger::DivisionRepr::setDividend().

◆ floor()

int64_t mlir::presburger::floor ( Fraction  f)
inline

◆ floorDiv()

LLVM_ATTRIBUTE_ALWAYS_INLINE MPInt mlir::presburger::floorDiv ( const MPInt lhs,
const MPInt rhs 
)

◆ gcd()

LLVM_ATTRIBUTE_ALWAYS_INLINE MPInt mlir::presburger::gcd ( const MPInt a,
const MPInt b 
)

◆ gcdRange()

int64_t mlir::presburger::gcdRange ( ArrayRef< int64_t >  range)

Compute the gcd of the range.

Definition at line 316 of file Utils.cpp.

References abs(), and gcd().

Referenced by normalizeDiv(), normalizeRange(), mlir::presburger::MPInt::operator int64_t(), and mlir::presburger::DivisionRepr::setDividend().

◆ getComplementIneq()

SmallVector< int64_t, 8 > mlir::presburger::getComplementIneq ( ArrayRef< int64_t >  ineq)

Return the complement of the given inequality.

The complement of a_1 x_1 + ... + a_n x_ + c >= 0 is a_1 x_1 + ... + a_n x_ + c < 0, i.e., -a_1 x_1 - ... - a_n x_ - c - 1 >= 0, since all the variables are constrained to be integers.

Definition at line 351 of file Utils.cpp.

Referenced by mlir::presburger::SymbolicLexSimplex::computeSymbolicIntegerLexMin(), mlir::presburger::LexSimplex::isRedundantInequality(), and mlir::presburger::DivisionRepr::setDividend().

◆ getDivLowerBound()

SmallVector< int64_t, 8 > mlir::presburger::getDivLowerBound ( ArrayRef< int64_t >  dividend,
int64_t  divisor,
unsigned  localVarIdx 
)

◆ getDivUpperBound()

SmallVector< int64_t, 8 > mlir::presburger::getDivUpperBound ( ArrayRef< int64_t >  dividend,
int64_t  divisor,
unsigned  localVarIdx 
)

If q is defined to be equal to expr floordiv d, this equivalent to saying that q is an integer and q is subject to the inequalities 0 <= expr - d*q <= c - 1 (quotient remainder theorem).

Rearranging, we get the bounds on q: d*q <= expr <= d*q + d - 1.

getDivUpperBound returns d*q <= expr, and getDivLowerBound returns expr <= d*q + d - 1.

The parameter dividend corresponds to expr above, divisor to d, and localVarIdx to the position of q in the coefficient list.

The coefficient of q in dividend must be zero, as it is not allowed for local variable to be a floor division of an expression involving itself.

Definition at line 293 of file Utils.cpp.

Referenced by mlir::presburger::IntegerRelation::addLocalFloorDiv(), and mlir::presburger::DivisionRepr::setDividend().

◆ getInt64Vec()

SmallVector< int64_t, 8 > mlir::presburger::getInt64Vec ( ArrayRef< MPInt range)

Return the given array as an array of int64_t.

Definition at line 422 of file Utils.cpp.

References int64FromMPInt().

Referenced by mlir::presburger::DivisionRepr::setDividend().

◆ getMPIntVec()

SmallVector< MPInt, 8 > mlir::presburger::getMPIntVec ( ArrayRef< int64_t >  range)

Check if the pos^th variable can be expressed as a floordiv of an affine function of other variables (where the divisor is a positive constant).

foundRepr contains a boolean for each variable indicating if the explicit representation for that variable has already been computed. Return the given array as an array of MPInts.

Definition at line 416 of file Utils.cpp.

References mpintFromInt64().

Referenced by mlir::presburger::DivisionRepr::setDividend().

◆ getNegatedCoeffs()

SmallVector< int64_t, 8 > mlir::presburger::getNegatedCoeffs ( ArrayRef< int64_t >  coeffs)

Return coeffs with all the elements negated.

Definition at line 343 of file Utils.cpp.

Referenced by mlir::presburger::SetCoalescer::coalesce(), getIneqCoeffsFromIdx(), and mlir::presburger::DivisionRepr::setDividend().

◆ getSubrangeBitVector()

llvm::SmallBitVector mlir::presburger::getSubrangeBitVector ( unsigned  len,
unsigned  setOffset,
unsigned  numSet 
)

Definition at line 257 of file Utils.cpp.

Referenced by mlir::presburger::DivisionRepr::setDividend().

◆ hash_value()

llvm::hash_code mlir::presburger::hash_value ( const MPInt x)

◆ int64FromMPInt()

static int64_t mlir::presburger::int64FromMPInt ( const MPInt x)
inlinestatic

This just calls through to the operator int64_t, but it's useful when a function pointer is required.

(Although this is marked inline, it is still possible to obtain and use a function pointer to this.)

Definition at line 260 of file MPInt.h.

Referenced by getInt64Vec().

◆ lcm()

LLVM_ATTRIBUTE_ALWAYS_INLINE MPInt mlir::presburger::lcm ( const MPInt a,
const MPInt b 
)

◆ mergeLocalVars()

void mlir::presburger::mergeLocalVars ( IntegerRelation relA,
IntegerRelation relB,
llvm::function_ref< bool(unsigned i, unsigned j)>  merge 
)

Given two relations, A and B, add additional local vars to the sets such that both have the union of the local vars in each set, without changing the set of points that lie in A and B.

While taking union, if a local var in any set has a division representation which is a duplicate of division representation, of another local var in any set, it is not added to the final union of local vars and is instead merged.

On every possible merge, merge(i, j) is called. i, j are position of local variables in both sets which are being merged. If merge(i, j) returns true, the divisions are merged, otherwise the divisions are not merged.

Definition at line 265 of file Utils.cpp.

References mlir::presburger::DivisionRepr::getDenom(), mlir::presburger::DivisionRepr::getDividend(), mlir::presburger::IntegerRelation::getLocalReprs(), mlir::presburger::DivisionRepr::getNumDivs(), mlir::presburger::IntegerRelation::getNumLocalVars(), mlir::presburger::IntegerRelation::getSpace(), mlir::presburger::IntegerRelation::insertVar(), mlir::presburger::PresburgerSpace::isCompatible(), Local, mlir::presburger::DivisionRepr::removeDuplicateDivs(), and mlir::presburger::DivisionRepr::setDividend().

Referenced by mlir::presburger::MultiAffineFunction::mergeLocalVars(), mlir::presburger::IntegerRelation::mergeLocalVars(), and mlir::presburger::DivisionRepr::setDividend().

◆ mod()

LLVM_ATTRIBUTE_ALWAYS_INLINE MPInt mlir::presburger::mod ( const MPInt lhs,
const MPInt rhs 
)

is always non-negative.

Definition at line 392 of file MPInt.h.

References mlir::presburger::detail::mod().

Referenced by mlir::presburger::LexSimplexBase::addCut(), and isRangeDivisibleBy().

◆ mpintFromInt64()

LLVM_ATTRIBUTE_ALWAYS_INLINE MPInt mlir::presburger::mpintFromInt64 ( int64_t  x)

Definition at line 261 of file MPInt.h.

References mlir::presburger::detail::mod(), and mlir::presburger::detail::operator<<().

Referenced by getMPIntVec().

◆ normalizeDiv()

void mlir::presburger::normalizeDiv ( MutableArrayRef< int64_t >  num,
int64_t &  denom 
)

Normalize the given (numerator, denominator) pair by dividing out the common factors between them.

The numerator here is an affine expression with integer coefficients.

Definition at line 335 of file Utils.cpp.

References gcd(), and gcdRange().

Referenced by isRangeDivisibleBy(), and mlir::presburger::DivisionRepr::setDividend().

◆ normalizeRange()

int64_t mlir::presburger::normalizeRange ( MutableArrayRef< int64_t >  range)

◆ operator!=() [1/3]

bool mlir::presburger::operator!= ( Fraction  x,
Fraction  y 
)
inline

Definition at line 75 of file Fraction.h.

References compare().

◆ operator!=() [2/3]

LLVM_ATTRIBUTE_ALWAYS_INLINE bool mlir::presburger::operator!= ( const MPInt a,
int64_t  b 
)

Definition at line 557 of file MPInt.h.

◆ operator!=() [3/3]

LLVM_ATTRIBUTE_ALWAYS_INLINE bool mlir::presburger::operator!= ( int64_t  a,
const MPInt b 
)

Definition at line 587 of file MPInt.h.

◆ operator%() [1/2]

LLVM_ATTRIBUTE_ALWAYS_INLINE MPInt mlir::presburger::operator% ( const MPInt a,
int64_t  b 
)

Definition at line 531 of file MPInt.h.

Referenced by mlir::AffineExpr::operator!().

◆ operator%() [2/2]

LLVM_ATTRIBUTE_ALWAYS_INLINE MPInt mlir::presburger::operator% ( int64_t  a,
const MPInt b 
)

Definition at line 546 of file MPInt.h.

◆ operator%=()

LLVM_ATTRIBUTE_ALWAYS_INLINE MPInt& mlir::presburger::operator%= ( MPInt a,
int64_t  b 
)

Definition at line 516 of file MPInt.h.

◆ operator*() [1/3]

Fraction mlir::presburger::operator* ( Fraction  x,
Fraction  y 
)
inline

◆ operator*() [2/3]

LLVM_ATTRIBUTE_ALWAYS_INLINE MPInt mlir::presburger::operator* ( const MPInt a,
int64_t  b 
)

Definition at line 525 of file MPInt.h.

◆ operator*() [3/3]

LLVM_ATTRIBUTE_ALWAYS_INLINE MPInt mlir::presburger::operator* ( int64_t  a,
const MPInt b 
)

Definition at line 540 of file MPInt.h.

◆ operator*=()

LLVM_ATTRIBUTE_ALWAYS_INLINE MPInt& mlir::presburger::operator*= ( MPInt a,
int64_t  b 
)

Definition at line 510 of file MPInt.h.

◆ operator+() [1/2]

LLVM_ATTRIBUTE_ALWAYS_INLINE MPInt mlir::presburger::operator+ ( const MPInt a,
int64_t  b 
)

Definition at line 519 of file MPInt.h.

◆ operator+() [2/2]

LLVM_ATTRIBUTE_ALWAYS_INLINE MPInt mlir::presburger::operator+ ( int64_t  a,
const MPInt b 
)

Definition at line 534 of file MPInt.h.

◆ operator+=()

LLVM_ATTRIBUTE_ALWAYS_INLINE MPInt& mlir::presburger::operator+= ( MPInt a,
int64_t  b 
)


Convenience operator overloads for int64_t.


Definition at line 504 of file MPInt.h.

Referenced by mlir::TimingIdentifier::get().

◆ operator-() [1/3]

Fraction mlir::presburger::operator- ( Fraction  x)
inline

◆ operator-() [2/3]

LLVM_ATTRIBUTE_ALWAYS_INLINE MPInt mlir::presburger::operator- ( const MPInt a,
int64_t  b 
)

Definition at line 522 of file MPInt.h.

◆ operator-() [3/3]

LLVM_ATTRIBUTE_ALWAYS_INLINE MPInt mlir::presburger::operator- ( int64_t  a,
const MPInt b 
)

Definition at line 537 of file MPInt.h.

◆ operator-=()

LLVM_ATTRIBUTE_ALWAYS_INLINE MPInt& mlir::presburger::operator-= ( MPInt a,
int64_t  b 
)

Definition at line 507 of file MPInt.h.

Referenced by mlir::TimingIdentifier::get().

◆ operator/() [1/2]

LLVM_ATTRIBUTE_ALWAYS_INLINE MPInt mlir::presburger::operator/ ( const MPInt a,
int64_t  b 
)

Definition at line 528 of file MPInt.h.

◆ operator/() [2/2]

LLVM_ATTRIBUTE_ALWAYS_INLINE MPInt mlir::presburger::operator/ ( int64_t  a,
const MPInt b 
)

Definition at line 543 of file MPInt.h.

◆ operator/=()

LLVM_ATTRIBUTE_ALWAYS_INLINE MPInt& mlir::presburger::operator/= ( MPInt a,
int64_t  b 
)

Definition at line 513 of file MPInt.h.

◆ operator<() [1/3]

bool mlir::presburger::operator< ( Fraction  x,
Fraction  y 
)
inline

◆ operator<() [2/3]

LLVM_ATTRIBUTE_ALWAYS_INLINE bool mlir::presburger::operator< ( const MPInt a,
int64_t  b 
)

Definition at line 567 of file MPInt.h.

◆ operator<() [3/3]

LLVM_ATTRIBUTE_ALWAYS_INLINE bool mlir::presburger::operator< ( int64_t  a,
const MPInt b 
)

Definition at line 597 of file MPInt.h.

◆ operator<<()

llvm::raw_ostream & mlir::presburger::operator<< ( llvm::raw_ostream &  os,
const MPInt x 
)

Definition at line 32 of file MPInt.cpp.

References mlir::presburger::MPInt::print().

◆ operator<=() [1/3]

bool mlir::presburger::operator<= ( Fraction  x,
Fraction  y 
)
inline

Definition at line 71 of file Fraction.h.

References compare().

◆ operator<=() [2/3]

LLVM_ATTRIBUTE_ALWAYS_INLINE bool mlir::presburger::operator<= ( const MPInt a,
int64_t  b 
)

Definition at line 572 of file MPInt.h.

◆ operator<=() [3/3]

LLVM_ATTRIBUTE_ALWAYS_INLINE bool mlir::presburger::operator<= ( int64_t  a,
const MPInt b 
)

Definition at line 602 of file MPInt.h.

◆ operator==() [1/3]

bool mlir::presburger::operator== ( Fraction  x,
Fraction  y 
)
inline

Definition at line 73 of file Fraction.h.

References compare().

Referenced by mlir::tblgen::AttrOrTypeDef::getTraits().

◆ operator==() [2/3]

LLVM_ATTRIBUTE_ALWAYS_INLINE bool mlir::presburger::operator== ( const MPInt a,
int64_t  b 
)

We provide special implementations of the comparison operators rather than calling through as above, as this would result in a 1.2x slowdown.

Definition at line 552 of file MPInt.h.

◆ operator==() [3/3]

LLVM_ATTRIBUTE_ALWAYS_INLINE bool mlir::presburger::operator== ( int64_t  a,
const MPInt b 
)

Definition at line 582 of file MPInt.h.

◆ operator>() [1/3]

bool mlir::presburger::operator> ( Fraction  x,
Fraction  y 
)
inline

Definition at line 77 of file Fraction.h.

References compare().

◆ operator>() [2/3]

LLVM_ATTRIBUTE_ALWAYS_INLINE bool mlir::presburger::operator> ( const MPInt a,
int64_t  b 
)

Definition at line 562 of file MPInt.h.

◆ operator>() [3/3]

LLVM_ATTRIBUTE_ALWAYS_INLINE bool mlir::presburger::operator> ( int64_t  a,
const MPInt b 
)

Definition at line 592 of file MPInt.h.

◆ operator>=() [1/3]

bool mlir::presburger::operator>= ( Fraction  x,
Fraction  y 
)
inline

Definition at line 79 of file Fraction.h.

References compare().

◆ operator>=() [2/3]

LLVM_ATTRIBUTE_ALWAYS_INLINE bool mlir::presburger::operator>= ( const MPInt a,
int64_t  b 
)

Definition at line 577 of file MPInt.h.

◆ operator>=() [3/3]

LLVM_ATTRIBUTE_ALWAYS_INLINE bool mlir::presburger::operator>= ( int64_t  a,
const MPInt b 
)

Definition at line 607 of file MPInt.h.