[PATCH] D39068: [LV] Introduce VPBlendRecipe, VPWidenMemoryInstructionRecipe

Gil Rapaport via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Oct 18 13:01:43 PDT 2017


gilr created this revision.

This patch is part of D38676 <https://reviews.llvm.org/D38676>.

The patch introduces two new Recipes to handle instructions whose vectorization involves masking. These Recipes take VPlan-level masks in D38676 <https://reviews.llvm.org/D38676>, but still rely on ILV's existing createEdgeMask(), createBlockInMask() in this patch.

- VPBlendRecipe handles intra-loop phi nodes, which are vectorized as a sequence of SELECTs. Its execute() code is refactored out of ILV::widenPHIInstruction(), which now handles only loop-header phi nodes.

- VPWidenMemoryInstructionRecipe handles load/store which are to be widened (but are not part of an Interleave Group). In this patch it simply calls ILV::vectorizeMemoryInstruction on execute().

Note that ILV methods called by these Recipes were made public.


https://reviews.llvm.org/D39068

Files:
  lib/Transforms/Vectorize/LoopVectorize.cpp
  lib/Transforms/Vectorize/VPlan.h

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D39068.119472.patch
Type: text/x-patch
Size: 12943 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20171018/f1556734/attachment.bin>


More information about the llvm-commits mailing list