https://alive2.llvm.org/ce/z/tDmLfs
This is another small extension of the signed->unsigned logic. This can enable subsequent FP folds because it eliminates negative FP values. Example:
https://alive2.llvm.org/ce/z/tnwfVk
Codegen can invert the transform if it can see that the input signbit is clear.
There was a comment on a test saying not to try this, but I don't see a reason to avoid it. I adjusted one of the existing tests to show that we are not miscompiling when the range includes a negative value.