[llvm] [CodeGen][ProfCheck] Mark scalable intrinsic expansion loop with unknown weights (PR #225050)
Mattéo Rizza Murgier via llvm-commits
llvm-commits at lists.llvm.org
Mon Sep 21 02:25:35 PDT 2026
https://github.com/matteo-rm created https://github.com/llvm/llvm-project/pull/225050
`lowerUnaryVectorIntrinsicAsLoop` scalarizes scalable vector intrinsics into a loop whose trip count depends on vscale and cannot be known at compile time. This PR marks the loop branch weights as unknown. Fixes the profcheck bot failing on aarch64 `expand-*.ll` tests (c.f. #223614).
>From 722bb49c5caacc9eaea4fb4ad2185e2852e630dd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Matt=C3=A9o=20Rizza=20Murgier?=
<matteo.rizza-murgier at sipearl.com>
Date: Wed, 16 Sep 2026 11:21:46 +0200
Subject: [PATCH] [CodeGen][ProfCheck] Mark scalable intrinsic expansion loop
with unknown weights
---
llvm/lib/Transforms/Utils/LowerVectorIntrinsics.cpp | 4 +++-
llvm/utils/profcheck-xfail.txt | 4 ----
2 files changed, 3 insertions(+), 5 deletions(-)
diff --git a/llvm/lib/Transforms/Utils/LowerVectorIntrinsics.cpp b/llvm/lib/Transforms/Utils/LowerVectorIntrinsics.cpp
index b4d17f18a687f..676b3af94bfe7 100644
--- a/llvm/lib/Transforms/Utils/LowerVectorIntrinsics.cpp
+++ b/llvm/lib/Transforms/Utils/LowerVectorIntrinsics.cpp
@@ -9,6 +9,7 @@
#include "llvm/Transforms/Utils/LowerVectorIntrinsics.h"
#include "llvm/IR/IRBuilder.h"
#include "llvm/IR/Module.h"
+#include "llvm/IR/ProfDataUtils.h"
#define DEBUG_TYPE "lower-vector-intrinsics"
@@ -73,7 +74,8 @@ bool llvm::lowerUnaryVectorIntrinsicAsLoop(Module &M, CallInst *CI) {
Value *ExitCond =
LoopBuilder.CreateICmp(CmpInst::ICMP_EQ, NextLoopIndex, LoopEnd);
- LoopBuilder.CreateCondBr(ExitCond, PostLoopBB, LoopBB);
+ CondBrInst *Br = LoopBuilder.CreateCondBr(ExitCond, PostLoopBB, LoopBB);
+ setExplicitlyUnknownBranchWeightsIfProfiled(*Br, DEBUG_TYPE);
Value *Res = NewVecs[0];
if (StructRetTy) {
diff --git a/llvm/utils/profcheck-xfail.txt b/llvm/utils/profcheck-xfail.txt
index f316ccc0a325b..530255af2894e 100644
--- a/llvm/utils/profcheck-xfail.txt
+++ b/llvm/utils/profcheck-xfail.txt
@@ -95,10 +95,6 @@ Transforms/OpenMP/spmdization_guarding_two_reaching_kernels.ll
Transforms/OpenMP/spmdization_indirect.ll
Transforms/OpenMP/spmdization_no_guarding_two_reaching_kernels.ll
Transforms/OpenMP/spmdization_remarks.ll
-Transforms/PreISelIntrinsicLowering/AArch64/expand-exp.ll
-Transforms/PreISelIntrinsicLowering/AArch64/expand-fp-math.ll
-Transforms/PreISelIntrinsicLowering/AArch64/expand-log.ll
-Transforms/PreISelIntrinsicLowering/AArch64/expand-multi-result.ll
Transforms/StackProtector/cross-dso-cfi-stack-chk-fail.ll
Transforms/TailCallElim/2010-06-26-MultipleReturnValues.ll
Transforms/TailCallElim/accum_recursion.ll
More information about the llvm-commits
mailing list