[SLP] Apply external to vectorizable tree users cost adjustment for
authorValery N Dmitriev <valery.n.dmitriev@intel.com>
Fri, 29 May 2020 01:24:03 +0000 (18:24 -0700)
committerValery N Dmitriev <valery.n.dmitriev@intel.com>
Fri, 29 May 2020 22:37:41 +0000 (15:37 -0700)
commita45688a72c63b6359df7c23f2a2895f271d414e9
tree4dff7bbd0e42bb8ac068764239857f92a1f89aee
parent91beb5176b4d5a7cc09c419b9d75cb19f67d0bf9
[SLP] Apply external to vectorizable tree users cost adjustment for
relevant aggregate build instructions only (UserCost).
Users are detected with findBuildAggregate routine and the trick is
that following SLP vectorization may end up vectorizing entire list
with smaller chunks. Cost adjustment then is applied for individual
chunks and these adjustments obviously have to be smaller than the
entire aggregate build cost.

Differential Revision: https://reviews.llvm.org/D80773
llvm/include/llvm/Transforms/Vectorize/SLPVectorizer.h
llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
llvm/test/Transforms/SLPVectorizer/AArch64/transpose.ll
llvm/test/Transforms/SLPVectorizer/X86/alternate-fp.ll
llvm/test/Transforms/SLPVectorizer/X86/alternate-int.ll
llvm/test/Transforms/SLPVectorizer/X86/hadd.ll
llvm/test/Transforms/SLPVectorizer/X86/hsub.ll
llvm/test/Transforms/SLPVectorizer/X86/load-merge.ll
llvm/test/Transforms/SLPVectorizer/X86/vec_list_bias.ll