LLVM 24.0.0git
llvm::VPBuilderBase< InserterTy > Class Template Reference

VPlan-based builder utility similar to IRBuilder. More...

#include "Transforms/Vectorize/LoopVectorizationPlanner.h"

Inheritance diagram for llvm::VPBuilderBase< InserterTy >:
[legend]

Classes

class  InsertPointGuard
 RAII object that stores the current insertion point and restores it when the object is destroyed. More...

Public Member Functions

VPlan & getPlan () const
 VPBuilderBase ()=default
 VPBuilderBase (const VPInsertPoint &IP)
 VPBuilderBase (InserterTy Inserter)
 VPBuilderBase (VPBasicBlock *TheBB, VPBasicBlock::iterator IP)
VPRecipeBase * getRecipeAtInsertPoint () const
 Get the recipe at the current insert point or nullptr if the insert point is the end of the block.
void restoreIP (VPInsertPoint IP)
 Sets the current insert point to a previously-saved location.
void setInsertPoint (const VPInsertPoint &IP)
 Set the current insert point.
void setInsertPoint (VPBasicBlock *TheBB, VPBasicBlock::iterator IP)
template<typename T>
T * insert (T *R)
 Insert R at the current insertion point. Returns R unchanged.
VPInstruction * createNaryOp (unsigned Opcode, ArrayRef< VPValue * > Operands, Instruction *Inst=nullptr, const VPIRFlags &Flags={}, const VPIRMetadata &MD={}, DebugLoc DL=DebugLoc::getUnknown(), const Twine &Name="", Type *ResultTy=nullptr)
 Create an N-ary operation with Opcode, Operands and set Inst as its underlying Instruction.
VPInstruction * createNaryOp (unsigned Opcode, ArrayRef< VPValue * > Operands, DebugLoc DL, const Twine &Name="")
VPInstruction * createNaryOp (unsigned Opcode, ArrayRef< VPValue * > Operands, const VPIRFlags &Flags, DebugLoc DL=DebugLoc::getUnknown(), const Twine &Name="")
VPInstruction * createNaryOp (unsigned Opcode, ArrayRef< VPValue * > Operands, Type *ResultTy, const VPIRFlags &Flags={}, DebugLoc DL=DebugLoc::getUnknown(), const Twine &Name="")
VPInstruction * createFirstActiveLane (ArrayRef< VPValue * > Masks, DebugLoc DL=DebugLoc::getUnknown(), const Twine &Name="")
VPInstruction * createLastActiveLane (ArrayRef< VPValue * > Masks, DebugLoc DL=DebugLoc::getUnknown(), const Twine &Name="")
VPInstruction * createOverflowingOp (unsigned Opcode, ArrayRef< VPValue * > Operands, VPRecipeWithIRFlags::WrapFlagsTy WrapFlags={false, false}, DebugLoc DL=DebugLoc::getUnknown(), const Twine &Name="")
VPInstruction * createNot (VPValue *Operand, DebugLoc DL=DebugLoc::getUnknown(), const Twine &Name="")
VPInstruction * createAnd (VPValue *LHS, VPValue *RHS, DebugLoc DL=DebugLoc::getUnknown(), const Twine &Name="")
VPInstruction * createOr (VPValue *LHS, VPValue *RHS, DebugLoc DL=DebugLoc::getUnknown(), const Twine &Name="")
VPInstruction * createAdd (VPValue *LHS, VPValue *RHS, DebugLoc DL=DebugLoc::getUnknown(), const Twine &Name="", VPRecipeWithIRFlags::WrapFlagsTy WrapFlags={false, false})
VPInstruction * createSub (VPValue *LHS, VPValue *RHS, DebugLoc DL=DebugLoc::getUnknown(), const Twine &Name="", VPRecipeWithIRFlags::WrapFlagsTy WrapFlags={false, false})
VPInstruction * createLogicalAnd (VPValue *LHS, VPValue *RHS, DebugLoc DL=DebugLoc::getUnknown(), const Twine &Name="")
VPInstruction * createLogicalOr (VPValue *LHS, VPValue *RHS, DebugLoc DL=DebugLoc::getUnknown(), const Twine &Name="")
VPInstruction * createSelect (VPValue *Cond, VPValue *TrueVal, VPValue *FalseVal, DebugLoc DL=DebugLoc::getUnknown(), const Twine &Name="", std::optional< VPIRFlags > Flags=std::nullopt)
 Create a select of TrueVal and FalseVal based on Cond, using the default flags for the result type, unless Flags is set.
VPInstruction * createICmp (CmpInst::Predicate Pred, VPValue *A, VPValue *B, DebugLoc DL=DebugLoc::getUnknown(), const Twine &Name="")
 Create a new ICmp VPInstruction with predicate Pred and operands A and B.
VPInstruction * createFCmp (CmpInst::Predicate Pred, VPValue *A, VPValue *B, DebugLoc DL=DebugLoc::getUnknown(), const Twine &Name="")
 Create a new FCmp VPInstruction with predicate Pred and operands A and B.
VPInstruction * createAnyOfReduction (VPValue *ChainOp, VPValue *TrueVal, VPValue *FalseVal, DebugLoc DL=DebugLoc::getUnknown())
 Create an AnyOf reduction pattern: or-reduce ChainOp, freeze the result, then select between TrueVal and FalseVal.
VPInstruction * createPtrAdd (VPValue *Ptr, VPValue *Offset, DebugLoc DL=DebugLoc::getUnknown(), const Twine &Name="")
VPInstruction * createNoWrapPtrAdd (VPValue *Ptr, VPValue *Offset, GEPNoWrapFlags GEPFlags, DebugLoc DL=DebugLoc::getUnknown(), const Twine &Name="")
VPInstruction * createWidePtrAdd (VPValue *Ptr, VPValue *Offset, DebugLoc DL=DebugLoc::getUnknown(), const Twine &Name="")
VPPhi * createScalarPhi (ArrayRef< VPValue * > IncomingValues, DebugLoc DL=DebugLoc::getUnknown(), const Twine &Name="", std::optional< VPIRFlags > Flags=std::nullopt, Type *ResultTy=nullptr)
 Create a phi with IncomingValues, using the default flags for the result type, unless Flags is set.
VPWidenPHIRecipe * createWidenPhi (ArrayRef< VPValue * > IncomingValues, DebugLoc DL=DebugLoc::getUnknown(), const Twine &Name="")
VPValue * createElementCount (Type *Ty, ElementCount EC)
VPDerivedIVRecipe * createDerivedIV (InductionDescriptor::InductionKind Kind, FPMathOperator *FPBinOp, VPValue *Start, VPValue *Current, VPValue *Step, const VPIRFlags::WrapFlagsTy &Flags={})
 Convert Current to Start + Current * Step.
VPInstruction * createScalarCast (Instruction::CastOps Opcode, VPValue *Op, Type *ResultTy, DebugLoc DL, std::optional< VPIRFlags > Flags=std::nullopt, const VPIRMetadata &Metadata={})
VPInstruction * createScalarIntrinsic (Intrinsic::ID IntrinsicID, ArrayRef< VPValue * > Operands, Type *ResultTy, DebugLoc DL)
 Create a scalar call to the intrinsic IntrinsicID with Operands, and result type ResultTy.
VPInstruction * createVScale (Type *ResultTy, DebugLoc DL=DebugLoc::getUnknown())
 Create a scalar llvm.vscale call.
VPValue * createScalarZExtOrTrunc (VPValue *Op, Type *ResultTy, DebugLoc DL)
VPValue * createScalarSExtOrTrunc (VPValue *Op, Type *ResultTy, DebugLoc DL)
VPInstruction * createFreeze (VPValue *Op, DebugLoc DL=DebugLoc::getUnknown(), const Twine &Name="")
VPWidenCastRecipe * createWidenCast (Instruction::CastOps Opcode, VPValue *Op, Type *ResultTy)
VPScalarIVStepsRecipe * createScalarIVSteps (Instruction::BinaryOps InductionOpcode, FPMathOperator *FPBinOp, VPValue *IV, VPValue *Step, VPValue *VF, DebugLoc DL)
VPExpandSCEVRecipe * createExpandSCEV (const SCEV *Expr)
VPVectorPointerRecipe * createVectorPointer (VPValue *Ptr, Type *SourceElementTy, VPValue *Stride, GEPNoWrapFlags GEPFlags, DebugLoc DL)
VPSingleDefRecipe * createConsecutiveVectorPointer (VPValue *Ptr, Type *SourceElementTy, bool Reverse, DebugLoc DL)
 Create a vector pointer recipe for a consecutive memory access to Ptr with element type SourceElementTy.
VPWidenMemIntrinsicRecipe * createWidenMemIntrinsic (Intrinsic::ID VectorIntrinsicID, ArrayRef< VPValue * > CallArguments, Type *Ty, Align Alignment, const VPIRMetadata &MD, DebugLoc DL)
VPWidenLoadRecipe * createWidenLoad (LoadInst &Load, VPValue *Addr, VPValue *Mask, bool Consecutive, const VPIRMetadata &Metadata, DebugLoc DL)
 Create a recipe widening Load, loading from Addr with Mask (may be null).
VPWidenStoreRecipe * createWidenStore (StoreInst &Store, VPValue *Addr, VPValue *StoredVal, VPValue *Mask, bool Consecutive, const VPIRMetadata &Metadata, DebugLoc DL)
 Create a recipe widening Store, storing StoredVal to Addr with Mask (may be null).

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, 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 VPI in BB at InsertPt if BB is set.
VPInstruction * createInstruction (unsigned Opcode, ArrayRef< VPValue * > Operands, const VPIRMetadata &MD, DebugLoc DL, const Twine &Name="")

Detailed Description

template<typename InserterTy>
class llvm::VPBuilderBase< InserterTy >

VPlan-based builder utility similar to IRBuilder.

Recipes are inserted via InserterTy.

Definition at line 111 of file LoopVectorizationPlanner.h.

Constructor & Destructor Documentation

◆ VPBuilderBase() [1/4]

template<typename InserterTy>
llvm::VPBuilderBase< InserterTy >::VPBuilderBase ( )
default

◆ VPBuilderBase() [2/4]

template<typename InserterTy>
llvm::VPBuilderBase< InserterTy >::VPBuilderBase ( const VPInsertPoint & IP)
inline

Definition at line 168 of file LoopVectorizationPlanner.h.

◆ VPBuilderBase() [3/4]

template<typename InserterTy>
llvm::VPBuilderBase< InserterTy >::VPBuilderBase ( InserterTy Inserter)
inline

Definition at line 169 of file LoopVectorizationPlanner.h.

◆ VPBuilderBase() [4/4]

template<typename InserterTy>
llvm::VPBuilderBase< InserterTy >::VPBuilderBase ( VPBasicBlock * TheBB,
VPBasicBlock::iterator IP )
inline

Definition at line 170 of file LoopVectorizationPlanner.h.

Member Function Documentation

◆ createAdd()

template<typename InserterTy>
VPInstruction * llvm::VPBuilderBase< InserterTy >::createAdd ( VPValue * LHS,
VPValue * RHS,
DebugLoc DL = DebugLoc::getUnknown(),
const Twine & Name = "",
VPRecipeWithIRFlags::WrapFlagsTy WrapFlags = {false, false} )
inline

◆ createAnd()

template<typename InserterTy>
VPInstruction * llvm::VPBuilderBase< InserterTy >::createAnd ( VPValue * LHS,
VPValue * RHS,
DebugLoc DL = DebugLoc::getUnknown(),
const Twine & Name = "" )
inline

◆ createAnyOfReduction()

template<typename InserterTy>
VPInstruction * llvm::VPBuilderBase< InserterTy >::createAnyOfReduction ( VPValue * ChainOp,
VPValue * TrueVal,
VPValue * FalseVal,
DebugLoc DL = DebugLoc::getUnknown() )
inline

Create an AnyOf reduction pattern: or-reduce ChainOp, freeze the result, then select between TrueVal and FalseVal.

Definition at line 354 of file LoopVectorizationPlanner.h.

Referenced by llvm::VPlanTransforms::optimizeFindIVReductions().

◆ createConsecutiveVectorPointer()

template<typename InserterTy>
VPSingleDefRecipe * llvm::VPBuilderBase< InserterTy >::createConsecutiveVectorPointer ( VPValue * Ptr,
Type * SourceElementTy,
bool Reverse,
DebugLoc DL )
inline

Create a vector pointer recipe for a consecutive memory access to Ptr with element type SourceElementTy.

Definition at line 541 of file LoopVectorizationPlanner.h.

◆ createDerivedIV()

template<typename InserterTy>
VPDerivedIVRecipe * llvm::VPBuilderBase< InserterTy >::createDerivedIV ( InductionDescriptor::InductionKind Kind,
FPMathOperator * FPBinOp,
VPValue * Start,
VPValue * Current,
VPValue * Step,
const VPIRFlags::WrapFlagsTy & Flags = {} )
inline

Convert Current to Start + Current * Step.

Definition at line 430 of file LoopVectorizationPlanner.h.

Referenced by tryToComputeEndValueForInduction().

◆ createElementCount()

template<typename InserterTy>
VPValue * llvm::VPBuilderBase< InserterTy >::createElementCount ( Type * Ty,
ElementCount EC )
inline

Definition at line 409 of file LoopVectorizationPlanner.h.

◆ createExpandSCEV()

template<typename InserterTy>
VPExpandSCEVRecipe * llvm::VPBuilderBase< InserterTy >::createExpandSCEV ( const SCEV * Expr)
inline

Definition at line 528 of file LoopVectorizationPlanner.h.

◆ createFCmp()

template<typename InserterTy>
VPInstruction * llvm::VPBuilderBase< InserterTy >::createFCmp ( CmpInst::Predicate Pred,
VPValue * A,
VPValue * B,
DebugLoc DL = DebugLoc::getUnknown(),
const Twine & Name = "" )
inline

Create a new FCmp VPInstruction with predicate Pred and operands A and B.

Definition at line 342 of file LoopVectorizationPlanner.h.

Referenced by llvm::VPlanTransforms::handleMaxMinNumReductions().

◆ createFirstActiveLane()

template<typename InserterTy>
VPInstruction * llvm::VPBuilderBase< InserterTy >::createFirstActiveLane ( ArrayRef< VPValue * > Masks,
DebugLoc DL = DebugLoc::getUnknown(),
const Twine & Name = "" )
inline

◆ createFreeze()

template<typename InserterTy>
VPInstruction * llvm::VPBuilderBase< InserterTy >::createFreeze ( VPValue * Op,
DebugLoc DL = DebugLoc::getUnknown(),
const Twine & Name = "" )
inline

◆ createICmp()

template<typename InserterTy>
VPInstruction * llvm::VPBuilderBase< InserterTy >::createICmp ( CmpInst::Predicate Pred,
VPValue * A,
VPValue * B,
DebugLoc DL = DebugLoc::getUnknown(),
const Twine & Name = "" )
inline

◆ createInstruction()

template<typename InserterTy>
VPInstruction * llvm::VPBuilderBase< InserterTy >::createInstruction ( unsigned Opcode,
ArrayRef< VPValue * > Operands,
const VPIRMetadata & MD,
DebugLoc DL,
const Twine & Name = "" )
inlineprotected

◆ createLastActiveLane()

template<typename InserterTy>
VPInstruction * llvm::VPBuilderBase< InserterTy >::createLastActiveLane ( ArrayRef< VPValue * > Masks,
DebugLoc DL = DebugLoc::getUnknown(),
const Twine & Name = "" )
inline

Definition at line 246 of file LoopVectorizationPlanner.h.

◆ createLogicalAnd()

template<typename InserterTy>
VPInstruction * llvm::VPBuilderBase< InserterTy >::createLogicalAnd ( VPValue * LHS,
VPValue * RHS,
DebugLoc DL = DebugLoc::getUnknown(),
const Twine & Name = "" )
inline

◆ createLogicalOr()

template<typename InserterTy>
VPInstruction * llvm::VPBuilderBase< InserterTy >::createLogicalOr ( VPValue * LHS,
VPValue * RHS,
DebugLoc DL = DebugLoc::getUnknown(),
const Twine & Name = "" )
inline

◆ createNaryOp() [1/4]

template<typename InserterTy>
VPInstruction * llvm::VPBuilderBase< InserterTy >::createNaryOp ( unsigned Opcode,
ArrayRef< VPValue * > Operands,
const VPIRFlags & Flags,
DebugLoc DL = DebugLoc::getUnknown(),
const Twine & Name = "" )
inline

Definition at line 219 of file LoopVectorizationPlanner.h.

◆ createNaryOp() [2/4]

template<typename InserterTy>
VPInstruction * llvm::VPBuilderBase< InserterTy >::createNaryOp ( unsigned Opcode,
ArrayRef< VPValue * > Operands,
DebugLoc DL,
const Twine & Name = "" )
inline

Definition at line 215 of file LoopVectorizationPlanner.h.

◆ createNaryOp() [3/4]

◆ createNaryOp() [4/4]

template<typename InserterTy>
VPInstruction * llvm::VPBuilderBase< InserterTy >::createNaryOp ( unsigned Opcode,
ArrayRef< VPValue * > Operands,
Type * ResultTy,
const VPIRFlags & Flags = {},
DebugLoc DL = DebugLoc::getUnknown(),
const Twine & Name = "" )
inline

Definition at line 227 of file LoopVectorizationPlanner.h.

◆ createNot()

◆ createNoWrapPtrAdd()

template<typename InserterTy>
VPInstruction * llvm::VPBuilderBase< InserterTy >::createNoWrapPtrAdd ( VPValue * Ptr,
VPValue * Offset,
GEPNoWrapFlags GEPFlags,
DebugLoc DL = DebugLoc::getUnknown(),
const Twine & Name = "" )
inline

Definition at line 373 of file LoopVectorizationPlanner.h.

Referenced by llvm::VPBuilderBase<>::createPtrAdd().

◆ createOr()

template<typename InserterTy>
VPInstruction * llvm::VPBuilderBase< InserterTy >::createOr ( VPValue * LHS,
VPValue * RHS,
DebugLoc DL = DebugLoc::getUnknown(),
const Twine & Name = "" )
inline

◆ createOverflowingOp()

template<typename InserterTy>
VPInstruction * llvm::VPBuilderBase< InserterTy >::createOverflowingOp ( unsigned Opcode,
ArrayRef< VPValue * > Operands,
VPRecipeWithIRFlags::WrapFlagsTy WrapFlags = {false, false},
DebugLoc DL = DebugLoc::getUnknown(),
const Twine & Name = "" )
inline

◆ createPtrAdd()

template<typename InserterTy>
VPInstruction * llvm::VPBuilderBase< InserterTy >::createPtrAdd ( VPValue * Ptr,
VPValue * Offset,
DebugLoc DL = DebugLoc::getUnknown(),
const Twine & Name = "" )
inline

Definition at line 367 of file LoopVectorizationPlanner.h.

◆ createScalarCast()

template<typename InserterTy>
VPInstruction * llvm::VPBuilderBase< InserterTy >::createScalarCast ( Instruction::CastOps Opcode,
VPValue * Op,
Type * ResultTy,
DebugLoc DL,
std::optional< VPIRFlags > Flags = std::nullopt,
const VPIRMetadata & Metadata = {} )
inline

◆ createScalarIntrinsic()

template<typename InserterTy>
VPInstruction * llvm::VPBuilderBase< InserterTy >::createScalarIntrinsic ( Intrinsic::ID IntrinsicID,
ArrayRef< VPValue * > Operands,
Type * ResultTy,
DebugLoc DL )
inline

Create a scalar call to the intrinsic IntrinsicID with Operands, and result type ResultTy.

Definition at line 449 of file LoopVectorizationPlanner.h.

Referenced by llvm::VPBuilderBase<>::createVScale().

◆ createScalarIVSteps()

template<typename InserterTy>
VPScalarIVStepsRecipe * llvm::VPBuilderBase< InserterTy >::createScalarIVSteps ( Instruction::BinaryOps InductionOpcode,
FPMathOperator * FPBinOp,
VPValue * IV,
VPValue * Step,
VPValue * VF,
DebugLoc DL )
inline

Definition at line 520 of file LoopVectorizationPlanner.h.

◆ createScalarPhi()

template<typename InserterTy>
VPPhi * llvm::VPBuilderBase< InserterTy >::createScalarPhi ( ArrayRef< VPValue * > IncomingValues,
DebugLoc DL = DebugLoc::getUnknown(),
const Twine & Name = "",
std::optional< VPIRFlags > Flags = std::nullopt,
Type * ResultTy = nullptr )
inline

Create a phi with IncomingValues, using the default flags for the result type, unless Flags is set.

Definition at line 391 of file LoopVectorizationPlanner.h.

Referenced by addInitialSkeleton(), llvm::VPlanTransforms::convertToVariableLengthStep(), llvm::VPRegionBlock::dissolveToCFGLoop(), preparePlanForMainVectorLoop(), and llvm::vputils::reconstructSSA().

◆ createScalarSExtOrTrunc()

template<typename InserterTy>
VPValue * llvm::VPBuilderBase< InserterTy >::createScalarSExtOrTrunc ( VPValue * Op,
Type * ResultTy,
DebugLoc DL )
inline

Definition at line 476 of file LoopVectorizationPlanner.h.

◆ createScalarZExtOrTrunc()

template<typename InserterTy>
VPValue * llvm::VPBuilderBase< InserterTy >::createScalarZExtOrTrunc ( VPValue * Op,
Type * ResultTy,
DebugLoc DL )
inline

◆ createSelect()

template<typename InserterTy>
VPInstruction * llvm::VPBuilderBase< InserterTy >::createSelect ( VPValue * Cond,
VPValue * TrueVal,
VPValue * FalseVal,
DebugLoc DL = DebugLoc::getUnknown(),
const Twine & Name = "",
std::optional< VPIRFlags > Flags = std::nullopt )
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 317 of file LoopVectorizationPlanner.h.

Referenced by llvm::VPBuilderBase<>::createAnyOfReduction(), llvm::VPlanTransforms::handleMaxMinNumReductions(), and llvm::VPlanTransforms::optimizeFindIVReductions().

◆ createSingleScalarOp()

template<typename InserterTy>
VPSingleDefRecipe * llvm::VPBuilderBase< InserterTy >::createSingleScalarOp ( unsigned Opcode,
ArrayRef< VPValue * > Operands,
VPValue * Mask,
const VPIRFlags & Flags,
const VPIRMetadata & Metadata,
DebugLoc DL,
Instruction * UV )
inlinestatic

Create a single-scalar recipe with Opcode and Operands without inserting it.

Definition at line 502 of file LoopVectorizationPlanner.h.

◆ createSub()

template<typename InserterTy>
VPInstruction * llvm::VPBuilderBase< InserterTy >::createSub ( VPValue * LHS,
VPValue * RHS,
DebugLoc DL = DebugLoc::getUnknown(),
const Twine & Name = "",
VPRecipeWithIRFlags::WrapFlagsTy WrapFlags = {false, false} )
inline

Definition at line 296 of file LoopVectorizationPlanner.h.

◆ createVectorPointer()

template<typename InserterTy>
VPVectorPointerRecipe * llvm::VPBuilderBase< InserterTy >::createVectorPointer ( VPValue * Ptr,
Type * SourceElementTy,
VPValue * Stride,
GEPNoWrapFlags GEPFlags,
DebugLoc DL )
inline

◆ createVScale()

template<typename InserterTy>
VPInstruction * llvm::VPBuilderBase< InserterTy >::createVScale ( Type * ResultTy,
DebugLoc DL = DebugLoc::getUnknown() )
inline

Create a scalar llvm.vscale call.

Definition at line 460 of file LoopVectorizationPlanner.h.

Referenced by llvm::VPBuilderBase<>::createElementCount().

◆ createWidenCast()

template<typename InserterTy>
VPWidenCastRecipe * llvm::VPBuilderBase< InserterTy >::createWidenCast ( Instruction::CastOps Opcode,
VPValue * Op,
Type * ResultTy )
inline

◆ createWidenLoad()

template<typename InserterTy>
VPWidenLoadRecipe * llvm::VPBuilderBase< InserterTy >::createWidenLoad ( LoadInst & Load,
VPValue * Addr,
VPValue * Mask,
bool Consecutive,
const VPIRMetadata & Metadata,
DebugLoc DL )
inline

Create a recipe widening Load, loading from Addr with Mask (may be null).

Definition at line 572 of file LoopVectorizationPlanner.h.

Referenced by narrowInterleaveGroupOp().

◆ createWidenMemIntrinsic()

template<typename InserterTy>
VPWidenMemIntrinsicRecipe * llvm::VPBuilderBase< InserterTy >::createWidenMemIntrinsic ( Intrinsic::ID VectorIntrinsicID,
ArrayRef< VPValue * > CallArguments,
Type * Ty,
Align Alignment,
const VPIRMetadata & MD,
DebugLoc DL )
inline

Definition at line 563 of file LoopVectorizationPlanner.h.

◆ createWidenPhi()

template<typename InserterTy>
VPWidenPHIRecipe * llvm::VPBuilderBase< InserterTy >::createWidenPhi ( ArrayRef< VPValue * > IncomingValues,
DebugLoc DL = DebugLoc::getUnknown(),
const Twine & Name = "" )
inline

Definition at line 403 of file LoopVectorizationPlanner.h.

Referenced by expandVPWidenIntOrFpInduction().

◆ createWidenStore()

template<typename InserterTy>
VPWidenStoreRecipe * llvm::VPBuilderBase< InserterTy >::createWidenStore ( StoreInst & Store,
VPValue * Addr,
VPValue * StoredVal,
VPValue * Mask,
bool Consecutive,
const VPIRMetadata & Metadata,
DebugLoc DL )
inline

Create a recipe widening Store, storing StoredVal to Addr with Mask (may be null).

Definition at line 582 of file LoopVectorizationPlanner.h.

◆ createWidePtrAdd()

template<typename InserterTy>
VPInstruction * llvm::VPBuilderBase< InserterTy >::createWidePtrAdd ( VPValue * Ptr,
VPValue * Offset,
DebugLoc DL = DebugLoc::getUnknown(),
const Twine & Name = "" )
inline

Definition at line 381 of file LoopVectorizationPlanner.h.

◆ getPlan()

◆ getRecipeAtInsertPoint()

template<typename InserterTy>
VPRecipeBase * llvm::VPBuilderBase< InserterTy >::getRecipeAtInsertPoint ( ) const
inline

Get the recipe at the current insert point or nullptr if the insert point is the end of the block.

Definition at line 175 of file LoopVectorizationPlanner.h.

Referenced by llvm::VPlanTransforms::handleMaxMinNumReductions().

◆ getToInsertAfter()

template<typename InserterTy>
VPBuilderBase llvm::VPBuilderBase< InserterTy >::getToInsertAfter ( VPRecipeBase * R)
inlinestatic

Create a builder to insert after R.

Definition at line 178 of file LoopVectorizationPlanner.h.

◆ insert()

template<typename InserterTy>
template<typename T>
T * llvm::VPBuilderBase< InserterTy >::insert ( T * R)
inline

Insert R at the current insertion point. Returns R unchanged.

Definition at line 196 of file LoopVectorizationPlanner.h.

Referenced by llvm::VPRecipeBuilder::replaceWithFinalIfReductionStore().

◆ restoreIP()

template<typename InserterTy>
void llvm::VPBuilderBase< InserterTy >::restoreIP ( VPInsertPoint IP)
inline

Sets the current insert point to a previously-saved location.

Definition at line 183 of file LoopVectorizationPlanner.h.

◆ setInsertPoint() [1/2]

template<typename InserterTy>
void llvm::VPBuilderBase< InserterTy >::setInsertPoint ( const VPInsertPoint & IP)
inline

◆ setInsertPoint() [2/2]

template<typename InserterTy>
void llvm::VPBuilderBase< InserterTy >::setInsertPoint ( VPBasicBlock * TheBB,
VPBasicBlock::iterator IP )
inline

Definition at line 190 of file LoopVectorizationPlanner.h.

◆ tryInsertInstruction()


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