Lines Matching full:umax
180 case scUMaxExpr: OpStr = " umax "; break;
2468 assert(!Ops.empty() && "Cannot get empty umax!");
2488 APIntOps::umax(LHSC->getValue()->getValue(),
2501 // If we have an umax with a constant maximum-int, it will always be
2509 // Find the first UMax
2513 // Check to see if one of the operands is a UMax. If so, expand its operands
2517 while (const SCEVUMaxExpr *UMax = dyn_cast<SCEVUMaxExpr>(Ops[Idx])) {
2519 Ops.append(UMax->op_begin(), UMax->op_end());
2531 // X umax Y umax Y --> X umax Y
2532 // X umax Y --> X, if X is always greater than Y
2544 assert(!Ops.empty() && "Reduced umax down to nothing!");
2546 // Okay, it looks like we really DO need a umax expr. Check to see if we
2570 // ~umax(~x, ~y) == umin(x, y)
2856 /// the types using zero-extension, and then perform a umax operation
3299 if (const SCEVUMaxExpr *UMax = dyn_cast<SCEVUMaxExpr>(S)) {
3300 ConstantRange X = getUnsignedRange(UMax->getOperand(0));
3301 for (unsigned i = 1, e = UMax->getNumOperands(); i != e; ++i)
3302 X = X.umax(getUnsignedRange(UMax->getOperand(i)));
3303 return setUnsignedRange(UMax, ConservativeResult.intersectWith(X));
3371 APInt Max = APIntOps::umax(StartRange.getUnsignedMax(),
3441 if (const SCEVUMaxExpr *UMax = dyn_cast<SCEVUMaxExpr>(S)) {
3442 ConstantRange X = getSignedRange(UMax->getOperand(0));
3443 for (unsigned i = 1, e = UMax->getNumOperands(); i != e; ++i)
3444 X = X.umax(getSignedRange(UMax->getOperand(i)));
3445 return setSignedRange(UMax, ConservativeResult.intersectWith(X));
3817 // This could be a smax or umax that was lowered earlier.
3852 // a >u b ? a+x : b+x -> umax(a, b)+x
3870 // n != 0 ? n+x : 1+x -> umax(n, 1)+x
3885 // n == 0 ? 1+x : n+x -> umax(n, 1)+x