Special case handling two wide build_vector(0, x).

llvm-svn: 27961
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index 1a11c32..a03c92a 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -3236,10 +3236,6 @@
     MVT::ValueType EVT = MVT::getVectorBaseType(VT);
     unsigned EVTBits = MVT::getSizeInBits(EVT);
 
-    // Let legalizer expand 2-widde build_vector's.
-    if (EVTBits == 64)
-      return SDOperand();
-
     unsigned NumElems = Op.getNumOperands();
     unsigned NumZero  = 0;
     unsigned NumNonZero = 0;
@@ -3291,6 +3287,10 @@
       }
     }
 
+    // Let legalizer expand 2-widde build_vector's.
+    if (EVTBits == 64)
+      return SDOperand();
+
     // If element VT is < 32 bits, convert it to inserts into a zero vector.
     if (EVTBits == 8) {
       SDOperand V = LowerBuildVectorv16i8(Op, NonZeros,NumNonZero,NumZero, DAG);