[llvm] [SimplifyCFG] Set branch weights when merging conditional store to address (PR #154841)
Joel E. Denny via llvm-commits
llvm-commits at lists.llvm.org
Wed Sep 10 09:05:37 PDT 2025
================
@@ -190,5 +191,31 @@ LLVM_ABI bool hasExplicitlyUnknownBranchWeights(const Instruction &I);
/// Scaling the profile data attached to 'I' using the ratio of S/T.
LLVM_ABI void scaleProfData(Instruction &I, uint64_t S, uint64_t T);
+/// get the branch weights of a branch conditioned on b1 | b2, where b1 and b2
+/// are 2 booleans that are the condition of 2 branches for which we have the
+/// branch weights B1 and B2, respectivelly.
+inline SmallVector<uint64_t, 2>
+getDisjunctionWeights(const SmallVector<uint32_t, 2> &B1,
+ const SmallVector<uint32_t, 2> &B2) {
+ // for the first conditional branch, the probability the "true" case is taken
+ // is p(b1) = B1[0] / (B1[0] + B2[0]). The "false" case's probability is
+ // p(not b1) = B1[1] / (B1[0] + B1[1]).
+ // Similarly for the second conditional branch and B2.
----------------
jdenny-ornl wrote:
I suggest moving the above comments to the outer doxygen comments. That is, if someone does not understand this, they probably won't call the function with correct arguments. In contrast, the comments that follow are more about the implementation not the interface.
https://github.com/llvm/llvm-project/pull/154841
More information about the llvm-commits
mailing list