From 53cac9012fdd4a9e3b990a3284d4b931b737ae57 Mon Sep 17 00:00:00 2001 From: Simon Pilgrim Date: Fri, 11 Apr 2025 11:33:33 +0100 Subject: [PATCH] [X86] lowerShuffleAsBitMask - generalize FP handling. Don't explicitly handle f32/f64 cases - allow any fp value type and convert to equivalent int type with MVT::changeTypeToInteger --- llvm/lib/Target/X86/X86ISelLowering.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp index 4e94d2cef6bd8..cfc883944ca59 100644 --- a/llvm/lib/Target/X86/X86ISelLowering.cpp +++ b/llvm/lib/Target/X86/X86ISelLowering.cpp @@ -10871,12 +10871,11 @@ static SDValue lowerShuffleAsBitMask(const SDLoc &DL, MVT VT, SDValue V1, } MVT LogicVT = VT; - if (EltVT == MVT::f32 || EltVT == MVT::f64) { + if (EltVT.isFloatingPoint()) { Zero = DAG.getConstantFP(0.0, DL, EltVT); APFloat AllOnesValue = APFloat::getAllOnesValue(EltVT.getFltSemantics()); AllOnes = DAG.getConstantFP(AllOnesValue, DL, EltVT); - LogicVT = - MVT::getVectorVT(EltVT == MVT::f64 ? MVT::i64 : MVT::i32, Mask.size()); + LogicVT = MVT::getVectorVT(EltVT.changeTypeToInteger(), Mask.size()); } else { Zero = DAG.getConstant(0, DL, EltVT); AllOnes = DAG.getAllOnesConstant(DL, EltVT);