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);