Lines Matching refs:SignExtendedNumber
31 SignExtendedNumber SignExtendedNumber::fromInteger(uinteger_t value_) in fromInteger()
33 return SignExtendedNumber(value_, value_ >> 63); in fromInteger()
36 bool SignExtendedNumber::operator==(const SignExtendedNumber& a) const
41 bool SignExtendedNumber::operator<(const SignExtendedNumber& a) const
47 SignExtendedNumber SignExtendedNumber::extreme(bool minimum) in extreme()
49 return SignExtendedNumber(minimum-1, minimum); in extreme()
52 SignExtendedNumber SignExtendedNumber::max() in max()
54 return SignExtendedNumber(UINT64_MAX, false); in max()
57 SignExtendedNumber& SignExtendedNumber::operator++()
69 SignExtendedNumber SignExtendedNumber::operator~() const
72 return SignExtendedNumber(~value);
74 return SignExtendedNumber(~value, !negative);
77 SignExtendedNumber SignExtendedNumber::operator-() const
80 return SignExtendedNumber(-negative);
82 return SignExtendedNumber(-value, !negative);
85 SignExtendedNumber SignExtendedNumber::operator&(const SignExtendedNumber& rhs) const
87 return SignExtendedNumber(value & rhs.value);
90 SignExtendedNumber SignExtendedNumber::operator|(const SignExtendedNumber& rhs) const
92 return SignExtendedNumber(value | rhs.value);
95 SignExtendedNumber SignExtendedNumber::operator^(const SignExtendedNumber& rhs) const
97 return SignExtendedNumber(value ^ rhs.value);
100 SignExtendedNumber SignExtendedNumber::operator+(const SignExtendedNumber& rhs) const
105 return SignExtendedNumber(sum, !carry);
107 return SignExtendedNumber(carry ? sum : 0, true);
109 return SignExtendedNumber(carry ? UINT64_MAX : sum, false);
112 SignExtendedNumber SignExtendedNumber::operator-(const SignExtendedNumber& rhs) const
115 return negative ? SignExtendedNumber(value, false) : max();
120 SignExtendedNumber SignExtendedNumber::operator*(const SignExtendedNumber& rhs) const
143 SignExtendedNumber rv;
155 SignExtendedNumber SignExtendedNumber::operator/(const SignExtendedNumber& rhs) const
166 return SignExtendedNumber(value == 0 && negative);
197 return SignExtendedNumber(rvVal, rvVal != 0 && rvNeg);
200 SignExtendedNumber SignExtendedNumber::operator%(const SignExtendedNumber& rhs) const
203 return !rhs.negative ? rhs : isMinimum() ? SignExtendedNumber(0) : *this;
220 return SignExtendedNumber(rvVal, rvVal != 0 && negative);
223 SignExtendedNumber SignExtendedNumber::operator<<(const SignExtendedNumber& rhs) const
251 return SignExtendedNumber(value << rhs.value, negative);
254 SignExtendedNumber SignExtendedNumber::operator>>(const SignExtendedNumber& rhs) const
257 return negative ? SignExtendedNumber(-1, true) : SignExtendedNumber(0);
259 return rhs.value == 0 ? *this : SignExtendedNumber(-1ULL << (64 - rhs.value), true);
263 return SignExtendedNumber(x ^ -negative, negative);
271 return IntRange(SignExtendedNumber::min(), SignExtendedNumber::max()); in widest()
285 SignExtendedNumber lower(0), upper(mask); in fromType()
297 IntRange IntRange::fromNumbers2(const SignExtendedNumber numbers[2]) in fromNumbers2()
304 IntRange IntRange::fromNumbers4(const SignExtendedNumber numbers[4]) in fromNumbers4()
387 imin = SignExtendedNumber(~halfChunkMask, true); in castSigned()
388 imax = SignExtendedNumber(halfChunkMask, false); in castSigned()
435 SignExtendedNumber imaxAbsNeg = -imax; in absNeg()
437 SignExtendedNumber(0)); in absNeg()
463 negRange.imax = imax.negative ? imax : SignExtendedNumber(-1, true); in splitBySign()
468 nonNegRange.imin = imin.negative ? SignExtendedNumber(0) : imin; in splitBySign()
498 SignExtendedNumber max = l.imax.value > r.imax.value ? l.imax : r.imax;
516 SignExtendedNumber minAndNeg = minAnd(l, IntRange(r.imin, SignExtendedNumber(-1)));
517 SignExtendedNumber minAndPos = minAnd(l, IntRange(SignExtendedNumber(0), r.imax));
518 SignExtendedNumber maxAndNeg = maxAnd(l, IntRange(r.imin, SignExtendedNumber(-1)));
519 SignExtendedNumber maxAndPos = maxAnd(l, IntRange(SignExtendedNumber(0), r.imax));
521 SignExtendedNumber min = minAndNeg < minAndPos ? minAndNeg : minAndPos;
522 SignExtendedNumber max = maxAndNeg > maxAndPos ? maxAndNeg : maxAndPos;
543 SignExtendedNumber min = l.imin.value < r.imin.value ? l.imin : r.imin;
561 SignExtendedNumber minOrNeg = minOr(l, IntRange(r.imin, SignExtendedNumber(-1)));
562 SignExtendedNumber minOrPos = minOr(l, IntRange(SignExtendedNumber(0), r.imax));
563 SignExtendedNumber maxOrNeg = maxOr(l, IntRange(r.imin, SignExtendedNumber(-1)));
564 SignExtendedNumber maxOrPos = maxOr(l, IntRange(SignExtendedNumber(0), r.imax));
566 SignExtendedNumber min = minOrNeg < minOrPos ? minOrNeg : minOrPos;
567 SignExtendedNumber max = maxOrNeg > maxOrPos ? maxOrNeg : maxOrPos;
591 SignExtendedNumber bdy[4];
625 SignExtendedNumber bdy[4];
655 irDen.imin = irDen.imin + SignExtendedNumber(1);
685 r = IntRange(SignExtendedNumber(0), SignExtendedNumber(64));
688 SignExtendedNumber lower = imin << (imin.negative ? r.imax : r.imin);
689 SignExtendedNumber upper = imax << (imax.negative ? r.imin : r.imax);
699 r = IntRange(SignExtendedNumber(0), SignExtendedNumber(64));
702 SignExtendedNumber lower = imin >> (imin.negative ? r.imin : r.imax);
703 SignExtendedNumber upper = imax >> (imax.negative ? r.imax : r.imin);
708 SignExtendedNumber IntRange::maxOr(const IntRange& lhs, const IntRange& rhs) in maxOr()
739 return SignExtendedNumber(-1, false); in maxOr()
773 return SignExtendedNumber(x, sign); in maxOr()
776 SignExtendedNumber IntRange::minOr(const IntRange& lhs, const IntRange& rhs) in minOr()
781 SignExtendedNumber IntRange::maxAnd(const IntRange& lhs, const IntRange& rhs) in maxAnd()
817 return SignExtendedNumber(x, sign); in maxAnd()
820 SignExtendedNumber IntRange::minAnd(const IntRange& lhs, const IntRange& rhs) in minAnd()