[PATCH] D48174: [SLPVectorizer] Relax "alternate" opcode vectorisation to work with any SK_Select shuffle pattern

Simon Pilgrim via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Jun 14 09:01:10 PDT 2018


RKSimon created this revision.
RKSimon added reviewers: ABataev, dtemirbulatov, spatel, javed.absar, fhahn.
Herald added a subscriber: kristof.beyls.

https://reviews.llvm.org/D47985 saw the old SK_Alternate 'alternating' shuffle mask replaced with the SK_Select mask which accepts either input operand for each lane, equivalent to a vector select with a constant condition operand.

This patch updates SLPVectorizer to make full use of this SK_Select shuffle pattern by removing the 'isOdd()' limitation.

The AArch64 regression will be avoided by the patches https://reviews.llvm.org/D48023 and https://reviews.llvm.org/D48172 which I hope to commit first, this patch then manages to fully vectorise the code.


Repository:
  rL LLVM

https://reviews.llvm.org/D48174

Files:
  lib/Transforms/Vectorize/SLPVectorizer.cpp
  test/Transforms/SLPVectorizer/AArch64/transpose.ll
  test/Transforms/SLPVectorizer/X86/addsub.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D48174.151361.patch
Type: text/x-patch
Size: 9403 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180614/8e04c3e5/attachment.bin>


More information about the llvm-commits mailing list