This patch is a continuation of D154206. It introduces a fold for the
operation "uadd_sat(X, C) pred C2" where "C" and "C2" are constants. The
fold is:
uadd_sat(X, C) pred C2 => (X >= ~C) || ((X + C) pred C2) -> when (UINT_MAX pred C2) is true => (X < ~C) && ((X + C) pred C2) -> when (UINT_MAX pred C2) is false
These expressions can generally be folded into a simpler expression. As
they can sometimes emit more than one instruction, they are limited to
cases where the "uadd_sat" has only one user.
Directly accept SaturingInst (moving the cast to the caller)?