[SLP]Try partial store vectorization if supported by target.
authorAlexey Bataev <a.bataev@outlook.com>
Fri, 22 Apr 2022 18:14:41 +0000 (11:14 -0700)
committerAlexey Bataev <a.bataev@outlook.com>
Mon, 9 May 2022 16:48:15 +0000 (09:48 -0700)
commit9dc4ced204d1e918d4c8d3279e52197e9a5abc94
tree9d8d8c44cd1269a8fe7b4b05bf2572647a3881c0
parentcd99227c7876278fdd5244b741f1f897bd94a49c
[SLP]Try partial store vectorization if supported by target.

We can try to vectorize number of stores less than MinVecRegSize
/ scalar_value_size, if it is allowed by target. Gives an extra
opportunity for the vectorization.

Fixes PR54985.

Differential Revision: https://reviews.llvm.org/D124284
32 files changed:
llvm/include/llvm/Analysis/TargetTransformInfo.h
llvm/include/llvm/Analysis/TargetTransformInfoImpl.h
llvm/include/llvm/CodeGen/BasicTTIImpl.h
llvm/include/llvm/Transforms/Vectorize/SLPVectorizer.h
llvm/lib/Analysis/TargetTransformInfo.cpp
llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
llvm/test/Transforms/SLPVectorizer/X86/arith-add-load.ll
llvm/test/Transforms/SLPVectorizer/X86/arith-and-const-load.ll
llvm/test/Transforms/SLPVectorizer/X86/arith-mul-load.ll
llvm/test/Transforms/SLPVectorizer/X86/crash_7zip.ll
llvm/test/Transforms/SLPVectorizer/X86/crash_bullet.ll
llvm/test/Transforms/SLPVectorizer/X86/crash_bullet3.ll
llvm/test/Transforms/SLPVectorizer/X86/crash_sim4b1.ll
llvm/test/Transforms/SLPVectorizer/X86/fptosi-inseltpoison.ll
llvm/test/Transforms/SLPVectorizer/X86/fptosi.ll
llvm/test/Transforms/SLPVectorizer/X86/fptoui.ll
llvm/test/Transforms/SLPVectorizer/X86/hadd-inseltpoison.ll
llvm/test/Transforms/SLPVectorizer/X86/hadd.ll
llvm/test/Transforms/SLPVectorizer/X86/insert-after-bundle.ll
llvm/test/Transforms/SLPVectorizer/X86/memory-runtime-checks.ll
llvm/test/Transforms/SLPVectorizer/X86/no_alternate_divrem.ll
llvm/test/Transforms/SLPVectorizer/X86/odd_store.ll
llvm/test/Transforms/SLPVectorizer/X86/pr49933.ll
llvm/test/Transforms/SLPVectorizer/X86/remark_not_all_parts.ll
llvm/test/Transforms/SLPVectorizer/X86/reorder_phi.ll
llvm/test/Transforms/SLPVectorizer/X86/saxpy.ll
llvm/test/Transforms/SLPVectorizer/X86/schedule-bundle.ll
llvm/test/Transforms/SLPVectorizer/X86/simple-loop.ll
llvm/test/Transforms/SLPVectorizer/X86/sitofp-inseltpoison.ll
llvm/test/Transforms/SLPVectorizer/X86/sitofp.ll
llvm/test/Transforms/SLPVectorizer/X86/uitofp.ll
llvm/test/Transforms/SLPVectorizer/X86/vect_copyable_in_binops.ll