[PATCH] D53473: [SLPVectorizer] Add basic support for mul/and/or/xor horizontal reductions

Simon Pilgrim via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Sat Oct 20 08:53:30 PDT 2018


RKSimon created this revision.
RKSimon added reviewers: ABataev, dtemirbulatov, spatel.
Herald added a subscriber: zzheng.

Expand arithmetic reduction to include mul/and/or/xor instructions.

This patch just fixes the SLPVectorizer - the effective reduction costs for AVX1+ are still poor (see https://reviews.llvm.org/rL344846) and will need to be improved before SLP sees this as a valid transform - but we can already see the effect on SSE2 tests.

This only partially helps PR37731, but doesn't fix it all as it still falls over on the extraction/reduction order for some reason.


Repository:
  rL LLVM

https://reviews.llvm.org/D53473

Files:
  lib/Transforms/Vectorize/SLPVectorizer.cpp
  test/Transforms/SLPVectorizer/X86/reduction_unrolled.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D53473.170312.patch
Type: text/x-patch
Size: 11343 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20181020/d9084ba7/attachment.bin>


More information about the llvm-commits mailing list