diff options
author | Simon Pilgrim <llvm-dev@redking.me.uk> | 2018-01-23 15:13:37 +0000 |
---|---|---|
committer | Simon Pilgrim <llvm-dev@redking.me.uk> | 2018-01-23 15:13:37 +0000 |
commit | e2905c8a0cf78552c9f97f50315822f1110b366c (patch) | |
tree | d1c1b8a59c629af615a50a5a8f199adeb79b48f2 /llvm/lib/Target | |
parent | f9b560aa8e665359f797c476e074d15d1368dac8 (diff) | |
download | bcm5719-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.cpp | 4 |
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(); |