Lines Matching defs:RangeInfo
91 class RangeInfo {
93 RangeInfo() {}
94 RangeInfo(int32_t value) : min_(value), max_(value) {}
95 RangeInfo(int32_t min, int32_t max)
116 static RangeInfo NONE()
118 return RangeInfo(INT32_MAX, INT32_MIN);
121 static RangeInfo ANY()
123 return RangeInfo(INT32_MIN, INT32_MAX);
136 RangeInfo operator~() const
138 return RangeInfo(~ max_, ~ min_);
141 RangeInfo Union(const RangeInfo &rhs) const
143 return RangeInfo(std::min(min_, rhs.min_), std::max(max_, rhs.max_));
146 RangeInfo intersection(const RangeInfo &rhs) const
148 return RangeInfo(std::max(min_, rhs.min_), std::min(max_, rhs.max_));
151 bool MaybeAddOverflow(const RangeInfo &rhs) const
156 bool MaybeAddUnderflow(const RangeInfo &rhs) const
161 bool MaybeAddOverflowOrUnderflow(const RangeInfo &rhs) const
166 RangeInfo operator+ (const RangeInfo &rhs) const
171 return RangeInfo(nmin, nmax);
174 RangeInfo operator% (const RangeInfo &rhs) const
177 RangeInfo result = RangeInfo(0, 0);
182 if (max_ > 0) result = result.Union(RangeInfo(0, nmax - 1));
183 if (min_ < 0) result = result.Union(RangeInfo(-nmax + 1, 0));
197 RangeInfo operator* (const RangeInfo &rhs) const
202 return RangeInfo(nmin, nmax);
205 int32_t GetMaxMulResult(const RangeInfo &rhs) const
211 int32_t GetMinMulResult(const RangeInfo &rhs) const
228 bool MaybeMulOverflowOrUnderflow(const RangeInfo &rhs) const
233 bool MaybeMulUnderflow(const RangeInfo &rhs) const
238 bool MaybeMulOverflow(const RangeInfo &rhs) const
253 bool MaybeSubOverflow(const RangeInfo &rhs) const
258 bool MaybeSubUnderflow(const RangeInfo &rhs) const
263 bool MaybeSubOverflowOrUnderflow(const RangeInfo &rhs) const
268 RangeInfo operator- (const RangeInfo &rhs) const
273 return RangeInfo(nmin, nmax);
276 bool MaybeShrOverflow(const RangeInfo &rhs) const
284 RangeInfo SHR(const RangeInfo &rhs) const
290 return RangeInfo(0, std::max(0, GetMax()));
297 return RangeInfo(nmin, nmax);
300 RangeInfo ASHR(const RangeInfo &rhs) const
307 return RangeInfo(nmin, nmax);
310 bool operator== (const RangeInfo &rhs) const
315 bool operator!= (const RangeInfo &rhs) const