[llvm] [ValueTracking] Fix incorrect FMF propagation from select to fcmp (PR #195787)
Nathiyaa Sengodan via llvm-commits
llvm-commits at lists.llvm.org
Mon Jun 1 02:44:03 PDT 2026
================
@@ -595,3 +595,18 @@ define float @test_select_fcmp_uitofp_min(i8 %x) {
%sel = select i1 %cmp, float 2.550000e+02, float %f
ret float %sel
}
+
+define float @test_clamp_select_nnan_fcmp_no_nnan(float %x) {
+; CHECK-LABEL: @test_clamp_select_nnan_fcmp_no_nnan(
+; CHECK-NEXT: [[CMP2DOTINV:%.*]] = fcmp nnan ninf oge float [[X:%.*]], 2.550000e+02
+; CHECK-NEXT: [[MIN:%.*]] = select nnan ninf i1 [[CMP2DOTINV]], float 2.550000e+02, float [[X]]
+; CHECK-NEXT: [[CMP1:%.*]] = fcmp ule float [[X]], 1.000000e+00
+; CHECK-NEXT: [[R:%.*]] = select nnan ninf i1 [[CMP1]], float 1.000000e+00, float [[MIN]]
+; CHECK-NEXT: ret float [[R]]
+;
+ %cmp2 = fcmp nnan ninf ult float %x, 2.550000e+02
+ %min = select i1 %cmp2, float %x, float 2.550000e+02
+ %cmp1 = fcmp ule float %x, 1.000000e+00
+ %r = select nnan ninf i1 %cmp1, float 1.000000e+00, float %min
+ ret float %r
+}
----------------
Nathiyaa-Sengodan wrote:
Alive2 proof - https://alive2.llvm.org/ce/z/jgALi4
Added the same in the PR description as well.
https://github.com/llvm/llvm-project/pull/195787
More information about the llvm-commits
mailing list