[llvm] e08fd82 - [X86] LowerINTRINSIC_W_CHAIN - ensure the X86ISD::CMPCCXADD X86CondCode is a i8 target constant (#185856)
via llvm-commits
llvm-commits at lists.llvm.org
Wed Mar 11 04:56:41 PDT 2026
Author: Simon Pilgrim
Date: 2026-03-11T11:56:36Z
New Revision: e08fd82a01391601cd2783fbd250b019ce51a2b1
URL: https://github.com/llvm/llvm-project/commit/e08fd82a01391601cd2783fbd250b019ce51a2b1
DIFF: https://github.com/llvm/llvm-project/commit/e08fd82a01391601cd2783fbd250b019ce51a2b1.diff
LOG: [X86] LowerINTRINSIC_W_CHAIN - ensure the X86ISD::CMPCCXADD X86CondCode is a i8 target constant (#185856)
Fixes verification failure in X86SelectionDAGInfo::verifyTargetNode (#185649)
Added:
Modified:
llvm/lib/Target/X86/X86ISelLowering.cpp
llvm/lib/Target/X86/X86SelectionDAGInfo.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index 1734710977650..10f25fa6c835d 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -28477,11 +28477,12 @@ static SDValue LowerINTRINSIC_W_CHAIN(SDValue Op, const X86Subtarget &Subtarget,
SDValue Addr = Op.getOperand(2);
SDValue Src1 = Op.getOperand(3);
SDValue Src2 = Op.getOperand(4);
- SDValue CC = Op.getOperand(5);
+ X86::CondCode X86CondCode = (X86::CondCode)Op.getConstantOperandVal(5);
+ SDValue CC = DAG.getTargetConstant(X86CondCode, DL, MVT::i8);
MachineMemOperand *MMO = cast<MemIntrinsicSDNode>(Op)->getMemOperand();
- SDValue Operation = DAG.getMemIntrinsicNode(
- X86ISD::CMPCCXADD, DL, Op->getVTList(), {Chain, Addr, Src1, Src2, CC},
- MVT::i32, MMO);
+ SDValue Operation =
+ DAG.getMemIntrinsicNode(X86ISD::CMPCCXADD, DL, Op->getVTList(),
+ {Chain, Addr, Src1, Src2, CC}, MVT::i32, MMO);
return Operation;
}
case Intrinsic::x86_aadd32:
diff --git a/llvm/lib/Target/X86/X86SelectionDAGInfo.cpp b/llvm/lib/Target/X86/X86SelectionDAGInfo.cpp
index 77f8a3f266e10..dff8832e851d9 100644
--- a/llvm/lib/Target/X86/X86SelectionDAGInfo.cpp
+++ b/llvm/lib/Target/X86/X86SelectionDAGInfo.cpp
@@ -86,8 +86,6 @@ void X86SelectionDAGInfo::verifyTargetNode(const SelectionDAG &DAG,
case X86ISD::INSERTQI:
case X86ISD::EXTRQI:
// result #0 must have type v2i64, but has type v16i8/v8i16
- case X86ISD::CMPCCXADD:
- // operand #4 must have type i8, but has type i32
return;
}
More information about the llvm-commits
mailing list