AVX2: Add an additional broadcast idiom.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156540 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Target/X86/X86ISelLowering.cpp b/lib/Target/X86/X86ISelLowering.cpp
index 4a312f4..a7e72e05 100644
--- a/lib/Target/X86/X86ISelLowering.cpp
+++ b/lib/Target/X86/X86ISelLowering.cpp
@@ -4980,8 +4980,11 @@
         return SDValue();
 
       SDValue Sc = Op.getOperand(0);
-      if (Sc.getOpcode() != ISD::SCALAR_TO_VECTOR)
-        return SDValue();
+      if (Sc.getOpcode() == ISD::SCALAR_TO_VECTOR)
+        Ld = Sc.getOperand(0);
+      else if (Sc.getOpcode() == ISD::BUILD_VECTOR)
+        Ld = Sc.getOperand(0);
+      else return SDValue();
 
       Ld = Sc.getOperand(0);
       ConstSplatVal = (Ld.getOpcode() == ISD::Constant ||