|
| 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).
|
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.