|
LLVM 24.0.0git
|
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. | |
Lightweight SCEV-to-VPlan expander.
Converts SCEV expressions into VPInstructions and live-ins. Canonical IVs and non-affine SCEVAddRecExprs are wrapped in a VPExpandSCEVRecipe to be expanded to IR later.
Definition at line 269 of file VPlanUtils.h.
|
inline |
Definition at line 287 of file VPlanUtils.h.
Expand S into recipes and live-ins using the builder.
Definition at line 929 of file VPlanUtils.cpp.
References AbstractManglingParser< Derived, Alloc >::Ops, assert(), llvm::cast(), llvm::drop_begin(), llvm::dyn_cast(), expand(), F, llvm::SCEVExpander::findReusableCastForPtrToAddr(), llvm::SCEVExpander::findReusableLCSSAPhi(), llvm::SCEV::FlagNone, llvm::SCEV::FlagNW, llvm::BasicBlock::getDataLayout(), llvm::VPIRFlags::getDefaultFlags(), llvm::VPlan::getEntry(), llvm::getExplicitlyUnknownBranchWeightsIfProfiled(), llvm::VPlan::getOrAddLiveIn(), llvm::vputils::getOrCreateVPValueForSCEVExpr(), llvm::MinMaxIntrinsic::getPredicate(), llvm::SCEV::getSCEVType(), llvm::SCEV::getType(), getValue(), llvm::VPIRFlags::WrapFlagsTy::HasNSW, llvm::ScalarEvolution::isGuaranteedNotToBePoison(), llvm::Type::isPointerTy(), llvm_unreachable, llvm::SCEVPatternMatch::m_scev_AffineAddRec(), llvm::SCEVPatternMatch::m_scev_One(), llvm::SCEVPatternMatch::m_scev_Zero(), llvm::SCEVPatternMatch::m_SpecificLoop(), llvm::PatternMatch::match(), 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::convertToStridedAccesses(), createDiffRuntimeChecks(), createRuntimeChecks(), expand(), llvm::VPlanTransforms::expandSCEVsToVPInstructions(), and optimizeLatchExitIVUserViaSCEV().