[llvm] [X86] Don't pass SAE operand to some nodes. (PR #228938)

Craig Topper via llvm-commits llvm-commits at lists.llvm.org
Sun Oct 4 23:35:30 PDT 2026


https://github.com/topperc updated https://github.com/llvm/llvm-project/pull/228938

>From 1c3096bd571618ebadcdbd91c46b1d37e654452a Mon Sep 17 00:00:00 2001
From: Craig Topper <craig.topper at sifive.com>
Date: Sun, 4 Oct 2026 13:54:28 -0700
Subject: [PATCH 1/2] [X86] Don't pass SAE operand to some nodes.

Fixes verification failure in X86SelectionDAGInfo::verifyTargetNode (#185649)
---
 llvm/lib/Target/X86/X86ISelLowering.cpp     | 6 +++---
 llvm/lib/Target/X86/X86SelectionDAGInfo.cpp | 4 ----
 2 files changed, 3 insertions(+), 7 deletions(-)

diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index c29b09ae846bbe9..f973df19ccca78b 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -27513,7 +27513,7 @@ SDValue X86TargetLowering::LowerINTRINSIC_WO_CHAIN(SDValue Op,
         SDValue Sae = Op.getOperand(5);
         if (isRoundModeSAE(Sae))
           return DAG.getNode(IntrData->Opc1, dl, MaskVT, Op.getOperand(1),
-                             Op.getOperand(2), CC, Mask, Sae);
+                             Op.getOperand(2), CC, Mask);
         if (!isRoundModeCurDirection(Sae))
           return SDValue();
       }
@@ -27532,7 +27532,7 @@ SDValue X86TargetLowering::LowerINTRINSIC_WO_CHAIN(SDValue Op,
       if (IntrData->Opc1 != 0) {
         SDValue Sae = Op.getOperand(5);
         if (isRoundModeSAE(Sae))
-          Cmp = DAG.getNode(IntrData->Opc1, dl, MVT::v1i1, Src1, Src2, CC, Sae);
+          Cmp = DAG.getNode(IntrData->Opc1, dl, MVT::v1i1, Src1, Src2, CC);
         else if (!isRoundModeCurDirection(Sae))
           return SDValue();
       }
@@ -27619,7 +27619,7 @@ SDValue X86TargetLowering::LowerINTRINSIC_WO_CHAIN(SDValue Op,
                            DAG.getTargetConstant(CondVal, dl, MVT::i8));
       else if (isRoundModeSAE(Sae))
         FCmp = DAG.getNode(X86ISD::FSETCCM_SAE, dl, MVT::v1i1, LHS, RHS,
-                           DAG.getTargetConstant(CondVal, dl, MVT::i8), Sae);
+                           DAG.getTargetConstant(CondVal, dl, MVT::i8));
       else
         return SDValue();
       // Need to fill with zeros to ensure the bitcast will produce zeroes
diff --git a/llvm/lib/Target/X86/X86SelectionDAGInfo.cpp b/llvm/lib/Target/X86/X86SelectionDAGInfo.cpp
index 8b9782be0ea41ae..6e60319015544ef 100644
--- a/llvm/lib/Target/X86/X86SelectionDAGInfo.cpp
+++ b/llvm/lib/Target/X86/X86SelectionDAGInfo.cpp
@@ -72,14 +72,10 @@ void X86SelectionDAGInfo::verifyTargetNode(const SelectionDAG &DAG,
     break;
   case X86ISD::VP2INTERSECT:
     // invalid number of results; expected 1, got 2
-  case X86ISD::FSETCCM_SAE:
-    // invalid number of operands; expected 3, got 4
   case X86ISD::CVTTP2SI_SAE:
   case X86ISD::CVTTP2UI_SAE:
   case X86ISD::CVTTP2IBS_SAE:
     // invalid number of operands; expected 1, got 2
-  case X86ISD::CMPMM_SAE:
-    // invalid number of operands; expected 4, got 5
   case X86ISD::CALL:
   case X86ISD::NT_BRIND:
     // operand #1 must have type i32 (iPTR), but has type i64

>From 49f2b77138f7e27010848721036e97b32dc164a8 Mon Sep 17 00:00:00 2001
From: Craig Topper <craig.topper at sifive.com>
Date: Sun, 4 Oct 2026 18:06:33 -0700
Subject: [PATCH 2/2] fixup! CVTTP2SI_SAE/CVTTP2UI_SAE also pass

---
 llvm/lib/Target/X86/X86SelectionDAGInfo.cpp | 2 --
 1 file changed, 2 deletions(-)

diff --git a/llvm/lib/Target/X86/X86SelectionDAGInfo.cpp b/llvm/lib/Target/X86/X86SelectionDAGInfo.cpp
index 6e60319015544ef..cf7daa581ebf24a 100644
--- a/llvm/lib/Target/X86/X86SelectionDAGInfo.cpp
+++ b/llvm/lib/Target/X86/X86SelectionDAGInfo.cpp
@@ -72,8 +72,6 @@ void X86SelectionDAGInfo::verifyTargetNode(const SelectionDAG &DAG,
     break;
   case X86ISD::VP2INTERSECT:
     // invalid number of results; expected 1, got 2
-  case X86ISD::CVTTP2SI_SAE:
-  case X86ISD::CVTTP2UI_SAE:
   case X86ISD::CVTTP2IBS_SAE:
     // invalid number of operands; expected 1, got 2
   case X86ISD::CALL:



More information about the llvm-commits mailing list