Home | History | Annotate | Download | only in Support

Lines Matching refs:CR

53                                             const ConstantRange &CR) {
54 if (CR.isEmptySet())
55 return CR;
57 uint32_t W = CR.getBitWidth();
61 return CR;
63 if (CR.isSingleElement())
64 return ConstantRange(CR.getUpper(), CR.getLower());
67 APInt UMax(CR.getUnsignedMax());
73 APInt SMax(CR.getSignedMax());
79 APInt UMax(CR.getUnsignedMax());
85 APInt SMax(CR.getSignedMax());
91 APInt UMin(CR.getUnsignedMin());
97 APInt SMin(CR.getSignedMin());
103 APInt UMin(CR.getUnsignedMin());
109 APInt SMin(CR.getSignedMin());
255 ConstantRange ConstantRange::difference(const ConstantRange &CR) const {
256 return intersectWith(CR.inverse());
264 ConstantRange ConstantRange::intersectWith(const ConstantRange &CR) const {
265 assert(getBitWidth() == CR.getBitWidth() &&
269 if ( isEmptySet() || CR.isFullSet()) return *this;
270 if (CR.isEmptySet() || isFullSet()) return CR;
272 if (!isWrappedSet() && CR.isWrappedSet())
273 return CR.intersectWith(*this);
275 if (!isWrappedSet() && !CR.isWrappedSet()) {
276 if (Lower.ult(CR.Lower)) {
277 if (Upper.ule(CR.Lower))
280 if (Upper.ult(CR.Upper))
281 return ConstantRange(CR.Lower, Upper);
283 return CR;
285 if (Upper.ult(CR.Upper))
288 if (Lower.ult(CR.Upper))
289 return ConstantRange(Lower, CR.Upper);
294 if (isWrappedSet() && !CR.isWrappedSet()) {
295 if (CR.Lower.ult(Upper)) {
296 if (CR.Upper.ult(Upper))
297 return CR;
299 if (CR.Upper.ule(Lower))
300 return ConstantRange(CR.Lower, Upper);
302 if (getSetSize().ult(CR.getSetSize()))
304 return CR;
306 if (CR.Lower.ult(Lower)) {
307 if (CR.Upper.ule(Lower))
310 return ConstantRange(Lower, CR.Upper);
312 return CR;
315 if (CR.Upper.ult(Upper)) {
316 if (CR.Lower.ult(Upper)) {
317 if (getSetSize().ult(CR.getSetSize()))
319 return CR;
322 if (CR.Lower.ult(Lower))
323 return ConstantRange(Lower, CR.Upper);
325 return CR;
327 if (CR.Upper.ule(Lower)) {
328 if (CR.Lower.ult(Lower))
331 return ConstantRange(CR.Lower, Upper);
333 if (getSetSize().ult(CR.getSetSize()))
335 return CR;
345 ConstantRange ConstantRange::unionWith(const ConstantRange &CR) const {
346 assert(getBitWidth() == CR.getBitWidth() &&
349 if ( isFullSet() || CR.isEmptySet()) return *this;
350 if (CR.isFullSet() || isEmptySet()) return CR;
352 if (!isWrappedSet() && CR.isWrappedSet()) return CR.unionWith(*this);
354 if (!isWrappedSet() && !CR.isWrappedSet()) {
355 if (CR.Upper.ult(Lower) || Upper.ult(CR.Lower)) {
357 APInt d1 = CR.Lower - Upper, d2 = Lower - CR.Upper;
359 return ConstantRange(Lower, CR.Upper);
360 return ConstantRange(CR.Lower, Upper);
364 if (CR.Lower.ult(L))
365 L = CR.Lower;
366 if ((CR.Upper - 1).ugt(U - 1))
367 U = CR.Upper;
375 if (!CR.isWrappedSet()) {
377 // L--U L--U : CR
378 if (CR.Upper.ule(Upper) || CR.Lower.uge(Lower))
382 // L---------U : CR
383 if (CR.Lower.ule(Upper) && Lower.ule(CR.Upper))
387 // L---U : CR
389 if (Upper.ule(CR.Lower) && CR.Upper.ule(Lower)) {
390 APInt d1 = CR.Lower - Upper, d2 = Lower - CR.Upper;
392 return ConstantRange(Lower, CR.Upper);
393 return ConstantRange(CR.Lower, Upper);
397 // L----U : CR
398 if (Upper.ult(CR.Lower) && Lower.ult(CR.Upper))
399 return ConstantRange(CR.Lower, Upper);
402 // L-----U : CR
403 assert(CR.Lower.ult(Upper) && CR.Upper.ult(Lower) &&
405 return ConstantRange(Lower, CR.Upper);
409 // -U L----------- and ------------U L : CR
410 if (CR.Lower.ule(Upper) || Lower.ule(CR.Upper))
414 if (CR.Upper.ugt(U))
415 U = CR.Upper;
416 if (CR.Lower.ult(L))
417 L = CR.Lower;