[SLP]Introduce shuffle of the nodes + gather/vectorbuild of the remaining scalars.
authorAlexey Bataev <a.bataev@outlook.com>
Wed, 15 Mar 2023 19:33:00 +0000 (12:33 -0700)
committerAlexey Bataev <a.bataev@outlook.com>
Fri, 17 Mar 2023 18:18:36 +0000 (11:18 -0700)
commit0ad87ffdcc2379f1156651d1953a162379e2de8c
tree21ceb65b7c362e5a0cfbf79753c20c462e01878b
parentac62e7b6cb450c1d36807f49b51f5e748764b49d
[SLP]Introduce shuffle of the nodes + gather/vectorbuild  of the remaining scalars.

Currently compiler does not support mixing of shuffled nodes
+ gather/buildvector of the remaining scalar values. It may reduce total
  number of instructions and improve performance of the
  gather/buildvector sequences.

Part of D110978

Differential Revision: https://reviews.llvm.org/D146167
20 files changed:
llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
llvm/test/Transforms/SLPVectorizer/X86/c-ray.ll
llvm/test/Transforms/SLPVectorizer/X86/commutativity.ll
llvm/test/Transforms/SLPVectorizer/X86/crash_clear_undefs.ll
llvm/test/Transforms/SLPVectorizer/X86/crash_netbsd_decompress.ll
llvm/test/Transforms/SLPVectorizer/X86/crash_smallpt.ll
llvm/test/Transforms/SLPVectorizer/X86/cse.ll
llvm/test/Transforms/SLPVectorizer/X86/jumbled-load-multiuse.ll
llvm/test/Transforms/SLPVectorizer/X86/lookahead.ll
llvm/test/Transforms/SLPVectorizer/X86/matched-shuffled-entries.ll
llvm/test/Transforms/SLPVectorizer/X86/memory-runtime-checks.ll
llvm/test/Transforms/SLPVectorizer/X86/operandorder.ll
llvm/test/Transforms/SLPVectorizer/X86/phi.ll
llvm/test/Transforms/SLPVectorizer/X86/pr35497.ll
llvm/test/Transforms/SLPVectorizer/X86/reduction-logical.ll
llvm/test/Transforms/SLPVectorizer/X86/reduction2.ll
llvm/test/Transforms/SLPVectorizer/X86/reorder-clustered-node.ll
llvm/test/Transforms/SLPVectorizer/X86/reorder-reused-masked-gather.ll
llvm/test/Transforms/SLPVectorizer/X86/root-trunc-extract-reuse.ll
llvm/test/Transforms/SLPVectorizer/X86/scatter-vectorize-reorder.ll