[InstCombine] Canonicalize fcmp with inf (#80986)
This patch canonicalizes floating-point comparisons with inf: ``` fcmp olt X, +inf -> fcmp one X, +inf fcmp ole X, +inf -> fcmp ord X, 0 fcmp ogt X, +inf -> false fcmp oge X, +inf -> fcmp oeq X, +inf fcmp ult X, +inf -> fcmp une X, +inf fcmp ule X, +inf -> true fcmp ugt X, +inf -> fcmp uno X, 0 fcmp uge X, +inf -> fcmp ueq X, +inf fcmp olt X, -inf -> false fcmp ole X, -inf -> fcmp oeq X, -inf fcmp ogt X, -inf -> fcmp one X, -inf fcmp oge X, -inf -> fcmp ord X, 0 fcmp ult X, -inf -> fcmp uno X, 0 fcmp ule X, -inf -> fcmp ueq X, -inf fcmp ugt X, -inf -> fcmp une X, -inf fcmp uge X, -inf -> true ``` Alive2: https://alive2.llvm.org/ce/z/FRqqDg The motivation of this patch is to fix the regression found in https://github.com/dtcxzyw/llvm-opt-benchmark/pull/199#discussion_r1480974120.
parent
d4a2c7f9
Please register or sign in to comment