LLVM 18.0.0git
|
Functions | |
bool | onlyFirstLaneUsed (VPValue *Def) |
Returns true if only the first lane 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 1251 of file VPlan.cpp.
References llvm::VPlan::addSCEVExpansion(), llvm::VPBasicBlock::appendRecipe(), E, 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 3034 of file VPlan.h.
References llvm::all_of(), assert(), 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 1246 of file VPlan.cpp.
References llvm::all_of().
Referenced by llvm::VPWidenPointerInductionRecipe::execute(), llvm::VPScalarIVStepsRecipe::execute(), and llvm::VPWidenPointerInductionRecipe::onlyScalarsGenerated().