|
LLVM 23.0.0git
|
Lightweight SCEV-to-VPlan expander. More...
#include "Transforms/Vectorize/VPlanUtils.h"
Public Member Functions | |
| VPSCEVExpander (VPBuilder &Builder, ScalarEvolution &SE, DebugLoc DL={}) | |
| VPValue * | tryToExpand (const SCEV *S) |
Try to expand S into recipes and live-ins using the builder. | |
Lightweight SCEV-to-VPlan expander.
Converts SCEV expressions into VPInstructions where possible, and returning nullptr for unsupported expressions (like adds, casts, min/max).
Definition at line 187 of file VPlanUtils.h.
|
inline |
Definition at line 198 of file VPlanUtils.h.
Try to expand S into recipes and live-ins using the builder.
Returns nullptr if S cannot be expanded yet.
Definition at line 926 of file VPlanUtils.cpp.
References AbstractManglingParser< Derived, Alloc >::Ops, llvm::cast(), llvm::drop_begin(), llvm::SCEV::getSCEVType(), llvm::SCEV::getType(), getValue(), llvm::Mul, llvm::scConstant, llvm::scMulExpr, llvm::scUnknown, llvm::scVScale, tryToExpand(), and llvm::VPInstruction::VScale.
Referenced by llvm::VPlanTransforms::addMinimumIterationCheck(), llvm::VPlanTransforms::expandSCEVsToVPInstructions(), and tryToExpand().