[SLP]Alternate vectorization for cmp instructions.
authorAlexey Bataev <a.bataev@outlook.com>
Thu, 16 Dec 2021 16:55:52 +0000 (08:55 -0800)
committerAlexey Bataev <a.bataev@outlook.com>
Mon, 31 Jan 2022 19:11:25 +0000 (11:11 -0800)
commitafaaecc88c6e5989de8a6a0266610860ef99d9d6
tree1b994dbf784dcd85279b2a090c6907338c82d792
parent9f3f9d19c7edc99a1450ee15d7cde67a67eb445d
[SLP]Alternate vectorization for cmp instructions.

Added support for alternate ops vectorization of the cmp instructions.
It allows to vectorize either cmp instructions with same/swapped
predicate but different (swapped) operands kinds or cmp instructions
with different predicates and compatible operands kinds.

Differential Revision: https://reviews.llvm.org/D115955
llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
llvm/test/Transforms/PhaseOrdering/X86/vector-reductions-logical.ll
llvm/test/Transforms/SLPVectorizer/X86/cmp_commute-inseltpoison.ll
llvm/test/Transforms/SLPVectorizer/X86/cmp_commute.ll
llvm/test/Transforms/SLPVectorizer/X86/horizontal-minmax.ll
llvm/test/Transforms/SLPVectorizer/X86/reduction-logical.ll