[llvm] b21be0e - [X86] scalarizeExtEltFP - don't assume setcc result pre-legalisation will be vXi1

Simon Pilgrim via llvm-commits llvm-commits at lists.llvm.org
Tue Jun 10 06:58:36 PDT 2025


Author: Simon Pilgrim
Date: 2025-06-10T14:58:20+01:00
New Revision: b21be0e440f18605b5ffbe9d0c44a55a50b91b4e

URL: https://github.com/llvm/llvm-project/commit/b21be0e440f18605b5ffbe9d0c44a55a50b91b4e
DIFF: https://github.com/llvm/llvm-project/commit/b21be0e440f18605b5ffbe9d0c44a55a50b91b4e.diff

LOG: [X86] scalarizeExtEltFP - don't assume setcc result pre-legalisation will be vXi1

Another fold may have generated the setcc using getSetCCResultType

Encountered this while investigating topological sorting of dag nodes

Added: 
    

Modified: 
    llvm/lib/Target/X86/X86ISelLowering.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index 09a8276f59708..82427e826ee31 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -46802,9 +46802,8 @@ static SDValue scalarizeExtEltFP(SDNode *ExtElt, SelectionDAG &DAG,
   // need to convert vector bool to a scalar bool.
   if (DCI.isBeforeLegalize() && Vec.getOpcode() == ISD::VSELECT &&
       Vec.getOperand(0).getOpcode() == ISD::SETCC &&
-      Vec.getOperand(0).getOperand(0).getValueType() == VecVT) {
-    assert(Vec.getOperand(0).getValueType().getScalarType() == MVT::i1 &&
-           "Unexpected cond type for combine");
+      Vec.getOperand(0).getOperand(0).getValueType() == VecVT &&
+      Vec.getOperand(0).getValueType().getScalarType() == MVT::i1) {
     // ext (sel Cond, X, Y), 0 --> sel (ext Cond, 0), (ext X, 0), (ext Y, 0)
     SDLoc DL(ExtElt);
     SDValue Ext0 = DAG.getNode(ISD::EXTRACT_VECTOR_ELT, DL,


        


More information about the llvm-commits mailing list