[llvm] Added ISD::FMAXIMUM/ISD::FMINIMUM + ISD::FMAXIMUMNUM/ISD::FMINIMUMNUM (PR #190465)

Kartik Ohlan via llvm-commits llvm-commits at lists.llvm.org
Sat Apr 4 09:36:31 PDT 2026


https://github.com/Ko496-glitch updated https://github.com/llvm/llvm-project/pull/190465

>From e21ace3e12b12a9a56ee8a24eb5ff33164c3fcd7 Mon Sep 17 00:00:00 2001
From: kartikohlan <kartik7ohlan at gmail.com>
Date: Sat, 4 Apr 2026 11:22:01 -0400
Subject: [PATCH] Added (early out and exit and enum style block

---
 .../lib/CodeGen/SelectionDAG/SelectionDAG.cpp | 40 +++++++++++++++++++
 1 file changed, 40 insertions(+)

diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
index 137922aa62557..6f4540a81f237 100644
--- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
+++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
@@ -6106,6 +6106,46 @@ KnownFPClass SelectionDAG::computeKnownFPClass(SDValue Op,
     Known.fabs();
     break;
   }
+  case ISD::FMAXNUM:
+  case ISD::FMINNUM:
+  case ISD::FMAXIMUM:
+  case ISD::FMINIMUM:
+  case ISD::FMAXIMUMNUM:
+  case ISD::FMINIMUMNUM: {
+    KnownFPClass KnownRHS = computeKnownFPClass(Op.getOperand(1), DemandedElts,
+                                                InterestedClasses, Depth + 1);
+    if (KnownRHS.isUnknown()) {
+      break;
+    }
+    KnownFPClass KnownLHS = computeKnownFPClass(Op.getOperand(0), DemandedElts,
+                                                InterestedClasses, Depth + 1);
+    KnownFPClass::MinMaxKind Kind;
+    switch (Opcode) {
+    case ISD::FMAXNUM:
+      Kind = KnownFPClass::MinMaxKind::maxnum;
+      break;
+    case ISD::FMINNUM:
+      Kind = KnownFPClass::MinMaxKind::minnum;
+      break;
+    case ISD::FMAXIMUM:
+      Kind = KnownFPClass::MinMaxKind::maximum;
+      break;
+    case ISD::FMINIMUM:
+      Kind = KnownFPClass::MinMaxKind::minimum;
+      break;
+    case ISD::FMAXIMUMNUM:
+      Kind = KnownFPClass::MinMaxKind::maximumnum;
+      break;
+    case ISD::FMINIMUMNUM:
+      Kind = KnownFPClass::MinMaxKind::minimumnum;
+      break;
+    default:
+      llvm_unreachable("Illegal FP min/max opcode");
+    }
+    DenormalMode Mode = getDenormalMode(VT);
+    Known = KnownFPClass::minMaxLike(KnownLHS, KnownRHS, Kind, Mode);
+    break;
+  }
   default:
     if (Opcode >= ISD::BUILTIN_OP_END || Opcode == ISD::INTRINSIC_WO_CHAIN ||
         Opcode == ISD::INTRINSIC_W_CHAIN || Opcode == ISD::INTRINSIC_VOID) {



More information about the llvm-commits mailing list