InnerLoopVectorizer's code called during VPlan execution still relies on original IR's def-use relations to decide which vector code to generate,
limiting VPlan transformations ability to modify def-use relations and still have ILV generate the vector code.
This patch introduces a VPValue for VPWidenMemoryInstructionRecipe to use as the stored value. The recipe is generated with a VPValue wrapping the stored value of the scalar store.
This reduces ingredient def-use usage by ILV as a step towards full VPlan-based def-use relations.
Details
Details
Diff Detail
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
llvm/lib/Transforms/Vectorize/VPlan.h | ||
---|---|---|
1069 | I think it might be good to document what operands User has for loads & stores with and w/o masking. | |
1112 | Do we need the extra IsMasked operand? Would it be sufficient to check the number of operands and use Load with 2 ops => has as mask, Store with 3 ops => has a mask? |
llvm/lib/Transforms/Vectorize/VPlan.h | ||
---|---|---|
1112 | Right, will replace it with a method. |
Comment Actions
LGTM, thanks! Please wait a day or so with committing, in case there are other comments.
Comment Actions
This looks good to me too, thanks, with minor nit.
llvm/lib/Transforms/Vectorize/LoopVectorize.cpp | ||
---|---|---|
6815 |
https://llvm.org/docs/CodingStandards.html#don-t-use-else-after-a-return