diff options
Diffstat (limited to 'llvm/lib/Target')
-rw-r--r-- | llvm/lib/Target/X86/X86ISelLowering.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp index 952a937ddef..0e8766b75b5 100644 --- a/llvm/lib/Target/X86/X86ISelLowering.cpp +++ b/llvm/lib/Target/X86/X86ISelLowering.cpp @@ -7924,7 +7924,9 @@ LowerBUILD_VECTORAsVariablePermute(SDValue V, SelectionDAG &DAG, MVT IndicesVT = EVT(VT).changeVectorElementTypeToInteger().getSimpleVT(); IndicesVec = DAG.getZExtOrTrunc(IndicesVec, SDLoc(IndicesVec), IndicesVT); - if (SrcVec.getValueSizeInBits() < IndicesVT.getSizeInBits()) { + if (SrcVec.getValueSizeInBits() > IndicesVT.getSizeInBits()) + return SDValue(); + else if (SrcVec.getValueSizeInBits() < IndicesVT.getSizeInBits()) { SrcVec = DAG.getNode(ISD::INSERT_SUBVECTOR, SDLoc(SrcVec), VT, DAG.getUNDEF(VT), SrcVec, DAG.getIntPtrConstant(0, SDLoc(SrcVec))); |