summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target
diff options
context:
space:
mode:
authorSimon Pilgrim <llvm-dev@redking.me.uk>2018-01-23 15:13:37 +0000
committerSimon Pilgrim <llvm-dev@redking.me.uk>2018-01-23 15:13:37 +0000
commite2905c8a0cf78552c9f97f50315822f1110b366c (patch)
treed1c1b8a59c629af615a50a5a8f199adeb79b48f2 /llvm/lib/Target
parentf9b560aa8e665359f797c476e074d15d1368dac8 (diff)
downloadbcm5719-llvm-e2905c8a0cf78552c9f97f50315822f1110b366c.tar.gz
bcm5719-llvm-e2905c8a0cf78552c9f97f50315822f1110b366c.zip
[X86][SSE] LowerBUILD_VECTORAsVariablePermute - ensure that the index vector has the correct number of elements
llvm-svn: 323206
Diffstat (limited to 'llvm/lib/Target')
-rw-r--r--llvm/lib/Target/X86/X86ISelLowering.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index 91be6184396..da928b76847 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -7912,6 +7912,10 @@ LowerBUILD_VECTORAsVariablePermute(SDValue V, SelectionDAG &DAG,
else if (IndicesVec != ExtractedIndex.getOperand(0))
return SDValue();
+ // The index vector must be the same size as the destination.
+ if (IndicesVec.getValueType().getVectorNumElements() != E)
+ return SDValue();
+
auto *PermIdx = dyn_cast<ConstantSDNode>(ExtractedIndex.getOperand(1));
if (!PermIdx || PermIdx->getZExtValue() != Idx)
return SDValue();
OpenPOWER on IntegriCloud