[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