CVP currently only tries to simplify comparisons if there is a constant operand. However, even if both are non-constant, we may be able to determine the result of the comparison based on range information.
IPSCCP is already capable of doing this, but because it runs very early, it may miss some cases.
This has some compile-time cost, but not particularly large: http://llvm-compile-time-tracker.com/compare.php?from=5fe9273c73969791795e5302933abadc9f33f09a&to=4c49e6b0e7d1834dd9e1f29144e915c7279740fb&stat=instructions:u
Does something in the callers preclude vector icmp from reaching here? If not, should this use CmpInst::makeCmpResultType()? If yes, then can we assert that LHS/RHS are scalars?