[SLP]Do not reduce repeated values, use scalar red ops instead.
authorAlexey Bataev <a.bataev@outlook.com>
Fri, 17 Jun 2022 17:15:23 +0000 (10:15 -0700)
committerAlexey Bataev <a.bataev@outlook.com>
Fri, 17 Feb 2023 15:19:35 +0000 (07:19 -0800)
commite03d254bbd548d56fba43f805acb5fa31694d602
tree98e5125887b4b816629797e2751579fb52c2c7a3
parentbf0f94a5cf82e62e86c454d96ab8bd29adcb71af
[SLP]Do not reduce repeated values, use scalar red ops instead.

Metric: size..text

                                                     size..text                 results     results0    diff
SingleSource/Regression/C/gcc-c-torture/execute/GCC-C-execute-980605-1.test      445.00      461.00  3.6%
SingleSource/Benchmarks/Adobe-C++/loop_unroll.test                               428477.00   428445.00 -0.0%
External/SPEC/CFP2006/447.dealII/447.dealII.test                                 618849.00   618785.00 -0.0%

For all tests some extra code was optimized, GCC-C-execute has some more
inlining after

Differential Revision: https://reviews.llvm.org/D132261
19 files changed:
llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
llvm/test/Transforms/PhaseOrdering/X86/scalarization-inseltpoison.ll
llvm/test/Transforms/PhaseOrdering/X86/scalarization.ll
llvm/test/Transforms/SLPVectorizer/AArch64/buildvector-reduce.ll
llvm/test/Transforms/SLPVectorizer/X86/PR39774.ll
llvm/test/Transforms/SLPVectorizer/X86/buildvector_splat_extractvalue.ll
llvm/test/Transforms/SLPVectorizer/X86/crash_reordering_undefs.ll
llvm/test/Transforms/SLPVectorizer/X86/extract-scalar-from-undef.ll
llvm/test/Transforms/SLPVectorizer/X86/float-min-max.ll
llvm/test/Transforms/SLPVectorizer/X86/gather-extractelements-different-bbs.ll
llvm/test/Transforms/SLPVectorizer/X86/horizontal-list.ll
llvm/test/Transforms/SLPVectorizer/X86/malformed_phis.ll
llvm/test/Transforms/SLPVectorizer/X86/reduced-gathered-vectorized.ll
llvm/test/Transforms/SLPVectorizer/X86/reduction-value-in-tree.ll
llvm/test/Transforms/SLPVectorizer/X86/reorder_repeated_ops.ll
llvm/test/Transforms/SLPVectorizer/X86/revectorized_rdx_crash.ll
llvm/test/Transforms/SLPVectorizer/X86/scalarization-overhead.ll
llvm/test/Transforms/SLPVectorizer/X86/slp-schedule-use-order.ll
llvm/test/Transforms/SLPVectorizer/X86/undef_vect.ll