[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