LLVM 24.0.0git
llvm::VPSCEVExpander Class Reference

Lightweight SCEV-to-VPlan expander. More...

#include "Transforms/Vectorize/VPlanUtils.h"

Public Member Functions

 VPSCEVExpander (VPBuilder &Builder, ScalarEvolution &SE, DebugLoc DL)
VPValue * expand (const SCEV *S)
 Expand S into recipes and live-ins using the builder.

Detailed Description

Lightweight SCEV-to-VPlan expander.

Converts SCEV expressions into VPInstructions and live-ins. SCEVAddRecExprs are wrapped in a VPExpandSCEVRecipe to be expanded to IR later.

Definition at line 268 of file VPlanUtils.h.

Constructor & Destructor Documentation

◆ VPSCEVExpander()

llvm::VPSCEVExpander::VPSCEVExpander ( VPBuilder & Builder,
ScalarEvolution & SE,
DebugLoc DL )
inline

Definition at line 283 of file VPlanUtils.h.

Member Function Documentation

◆ expand()

VPValue * VPSCEVExpander::expand ( const SCEV * S)

Expand S into recipes and live-ins using the builder.

Definition at line 918 of file VPlanUtils.cpp.

References AbstractManglingParser< Derived, Alloc >::Ops, assert(), llvm::sampleprof::Base, llvm::cast(), llvm::drop_begin(), llvm::dyn_cast(), llvm::iterator_range< IteratorT >::end(), expand(), llvm::find_if(), llvm::SCEVExpander::findReusableCastForPtrToAddr(), llvm::BasicBlock::getDataLayout(), llvm::VPIRFlags::getDefaultFlags(), llvm::VPlan::getEntry(), llvm::VPlan::getOrAddLiveIn(), llvm::vputils::getOrCreateVPValueForSCEVExpr(), llvm::SCEV::getSCEVType(), llvm::SCEV::getType(), getValue(), llvm::VPIRFlags::WrapFlagsTy::HasNSW, llvm::VPIRFlags::WrapFlagsTy::HasNUW, llvm::ScalarEvolution::isGuaranteedNotToBePoison(), llvm::Type::isPointerTy(), llvm_unreachable, llvm::GEPNoWrapFlags::none(), llvm::GEPNoWrapFlags::noUnsignedWrap(), llvm::Offset, llvm::VPBasicBlock::phis(), llvm::reverse(), llvm::scAddExpr, llvm::scAddRecExpr, llvm::scConstant, llvm::scCouldNotCompute, llvm::scMulExpr, llvm::scPtrToAddr, llvm::scSequentialUMinExpr, llvm::scSignExtend, llvm::scSMaxExpr, llvm::scSMinExpr, llvm::scTruncate, llvm::scUDivExpr, llvm::scUMaxExpr, llvm::scUMinExpr, llvm::scUnknown, llvm::scVScale, llvm::scZeroExtend, llvm::stable_sort(), and llvm::zip_equal().

Referenced by llvm::VPlanTransforms::addMinimumIterationCheck(), llvm::VPlanTransforms::attachMemoryChecks(), llvm::VPlanTransforms::convertToStridedAccesses(), expand(), llvm::VPlanTransforms::expandSCEVsToVPInstructions(), and optimizeLatchExitIVUserViaSCEV().


The documentation for this class was generated from the following files: