[llvm] [ValueTracking] Don't take sign bit from NaN operands (PR #157250)

Yingwei Zheng via llvm-commits llvm-commits at lists.llvm.org
Sat Sep 6 05:18:27 PDT 2025


================
@@ -3922,6 +3922,21 @@ define i1 @test_class_is_not_psub_pnorm_pinf__dynamic(float %arg) #3 {
   ret i1 %class
 }
 
+; Make sure we don't take sign bit from NaN operands.
+
+define i1 @minnum_qnan(i32 %x) {
+; CHECK-LABEL: @minnum_qnan(
+; CHECK-NEXT:  entry:
+; CHECK-NEXT:    ret i1 true
+;
+entry:
+  %qnan_bits = or i32 %x, -5938
+  %qnan = bitcast i32 %qnan_bits to float
+  %min = call float @llvm.minnum.f32(float %qnan, float 0.000000e+00)
+  %test = call i1 @llvm.is.fpclass.f32(float %min, i32 64)
+  ret i1 %test
+}
+
----------------
dtcxzyw wrote:

Done.

https://github.com/llvm/llvm-project/pull/157250


More information about the llvm-commits mailing list