[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