[PATCH] D29826: [SLP] General improvements of SLP vectorization process.

Alexey Bataev via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Feb 10 07:25:51 PST 2017


ABataev created this revision.

Patch tries to improve two-pass vectorization analysis, existing in SLP vectorizer. What it does:

1. Defines key nodes, that are the vectorization roots. Previously vectorization started if StoreInst or ReturnInst is found. For now, the vectorization started for all Instructions with no users and void types (Terminators, StoreInst) + CallInsts.
2. CmpInsts, InsertElementInsts and InsertValueInsts are stored in the array. This array is processed only after the vectorization of the first-after-these instructions key node is finished. Vectorization goes in reverse order to try to vectorize as much code as possible.


https://reviews.llvm.org/D29826

Files:
  include/llvm/Transforms/Vectorize/SLPVectorizer.h
  lib/Transforms/Vectorize/SLPVectorizer.cpp
  test/Transforms/SLPVectorizer/AArch64/gather-root.ll
  test/Transforms/SLPVectorizer/X86/insert-element-build-vector.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D29826.87997.patch
Type: text/x-patch
Size: 22025 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170210/9b2a0918/attachment.bin>


More information about the llvm-commits mailing list