[llvm] SelectionDAG: Support FMINIMUMNUM and FMINIMUM in combineMinNumMaxNumImpl (PR #137449)

Dan Gohman via llvm-commits llvm-commits at lists.llvm.org
Tue Apr 29 12:30:41 PDT 2025


================
@@ -229,13 +229,10 @@ define float @fminnum32_intrinsic(float %x, float %y) {
 ; CHECK-LABEL: fminnum32_intrinsic:
 ; CHECK:         .functype fminnum32_intrinsic (f32, f32) -> (f32)
 ; CHECK-NEXT:  # %bb.0:
-; CHECK-NEXT:    local.get $push5=, 0
-; CHECK-NEXT:    local.get $push4=, 1
-; CHECK-NEXT:    local.get $push3=, 0
-; CHECK-NEXT:    local.get $push2=, 1
-; CHECK-NEXT:    f32.lt $push0=, $pop3, $pop2
-; CHECK-NEXT:    f32.select $push1=, $pop5, $pop4, $pop0
-; CHECK-NEXT:    return $pop1
+; CHECK-NEXT:    local.get $push2=, 0
+; CHECK-NEXT:    local.get $push1=, 1
+; CHECK-NEXT:    f32.min $push0=, $pop2, $pop1
----------------
sunfishcode wrote:

I agree, the existing code looks incorrect.

The new code here also looks incorrect; Wasm's `f32.min` corresponds to IEEE 754-2019's `minimum`, meaning it prefers the NaN, which is not correct for implementing `llvm.minnum`.

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


More information about the llvm-commits mailing list