Recognize `fcmp pred (C - [su]itofp X), C` in InstCombine and fold it to `fcmp swap(pred) [su]itofp X, 0` for certain constant `C` (to make sure `C - Y` nevers rounds back to `C`), then the new pattern further can be folded by `foldFCmpIntToFPConst` to integer compares. Fixes #185561 alive2: https://alive2.llvm.org/ce/z/9dWsCb alive2 with constant constraints (needs local alive2 build): https://alive2.llvm.org/ce/z/wDs9Tj I tried generalizing the pattern to any `fcmp pred, (C - Y), C` but alive2 says no: https://alive2.llvm.org/ce/z/qMLGah. So I will try to find more constraints on C and Y to make this rewrite hold in future PRs.