[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