[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