[SLP] Compute min/max scalar reduction costs using min/max intrinsics instead of...
authorSimon Pilgrim <llvm-dev@redking.me.uk>
Thu, 13 Apr 2023 15:59:35 +0000 (16:59 +0100)
committerSimon Pilgrim <llvm-dev@redking.me.uk>
Thu, 13 Apr 2023 16:00:39 +0000 (17:00 +0100)
commitb3480d5ede83720abf58dcadf4e79015e5a7e60a
treed4e4d19ce8fcaa5d05af55cf87c2103b33003f87
parent2d39f5b5cdcb87fe968001586ab7949939099cfe
[SLP] Compute min/max scalar reduction costs using min/max intrinsics instead of expanded cmp+sel

By default these will expand back to cmp/sel, but some targets (X86) has optimized costs for scalar integer min/max patterns which are lower than the default expansion (pre-SSE41 is particularly weak for vector min/max support).

Differential Revision: [SLP] Compute min/max scalar reduction costs using min/max intrinsics instead of expanded cmp+sel
llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
llvm/test/Transforms/SLPVectorizer/X86/horizontal-minmax.ll
llvm/test/Transforms/SLPVectorizer/X86/reorder_repeated_ops.ll
llvm/test/Transforms/SLPVectorizer/X86/vectorize-reorder-reuse.ll