[PATCH] D74695: [VPlan] Replace VPWidenRecipe with VPInstruction (WIP).

Florian Hahn via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Mar 18 11:25:01 PDT 2020


fhahn planned changes to this revision.
fhahn added a comment.

In D74695#1926674 <https://reviews.llvm.org/D74695#1926674>, @gilr wrote:

> In D74695#1923526 <https://reviews.llvm.org/D74695#1923526>, @fhahn wrote:
>
> > I think doing so for VPWidenRecipe might be more tricky than other recipes, as VPWidenRecipe currently contains a list of instructions.
> >  [snip]
> >  I thought a little bit about how to migrate the def-use dependencies for VPWidenRecipe without breaking it up, but couldn't come up with a more straight-forward approach.
>
>
> VPWidenRecipe wrapped intervals of ingredients just to keep VPlan's memory footprint low. Now that we begin to model def-use relations this mechanism will have to go (it's already suppressed for sink-after). We can start by removing compression altogether in a preliminary patch, turning VPWidenRecipe into a single-ingredient recipe, ready to take VPValue operands.
>  A following patch can add VPValue operands to VPWidenRecipe by calling `getOrAddVPValue()` for each IR operand, similar to D70865 <https://reviews.llvm.org/D70865>.
>  The next patch (perhaps also in parts) can replace VPWidenRecipes with VPInstructions by
>  (a) binding VP defs to IR users, as proposed
>  (b) extending the usage of `recordRecipe()` to ingredients covered by VPInstructions such that calling `getRecipe()` will return either a VPInstruction, another Recipe or nullptr. For the latter two cases, call `getOrAddVPValue()`.
>  (c) refactoring VPWidenRecipe's execute()
>  What do you think?


That sounds good. I'll break up the patch along the lines suggested ASAP.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D74695/new/

https://reviews.llvm.org/D74695





More information about the llvm-commits mailing list