[SLP]Integrate looking through shuffles logic into ShuffleInstructionBuilder.
authorAlexey Bataev <a.bataev@outlook.com>
Tue, 13 Dec 2022 20:45:16 +0000 (12:45 -0800)
committerAlexey Bataev <a.bataev@outlook.com>
Wed, 21 Dec 2022 14:12:53 +0000 (06:12 -0800)
commit2e972ea0567a5d64b011cb3476e4d18f6195f82a
tree51dec19f50b0fac01ffd93222c81c9f32b036e6b
parent566e34829fb6825a8909d19e68a7ca6f62ffda96
[SLP]Integrate looking through shuffles logic into ShuffleInstructionBuilder.

Added BaseShuffleAnalysis as a base class for ShuffleInstructionBuilder
and integrated shuffle logic from shuffles for externally used scalars
into this class. This class is used as the main container that
implements smart shuffle instruction builder logic.
ShuffleInstructionBuilder uses this logic.
ShuffleInstructionBuilder is also used in building of the shuffle for
the externally used scalars instead of lambdas, which are now part of BaseShuffleAnalysis class.

Differential Revision: https://reviews.llvm.org/D140100
llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
llvm/test/Transforms/SLPVectorizer/AArch64/tsc-s116.ll
llvm/test/Transforms/SLPVectorizer/X86/buildvector-same-lane-insert.ll
llvm/test/Transforms/SLPVectorizer/X86/jumbled_store_crash.ll
llvm/test/Transforms/SLPVectorizer/X86/reduced-gathered-vectorized.ll
llvm/test/Transforms/SLPVectorizer/X86/reorder-reused-masked-gather.ll