summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/Vectorize/VPlan.h
diff options
context:
space:
mode:
authorGil Rapaport <gil.rapaport@intel.com>2017-11-14 12:09:30 +0000
committerGil Rapaport <gil.rapaport@intel.com>2017-11-14 12:09:30 +0000
commit848581cadb3f5cd0229cf580c5cb56f679900d3d (patch)
tree8efea72359f6dba678330e7b13ec420fb821d965 /llvm/lib/Transforms/Vectorize/VPlan.h
parent5cdc4f9c330c7d4d411e1bbc77084c1415593ded (diff)
downloadbcm5719-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.h2
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,
};
OpenPOWER on IntegriCloud