[llvm] [VPlan] Improve code using onlyScalarValuesUsed (NFC) (PR #154564)
Ramkumar Ramachandra via llvm-commits
llvm-commits at lists.llvm.org
Wed Aug 20 08:41:30 PDT 2025
https://github.com/artagnon created https://github.com/llvm/llvm-project/pull/154564
None
>From 5a16a6552c180eb188544166decd84ce0f316dc4 Mon Sep 17 00:00:00 2001
From: Ramkumar Ramachandra <ramkumar.ramachandra at codasip.com>
Date: Wed, 20 Aug 2025 16:37:32 +0100
Subject: [PATCH] [VPlan] Improve code using onlyScalarValuesUsed (NFC)
---
llvm/lib/Transforms/Vectorize/VPlanAnalysis.cpp | 10 ++--------
llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp | 4 +---
2 files changed, 3 insertions(+), 11 deletions(-)
diff --git a/llvm/lib/Transforms/Vectorize/VPlanAnalysis.cpp b/llvm/lib/Transforms/Vectorize/VPlanAnalysis.cpp
index b39231f106300..716814b84f487 100644
--- a/llvm/lib/Transforms/Vectorize/VPlanAnalysis.cpp
+++ b/llvm/lib/Transforms/Vectorize/VPlanAnalysis.cpp
@@ -557,11 +557,7 @@ SmallVector<VPRegisterUsage, 8> llvm::calculateRegisterUsageForPlan(
isa<VPCanonicalIVPHIRecipe, VPReplicateRecipe, VPDerivedIVRecipe,
VPScalarIVStepsRecipe>(R) ||
(isa<VPInstruction>(R) &&
- all_of(cast<VPSingleDefRecipe>(R)->users(),
- [&](VPUser *U) {
- return cast<VPRecipeBase>(U)->usesScalars(
- R->getVPSingleValue());
- })) ||
+ vputils::onlyScalarValuesUsed(cast<VPSingleDefRecipe>(R))) ||
(isa<VPReductionPHIRecipe>(R) &&
(cast<VPReductionPHIRecipe>(R))->isInLoop())) {
unsigned ClassID = TTI.getRegisterClassForType(
@@ -614,9 +610,7 @@ SmallVector<VPRegisterUsage, 8> llvm::calculateRegisterUsageForPlan(
for (auto *In : LoopInvariants) {
// FIXME: The target might use more than one register for the type
// even in the scalar case.
- bool IsScalar = all_of(In->users(), [&](VPUser *U) {
- return cast<VPRecipeBase>(U)->usesScalars(In);
- });
+ bool IsScalar = vputils::onlyScalarValuesUsed(In);
ElementCount VF = IsScalar ? ElementCount::getFixed(1) : VFs[Idx];
unsigned ClassID = TTI.getRegisterClassForType(
diff --git a/llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp b/llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp
index 7ca9b230f5aae..f3a188158adbe 100644
--- a/llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp
+++ b/llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp
@@ -2958,9 +2958,7 @@ bool VPReplicateRecipe::shouldPack() const {
// VPPredInstPHIRecipe. In this case, also pack the scalar values in a vector.
return any_of(users(), [](const VPUser *U) {
if (auto *PredR = dyn_cast<VPPredInstPHIRecipe>(U))
- return any_of(PredR->users(), [PredR](const VPUser *U) {
- return !U->usesScalars(PredR);
- });
+ return !vputils::onlyScalarValuesUsed(PredR);
return false;
});
}
More information about the llvm-commits
mailing list