Lines Matching refs:CR

78                                                    const ConstantRange &CR) {
79 if (CR.isEmptySet())
80 return CR;
82 uint32_t W = CR.getBitWidth();
87 return CR;
89 if (CR.isSingleElement())
90 return ConstantRange(CR.getUpper(), CR.getLower());
93 APInt UMax(CR.getUnsignedMax());
99 APInt SMax(CR.getSignedMax());
105 return getNonEmpty(APInt::getMinValue(W), CR.getUnsignedMax() + 1);
107 return getNonEmpty(APInt::getSignedMinValue(W), CR.getSignedMax() + 1);
109 APInt UMin(CR.getUnsignedMin());
115 APInt SMin(CR.getSignedMin());
121 return getNonEmpty(CR.getUnsignedMin(), APInt::getNullValue(W));
123 return getNonEmpty(CR.getSignedMin(), APInt::getSignedMinValue(W));
128 const ConstantRange &CR) {
133 return makeAllowedICmpRegion(CmpInst::getInversePredicate(Pred), CR)
423 ConstantRange ConstantRange::difference(const ConstantRange &CR) const {
424 return intersectWith(CR.inverse());
447 ConstantRange ConstantRange::intersectWith(const ConstantRange &CR,
449 assert(getBitWidth() == CR.getBitWidth() &&
453 if ( isEmptySet() || CR.isFullSet()) return *this;
454 if (CR.isEmptySet() || isFullSet()) return CR;
456 if (!isUpperWrapped() && CR.isUpperWrapped())
457 return CR.intersectWith(*this, Type);
459 if (!isUpperWrapped() && !CR.isUpperWrapped()) {
460 if (Lower.ult(CR.Lower)) {
462 // L---U : CR
463 if (Upper.ule(CR.Lower))
467 // L---U : CR
468 if (Upper.ult(CR.Upper))
469 return ConstantRange(CR.Lower, Upper);
472 // L---U : CR
473 return CR;
476 // L-------U : CR
477 if (Upper.ult(CR.Upper))
481 // L-----U : CR
482 if (Lower.ult(CR.Upper))
483 return ConstantRange(Lower, CR.Upper);
486 // L---U : CR
490 if (isUpperWrapped() && !CR.isUpperWrapped()) {
491 if (CR.Lower.ult(Upper)) {
493 // L--U : CR
494 if (CR.Upper.ult(Upper))
495 return CR;
498 // L------U : CR
499 if (CR.Upper.ule(Lower))
500 return ConstantRange(CR.Lower, Upper);
503 // L----------U : CR
504 return getPreferredRange(*this, CR, Type);
506 if (CR.Lower.ult(Lower)) {
508 // L--U : CR
509 if (CR.Upper.ule(Lower))
513 // L------U : CR
514 return ConstantRange(Lower, CR.Upper);
518 // L--U : CR
519 return CR;
522 if (CR.Upper.ult(Upper)) {
524 // --U L------ : CR
525 if (CR.Lower.ult(Upper))
526 return getPreferredRange(*this, CR, Type);
529 // --U L---- : CR
530 if (CR.Lower.ult(Lower))
531 return ConstantRange(Lower, CR.Upper);
534 // --U L-- : CR
535 return CR;
537 if (CR.Upper.ule(Lower)) {
539 // ----U L---- : CR
540 if (CR.Lower.ult(Lower))
544 // ----U L-- : CR
545 return ConstantRange(CR.Lower, Upper);
549 // ------U L-- : CR
550 return getPreferredRange(*this, CR, Type);
553 ConstantRange ConstantRange::unionWith(const ConstantRange &CR,
555 assert(getBitWidth() == CR.getBitWidth() &&
558 if ( isFullSet() || CR.isEmptySet()) return *this;
559 if (CR.isFullSet() || isEmptySet()) return CR;
561 if (!isUpperWrapped() && CR.isUpperWrapped())
562 return CR.unionWith(*this, Type);
564 if (!isUpperWrapped() && !CR.isUpperWrapped()) {
566 // L---U L---U : CR
570 if (CR.Upper.ult(Lower) || Upper.ult(CR.Lower))
572 ConstantRange(Lower, CR.Upper), ConstantRange(CR.Lower, Upper), Type);
574 APInt L = CR.Lower.ult(Lower) ? CR.Lower : Lower;
575 APInt U = (CR.Upper - 1).ugt(Upper - 1) ? CR.Upper : Upper;
583 if (!CR.isUpperWrapped()) {
585 // L--U L--U : CR
586 if (CR.Upper.ule(Upper) || CR.Lower.uge(Lower))
590 // L---------U : CR
591 if (CR.Lower.ule(Upper) && Lower.ule(CR.Upper))
595 // L---U : CR
599 if (Upper.ult(CR.Lower) && CR.Upper.ult(Lower))
601 ConstantRange(Lower, CR.Upper), ConstantRange(CR.Lower, Upper), Type);
604 // L----U : CR
605 if (Upper.ult(CR.Lower) && Lower.ule(CR.Upper))
606 return ConstantRange(CR.Lower, Upper);
609 // L-----U : CR
610 assert(CR.Lower.ule(Upper) && CR.Upper.ult(Lower) &&
612 return ConstantRange(Lower, CR.Upper);
616 // -U L----------- and ------------U L : CR
617 if (CR.Lower.ule(Upper) || Lower.ule(CR.Upper))
620 APInt L = CR.Lower.ult(Lower) ? CR.Lower : Lower;
621 APInt U = CR.Upper.ugt(Upper) ? CR.Upper : Upper;
1565 ConstantRange CR(FirstLow->getValue(), FirstHigh->getValue());
1573 CR = CR.unionWith(ConstantRange(Low->getValue(), High->getValue()));
1576 return CR;