Home | History | Annotate | Download | only in Analysis

Lines Matching refs:UMax

190     case scUMaxExpr: OpStr = " umax "; break;
2487 assert(!Ops.empty() && "Cannot get empty umax!");
2507 APIntOps::umax(LHSC->getValue()->getValue(),
2520 // If we have an umax with a constant maximum-int, it will always be
2528 // Find the first UMax
2532 // Check to see if one of the operands is a UMax. If so, expand its operands
2536 while (const SCEVUMaxExpr *UMax = dyn_cast<SCEVUMaxExpr>(Ops[Idx])) {
2538 Ops.append(UMax->op_begin(), UMax->op_end());
2550 // X umax Y umax Y --> X umax Y
2551 // X umax Y --> X, if X is always greater than Y
2563 assert(!Ops.empty() && "Reduced umax down to nothing!");
2565 // Okay, it looks like we really DO need a umax expr. Check to see if we
2589 // ~umax(~x, ~y) == umin(x, y)
2913 /// the types using zero-extension, and then perform a umax operation
3355 if (const SCEVUMaxExpr *UMax = dyn_cast<SCEVUMaxExpr>(S)) {
3356 ConstantRange X = getUnsignedRange(UMax->getOperand(0));
3357 for (unsigned i = 1, e = UMax->getNumOperands(); i != e; ++i)
3358 X = X.umax(getUnsignedRange(UMax->getOperand(i)));
3359 return setUnsignedRange(UMax, ConservativeResult.intersectWith(X));
3427 APInt Max = APIntOps::umax(StartRange.getUnsignedMax(),
3496 if (const SCEVUMaxExpr *UMax = dyn_cast<SCEVUMaxExpr>(S)) {
3497 ConstantRange X = getSignedRange(UMax->getOperand(0));
3498 for (unsigned i = 1, e = UMax->getNumOperands(); i != e; ++i)
3499 X = X.umax(getSignedRange(UMax->getOperand(i)));
3500 return setSignedRange(UMax, ConservativeResult.intersectWith(X));
3871 // This could be a smax or umax that was lowered earlier.
3906 // a >u b ? a+x : b+x -> umax(a, b)+x
3924 // n != 0 ? n+x : 1+x -> umax(n, 1)+x
3939 // n == 0 ? 1+x : n+x -> umax(n, 1)+x
5093 default: // TODO: smax, umax.