[llvm-branch-commits] [llvm] InstCombine: Propagate profile metadata in select(ldexp) and ldexp(select) folding (PR #179755)
Snehasish Kumar via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Wed Feb 4 16:49:00 PST 2026
https://github.com/snehasish updated https://github.com/llvm/llvm-project/pull/179755
>From bed32f8aa6bc01badc2643e775cc782e981cb3b7 Mon Sep 17 00:00:00 2001
From: Snehasish Kumar <snehasishk at google.com>
Date: Tue, 3 Feb 2026 04:19:33 +0000
Subject: [PATCH] InstCombine: Propagate profile metadata in select(ldexp) and
ldexp(select) folding
---
.../lib/Transforms/InstCombine/InstCombineCalls.cpp | 5 +++++
.../Transforms/InstCombine/InstCombineSelect.cpp | 13 +++++++++++--
llvm/utils/profcheck-xfail.txt | 1 -
3 files changed, 16 insertions(+), 3 deletions(-)
diff --git a/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp b/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
index 7b27aac1e224b..770fc568ba753 100644
--- a/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
+++ b/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
@@ -3263,6 +3263,11 @@ Instruction *InstCombinerImpl::visitCallInst(CallInst &CI) {
}
if (NewLdexp) {
+ if (!ProfcheckDisableMetadataFixes)
+ if (auto *I = dyn_cast<Instruction>(Select)) {
+ setExplicitlyUnknownBranchWeightsIfProfiled(*I, DEBUG_TYPE, &F);
+ I->copyMetadata(*II);
+ }
Select->takeName(II);
return replaceInstUsesWith(*II, Select);
}
diff --git a/llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp b/llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp
index c814b1e35c753..8c6bcc9454869 100644
--- a/llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp
+++ b/llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp
@@ -393,8 +393,17 @@ Instruction *InstCombinerImpl::foldSelectOpOp(SelectInst &SI, Instruction *TI,
FMF &= cast<FPMathOperator>(FII)->getFastMathFlags();
FMF |= SelectFPOp->getFastMathFlags();
- Value *SelectVal = Builder.CreateSelect(Cond, LdexpVal0, LdexpVal1);
- Value *SelectExp = Builder.CreateSelect(Cond, LdexpExp0, LdexpExp1);
+ Value *SelectVal;
+ Value *SelectExp;
+ if (!ProfcheckDisableMetadataFixes) {
+ SelectVal = Builder.CreateSelect(Cond, LdexpVal0, LdexpVal1,
+ "ldexp.val", &SI);
+ SelectExp = Builder.CreateSelect(Cond, LdexpExp0, LdexpExp1,
+ "ldexp.exp", &SI);
+ } else {
+ SelectVal = Builder.CreateSelect(Cond, LdexpVal0, LdexpVal1);
+ SelectExp = Builder.CreateSelect(Cond, LdexpExp0, LdexpExp1);
+ }
CallInst *NewLdexp = Builder.CreateIntrinsic(
TII->getType(), Intrinsic::ldexp, {SelectVal, SelectExp});
diff --git a/llvm/utils/profcheck-xfail.txt b/llvm/utils/profcheck-xfail.txt
index 2b56982729eea..85cb131f81824 100644
--- a/llvm/utils/profcheck-xfail.txt
+++ b/llvm/utils/profcheck-xfail.txt
@@ -220,7 +220,6 @@ Transforms/InstCombine/div-shift.ll
Transforms/InstCombine/fcmp-select.ll
Transforms/InstCombine/ffs-i16.ll
Transforms/InstCombine/intrinsic-select.ll
-Transforms/InstCombine/ldexp.ll
Transforms/InstCombine/load-bitcast-select.ll
Transforms/InstCombine/load.ll
Transforms/InstCombine/load-select.ll
More information about the llvm-branch-commits
mailing list