LLVM 19.0.0git
|
Functions | |
bool | onlyFirstLaneUsed (const VPValue *Def) |
Returns true if only the first lane of Def is used. | |
bool | onlyFirstPartUsed (const VPValue *Def) |
Returns true if only the first part of Def is used. | |
VPValue * | getOrCreateVPValueForSCEVExpr (VPlan &Plan, const SCEV *Expr, ScalarEvolution &SE) |
Get or create a VPValue that corresponds to the expansion of Expr . | |
bool | isUniformAfterVectorization (VPValue *VPV) |
Returns true if VPV is uniform after vectorization. | |
VPValue * llvm::vputils::getOrCreateVPValueForSCEVExpr | ( | VPlan & | Plan, |
const SCEV * | Expr, | ||
ScalarEvolution & | SE | ||
) |
Get or create a VPValue that corresponds to the expansion of Expr
.
If Expr
is a SCEVConstant or SCEVUnknown, return a VPValue wrapping the live-in value. Otherwise return a VPExpandSCEVRecipe to expand Expr
. If Plan's
pre-header already contains a recipe expanding Expr
, return it. If not, create a new one.
Definition at line 1419 of file VPlan.cpp.
References llvm::VPlan::addSCEVExpansion(), llvm::VPBasicBlock::appendRecipe(), llvm::VPValue::getDefiningRecipe(), llvm::VPlan::getPreheader(), llvm::VPlan::getSCEVExpansion(), llvm::VPlan::getVPValueOrAddLiveIn(), and llvm::VPTransformState::Plan.
Referenced by llvm::VPlan::createInitialVPlan(), createWidenInductionRecipes(), and llvm::VPlanTransforms::VPInstructionsToVPRecipes().
Returns true if VPV
is uniform after vectorization.
Definition at line 3407 of file VPlan.h.
References llvm::all_of(), assert(), llvm::VPInstruction::ComputeReductionResult, GEP, llvm::VPValue::getDefiningRecipe(), llvm::VPValue::isDefinedOutsideVectorRegions(), and isUniformAfterVectorization().
Referenced by llvm::VPReplicateRecipe::execute(), llvm::VPLiveOut::fixPhi(), llvm::VPTransformState::get(), isUniformAfterVectorization(), and llvm::InnerLoopVectorizer::scalarizeInstruction().
Returns true if only the first lane of Def
is used.
Definition at line 1409 of file VPlan.cpp.
References llvm::all_of().
Referenced by llvm::VPInstruction::execute(), llvm::VPScalarIVStepsRecipe::execute(), llvm::VPInstruction::onlyFirstLaneUsed(), llvm::VPWidenPointerInductionRecipe::onlyScalarsGenerated(), and removeRedundantCanonicalIVs().