LLVM 18.0.0git
Functions
llvm::vputils Namespace Reference

Functions

bool onlyFirstLaneUsed (VPValue *Def)
 Returns true if only the first lane of Def is used.
 
VPValuegetOrCreateVPValueForSCEVExpr (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.
 

Function Documentation

◆ getOrCreateVPValueForSCEVExpr()

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().

◆ isUniformAfterVectorization()

bool llvm::vputils::isUniformAfterVectorization ( VPValue VPV)
inline

◆ onlyFirstLaneUsed()

bool llvm::vputils::onlyFirstLaneUsed ( VPValue Def)

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().