This is an archive of the discontinued LLVM Phabricator instance.

[VPlan] Only generate single instr for stores uniform across all parts.
ClosedPublic

Authored by reames on Sep 8 2022, 8:02 AM.

Details

Summary

Extend the approach taken by D133019 to store instructions.

Diff Detail

Event Timeline

reames created this revision.Sep 8 2022, 8:02 AM
reames requested review of this revision.Sep 8 2022, 8:02 AM
Herald added a project: Restricted Project. · View Herald TranscriptSep 8 2022, 8:02 AM
fhahn accepted this revision.Sep 9 2022, 7:06 AM

LGTM, thanks!

This revision is now accepted and ready to land.Sep 9 2022, 7:06 AM
This revision was landed with ongoing or failed builds.Sep 9 2022, 7:25 AM
This revision was automatically updated to reflect the committed changes.
Ayal added inline comments.Sep 11 2022, 3:24 AM
llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
9644

Originally relates to D133019. Adding as post-commit notes.
@reames , @fhahn - it would be good in general to limit the use of underlyingInstr in favor of promoting recipe abstraction as much as possible. E.g., ask if this recipe has VPUsers instead of checking if UI's type is void? Why restrict handling of uniform-across-all-parts to loads and stores, should it be captured as in IsUniform[AcrossVF/AcrossUF]? Would be good to give "!Op->getDef()" a meaningful name/API.