Extend the approach taken by D133019 to store instructions.
Details
Details
Diff Detail
Diff Detail
Event Timeline
llvm/lib/Transforms/Vectorize/LoopVectorize.cpp | ||
---|---|---|
9597 | Originally relates to D133019. Adding as post-commit notes. |
Paths
| Differential D133497
[VPlan] Only generate single instr for stores uniform across all parts. ClosedPublic Authored by reames on Sep 8 2022, 8:02 AM.
Details
Diff Detail Event TimelineHerald added subscribers: tschuett, frasercrmck, luismarques and 23 others. · View Herald Transcript 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 Closed by commit rGedb26268ce6e: [VPlan] Only generate single instr for stores uniform across all parts. (authored by reames). · Explain Why This revision was automatically updated to reflect the committed changes.
Revision Contents
Diff 458745 llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
llvm/test/Transforms/LoopVectorize/RISCV/uniform-load-store.ll
llvm/test/Transforms/LoopVectorize/X86/uniform_mem_op.ll
|
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.