LLVM 20.0.0git
Functions
llvm::vputils Namespace Reference

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.
 
VPValuegetOrCreateVPValueForSCEVExpr (VPlan &Plan, const SCEV *Expr, ScalarEvolution &SE)
 Get or create a VPValue that corresponds to the expansion of Expr.
 
bool isUniformAfterVectorization (const VPValue *VPV)
 Returns true if VPV is uniform after vectorization.
 
bool isHeaderMask (const VPValue *V, VPlan &Plan)
 Return true if V is a header mask in Plan.
 

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 1615 of file VPlan.cpp.

References llvm::VPlan::addSCEVExpansion(), llvm::VPBasicBlock::appendRecipe(), llvm::VPValue::getDefiningRecipe(), llvm::VPlan::getOrAddLiveIn(), llvm::VPlan::getPreheader(), llvm::VPlan::getSCEVExpansion(), and llvm::VPTransformState::Plan.

Referenced by llvm::VPlan::createInitialVPlan(), createWidenInductionRecipes(), and llvm::VPlanTransforms::VPInstructionsToVPRecipes().

◆ isHeaderMask()

bool llvm::vputils::isHeaderMask ( const VPValue V,
VPlan Plan 
)

◆ isUniformAfterVectorization()

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

◆ onlyFirstLaneUsed()

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

◆ onlyFirstPartUsed()

bool llvm::vputils::onlyFirstPartUsed ( const VPValue Def)

Returns true if only the first part of Def is used.

Definition at line 1610 of file VPlan.cpp.

References llvm::all_of().

Referenced by llvm::VPInstruction::execute(), and llvm::VPInstruction::onlyFirstPartUsed().