diff --git a/lib/Target/X86/X86ISelLowering.cpp b/lib/Target/X86/X86ISelLowering.cpp index a3871339a49..bfe52247b7a 100644 --- a/lib/Target/X86/X86ISelLowering.cpp +++ b/lib/Target/X86/X86ISelLowering.cpp @@ -7238,6 +7238,7 @@ static SDValue lowerVectorShuffleAsBlend(SDLoc DL, MVT VT, SDValue V1, case MVT::v2f64: case MVT::v4f32: case MVT::v4f64: + case MVT::v8f32: return DAG.getNode(X86ISD::BLENDI, DL, VT, V1, V2, DAG.getConstant(BlendMask, MVT::i8)); @@ -9319,6 +9320,10 @@ static SDValue lowerV8F32VectorShuffle(SDValue Op, SDValue V1, SDValue V2, isSingleInputShuffleMask(Mask)) return splitAndLower256BitVectorShuffle(Op, V1, V2, Subtarget, DAG); + if (SDValue Blend = + lowerVectorShuffleAsBlend(DL, MVT::v8f32, V1, V2, Mask, DAG)) + return Blend; + // Shuffle the input elements into the desired positions in V1 and V2 and // blend them together. int V1Mask[] = {-1, -1, -1, -1, -1, -1, -1, -1};