This code handles splitting setccs where the type is 2x the size of
a legal integer type. For example, i64 on RV32.
For a setcc like (x u< -256U), we used to try to emit
(hi(x) == -1U) ? (lo(x) u< -256U) : (hi(x) u< -1U)
The (hi(x) u< -1U) part simplies to (hi(x) != -1U) since -1U is the largest
unsigned value.
This leaves
(hi(x) == -1U) ? (lo(x) u< -256U) : (hi(x) != -1U)
Notice that the false value is the inverse of the condition. We can
simplify this to ((lo(x) u< -256U) | (hi(x) != -1U)). Add this as a special
case.
I could do this in DAGCombine, but it would probably require more code and
I don't know if this pattern occurs anywhere else.
clang-format not found in user’s local PATH; not linting file.