MLIR  19.0.0git
Classes | Namespaces | Functions
MPInt.h File Reference
#include "mlir/Analysis/Presburger/SlowMPInt.h"
#include "mlir/Support/MathExtras.h"
#include "llvm/Support/raw_ostream.h"
#include <numeric>

Go to the source code of this file.

Classes

class  mlir::presburger::MPInt
 This class provides support for multi-precision arithmetic. More...
 

Namespaces

 mlir
 Include the generated interface declarations.
 
 mlir::presburger
 
 mlir::presburger::detail
 

Functions

LLVM_ATTRIBUTE_ALWAYS_INLINE bool mlir::presburger::detail::addOverflow (int64_t x, int64_t y, int64_t &result)
 If builtin intrinsics for overflow-checked arithmetic are available, use them. More...
 
LLVM_ATTRIBUTE_ALWAYS_INLINE bool mlir::presburger::detail::subOverflow (int64_t x, int64_t y, int64_t &result)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE bool mlir::presburger::detail::mulOverflow (int64_t x, int64_t y, int64_t &result)
 
llvm::hash_code mlir::presburger::hash_value (const MPInt &x)
 Redeclarations of friend declaration above to make it discoverable by lookups. More...
 
static int64_t mlir::presburger::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 mlir::presburger::mpintFromInt64 (int64_t x)
 
llvm::raw_ostream & mlir::presburger::operator<< (llvm::raw_ostream &os, const MPInt &x)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE MPInt mlir::presburger::mod (const MPInt &lhs, const MPInt &rhs)
 is always non-negative. More...
 
LLVM_ATTRIBUTE_ALWAYS_INLINE bool mlir::presburger::detail::divWouldOverflow (int64_t x, int64_t y)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE MPInt mlir::presburger::abs (const MPInt &x)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE MPInt mlir::presburger::ceilDiv (const MPInt &lhs, const MPInt &rhs)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE MPInt mlir::presburger::floorDiv (const MPInt &lhs, const MPInt &rhs)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE MPInt mlir::presburger::gcd (const MPInt &a, const MPInt &b)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE MPInt mlir::presburger::lcm (const MPInt &a, const MPInt &b)
 Returns the least common multiple of 'a' and 'b'. More...
 
LLVM_ATTRIBUTE_ALWAYS_INLINE MPInt & mlir::presburger::operator+= (MPInt &a, int64_t b)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE MPInt & mlir::presburger::operator-= (MPInt &a, int64_t b)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE MPInt & mlir::presburger::operator*= (MPInt &a, int64_t b)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE MPInt & mlir::presburger::operator/= (MPInt &a, int64_t b)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE MPInt & mlir::presburger::operator%= (MPInt &a, int64_t b)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE MPInt mlir::presburger::operator+ (const MPInt &a, int64_t b)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE MPInt mlir::presburger::operator- (const MPInt &a, int64_t b)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE MPInt mlir::presburger::operator* (const MPInt &a, int64_t b)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE MPInt mlir::presburger::operator/ (const MPInt &a, int64_t b)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE MPInt mlir::presburger::operator% (const MPInt &a, int64_t b)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE MPInt mlir::presburger::operator+ (int64_t a, const MPInt &b)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE MPInt mlir::presburger::operator- (int64_t a, const MPInt &b)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE MPInt mlir::presburger::operator* (int64_t a, const MPInt &b)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE MPInt mlir::presburger::operator/ (int64_t a, const MPInt &b)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE MPInt mlir::presburger::operator% (int64_t a, const MPInt &b)
 
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. More...
 
LLVM_ATTRIBUTE_ALWAYS_INLINE bool mlir::presburger::operator!= (const MPInt &a, int64_t b)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE bool mlir::presburger::operator> (const MPInt &a, int64_t b)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE bool mlir::presburger::operator< (const MPInt &a, int64_t b)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE bool mlir::presburger::operator<= (const MPInt &a, int64_t b)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE bool mlir::presburger::operator>= (const MPInt &a, int64_t b)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE bool mlir::presburger::operator== (int64_t a, const MPInt &b)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE bool mlir::presburger::operator!= (int64_t a, const MPInt &b)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE bool mlir::presburger::operator> (int64_t a, const MPInt &b)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE bool mlir::presburger::operator< (int64_t a, const MPInt &b)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE bool mlir::presburger::operator<= (int64_t a, const MPInt &b)
 
LLVM_ATTRIBUTE_ALWAYS_INLINE bool mlir::presburger::operator>= (int64_t a, const MPInt &b)