Home | History | Annotate | Download | only in Support

Lines Matching refs:CR

52                                             const ConstantRange &CR) {
53 if (CR.isEmptySet())
54 return CR;
56 uint32_t W = CR.getBitWidth();
60 return CR;
62 if (CR.isSingleElement())
63 return ConstantRange(CR.getUpper(), CR.getLower());
66 APInt UMax(CR.getUnsignedMax());
72 APInt SMax(CR.getSignedMax());
78 APInt UMax(CR.getUnsignedMax());
84 APInt SMax(CR.getSignedMax());
90 APInt UMin(CR.getUnsignedMin());
96 APInt SMin(CR.getSignedMin());
102 APInt UMin(CR.getUnsignedMin());
108 APInt SMin(CR.getSignedMin());
254 ConstantRange ConstantRange::difference(const ConstantRange &CR) const {
255 return intersectWith(CR.inverse());
263 ConstantRange ConstantRange::intersectWith(const ConstantRange &CR) const {
264 assert(getBitWidth() == CR.getBitWidth() &&
268 if ( isEmptySet() || CR.isFullSet()) return *this;
269 if (CR.isEmptySet() || isFullSet()) return CR;
271 if (!isWrappedSet() && CR.isWrappedSet())
272 return CR.intersectWith(*this);
274 if (!isWrappedSet() && !CR.isWrappedSet()) {
275 if (Lower.ult(CR.Lower)) {
276 if (Upper.ule(CR.Lower))
279 if (Upper.ult(CR.Upper))
280 return ConstantRange(CR.Lower, Upper);
282 return CR;
284 if (Upper.ult(CR.Upper))
287 if (Lower.ult(CR.Upper))
288 return ConstantRange(Lower, CR.Upper);
293 if (isWrappedSet() && !CR.isWrappedSet()) {
294 if (CR.Lower.ult(Upper)) {
295 if (CR.Upper.ult(Upper))
296 return CR;
298 if (CR.Upper.ule(Lower))
299 return ConstantRange(CR.Lower, Upper);
301 if (getSetSize().ult(CR.getSetSize()))
303 return CR;
305 if (CR.Lower.ult(Lower)) {
306 if (CR.Upper.ule(Lower))
309 return ConstantRange(Lower, CR.Upper);
311 return CR;
314 if (CR.Upper.ult(Upper)) {
315 if (CR.Lower.ult(Upper)) {
316 if (getSetSize().ult(CR.getSetSize()))
318 return CR;
321 if (CR.Lower.ult(Lower))
322 return ConstantRange(Lower, CR.Upper);
324 return CR;
326 if (CR.Upper.ule(Lower)) {
327 if (CR.Lower.ult(Lower))
330 return ConstantRange(CR.Lower, Upper);
332 if (getSetSize().ult(CR.getSetSize()))
334 return CR;
344 ConstantRange ConstantRange::unionWith(const ConstantRange &CR) const {
345 assert(getBitWidth() == CR.getBitWidth() &&
348 if ( isFullSet() || CR.isEmptySet()) return *this;
349 if (CR.isFullSet() || isEmptySet()) return CR;
351 if (!isWrappedSet() && CR.isWrappedSet()) return CR.unionWith(*this);
353 if (!isWrappedSet() && !CR.isWrappedSet()) {
354 if (CR.Upper.ult(Lower) || Upper.ult(CR.Lower)) {
356 APInt d1 = CR.Lower - Upper, d2 = Lower - CR.Upper;
358 return ConstantRange(Lower, CR.Upper);
359 return ConstantRange(CR.Lower, Upper);
363 if (CR.Lower.ult(L))
364 L = CR.Lower;
365 if ((CR.Upper - 1).ugt(U - 1))
366 U = CR.Upper;
374 if (!CR.isWrappedSet()) {
376 // L--U L--U : CR
377 if (CR.Upper.ule(Upper) || CR.Lower.uge(Lower))
381 // L---------U : CR
382 if (CR.Lower.ule(Upper) && Lower.ule(CR.Upper))
386 // L---U : CR
388 if (Upper.ule(CR.Lower) && CR.Upper.ule(Lower)) {
389 APInt d1 = CR.Lower - Upper, d2 = Lower - CR.Upper;
391 return ConstantRange(Lower, CR.Upper);
392 return ConstantRange(CR.Lower, Upper);
396 // L----U : CR
397 if (Upper.ult(CR.Lower) && Lower.ult(CR.Upper))
398 return ConstantRange(CR.Lower, Upper);
401 // L-----U : CR
402 assert(CR.Lower.ult(Upper) && CR.Upper.ult(Lower) &&
404 return ConstantRange(Lower, CR.Upper);
408 // -U L----------- and ------------U L : CR
409 if (CR.Lower.ule(Upper) || Lower.ule(CR.Upper))
413 if (CR.Upper.ugt(U))
414 U = CR.Upper;
415 if (CR.Lower.ult(L))
416 L = CR.Lower;