[llvm] bd5e12e - [VPlan] Don't retrieve Def unnecessarily in isUniformAfterVector (NFC).
Florian Hahn via llvm-commits
llvm-commits at lists.llvm.org
Mon Jan 20 14:08:24 PST 2025
Author: Florian Hahn
Date: 2025-01-20T22:07:58Z
New Revision: bd5e12e6a08d60015102a2a2a763353399499ccc
URL: https://github.com/llvm/llvm-project/commit/bd5e12e6a08d60015102a2a2a763353399499ccc
DIFF: https://github.com/llvm/llvm-project/commit/bd5e12e6a08d60015102a2a2a763353399499ccc.diff
LOG: [VPlan] Don't retrieve Def unnecessarily in isUniformAfterVector (NFC).
dyn_cast for recipes take VPValues, avoid calling getDefiningRecipe
unnecessarily.
Added:
Modified:
llvm/lib/Transforms/Vectorize/VPlanUtils.h
Removed:
################################################################################
diff --git a/llvm/lib/Transforms/Vectorize/VPlanUtils.h b/llvm/lib/Transforms/Vectorize/VPlanUtils.h
index b875714d230287..b88a1b14299754 100644
--- a/llvm/lib/Transforms/Vectorize/VPlanUtils.h
+++ b/llvm/lib/Transforms/Vectorize/VPlanUtils.h
@@ -41,22 +41,21 @@ inline bool isUniformAfterVectorization(const VPValue *VPV) {
// vectorization inside a vector region.
if (VPV->isDefinedOutsideLoopRegions())
return true;
- const VPRecipeBase *Def = VPV->getDefiningRecipe();
- assert(Def && "Must have definition for value defined inside vector region");
- if (auto *Rep = dyn_cast<VPReplicateRecipe>(Def))
+ if (auto *Rep = dyn_cast<VPReplicateRecipe>(VPV))
return Rep->isUniform();
- if (isa<VPWidenGEPRecipe, VPDerivedIVRecipe>(Def))
- return all_of(Def->operands(), isUniformAfterVectorization);
- if (auto *VPI = dyn_cast<VPInstruction>(Def))
+ if (isa<VPWidenGEPRecipe, VPDerivedIVRecipe>(VPV))
+ return all_of(VPV->getDefiningRecipe()->operands(),
+ isUniformAfterVectorization);
+ if (auto *VPI = dyn_cast<VPInstruction>(VPV))
return VPI->isSingleScalar() || VPI->isVectorToScalar() ||
((Instruction::isBinaryOp(VPI->getOpcode()) ||
VPI->getOpcode() == VPInstruction::PtrAdd) &&
all_of(VPI->operands(), isUniformAfterVectorization));
- if (auto *IV = dyn_cast<VPDerivedIVRecipe>(Def))
+ if (auto *IV = dyn_cast<VPDerivedIVRecipe>(VPV))
return all_of(IV->operands(), isUniformAfterVectorization);
// VPExpandSCEVRecipes must be placed in the entry and are alway uniform.
- return isa<VPExpandSCEVRecipe>(Def);
+ return isa<VPExpandSCEVRecipe>(VPV);
}
/// Return true if \p V is a header mask in \p Plan.
More information about the llvm-commits
mailing list