LLVM: llvm::VPBuilder Class Reference (original) (raw)

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

#include "[Transforms/Vectorize/LoopVectorizationPlanner.h](LoopVectorizationPlanner%5F8h%5Fsource.html)"

Public Member Functions
VPBuilder ()=default
VPBuilder (VPBasicBlock *InsertBB)
VPBuilder (VPRecipeBase *InsertPt)
VPBuilder (VPBasicBlock *TheBB, VPBasicBlock::iterator IP)
void clearInsertionPoint ()
Clear the insertion point: created instructions will not be inserted into a block.
VPBasicBlock * getInsertBlock () const
VPBasicBlock::iterator getInsertPoint () const
void restoreIP (VPInsertPoint IP)
Sets the current insert point to a previously-saved location.
void setInsertPoint (VPBasicBlock *TheBB)
This specifies that created VPInstructions should be appended to the end of the specified block.
void setInsertPoint (VPBasicBlock *TheBB, VPBasicBlock::iterator IP)
This specifies that created instructions should be inserted at the specified point.
void setInsertPoint (VPRecipeBase *IP)
This specifies that created instructions should be inserted at the specified point.
void insert (VPRecipeBase *R)
Insert R at the current insertion point.
VPInstruction * createNaryOp (unsigned Opcode, ArrayRef< VPValue * > Operands, Instruction *Inst=nullptr, const VPIRFlags &Flags={}, const VPIRMetadata &MD={}, DebugLoc DL=DebugLoc::getUnknown(), const Twine &Name="")
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 * 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 * createLogicalAnd (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< FastMathFlags > FMFs=std::nullopt)
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 * 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, const Twine &Name="")
VPValue * createElementCount (Type *Ty, ElementCount EC)
VPDerivedIVRecipe * createDerivedIV (InductionDescriptor::InductionKind Kind, FPMathOperator *FPBinOp, VPValue *Start, VPValue *Current, VPValue *Step, const Twine &Name="")
Convert the input value Current to the corresponding value of an induction with Start and Step values, using Start + Current * Step.
VPInstruction * createScalarCast (Instruction::CastOps Opcode, VPValue *Op, Type *ResultTy, DebugLoc DL, const VPIRFlags &Flags={}, const VPIRMetadata &Metadata={})
VPValue * createScalarZExtOrTrunc (VPValue *Op, Type *ResultTy, Type *SrcTy, DebugLoc DL)
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)

VPlan-based builder utility analogous to IRBuilder.

Definition at line 54 of file LoopVectorizationPlanner.h.

llvm::VPBuilder::VPBuilder ( ) default

VPBuilder() [2/4]

llvm::VPBuilder::VPBuilder ( VPBasicBlock * InsertBB) inline

VPBuilder() [3/4]

llvm::VPBuilder::VPBuilder ( VPRecipeBase * InsertPt) inline

VPBuilder() [4/4]

clearInsertionPoint()

void llvm::VPBuilder::clearInsertionPoint ( ) inline

createAnd()

createDerivedIV()

createElementCount()

createExpandSCEV()

createFCmp()

createICmp()

createLogicalAnd()

createNaryOp() [1/4]

createNaryOp() [2/4]

createNaryOp() [3/4]

Create an N-ary operation with Opcode, Operands and set Inst as its underlying Instruction.

Definition at line 153 of file LoopVectorizationPlanner.h.

Referenced by llvm::VPlanTransforms::addExitUsersForFirstOrderRecurrences(), llvm::VPlanTransforms::adjustFixedOrderRecurrences(), llvm::VPlanTransforms::attachCheckBlock(), createElementCount(), createLogicalAnd(), createSelect(), llvm::VPlanTransforms::handleMaxMinNumReductions(), llvm::VPlanTransforms::handleUncountableEarlyExit(), preparePlanForMainVectorLoop(), and llvm::VPlanTransforms::updateScalarResumePhis().

createNaryOp() [4/4]

createNot()

createNoWrapPtrAdd()

createOr()

createOverflowingOp()

createPtrAdd()

createScalarCast()

createScalarIVSteps()

createScalarPhi()

createScalarZExtOrTrunc()

createSelect()

createWidenCast()

createWidePtrAdd()

getInsertBlock()

VPBasicBlock * llvm::VPBuilder::getInsertBlock ( ) const inline

getInsertPoint()

getToInsertAfter()

insert()

restoreIP()

setInsertPoint() [1/3]

void llvm::VPBuilder::setInsertPoint ( VPBasicBlock * TheBB) inline

setInsertPoint() [2/3]

setInsertPoint() [3/3]

void llvm::VPBuilder::setInsertPoint ( VPRecipeBase * IP) inline

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