CSINC increments the result by one when the condition is false. The existing code seems to assume it increases the result by one if the condition is true.
The simple fix is to inverse the predicate during ICMP instruction selection.
This dramatically increases the execution pass rate in the test-suite run with -mllvm -global-isel=true -mllvm -global-isel-abort=1 from 13.7% to 47.2%!
Not too surprising giving we were always lowering ICMP incorrectly so far...