[llvm] [VPlan] Set branch weight metadata on middle term in VPlan (NFC) (PR #143035)
David Sherwood via llvm-commits
llvm-commits at lists.llvm.org
Mon Jun 9 06:37:27 PDT 2025
================
@@ -7279,6 +7279,30 @@ static void fixReductionScalarResumeWhenVectorizingEpilog(
BypassBlock, MainResumePhi->getIncomingValueForBlock(BypassBlock));
}
+/// Add branch weight metadata, if the \p Plan's middle block is terminated by a
+/// BranchOnCond recipe.
+static void addBranchWeigthToMiddleTerminator(VPlan &Plan, ElementCount VF,
+ Loop *OrigLoop) {
+ // 4. Adjust branch weight of the branch in the middle block.
+ Instruction *LatchTerm = OrigLoop->getLoopLatch()->getTerminator();
+ if (!hasBranchWeightMD(*LatchTerm))
+ return;
+
+ VPBasicBlock *MiddleVPBB = Plan.getMiddleBlock();
+ auto *MiddleTerm =
+ dyn_cast_or_null<VPInstruction>(MiddleVPBB->getTerminator());
----------------
david-arm wrote:
The code that was removed look like this:
```
auto *MiddleTerm =
cast<BranchInst>(State.CFG.VPBB2IRBB[MiddleVPBB]->getTerminator());
```
whereas the code you've added here suggests that there may not be a terminator at all, or it may not be a VPInstruction. It may be right, but it's not obvious to me at least how this is NFC? I'm a bit worried that we may not be adding branch weights any more for some loops.
https://github.com/llvm/llvm-project/pull/143035
More information about the llvm-commits
mailing list