[PATCH] D53011: [LV] Add support for vectorizing predicated strided accesses using masked interleave-group
Dorit Nuzman via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Oct 9 00:41:07 PDT 2018
dorit created this revision.
dorit added reviewers: Ayal, hsaito, dcaballe, fhahn.
Herald added subscribers: jsji, rogfer01, rkruppe, kbarton, nemanjai.
Herald added a reviewer: javed.absar.
The vectorizer currently does not attempt to create interleave-groups that contain predicated loads/stores; predicated strided accesses can currently be vectorized only using masked gather/scatter or scalarization. This patch makes predicated loads/stores candidates for forming interleave-groups during the Loop-Vectorizer's analysis, and adds the proper support for masked-interleave-groups to the Loop-Vectorizer's planning and transformation stages. The patch also extends the TTI API to allow querying the cost of masked interleave groups (which each target can control); Targets that support masked vector loads/stores may choose to enable this feature and allow vectorizing predicated strided loads/stores using masked wide loads/stores and shuffles.
https://reviews.llvm.org/D53011
Files:
include/llvm/Analysis/TargetTransformInfo.h
include/llvm/Analysis/TargetTransformInfoImpl.h
include/llvm/Analysis/VectorUtils.h
include/llvm/CodeGen/BasicTTIImpl.h
lib/Analysis/TargetTransformInfo.cpp
lib/Analysis/VectorUtils.cpp
lib/Target/AArch64/AArch64TargetTransformInfo.cpp
lib/Target/AArch64/AArch64TargetTransformInfo.h
lib/Target/ARM/ARMTargetTransformInfo.cpp
lib/Target/ARM/ARMTargetTransformInfo.h
lib/Target/Hexagon/HexagonTargetTransformInfo.cpp
lib/Target/Hexagon/HexagonTargetTransformInfo.h
lib/Target/PowerPC/PPCTargetTransformInfo.cpp
lib/Target/PowerPC/PPCTargetTransformInfo.h
lib/Target/SystemZ/SystemZTargetTransformInfo.cpp
lib/Target/SystemZ/SystemZTargetTransformInfo.h
lib/Target/X86/X86TargetTransformInfo.cpp
lib/Target/X86/X86TargetTransformInfo.h
lib/Transforms/Vectorize/LoopVectorize.cpp
lib/Transforms/Vectorize/VPRecipeBuilder.h
lib/Transforms/Vectorize/VPlan.h
test/Transforms/LoopVectorize/X86/x86-interleaved-accesses-masked-group.ll
test/Transforms/LoopVectorize/interleaved-accesses-masked-group.ll
test/Transforms/LoopVectorize/interleaved-accesses-pred-stores.ll
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D53011.168749.patch
Type: text/x-patch
Size: 58009 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20181009/bb2c51b3/attachment.bin>
More information about the llvm-commits
mailing list