Lines Matching defs: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());
252 ConstantRange ConstantRange::difference(const ConstantRange &CR) const {
253 return intersectWith(CR.inverse());
261 ConstantRange ConstantRange::intersectWith(const ConstantRange &CR) const {
262 assert(getBitWidth() == CR.getBitWidth() &&
266 if ( isEmptySet() || CR.isFullSet()) return *this;
267 if (CR.isEmptySet() || isFullSet()) return CR;
269 if (!isWrappedSet() && CR.isWrappedSet())
270 return CR.intersectWith(*this);
272 if (!isWrappedSet() && !CR.isWrappedSet()) {
273 if (Lower.ult(CR.Lower)) {
274 if (Upper.ule(CR.Lower))
277 if (Upper.ult(CR.Upper))
278 return ConstantRange(CR.Lower, Upper);
280 return CR;
282 if (Upper.ult(CR.Upper))
285 if (Lower.ult(CR.Upper))
286 return ConstantRange(Lower, CR.Upper);
291 if (isWrappedSet() && !CR.isWrappedSet()) {
292 if (CR.Lower.ult(Upper)) {
293 if (CR.Upper.ult(Upper))
294 return CR;
296 if (CR.Upper.ule(Lower))
297 return ConstantRange(CR.Lower, Upper);
299 if (getSetSize().ult(CR.getSetSize()))
301 return CR;
303 if (CR.Lower.ult(Lower)) {
304 if (CR.Upper.ule(Lower))
307 return ConstantRange(Lower, CR.Upper);
309 return CR;
312 if (CR.Upper.ult(Upper)) {
313 if (CR.Lower.ult(Upper)) {
314 if (getSetSize().ult(CR.getSetSize()))
316 return CR;
319 if (CR.Lower.ult(Lower))
320 return ConstantRange(Lower, CR.Upper);
322 return CR;
324 if (CR.Upper.ule(Lower)) {
325 if (CR.Lower.ult(Lower))
328 return ConstantRange(CR.Lower, Upper);
330 if (getSetSize().ult(CR.getSetSize()))
332 return CR;
342 ConstantRange ConstantRange::unionWith(const ConstantRange &CR) const {
343 assert(getBitWidth() == CR.getBitWidth() &&
346 if ( isFullSet() || CR.isEmptySet()) return *this;
347 if (CR.isFullSet() || isEmptySet()) return CR;
349 if (!isWrappedSet() && CR.isWrappedSet()) return CR.unionWith(*this);
351 if (!isWrappedSet() && !CR.isWrappedSet()) {
352 if (CR.Upper.ult(Lower) || Upper.ult(CR.Lower)) {
354 APInt d1 = CR.Lower - Upper, d2 = Lower - CR.Upper;
356 return ConstantRange(Lower, CR.Upper);
357 return ConstantRange(CR.Lower, Upper);
361 if (CR.Lower.ult(L))
362 L = CR.Lower;
363 if ((CR.Upper - 1).ugt(U - 1))
364 U = CR.Upper;
372 if (!CR.isWrappedSet()) {
374 // L--U L--U : CR
375 if (CR.Upper.ule(Upper) || CR.Lower.uge(Lower))
379 // L---------U : CR
380 if (CR.Lower.ule(Upper) && Lower.ule(CR.Upper))
384 // L---U : CR
386 if (Upper.ule(CR.Lower) && CR.Upper.ule(Lower)) {
387 APInt d1 = CR.Lower - Upper, d2 = Lower - CR.Upper;
389 return ConstantRange(Lower, CR.Upper);
390 return ConstantRange(CR.Lower, Upper);
394 // L----U : CR
395 if (Upper.ult(CR.Lower) && Lower.ult(CR.Upper))
396 return ConstantRange(CR.Lower, Upper);
399 // L-----U : CR
400 assert(CR.Lower.ult(Upper) && CR.Upper.ult(Lower) &&
402 return ConstantRange(Lower, CR.Upper);
406 // -U L----------- and ------------U L : CR
407 if (CR.Lower.ule(Upper) || Lower.ule(CR.Upper))
411 if (CR.Upper.ugt(U))
412 U = CR.Upper;
413 if (CR.Lower.ult(L))
414 L = CR.Lower;