Basically porting over the behaviour in AArch64ISelLowering to GISel. See emitComparison for reference.
When we have something like this:
lhs = G_SUB 0, y ... G_ICMP lhs, rhs
We can fold away the G_SUB and produce a cmn instead, given that we produce the same value in NZCV.
Add a test showing that the transformation works, and also showing that we don't perform the transformation when it's unsafe.