|
LLVM_ATTRIBUTE_ALWAYS_INLINE bool | 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 | subOverflow (int64_t x, int64_t y, int64_t &result) |
|
LLVM_ATTRIBUTE_ALWAYS_INLINE bool | mulOverflow (int64_t x, int64_t y, int64_t &result) |
|
LLVM_ATTRIBUTE_ALWAYS_INLINE bool | divWouldOverflow (int64_t x, int64_t y) |
|
llvm::raw_ostream & | operator<< (llvm::raw_ostream &os, const SlowMPInt &x) |
|
SlowMPInt | mod (const SlowMPInt &lhs, const SlowMPInt &rhs) |
| Returns the remainder of dividing LHS by RHS. More...
|
|
SlowMPInt | lcm (const SlowMPInt &a, const SlowMPInt &b) |
| Returns the least common multiple of 'a' and 'b'. More...
|
|
SlowMPInt | abs (const SlowMPInt &x) |
| Redeclarations of friend declarations above to make it discoverable by lookups. More...
|
|
SlowMPInt | ceilDiv (const SlowMPInt &lhs, const SlowMPInt &rhs) |
|
SlowMPInt | floorDiv (const SlowMPInt &lhs, const SlowMPInt &rhs) |
|
SlowMPInt | gcd (const SlowMPInt &a, const SlowMPInt &b) |
|
llvm::hash_code | hash_value (const SlowMPInt &x) |
|
SlowMPInt & | operator+= (SlowMPInt &a, int64_t b) |
|
SlowMPInt & | operator-= (SlowMPInt &a, int64_t b) |
|
SlowMPInt & | operator*= (SlowMPInt &a, int64_t b) |
|
SlowMPInt & | operator/= (SlowMPInt &a, int64_t b) |
|
SlowMPInt & | operator%= (SlowMPInt &a, int64_t b) |
|
bool | operator== (const SlowMPInt &a, int64_t b) |
|
bool | operator!= (const SlowMPInt &a, int64_t b) |
|
bool | operator> (const SlowMPInt &a, int64_t b) |
|
bool | operator< (const SlowMPInt &a, int64_t b) |
|
bool | operator<= (const SlowMPInt &a, int64_t b) |
|
bool | operator>= (const SlowMPInt &a, int64_t b) |
|
SlowMPInt | operator+ (const SlowMPInt &a, int64_t b) |
|
SlowMPInt | operator- (const SlowMPInt &a, int64_t b) |
|
SlowMPInt | operator* (const SlowMPInt &a, int64_t b) |
|
SlowMPInt | operator/ (const SlowMPInt &a, int64_t b) |
|
SlowMPInt | operator% (const SlowMPInt &a, int64_t b) |
|
bool | operator== (int64_t a, const SlowMPInt &b) |
|
bool | operator!= (int64_t a, const SlowMPInt &b) |
|
bool | operator> (int64_t a, const SlowMPInt &b) |
|
bool | operator< (int64_t a, const SlowMPInt &b) |
|
bool | operator<= (int64_t a, const SlowMPInt &b) |
|
bool | operator>= (int64_t a, const SlowMPInt &b) |
|
SlowMPInt | operator+ (int64_t a, const SlowMPInt &b) |
|
SlowMPInt | operator- (int64_t a, const SlowMPInt &b) |
|
SlowMPInt | operator* (int64_t a, const SlowMPInt &b) |
|
SlowMPInt | operator/ (int64_t a, const SlowMPInt &b) |
|
SlowMPInt | operator% (int64_t a, const SlowMPInt &b) |
|
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.
Otherwise, call through to LLVM's overflow-checked arithmetic functionality. Those functions also have such macro-gated uses of intrinsics but they are not always_inlined, which is important for us to achieve high-performance; calling the functions directly would result in a slowdown of 1.15x.
Definition at line 45 of file MPInt.h.
Referenced by mlir::presburger::MPInt::operator+(), and mlir::presburger::MPInt::operator+=().