[PATCH] D113424: ext-tsp basic block layout
David Li via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Nov 18 12:35:45 PST 2021
davidxl added inline comments.
================
Comment at: llvm/lib/CodeGen/MachineBlockPlacement.cpp:3408
+ // Find a new placement and modify the layout of the blocks in the function.
+ applyExtTsp();
+
----------------
spupyrev wrote:
> davidxl wrote:
> > Why do the extTSP layout after the existing layout? It seems like a waste of compile time.
> >
> > Or the intention is to keep the taildup functionality there? However the tail dup decisions depend on layout decisions, so it is probably better integrated with extTSP. Also taildup's profile update may not be ideal affecting later layout score computation.
> I don't have a strong opinion here but here is my intuition. Ext-tsp is designed to "improve" the existing layout with the help of profile data. When there are ties or when the profile data is absent, the algorithm fallbacks to the original ordering of basic blocks. Thus, we want the original order to be reasonable. So we first apply the existing machine block placement, which applies several sane tricks like loop rotation, and then improve it with ext-tsp.
>
> Keeping the existing tail duplication also sounds reasonable to me; though this optimization could be applied separately. Btw, we are working on improving and replacing the existing taildup heuristic; i'll share diffs/prototypes if/when it produces good results.
>
When you say extTSP relies on existing layout to be reasonable, do you have performance data to back it up? If the profile is not available, it is likely they are cold.
Also extTSP should be able to do 'loop rotation' by splitting during chain merge, are there cases it is not handled?
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D113424/new/
https://reviews.llvm.org/D113424
More information about the llvm-commits
mailing list