diff options
author | Gil Rapaport <gil.rapaport@intel.com> | 2017-11-14 12:09:30 +0000 |
---|---|---|
committer | Gil Rapaport <gil.rapaport@intel.com> | 2017-11-14 12:09:30 +0000 |
commit | 848581cadb3f5cd0229cf580c5cb56f679900d3d (patch) | |
tree | 8efea72359f6dba678330e7b13ec420fb821d965 /llvm/lib/Transforms/Vectorize/VPlan.h | |
parent | 5cdc4f9c330c7d4d411e1bbc77084c1415593ded (diff) | |
download | bcm5719-llvm-848581cadb3f5cd0229cf580c5cb56f679900d3d.tar.gz bcm5719-llvm-848581cadb3f5cd0229cf580c5cb56f679900d3d.zip |
[LV] Introduce VPBlendRecipe, VPWidenMemoryInstructionRecipe
This patch is part of D38676.
The patch introduces two new Recipes to handle instructions whose vectorization
involves masking. These Recipes take VPlan-level masks in 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().
Differential Revision: https://reviews.llvm.org/D39068
llvm-svn: 318149
Diffstat (limited to 'llvm/lib/Transforms/Vectorize/VPlan.h')
-rw-r--r-- | llvm/lib/Transforms/Vectorize/VPlan.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/Vectorize/VPlan.h b/llvm/lib/Transforms/Vectorize/VPlan.h index d43774dd36e..f039e21458a 100644 --- a/llvm/lib/Transforms/Vectorize/VPlan.h +++ b/llvm/lib/Transforms/Vectorize/VPlan.h @@ -452,11 +452,13 @@ public: /// SubclassID field of the VPRecipeBase objects. They are used for concrete /// type identification. using VPRecipeTy = enum { + VPBlendSC, VPBranchOnMaskSC, VPInterleaveSC, VPPredInstPHISC, VPReplicateSC, VPWidenIntOrFpInductionSC, + VPWidenMemoryInstructionSC, VPWidenPHISC, VPWidenSC, }; |