|
LLVM 24.0.0git
|
VPlan-based builder utility similar to IRBuilder. More...
#include "Transforms/Vectorize/LoopVectorizationPlanner.h"
Classes | |
| class | InsertPointGuard |
| RAII object that stores the current insertion point and restores it when the object is destroyed. More... | |
Static Public Member Functions | |
| static VPBuilderBase | getToInsertAfter (VPRecipeBase *R) |
Create a builder to insert after R. | |
| static VPSingleDefRecipe * | createSingleScalarOp (unsigned Opcode, ArrayRef< VPValue * > Operands, VPValue *Mask, const VPIRFlags &Flags, const VPIRMetadata &Metadata, DebugLoc DL, Type *ResultTy, Instruction *UV) |
Create a single-scalar recipe with Opcode and Operands without inserting it. | |
Protected Member Functions | |
| template<typename T> | |
| T * | tryInsertInstruction (T *R) |
Insert R at InsertPt if InsertPt is set. | |
| VPInstruction * | createInstruction (unsigned Opcode, ArrayRef< VPValue * > Operands, const VPIRMetadata &MD, DebugLoc DL, const Twine &Name="") |
VPlan-based builder utility similar to IRBuilder.
Recipes are inserted via InserterTy.
Definition at line 109 of file LoopVectorizationPlanner.h.
|
default |
|
inline |
Definition at line 165 of file LoopVectorizationPlanner.h.
|
inline |
Definition at line 166 of file LoopVectorizationPlanner.h.
|
inline |
Definition at line 281 of file LoopVectorizationPlanner.h.
Referenced by handleUncountableExitsWithSideEffects().
|
inline |
Definition at line 264 of file LoopVectorizationPlanner.h.
Referenced by llvm::VPlanTransforms::handleMaxMinNumReductions().
|
inline |
Create an AnyOf reduction pattern: or-reduce ChainOp, freeze the result, then select between TrueVal and FalseVal.
Definition at line 347 of file LoopVectorizationPlanner.h.
Referenced by llvm::VPlanTransforms::optimizeFindIVReductions().
|
inline |
Create a vector pointer recipe for a consecutive memory access to Ptr with element type SourceElementTy.
Definition at line 536 of file LoopVectorizationPlanner.h.
|
inline |
Convert Current to Start + Current * Step.
Definition at line 423 of file LoopVectorizationPlanner.h.
Referenced by tryToComputeEndValueForInduction().
|
inline |
Definition at line 402 of file LoopVectorizationPlanner.h.
|
inline |
Definition at line 523 of file LoopVectorizationPlanner.h.
|
inline |
Create a new FCmp VPInstruction with predicate Pred and operands A and B.
Definition at line 335 of file LoopVectorizationPlanner.h.
Referenced by llvm::VPlanTransforms::handleMaxMinNumReductions().
|
inline |
Definition at line 228 of file LoopVectorizationPlanner.h.
Referenced by llvm::VPlanTransforms::handleUncountableEarlyExits(), and handleUncountableExitsWithSideEffects().
|
inline |
Definition at line 481 of file LoopVectorizationPlanner.h.
Referenced by llvm::VPlanTransforms::handleMaxMinNumReductions(), llvm::VPlanTransforms::handleUncountableEarlyExits(), and llvm::VPlanTransforms::splitCombinedExits().
|
inline |
Create a new ICmp VPInstruction with predicate Pred and operands A and B.
Definition at line 324 of file LoopVectorizationPlanner.h.
Referenced by llvm::VPlanTransforms::handleMaxMinNumReductions(), handleUncountableExitsWithSideEffects(), and llvm::VPlanTransforms::optimizeFindIVReductions().
|
inlineprotected |
Definition at line 150 of file LoopVectorizationPlanner.h.
Referenced by llvm::VPBuilderBase<>::createAnd(), llvm::VPBuilderBase<>::createNaryOp(), and llvm::VPBuilderBase<>::createNot().
|
inline |
Definition at line 239 of file LoopVectorizationPlanner.h.
|
inline |
Definition at line 296 of file LoopVectorizationPlanner.h.
Referenced by llvm::VPlanTransforms::optimizeFindIVReductions().
|
inline |
Definition at line 302 of file LoopVectorizationPlanner.h.
Referenced by llvm::VPlanTransforms::handleUncountableEarlyExits().
|
inline |
Definition at line 212 of file LoopVectorizationPlanner.h.
|
inline |
Definition at line 208 of file LoopVectorizationPlanner.h.
|
inline |
Create an N-ary operation with Opcode, Operands and set Inst as its underlying Instruction.
Definition at line 196 of file LoopVectorizationPlanner.h.
Referenced by addBypassBranch(), addInitialSkeleton(), llvm::VPlanTransforms::adjustFirstOrderRecurrenceMiddleUsers(), llvm::VPBuilderBase<>::createAnyOfReduction(), llvm::VPBuilderBase<>::createFreeze(), llvm::VPBuilderBase<>::createLogicalAnd(), llvm::VPBuilderBase<>::createLogicalOr(), llvm::VPlanTransforms::expandBranchOnTwoConds(), llvm::VPlanTransforms::handleMaxMinNumReductions(), llvm::VPlanTransforms::handleUncountableEarlyExits(), handleUncountableExitsWithSideEffects(), llvm::VPlanTransforms::materializeHeaderMask(), llvm::VPlanTransforms::optimizeFindIVReductions(), preparePlanForMainVectorLoop(), llvm::VPlanTransforms::splitCombinedExits(), and tryToSinkOrHoistRecurrenceUsers().
|
inline |
Definition at line 220 of file LoopVectorizationPlanner.h.
|
inline |
Definition at line 258 of file LoopVectorizationPlanner.h.
Referenced by llvm::VPlanTransforms::handleMaxMinNumReductions(), llvm::VPlanTransforms::handleUncountableEarlyExits(), and llvm::VPlanTransforms::optimizeFindIVReductions().
|
inline |
Definition at line 366 of file LoopVectorizationPlanner.h.
Referenced by llvm::VPBuilderBase<>::createPtrAdd().
|
inline |
Definition at line 271 of file LoopVectorizationPlanner.h.
Referenced by llvm::VPlanTransforms::handleMaxMinNumReductions(), and llvm::VPlanTransforms::optimizeFindIVReductions().
|
inline |
Definition at line 250 of file LoopVectorizationPlanner.h.
Referenced by llvm::VPBuilderBase<>::createElementCount(), and llvm::VPRegionBlock::getOrCreateCanonicalIVIncrement().
|
inline |
Definition at line 360 of file LoopVectorizationPlanner.h.
|
inline |
Definition at line 431 of file LoopVectorizationPlanner.h.
Referenced by llvm::VPBuilderBase<>::createScalarSExtOrTrunc(), llvm::VPBuilderBase<>::createScalarZExtOrTrunc(), and tryToComputeEndValueForInduction().
|
inline |
Create a scalar call to the intrinsic IntrinsicID with Operands, and result type ResultTy.
Definition at line 442 of file LoopVectorizationPlanner.h.
Referenced by llvm::VPBuilderBase<>::createVScale().
|
inline |
Definition at line 515 of file LoopVectorizationPlanner.h.
|
inline |
Create a phi with IncomingValues, using the default flags for the result type, unless Flags is set.
Definition at line 384 of file LoopVectorizationPlanner.h.
Referenced by addInitialSkeleton(), llvm::VPlanTransforms::convertToVariableLengthStep(), llvm::VPRegionBlock::dissolveToCFGLoop(), preparePlanForEpilogueVectorLoop(), and llvm::vputils::reconstructSSA().
|
inline |
Definition at line 470 of file LoopVectorizationPlanner.h.
|
inline |
Definition at line 459 of file LoopVectorizationPlanner.h.
Referenced by fixupVFUsersForEVL(), handleUncountableExitsWithSideEffects(), optimizeMaskToEVL(), and llvm::VPlanTransforms::simplifyKnownEVL().
|
inline |
Create a select of TrueVal and FalseVal based on Cond, using the default flags for the result type, unless Flags is set.
Definition at line 310 of file LoopVectorizationPlanner.h.
Referenced by llvm::VPBuilderBase<>::createAnyOfReduction(), llvm::VPlanTransforms::handleMaxMinNumReductions(), and llvm::VPlanTransforms::optimizeFindIVReductions().
|
inlinestatic |
Create a single-scalar recipe with Opcode and Operands without inserting it.
Definition at line 497 of file LoopVectorizationPlanner.h.
|
inline |
Definition at line 289 of file LoopVectorizationPlanner.h.
Referenced by llvm::VPlanTransforms::materializeHeaderMask().
|
inline |
Definition at line 528 of file LoopVectorizationPlanner.h.
Referenced by llvm::VPBuilderBase<>::createConsecutiveVectorPointer().
|
inline |
Create a scalar llvm.vscale call.
Definition at line 454 of file LoopVectorizationPlanner.h.
Referenced by llvm::VPBuilderBase<>::createElementCount().
|
inline |
Definition at line 486 of file LoopVectorizationPlanner.h.
Referenced by llvm::VPlanTransforms::truncateToMinimalBitwidths().
|
inline |
Create a recipe widening Load, loading from Addr with Mask (may be null).
Definition at line 567 of file LoopVectorizationPlanner.h.
Referenced by narrowInterleaveGroupOp().
|
inline |
Definition at line 558 of file LoopVectorizationPlanner.h.
|
inline |
Definition at line 396 of file LoopVectorizationPlanner.h.
Referenced by expandVPWidenIntOrFpInduction().
|
inline |
Create a recipe widening Store, storing StoredVal to Addr with Mask (may be null).
Definition at line 578 of file LoopVectorizationPlanner.h.
|
inline |
Definition at line 374 of file LoopVectorizationPlanner.h.
|
inline |
Definition at line 172 of file LoopVectorizationPlanner.h.
|
inline |
Definition at line 159 of file LoopVectorizationPlanner.h.
Referenced by llvm::VPBuilderBase<>::createConsecutiveVectorPointer(), llvm::VPBuilderBase<>::createElementCount(), llvm::VPBuilderBase<>::createFirstActiveLane(), llvm::VPBuilderBase<>::createLastActiveLane(), and llvm::VPBuilderBase<>::createScalarIntrinsic().
|
inline |
Get the recipe at the current insert point or nullptr if the insert point is the end of the block.
Definition at line 170 of file LoopVectorizationPlanner.h.
Referenced by llvm::VPlanTransforms::handleMaxMinNumReductions().
|
inlinestatic |
Create a builder to insert after R.
Definition at line 175 of file LoopVectorizationPlanner.h.
|
inline |
Insert R at the current insertion point. Returns R unchanged.
Definition at line 189 of file LoopVectorizationPlanner.h.
Referenced by llvm::VPRecipeBuilder::replaceWithFinalIfReductionStore().
|
inline |
Sets the current insert point to a previously-saved location.
Definition at line 180 of file LoopVectorizationPlanner.h.
|
inline |
Set the current insert point.
Definition at line 183 of file LoopVectorizationPlanner.h.
Referenced by llvm::VPlanTransforms::handleMaxMinNumReductions(), llvm::VPlanTransforms::handleUncountableEarlyExits(), and preparePlanForMainVectorLoop().
|
inlineprotected |
Insert R at InsertPt if InsertPt is set.
Definition at line 144 of file LoopVectorizationPlanner.h.
Referenced by llvm::VPBuilderBase<>::createConsecutiveVectorPointer(), llvm::VPBuilderBase<>::createExpandSCEV(), llvm::VPBuilderBase<>::createFCmp(), llvm::VPBuilderBase<>::createFirstActiveLane(), llvm::VPBuilderBase<>::createICmp(), llvm::VPBuilderBase<>::createInstruction(), llvm::VPBuilderBase<>::createLastActiveLane(), llvm::VPBuilderBase<>::createNaryOp(), llvm::VPBuilderBase<>::createNoWrapPtrAdd(), llvm::VPBuilderBase<>::createOr(), llvm::VPBuilderBase<>::createScalarIntrinsic(), llvm::VPBuilderBase<>::createScalarIVSteps(), llvm::VPBuilderBase<>::createScalarPhi(), llvm::VPBuilderBase<>::createSelect(), llvm::VPBuilderBase<>::createVectorPointer(), llvm::VPBuilderBase<>::createWidenCast(), llvm::VPBuilderBase<>::createWidenLoad(), llvm::VPBuilderBase<>::createWidenMemIntrinsic(), llvm::VPBuilderBase<>::createWidenPhi(), llvm::VPBuilderBase<>::createWidenStore(), and llvm::VPBuilderBase<>::createWidePtrAdd().