A SCEVCompareExpr node represents the boolean result of performing a comparison as specified by it's predicate and operands. This is essentially an extension of the IR instruction icmp into SCEV.
We've talked about this off and on for a while, but I think it's time to actually do this.
I want to highlight that adding the node does not mean we have to extend IR pattern matching. At the moment, I'm planning on using this to simplify and generalize PredicatedScalarEvolution and the loop versioning checks used by various transforms. The decision as to whether we want these in generic SCEV expressions can (and should be) explicitly deferred here.
clang-format: please reformat the code