We can fold condition modifier in def when def and use in cmp use same
type. When they use different types with same bit-width but different
signedness, folding requires more checks. Consider following pseudo
code:
mov A:d B:f
cmp.ge P A:ud 0x0
We cannot fold above cmp in to mov because A's dst is :d whereas the cmp
interprets it as :ud. However, we could still fold it in if cmp condition
was .z or .nz as these yield same result irrespective of signedness.
(cherry picked from commit 84aeb2a2d074e24adbf2bfb9483b776039fda774)