[SLP] Fix for PR6246: vectorization for scalar ops on vector elements.
authorAlexey Bataev <a.bataev@hotmail.com>
Thu, 8 Dec 2016 11:57:51 +0000 (11:57 +0000)
committerAlexey Bataev <a.bataev@hotmail.com>
Thu, 8 Dec 2016 11:57:51 +0000 (11:57 +0000)
commit4f0d469d45a0a5c02467eddc471a22127db82f11
tree4dac16c00becb14d93bb864bbc98684a78e6a9c3
parent77f039bf58bf8d77c9defe374df86f12404779dc
[SLP] Fix for PR6246: vectorization for scalar ops on vector elements.

When trying to vectorize trees that start at insertelement instructions
function tryToVectorizeList() uses vectorization factor calculated as
MinVecRegSize/ScalarTypeSize. But sometimes it does not work as tree
cost for this fixed vectorization factor is too high.
Patch tries to improve the situation. It tries different vectorization
factors from max(PowerOf2Floor(NumberOfVectorizedValues),
MinVecRegSize/ScalarTypeSize) to MinVecRegSize/ScalarTypeSize and tries
to choose the best one.

Differential Revision: https://reviews.llvm.org/D27215

llvm-svn: 289043
llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
llvm/test/Transforms/SLPVectorizer/X86/arith-fp.ll
llvm/test/Transforms/SLPVectorizer/X86/insert-element-build-vector.ll