LLVM 24.0.0git
llvm::InstrumentationIRBuilder Struct Reference

#include "llvm/Transforms/Utils/Instrumentation.h"

Inheritance diagram for llvm::InstrumentationIRBuilder:
[legend]

Public Member Functions

 InstrumentationIRBuilder (Instruction *IP)
 InstrumentationIRBuilder (BasicBlock *BB, BasicBlock::iterator It)
Public Member Functions inherited from llvm::IRBuilder< FolderTy, InserterTy >
 IRBuilder (LLVMContext &C, FolderTy Folder, InserterTy Inserter, MDNode *FPMathTag=nullptr, ArrayRef< OperandBundleDef > OpBundles={})
 IRBuilder (LLVMContext &C, FolderTy Folder, MDNode *FPMathTag=nullptr, ArrayRef< OperandBundleDef > OpBundles={})
 IRBuilder (LLVMContext &C, MDNode *FPMathTag=nullptr, ArrayRef< OperandBundleDef > OpBundles={})
 IRBuilder (BasicBlock *TheBB, FolderTy Folder, MDNode *FPMathTag=nullptr, ArrayRef< OperandBundleDef > OpBundles={})
 IRBuilder (BasicBlock *TheBB, MDNode *FPMathTag=nullptr, ArrayRef< OperandBundleDef > OpBundles={})
 IRBuilder (Instruction *IP, MDNode *FPMathTag=nullptr, ArrayRef< OperandBundleDef > OpBundles={})
 IRBuilder (BasicBlock *TheBB, BasicBlock::iterator IP, FolderTy Folder, MDNode *FPMathTag=nullptr, ArrayRef< OperandBundleDef > OpBundles={})
 IRBuilder (BasicBlock *TheBB, BasicBlock::iterator IP, MDNode *FPMathTag=nullptr, ArrayRef< OperandBundleDef > OpBundles={})
 IRBuilder (const IRBuilder &)=delete
 Avoid copying the full IRBuilder.
InserterTy & getInserter ()
const InserterTy & getInserter () const
Public Member Functions inherited from llvm::IRBuilderBase
 IRBuilderBase (LLVMContext &context, const IRBuilderFolder &Folder, const IRBuilderDefaultInserter &Inserter, MDNode *FPMathTag, ArrayRef< OperandBundleDef > OpBundles)
template<typename InstTy>
InstTy * Insert (InstTy *I, const Twine &Name="") const
 Insert and return the specified instruction.
Constant * Insert (Constant *C, const Twine &="") const
 No-op overload to handle constants.
Value * Insert (Value *V, const Twine &Name="") const
void ClearInsertionPoint ()
 Clear the insertion point: created instructions will not be inserted into a block.
BasicBlock * GetInsertBlock () const
BasicBlock::iterator GetInsertPoint () const
LLVMContext & getContext () const
void SetInsertPoint (BasicBlock *TheBB)
 This specifies that created instructions should be appended to the end of the specified block.
void SetInsertPoint (Instruction *I)
 This specifies that created instructions should be inserted before the specified instruction.
void SetInsertPoint (BasicBlock *TheBB, BasicBlock::iterator IP)
 This specifies that created instructions should be inserted at the specified point.
void SetInsertPoint (BasicBlock::iterator IP)
 This specifies that created instructions should be inserted at the specified point, but also requires that IP is dereferencable.
void SetInsertPointPastAllocas (Function *F)
 This specifies that created instructions should inserted at the beginning end of the specified function, but after already existing static alloca instructions that are at the start.
void SetCurrentDebugLocation (const DebugLoc &L)
 Set location information used by debugging information.
void SetCurrentDebugLocation (DebugLoc &&L)
 Set location information used by debugging information.
LLVM_ABI DebugLoc getCurrentDebugLocation () const
 Get location information used by debugging information.
LLVM_ABI void SetInstDebugLocation (Instruction *I) const
 If this builder has a current debug location, set it on the specified instruction.
LLVM_ABI Type * getCurrentFunctionReturnType () const
 Get the return type of the current function that we're emitting into.
InsertPoint saveIP () const
 Returns the current insert point.
InsertPoint saveAndClearIP ()
 Returns the current insert point, clearing it in the process.
void restoreIP (InsertPoint IP)
 Sets the current insert point to a previously-saved location.
MDNode * getDefaultFPMathTag () const
 Get the floating point math metadata being used.
FastMathFlags getFastMathFlags () const
 Get the flags to be applied to created floating point ops.
FastMathFlags & getFastMathFlags ()
void clearFastMathFlags ()
 Clear the fast-math flags.
void setDefaultFPMathTag (MDNode *FPMathTag)
 Set the floating point math metadata to be used.
void setFastMathFlags (FastMathFlags NewFMF)
 Set the fast-math flags to be used with generated fp-math operators.
void setIsFPConstrained (bool IsCon)
 Enable/Disable use of constrained floating point math.
bool getIsFPConstrained ()
 Query for the use of constrained floating point math.
void setDefaultConstrainedExcept (fp::ExceptionBehavior NewExcept)
 Set the exception handling to be used with constrained floating point.
void setDefaultConstrainedRounding (RoundingMode NewRounding)
 Set the rounding mode handling to be used with constrained floating point.
fp::ExceptionBehavior getDefaultConstrainedExcept ()
 Get the exception handling used with constrained floating point.
RoundingMode getDefaultConstrainedRounding ()
 Get the rounding mode handling used with constrained floating point.
void setConstrainedFPFunctionAttr ()
void setConstrainedFPCallAttr (CallBase *I)
void setDefaultOperandBundles (ArrayRef< OperandBundleDef > OpBundles)
LLVM_ABI GlobalVariable * CreateGlobalString (StringRef Str, const Twine &Name="", unsigned AddressSpace=0, Module *M=nullptr, bool AddNull=true)
 Make a new global variable with initializer type i8*.
ConstantInt * getInt1 (bool V)
 Get a constant value representing either true or false.
ConstantInt * getTrue ()
 Get the constant value for i1 true.
ConstantInt * getFalse ()
 Get the constant value for i1 false.
ConstantInt * getInt8 (uint8_t C)
 Get a constant 8-bit value.
ConstantInt * getInt16 (uint16_t C)
 Get a constant 16-bit value.
ConstantInt * getInt32 (uint32_t C)
 Get a constant 32-bit value.
ConstantInt * getInt64 (uint64_t C)
 Get a constant 64-bit value.
ConstantInt * getIntN (unsigned N, uint64_t C)
 Get a constant N-bit value, zero extended from a 64-bit value.
ConstantInt * getInt (const APInt &AI)
 Get a constant integer value.
ByteType * getByte8Ty ()
 Fetch the type representing an 8-bit byte.
ByteType * getByte16Ty ()
 Fetch the type representing a 16-bit byte.
ByteType * getByte32Ty ()
 Fetch the type representing a 32-bit byte.
ByteType * getByte64Ty ()
 Fetch the type representing a 64-bit byte.
ByteType * getByte128Ty ()
 Fetch the type representing a 128-bit byte.
ByteType * getByteNTy (unsigned N)
 Fetch the type representing an N-bit byte.
IntegerType * getInt1Ty ()
 Fetch the type representing a single bit.
IntegerType * getInt8Ty ()
 Fetch the type representing an 8-bit integer.
IntegerType * getInt16Ty ()
 Fetch the type representing a 16-bit integer.
IntegerType * getInt32Ty ()
 Fetch the type representing a 32-bit integer.
IntegerType * getInt64Ty ()
 Fetch the type representing a 64-bit integer.
IntegerType * getInt128Ty ()
 Fetch the type representing a 128-bit integer.
IntegerType * getIntNTy (unsigned N)
 Fetch the type representing an N-bit integer.
Type * getHalfTy ()
 Fetch the type representing a 16-bit floating point value.
Type * getBFloatTy ()
 Fetch the type representing a 16-bit brain floating point value.
Type * getFloatTy ()
 Fetch the type representing a 32-bit floating point value.
Type * getDoubleTy ()
 Fetch the type representing a 64-bit floating point value.
Type * getVoidTy ()
 Fetch the type representing void.
PointerType * getPtrTy (unsigned AddrSpace=0)
 Fetch the type representing a pointer.
ByteType * getBytePtrTy (const DataLayout &DL, unsigned AddrSpace=0)
 Fetch the type of a byte with size at least as big as that of a pointer in the given address space.
IntegerType * getIntPtrTy (const DataLayout &DL, unsigned AddrSpace=0)
 Fetch the type of an integer with size at least as big as that of a pointer in the given address space.
IntegerType * getIndexTy (const DataLayout &DL, unsigned AddrSpace)
 Fetch the type of an integer that should be used to index GEP operations within AddressSpace.
CallInst * CreateMemSet (Value *Ptr, Value *Val, uint64_t Size, MaybeAlign Align, bool isVolatile=false, const AAMDNodes &AAInfo=AAMDNodes())
 Create and insert a memset to the specified pointer and the specified value.
LLVM_ABI CallInst * CreateMemSet (Value *Ptr, Value *Val, Value *Size, MaybeAlign Align, bool isVolatile=false, const AAMDNodes &AAInfo=AAMDNodes())
LLVM_ABI CallInst * CreateMemSetInline (Value *Dst, MaybeAlign DstAlign, Value *Val, Value *Size, bool IsVolatile=false, const AAMDNodes &AAInfo=AAMDNodes())
CallInst * CreateElementUnorderedAtomicMemSet (Value *Ptr, Value *Val, uint64_t Size, Align Alignment, uint32_t ElementSize, const AAMDNodes &AAInfo=AAMDNodes())
 Create and insert an element unordered-atomic memset of the region of memory starting at the given pointer to the given value.
LLVM_ABI CallInst * CreateMalloc (Type *IntPtrTy, Value *AllocSize, Value *ArraySize, ArrayRef< OperandBundleDef > OpB, Function *MallocF=nullptr, const Twine &Name="")
LLVM_ABI CallInst * CreateMalloc (Type *IntPtrTy, Value *AllocSize, Value *ArraySize, Function *MallocF=nullptr, const Twine &Name="")
 CreateMalloc - Generate the IR for a call to malloc:
LLVM_ABI CallInst * CreateFree (Value *Source, ArrayRef< OperandBundleDef > Bundles={})
 Generate the IR for a call to the builtin free function.
LLVM_ABI CallInst * CreateElementUnorderedAtomicMemSet (Value *Ptr, Value *Val, Value *Size, Align Alignment, uint32_t ElementSize, const AAMDNodes &AAInfo=AAMDNodes())
CallInst * CreateMemCpy (Value *Dst, MaybeAlign DstAlign, Value *Src, MaybeAlign SrcAlign, uint64_t Size, bool isVolatile=false, const AAMDNodes &AAInfo=AAMDNodes())
 Create and insert a memcpy between the specified pointers.
LLVM_ABI CallInst * CreateMemTransferInst (Intrinsic::ID IntrID, Value *Dst, MaybeAlign DstAlign, Value *Src, MaybeAlign SrcAlign, Value *Size, bool isVolatile=false, const AAMDNodes &AAInfo=AAMDNodes())
CallInst * CreateMemCpy (Value *Dst, MaybeAlign DstAlign, Value *Src, MaybeAlign SrcAlign, Value *Size, bool isVolatile=false, const AAMDNodes &AAInfo=AAMDNodes())
CallInst * CreateMemCpyInline (Value *Dst, MaybeAlign DstAlign, Value *Src, MaybeAlign SrcAlign, Value *Size, bool isVolatile=false, const AAMDNodes &AAInfo=AAMDNodes())
LLVM_ABI CallInst * CreateElementUnorderedAtomicMemCpy (Value *Dst, Align DstAlign, Value *Src, Align SrcAlign, Value *Size, uint32_t ElementSize, const AAMDNodes &AAInfo=AAMDNodes())
 Create and insert an element unordered-atomic memcpy between the specified pointers.
CallInst * CreateMemMove (Value *Dst, MaybeAlign DstAlign, Value *Src, MaybeAlign SrcAlign, uint64_t Size, bool isVolatile=false, const AAMDNodes &AAInfo=AAMDNodes())
CallInst * CreateMemMove (Value *Dst, MaybeAlign DstAlign, Value *Src, MaybeAlign SrcAlign, Value *Size, bool isVolatile=false, const AAMDNodes &AAInfo=AAMDNodes())
LLVM_ABI CallInst * CreateElementUnorderedAtomicMemMove (Value *Dst, Align DstAlign, Value *Src, Align SrcAlign, Value *Size, uint32_t ElementSize, const AAMDNodes &AAInfo=AAMDNodes())
 Create and insert an element unordered-atomic memmove between the specified pointers.
LLVM_ABI Value * CreateFAddReduce (Value *Acc, Value *Src)
 Create a sequential vector fadd reduction intrinsic of the source vector.
LLVM_ABI Value * CreateFMulReduce (Value *Acc, Value *Src)
 Create a sequential vector fmul reduction intrinsic of the source vector.
LLVM_ABI Value * CreateAddReduce (Value *Src)
 Create a vector int add reduction intrinsic of the source vector.
LLVM_ABI Value * CreateMulReduce (Value *Src)
 Create a vector int mul reduction intrinsic of the source vector.
LLVM_ABI Value * CreateAndReduce (Value *Src)
 Create a vector int AND reduction intrinsic of the source vector.
LLVM_ABI Value * CreateOrReduce (Value *Src)
 Create a vector int OR reduction intrinsic of the source vector.
LLVM_ABI Value * CreateXorReduce (Value *Src)
 Create a vector int XOR reduction intrinsic of the source vector.
LLVM_ABI Value * CreateIntMaxReduce (Value *Src, bool IsSigned=false)
 Create a vector integer max reduction intrinsic of the source vector.
LLVM_ABI Value * CreateIntMinReduce (Value *Src, bool IsSigned=false)
 Create a vector integer min reduction intrinsic of the source vector.
LLVM_ABI Value * CreateFPMaxReduce (Value *Src)
 Create a vector float max reduction intrinsic of the source vector.
LLVM_ABI Value * CreateFPMinReduce (Value *Src)
 Create a vector float min reduction intrinsic of the source vector.
LLVM_ABI Value * CreateFPMaximumReduce (Value *Src)
 Create a vector float maximum reduction intrinsic of the source vector.
LLVM_ABI Value * CreateFPMinimumReduce (Value *Src)
 Create a vector float minimum reduction intrinsic of the source vector.
LLVM_ABI Value * CreateFPMaximumNumReduce (Value *Src)
 Create a vector float maximum reduction intrinsic of the source vector.
LLVM_ABI Value * CreateFPMinimumNumReduce (Value *Src)
 Create a vector float minimum reduction intrinsic of the source vector.
LLVM_ABI CallInst * CreateLifetimeStart (Value *Ptr)
 Create a lifetime.start intrinsic.
LLVM_ABI CallInst * CreateLifetimeEnd (Value *Ptr)
 Create a lifetime.end intrinsic.
LLVM_ABI CallInst * CreateInvariantStart (Value *Ptr, ConstantInt *Size=nullptr)
 Create a call to invariant.start intrinsic.
LLVM_ABI CallInst * CreateThreadLocalAddress (Value *Ptr)
 Create a call to llvm.threadlocal.address intrinsic.
LLVM_ABI CallInst * CreateMaskedLoad (Type *Ty, Value *Ptr, Align Alignment, Value *Mask, Value *PassThru=nullptr, const Twine &Name="")
 Create a call to Masked Load intrinsic.
LLVM_ABI CallInst * CreateMaskedStore (Value *Val, Value *Ptr, Align Alignment, Value *Mask)
 Create a call to Masked Store intrinsic.
LLVM_ABI CallInst * CreateMaskedGather (Type *Ty, Value *Ptrs, Align Alignment, Value *Mask=nullptr, Value *PassThru=nullptr, const Twine &Name="")
 Create a call to Masked Gather intrinsic.
LLVM_ABI CallInst * CreateMaskedScatter (Value *Val, Value *Ptrs, Align Alignment, Value *Mask=nullptr)
 Create a call to Masked Scatter intrinsic.
LLVM_ABI CallInst * CreateMaskedExpandLoad (Type *Ty, Value *Ptr, MaybeAlign Align, Value *Mask=nullptr, Value *PassThru=nullptr, const Twine &Name="")
 Create a call to Masked Expand Load intrinsic.
LLVM_ABI CallInst * CreateMaskedCompressStore (Value *Val, Value *Ptr, MaybeAlign Align, Value *Mask=nullptr)
 Create a call to Masked Compress Store intrinsic.
Value * getAllOnesMask (ElementCount NumElts)
 Return an all true boolean vector (mask) with NumElts lanes.
LLVM_ABI CallInst * CreateAssumption (Value *Cond)
 Create an assume intrinsic call that allows the optimizer to assume that the provided condition will be true.
LLVM_ABI CallInst * CreateAssumption (ArrayRef< OperandBundleDef > OpBundles)
 Create an assume intrinsic call that allows the optimizer to assume that the provided operand bundles hold.
LLVM_ABI Instruction * CreateNoAliasScopeDeclaration (Value *Scope)
 Create a llvm.experimental.noalias.scope.decl intrinsic call.
Instruction * CreateNoAliasScopeDeclaration (MDNode *ScopeTag)
LLVM_ABI CallInst * CreateGCStatepointCall (uint64_t ID, uint32_t NumPatchBytes, FunctionCallee ActualCallee, ArrayRef< Value * > CallArgs, std::optional< ArrayRef< Value * > > DeoptArgs, ArrayRef< Value * > GCArgs, const Twine &Name="")
 Create a call to the experimental.gc.statepoint intrinsic to start a new statepoint sequence.
LLVM_ABI CallInst * CreateGCStatepointCall (uint64_t ID, uint32_t NumPatchBytes, FunctionCallee ActualCallee, uint32_t Flags, ArrayRef< Value * > CallArgs, std::optional< ArrayRef< Use > > TransitionArgs, std::optional< ArrayRef< Use > > DeoptArgs, ArrayRef< Value * > GCArgs, const Twine &Name="")
 Create a call to the experimental.gc.statepoint intrinsic to start a new statepoint sequence.
LLVM_ABI CallInst * CreateGCStatepointCall (uint64_t ID, uint32_t NumPatchBytes, FunctionCallee ActualCallee, ArrayRef< Use > CallArgs, std::optional< ArrayRef< Value * > > DeoptArgs, ArrayRef< Value * > GCArgs, const Twine &Name="")
 Conveninence function for the common case when CallArgs are filled in using ArrayRef(CS.arg_begin(), CS.arg_end()); Use needs to be .get()'ed to get the Value pointer.
LLVM_ABI InvokeInst * CreateGCStatepointInvoke (uint64_t ID, uint32_t NumPatchBytes, FunctionCallee ActualInvokee, BasicBlock *NormalDest, BasicBlock *UnwindDest, ArrayRef< Value * > InvokeArgs, std::optional< ArrayRef< Value * > > DeoptArgs, ArrayRef< Value * > GCArgs, const Twine &Name="")
 Create an invoke to the experimental.gc.statepoint intrinsic to start a new statepoint sequence.
LLVM_ABI InvokeInst * CreateGCStatepointInvoke (uint64_t ID, uint32_t NumPatchBytes, FunctionCallee ActualInvokee, BasicBlock *NormalDest, BasicBlock *UnwindDest, uint32_t Flags, ArrayRef< Value * > InvokeArgs, std::optional< ArrayRef< Use > > TransitionArgs, std::optional< ArrayRef< Use > > DeoptArgs, ArrayRef< Value * > GCArgs, const Twine &Name="")
 Create an invoke to the experimental.gc.statepoint intrinsic to start a new statepoint sequence.
LLVM_ABI InvokeInst * CreateGCStatepointInvoke (uint64_t ID, uint32_t NumPatchBytes, FunctionCallee ActualInvokee, BasicBlock *NormalDest, BasicBlock *UnwindDest, ArrayRef< Use > InvokeArgs, std::optional< ArrayRef< Value * > > DeoptArgs, ArrayRef< Value * > GCArgs, const Twine &Name="")
LLVM_ABI CallInst * CreateGCResult (Instruction *Statepoint, Type *ResultType, const Twine &Name="")
 Create a call to the experimental.gc.result intrinsic to extract the result from a call wrapped in a statepoint.
LLVM_ABI CallInst * CreateGCRelocate (Instruction *Statepoint, int BaseOffset, int DerivedOffset, Type *ResultType, const Twine &Name="")
 Create a call to the experimental.gc.relocate intrinsics to project the relocated value of one pointer from the statepoint.
LLVM_ABI CallInst * CreateGCGetPointerBase (Value *DerivedPtr, const Twine &Name="")
 Create a call to the experimental.gc.pointer.base intrinsic to get the base pointer for the specified derived pointer.
LLVM_ABI CallInst * CreateGCGetPointerOffset (Value *DerivedPtr, const Twine &Name="")
 Create a call to the experimental.gc.get.pointer.offset intrinsic to get the offset of the specified derived pointer from its base.
Value * CreateVScale (Type *Ty, const Twine &Name="")
 Create a call to llvm.vscale.<Ty>().
LLVM_ABI Value * CreateElementCount (Type *Ty, ElementCount EC)
 Create an expression which evaluates to the number of elements in EC at runtime.
LLVM_ABI Value * CreateTypeSize (Type *Ty, TypeSize Size)
 Create an expression which evaluates to the number of units in Size at runtime.
LLVM_ABI Value * CreateAllocationSize (Type *DestTy, AllocaInst *AI)
 Get allocation size of an alloca as a runtime Value* (handles both static and dynamic allocas and vscale factor).
LLVM_ABI Value * CreateStepVector (Type *DstType, const Twine &Name="")
 Creates a vector of type DstType with the linear sequence <0, 1, ...>
LLVM_ABI Value * CreateUnaryIntrinsic (Intrinsic::ID ID, Value *Op, FMFSource FMFSource={}, const Twine &Name="")
 Create a call to intrinsic ID with 1 operand which is mangled on its type.
LLVM_ABI Value * CreateBinaryIntrinsic (Intrinsic::ID ID, Value *LHS, Value *RHS, FMFSource FMFSource={}, const Twine &Name="")
 Create a call to intrinsic ID with 2 operands which is mangled on the first type.
LLVM_ABI CallInst * CreateIntrinsicWithoutFolding (Intrinsic::ID ID, ArrayRef< Type * > OverloadTypes, ArrayRef< Value * > Args, FMFSource FMFSource={}, const Twine &Name="", ArrayRef< OperandBundleDef > OpBundles={})
 Create a call to intrinsic ID with Args, mangled using OverloadTypes.
LLVM_ABI CallInst * CreateIntrinsicWithoutFolding (Type *RetTy, Intrinsic::ID ID, ArrayRef< Value * > Args, FMFSource FMFSource={}, const Twine &Name="")
 Create a call to intrinsic ID with RetTy and Args.
CallInst * CreateIntrinsicWithoutFolding (Intrinsic::ID ID, ArrayRef< Value * > Args, FMFSource FMFSource={}, const Twine &Name="")
 Create a call to non-overloaded intrinsic ID with Args.
LLVM_ABI Value * CreateIntrinsic (Intrinsic::ID ID, ArrayRef< Type * > OverloadTypes, ArrayRef< Value * > Args, FMFSource FMFSource={}, const Twine &Name="", ArrayRef< OperandBundleDef > OpBundles={}, function_ref< void(CallInst *)> SetFn=[](CallInst *) {})
 Variant to create a possibly constant-folded intrinsic.
LLVM_ABI Value * CreateIntrinsic (Type *RetTy, Intrinsic::ID ID, ArrayRef< Value * > Args, FMFSource FMFSource={}, const Twine &Name="", function_ref< void(CallInst *)> SetFn=[](CallInst *) {})
 Variant to create a possibly constant-folded intrinsic.
Value * CreateIntrinsic (Intrinsic::ID ID, ArrayRef< Value * > Args, FMFSource FMFSource={}, const Twine &Name="", function_ref< void(CallInst *)> SetFn=[](CallInst *) {})
 Variant to create a possibly constant-folded intrinsic.
Value * CreateFAbs (Value *V, FMFSource FMFSource={}, const Twine &Name="")
 Create call to the fabs intrinsic.
Value * CreateMinNum (Value *LHS, Value *RHS, FMFSource FMFSource={}, const Twine &Name="")
 Create call to the minnum intrinsic.
Value * CreateMaxNum (Value *LHS, Value *RHS, FMFSource FMFSource={}, const Twine &Name="")
 Create call to the maxnum intrinsic.
Value * CreateMinimum (Value *LHS, Value *RHS, const Twine &Name="")
 Create call to the minimum intrinsic.
Value * CreateMaximum (Value *LHS, Value *RHS, const Twine &Name="")
 Create call to the maximum intrinsic.
Value * CreateMinimumNum (Value *LHS, Value *RHS, const Twine &Name="")
 Create call to the minimumnum intrinsic.
Value * CreateMaximumNum (Value *LHS, Value *RHS, const Twine &Name="")
 Create call to the maximum intrinsic.
Value * CreateCopySign (Value *LHS, Value *RHS, FMFSource FMFSource={}, const Twine &Name="")
 Create call to the copysign intrinsic.
Value * CreateLdexp (Value *Src, Value *Exp, FMFSource FMFSource={}, const Twine &Name="")
 Create call to the ldexp intrinsic.
Value * CreateFMA (Value *Factor1, Value *Factor2, Value *Summand, FMFSource FMFSource={}, const Twine &Name="")
 Create call to the fma intrinsic.
Value * CreateArithmeticFence (Value *Val, Type *DstType, const Twine &Name="")
 Create a call to the arithmetic_fence intrinsic.
Value * CreateExtractVector (Type *DstType, Value *SrcVec, Value *Idx, const Twine &Name="")
 Create a call to the vector.extract intrinsic.
Value * CreateExtractVector (Type *DstType, Value *SrcVec, uint64_t Idx, const Twine &Name="")
 Create a call to the vector.extract intrinsic.
Value * CreateInsertVector (Type *DstType, Value *SrcVec, Value *SubVec, Value *Idx, const Twine &Name="")
 Create a call to the vector.insert intrinsic.
Value * CreateInsertVector (Type *DstType, Value *SrcVec, Value *SubVec, uint64_t Idx, const Twine &Name="")
 Create a call to the vector.extract intrinsic.
CallInst * CreateStackSave (const Twine &Name="")
 Create a call to llvm.stacksave.
CallInst * CreateStackRestore (Value *Ptr, const Twine &Name="")
 Create a call to llvm.stackrestore.
Value * CreateCountTrailingZeroElems (Type *ResTy, Value *Mask, bool ZeroIsPoison=true, const Twine &Name="")
 Create a call to llvm.experimental_cttz_elts.
ReturnInst * CreateRetVoid ()
 Create a 'ret void' instruction.
ReturnInst * CreateRet (Value *V)
 Create a 'ret <val>' instruction.
ReturnInst * CreateAggregateRet (ArrayRef< Value * > RetVals)
 Create a sequence of N insertvalue instructions, with one Value from the RetVals array each, that build a aggregate return value one value at a time, and a ret instruction to return the resulting aggregate value.
UncondBrInst * CreateBr (BasicBlock *Dest)
 Create an unconditional 'br label X' instruction.
CondBrInst * CreateCondBr (Value *Cond, BasicBlock *True, BasicBlock *False, MDNode *BranchWeights=nullptr, MDNode *Unpredictable=nullptr)
 Create a conditional 'br Cond, TrueDest, FalseDest' instruction.
CondBrInst * CreateCondBr (Value *Cond, BasicBlock *True, BasicBlock *False, Instruction *MDSrc)
 Create a conditional 'br Cond, TrueDest, FalseDest' instruction.
SwitchInst * CreateSwitch (Value *V, BasicBlock *Dest, unsigned NumCases=10, MDNode *BranchWeights=nullptr, MDNode *Unpredictable=nullptr)
 Create a switch instruction with the specified value, default dest, and with a hint for the number of cases that will be added (for efficient allocation).
IndirectBrInst * CreateIndirectBr (Value *Addr, unsigned NumDests=10)
 Create an indirect branch instruction with the specified address operand, with an optional hint for the number of destinations that will be added (for efficient allocation).
InvokeInst * CreateInvoke (FunctionType *Ty, Value *Callee, BasicBlock *NormalDest, BasicBlock *UnwindDest, ArrayRef< Value * > Args, ArrayRef< OperandBundleDef > OpBundles, const Twine &Name="")
 Create an invoke instruction.
InvokeInst * CreateInvoke (FunctionType *Ty, Value *Callee, BasicBlock *NormalDest, BasicBlock *UnwindDest, ArrayRef< Value * > Args={}, const Twine &Name="")
InvokeInst * CreateInvoke (FunctionCallee Callee, BasicBlock *NormalDest, BasicBlock *UnwindDest, ArrayRef< Value * > Args, ArrayRef< OperandBundleDef > OpBundles, const Twine &Name="")
InvokeInst * CreateInvoke (FunctionCallee Callee, BasicBlock *NormalDest, BasicBlock *UnwindDest, ArrayRef< Value * > Args={}, const Twine &Name="")
CallBrInst * CreateCallBr (FunctionType *Ty, Value *Callee, BasicBlock *DefaultDest, ArrayRef< BasicBlock * > IndirectDests, ArrayRef< Value * > Args={}, const Twine &Name="")
 Create a callbr instruction.
CallBrInst * CreateCallBr (FunctionType *Ty, Value *Callee, BasicBlock *DefaultDest, ArrayRef< BasicBlock * > IndirectDests, ArrayRef< Value * > Args, ArrayRef< OperandBundleDef > OpBundles, const Twine &Name="")
CallBrInst * CreateCallBr (FunctionCallee Callee, BasicBlock *DefaultDest, ArrayRef< BasicBlock * > IndirectDests, ArrayRef< Value * > Args={}, const Twine &Name="")
CallBrInst * CreateCallBr (FunctionCallee Callee, BasicBlock *DefaultDest, ArrayRef< BasicBlock * > IndirectDests, ArrayRef< Value * > Args, ArrayRef< OperandBundleDef > OpBundles, const Twine &Name="")
ResumeInst * CreateResume (Value *Exn)
CleanupReturnInst * CreateCleanupRet (CleanupPadInst *CleanupPad, BasicBlock *UnwindBB=nullptr)
CatchSwitchInst * CreateCatchSwitch (Value *ParentPad, BasicBlock *UnwindBB, unsigned NumHandlers, const Twine &Name="")
CatchPadInst * CreateCatchPad (Value *ParentPad, ArrayRef< Value * > Args, const Twine &Name="")
CleanupPadInst * CreateCleanupPad (Value *ParentPad, ArrayRef< Value * > Args={}, const Twine &Name="")
CatchReturnInst * CreateCatchRet (CatchPadInst *CatchPad, BasicBlock *BB)
UnreachableInst * CreateUnreachable ()
Value * CreateAdd (Value *LHS, Value *RHS, const Twine &Name="", bool HasNUW=false, bool HasNSW=false)
Value * CreateNSWAdd (Value *LHS, Value *RHS, const Twine &Name="")
Value * CreateNUWAdd (Value *LHS, Value *RHS, const Twine &Name="")
Value * CreateSub (Value *LHS, Value *RHS, const Twine &Name="", bool HasNUW=false, bool HasNSW=false)
Value * CreateNSWSub (Value *LHS, Value *RHS, const Twine &Name="")
Value * CreateNUWSub (Value *LHS, Value *RHS, const Twine &Name="")
Value * CreateMul (Value *LHS, Value *RHS, const Twine &Name="", bool HasNUW=false, bool HasNSW=false)
Value * CreateNSWMul (Value *LHS, Value *RHS, const Twine &Name="")
Value * CreateNUWMul (Value *LHS, Value *RHS, const Twine &Name="")
Value * CreateUDiv (Value *LHS, Value *RHS, const Twine &Name="", bool isExact=false)
Value * CreateExactUDiv (Value *LHS, Value *RHS, const Twine &Name="")
Value * CreateSDiv (Value *LHS, Value *RHS, const Twine &Name="", bool isExact=false)
Value * CreateExactSDiv (Value *LHS, Value *RHS, const Twine &Name="")
Value * CreateURem (Value *LHS, Value *RHS, const Twine &Name="")
Value * CreateSRem (Value *LHS, Value *RHS, const Twine &Name="")
Value * CreateShl (Value *LHS, Value *RHS, const Twine &Name="", bool HasNUW=false, bool HasNSW=false)
Value * CreateShl (Value *LHS, const APInt &RHS, const Twine &Name="", bool HasNUW=false, bool HasNSW=false)
Value * CreateShl (Value *LHS, uint64_t RHS, const Twine &Name="", bool HasNUW=false, bool HasNSW=false)
Value * CreateLShr (Value *LHS, Value *RHS, const Twine &Name="", bool isExact=false)
Value * CreateLShr (Value *LHS, const APInt &RHS, const Twine &Name="", bool isExact=false)
Value * CreateLShr (Value *LHS, uint64_t RHS, const Twine &Name="", bool isExact=false)
Value * CreateAShr (Value *LHS, Value *RHS, const Twine &Name="", bool isExact=false)
Value * CreateAShr (Value *LHS, const APInt &RHS, const Twine &Name="", bool isExact=false)
Value * CreateAShr (Value *LHS, uint64_t RHS, const Twine &Name="", bool isExact=false)
Value * CreateAnd (Value *LHS, Value *RHS, const Twine &Name="")
Value * CreateAnd (Value *LHS, const APInt &RHS, const Twine &Name="")
Value * CreateAnd (Value *LHS, uint64_t RHS, const Twine &Name="")
Value * CreateAnd (ArrayRef< Value * > Ops)
Value * CreateOr (Value *LHS, Value *RHS, const Twine &Name="", bool IsDisjoint=false)
Value * CreateOr (Value *LHS, const APInt &RHS, const Twine &Name="")
Value * CreateOr (Value *LHS, uint64_t RHS, const Twine &Name="")
Value * CreateOr (ArrayRef< Value * > Ops)
Value * CreateDisjointOr (Value *LHS, Value *RHS, const Twine &Name="")
Value * CreateXor (Value *LHS, Value *RHS, const Twine &Name="")
Value * CreateXor (Value *LHS, const APInt &RHS, const Twine &Name="")
Value * CreateXor (Value *LHS, uint64_t RHS, const Twine &Name="")
Value * CreateFAdd (Value *L, Value *R, const Twine &Name="", MDNode *FPMD=nullptr)
Value * CreateFAddFMF (Value *L, Value *R, FMFSource FMFSource, const Twine &Name="", MDNode *FPMD=nullptr)
Value * CreateFSub (Value *L, Value *R, const Twine &Name="", MDNode *FPMD=nullptr)
Value * CreateFSubFMF (Value *L, Value *R, FMFSource FMFSource, const Twine &Name="", MDNode *FPMD=nullptr)
Value * CreateFMul (Value *L, Value *R, const Twine &Name="", MDNode *FPMD=nullptr)
Value * CreateFMulFMF (Value *L, Value *R, FMFSource FMFSource, const Twine &Name="", MDNode *FPMD=nullptr)
Value * CreateFDiv (Value *L, Value *R, const Twine &Name="", MDNode *FPMD=nullptr)
Value * CreateFDivFMF (Value *L, Value *R, FMFSource FMFSource, const Twine &Name="", MDNode *FPMD=nullptr)
Value * CreateFRem (Value *L, Value *R, const Twine &Name="", MDNode *FPMD=nullptr)
Value * CreateFRemFMF (Value *L, Value *R, FMFSource FMFSource, const Twine &Name="", MDNode *FPMD=nullptr)
Value * CreateBinOp (Instruction::BinaryOps Opc, Value *LHS, Value *RHS, const Twine &Name="", MDNode *FPMathTag=nullptr)
Value * CreateBinOpFMF (Instruction::BinaryOps Opc, Value *LHS, Value *RHS, FMFSource FMFSource, const Twine &Name="", MDNode *FPMathTag=nullptr)
Value * CreateNoWrapBinOp (Instruction::BinaryOps Opc, Value *LHS, Value *RHS, bool IsNUW, bool IsNSW, const Twine &Name="")
Value * CreateExactBinOp (Instruction::BinaryOps Opc, Value *LHS, Value *RHS, bool IsExact, const Twine &Name="")
Value * CreateLogicalAnd (Value *Cond1, Value *Cond2, const Twine &Name="", Instruction *MDFrom=nullptr)
Value * CreateLogicalOr (Value *Cond1, Value *Cond2, const Twine &Name="", Instruction *MDFrom=nullptr)
Value * CreateLogicalOp (Instruction::BinaryOps Opc, Value *Cond1, Value *Cond2, const Twine &Name="", Instruction *MDFrom=nullptr)
Value * CreateLogicalOr (ArrayRef< Value * > Ops)
LLVM_ABI CallInst * CreateConstrainedFPIntrinsic (Intrinsic::ID ID, ArrayRef< Type * > Types, ArrayRef< Value * > Args, FMFSource FMFSource, const Twine &Name, MDNode *FPMathTag=nullptr, std::optional< RoundingMode > Rounding=std::nullopt, std::optional< fp::ExceptionBehavior > Except=std::nullopt)
 This function is like CreateIntrinsic for constrained fp intrinsics.
LLVM_ABI CallInst * CreateConstrainedFPBinOp (Intrinsic::ID ID, Value *L, Value *R, FMFSource FMFSource={}, const Twine &Name="", MDNode *FPMathTag=nullptr, std::optional< RoundingMode > Rounding=std::nullopt, std::optional< fp::ExceptionBehavior > Except=std::nullopt)
LLVM_ABI CallInst * CreateConstrainedFPUnroundedBinOp (Intrinsic::ID ID, Value *L, Value *R, FMFSource FMFSource={}, const Twine &Name="", MDNode *FPMathTag=nullptr, std::optional< fp::ExceptionBehavior > Except=std::nullopt)
Value * CreateNeg (Value *V, const Twine &Name="", bool HasNSW=false)
Value * CreateNSWNeg (Value *V, const Twine &Name="")
Value * CreateFNeg (Value *V, const Twine &Name="", MDNode *FPMathTag=nullptr)
Value * CreateFNegFMF (Value *V, FMFSource FMFSource, const Twine &Name="", MDNode *FPMathTag=nullptr)
Value * CreateNot (Value *V, const Twine &Name="")
Value * CreateUnOp (Instruction::UnaryOps Opc, Value *V, const Twine &Name="", MDNode *FPMathTag=nullptr)
LLVM_ABI Value * CreateNAryOp (unsigned Opc, ArrayRef< Value * > Ops, const Twine &Name="", MDNode *FPMathTag=nullptr)
 Create either a UnaryOperator or BinaryOperator depending on Opc.
AllocaInst * CreateAlloca (Type *Ty, unsigned AddrSpace, Value *ArraySize=nullptr, const Twine &Name="")
AllocaInst * CreateAlloca (Type *Ty, Value *ArraySize=nullptr, const Twine &Name="")
CallInst * CreateStructuredAlloca (Type *BaseType, const Twine &Name="")
LoadInst * CreateLoad (Type *Ty, Value *Ptr, const char *Name)
 Provided to resolve 'CreateLoad(Ty, Ptr, "...")' correctly, instead of converting the string to 'bool' for the isVolatile parameter.
LoadInst * CreateLoad (Type *Ty, Value *Ptr, const Twine &Name="")
LoadInst * CreateLoad (Type *Ty, Value *Ptr, bool isVolatile, const Twine &Name="")
LoadInst * CreateLoad (Type *Ty, Value *Ptr, const LoadStoreInstProperties &Props, const Twine &Name="")
StoreInst * CreateStore (Value *Val, Value *Ptr, bool isVolatile=false)
StoreInst * CreateStore (Value *Val, Value *Ptr, const LoadStoreInstProperties &Props)
LoadInst * CreateAlignedLoad (Type *Ty, Value *Ptr, MaybeAlign Align, const char *Name)
LoadInst * CreateAlignedLoad (Type *Ty, Value *Ptr, MaybeAlign Align, const Twine &Name="")
LoadInst * CreateAlignedLoad (Type *Ty, Value *Ptr, MaybeAlign Align, bool isVolatile, const Twine &Name="")
StoreInst * CreateAlignedStore (Value *Val, Value *Ptr, MaybeAlign Align, bool isVolatile=false)
FenceInst * CreateFence (AtomicOrdering Ordering, SyncScope::ID SSID=SyncScope::System, const Twine &Name="")
AtomicCmpXchgInst * CreateAtomicCmpXchg (Value *Ptr, Value *Cmp, Value *New, MaybeAlign Align, AtomicOrdering SuccessOrdering, AtomicOrdering FailureOrdering, SyncScope::ID SSID=SyncScope::System)
AtomicRMWInst * CreateAtomicRMW (AtomicRMWInst::BinOp Op, Value *Ptr, Value *Val, MaybeAlign Align, AtomicOrdering Ordering, SyncScope::ID SSID=SyncScope::System, bool Elementwise=false)
Value * CreateStructuredGEP (Type *BaseType, Value *PtrBase, ArrayRef< Value * > Indices, const Twine &Name="")
Value * CreateGEP (Type *Ty, Value *Ptr, ArrayRef< Value * > IdxList, const Twine &Name="", GEPNoWrapFlags NW=GEPNoWrapFlags::none())
Value * CreateInBoundsGEP (Type *Ty, Value *Ptr, ArrayRef< Value * > IdxList, const Twine &Name="")
Value * CreateConstGEP1_32 (Type *Ty, Value *Ptr, unsigned Idx0, const Twine &Name="")
Value * CreateConstInBoundsGEP1_32 (Type *Ty, Value *Ptr, unsigned Idx0, const Twine &Name="")
Value * CreateConstGEP2_32 (Type *Ty, Value *Ptr, unsigned Idx0, unsigned Idx1, const Twine &Name="", GEPNoWrapFlags NWFlags=GEPNoWrapFlags::none())
Value * CreateConstInBoundsGEP2_32 (Type *Ty, Value *Ptr, unsigned Idx0, unsigned Idx1, const Twine &Name="")
Value * CreateConstGEP1_64 (Type *Ty, Value *Ptr, uint64_t Idx0, const Twine &Name="")
Value * CreateConstInBoundsGEP1_64 (Type *Ty, Value *Ptr, uint64_t Idx0, const Twine &Name="")
Value * CreateConstGEP2_64 (Type *Ty, Value *Ptr, uint64_t Idx0, uint64_t Idx1, const Twine &Name="")
Value * CreateConstInBoundsGEP2_64 (Type *Ty, Value *Ptr, uint64_t Idx0, uint64_t Idx1, const Twine &Name="")
Value * CreateStructGEP (Type *Ty, Value *Ptr, unsigned Idx, const Twine &Name="")
Value * CreatePtrAdd (Value *Ptr, Value *Offset, const Twine &Name="", GEPNoWrapFlags NW=GEPNoWrapFlags::none())
Value * CreateInBoundsPtrAdd (Value *Ptr, Value *Offset, const Twine &Name="")
Value * CreateTrunc (Value *V, Type *DestTy, const Twine &Name="", bool IsNUW=false, bool IsNSW=false)
Value * CreateZExt (Value *V, Type *DestTy, const Twine &Name="", bool IsNonNeg=false)
Value * CreateSExt (Value *V, Type *DestTy, const Twine &Name="")
Value * CreateZExtOrTrunc (Value *V, Type *DestTy, const Twine &Name="")
 Create a ZExt or Trunc from the integer value V to DestTy.
Value * CreateSExtOrTrunc (Value *V, Type *DestTy, const Twine &Name="")
 Create a SExt or Trunc from the integer value V to DestTy.
Value * CreateFPToUI (Value *V, Type *DestTy, const Twine &Name="")
Value * CreateFPToSI (Value *V, Type *DestTy, const Twine &Name="")
Value * CreateUIToFP (Value *V, Type *DestTy, const Twine &Name="", bool IsNonNeg=false, MDNode *FPMathTag=nullptr)
Value * CreateSIToFP (Value *V, Type *DestTy, const Twine &Name="", MDNode *FPMathTag=nullptr)
Value * CreateFPTrunc (Value *V, Type *DestTy, const Twine &Name="", MDNode *FPMathTag=nullptr)
Value * CreateFPTruncFMF (Value *V, Type *DestTy, FMFSource FMFSource, const Twine &Name="", MDNode *FPMathTag=nullptr)
Value * CreateFPExt (Value *V, Type *DestTy, const Twine &Name="", MDNode *FPMathTag=nullptr)
Value * CreateFPExtFMF (Value *V, Type *DestTy, FMFSource FMFSource, const Twine &Name="", MDNode *FPMathTag=nullptr)
Value * CreatePtrToAddr (Value *V, const Twine &Name="")
Value * CreatePtrToInt (Value *V, Type *DestTy, const Twine &Name="")
Value * CreateIntToPtr (Value *V, Type *DestTy, const Twine &Name="")
Value * CreateBitCast (Value *V, Type *DestTy, const Twine &Name="")
Value * CreateAddrSpaceCast (Value *V, Type *DestTy, const Twine &Name="", bool IsNonNull=false)
Value * CreateZExtOrBitCast (Value *V, Type *DestTy, const Twine &Name="")
Value * CreateSExtOrBitCast (Value *V, Type *DestTy, const Twine &Name="")
Value * CreateTruncOrBitCast (Value *V, Type *DestTy, const Twine &Name="")
Value * CreateCast (Instruction::CastOps Op, Value *V, Type *DestTy, const Twine &Name="", MDNode *FPMathTag=nullptr, FMFSource FMFSource={})
Value * CreatePointerCast (Value *V, Type *DestTy, const Twine &Name="")
Value * CreatePointerBitCastOrAddrSpaceCast (Value *V, Type *DestTy, const Twine &Name="")
Value * CreateIntCast (Value *V, Type *DestTy, bool isSigned, const Twine &Name="")
Value * CreateBitOrPointerCast (Value *V, Type *DestTy, const Twine &Name="")
Value * CreateFPCast (Value *V, Type *DestTy, const Twine &Name="", MDNode *FPMathTag=nullptr)
LLVM_ABI CallInst * CreateConstrainedFPCast (Intrinsic::ID ID, Value *V, Type *DestTy, FMFSource FMFSource={}, const Twine &Name="", MDNode *FPMathTag=nullptr, std::optional< RoundingMode > Rounding=std::nullopt, std::optional< fp::ExceptionBehavior > Except=std::nullopt)
Value * CreateIntCast (Value *, Type *, const char *)=delete
LLVM_ABI Value * CreateAggregateCast (Value *V, Type *DestTy)
 Cast between aggregate types that must have identical structure but may differ in their leaf types.
LLVM_ABI Value * CreateBitPreservingCastChain (const DataLayout &DL, Value *V, Type *NewTy)
 Create a chain of casts to convert V to NewTy, preserving the bit pattern of V.
Value * CreateICmpEQ (Value *LHS, Value *RHS, const Twine &Name="")
Value * CreateICmpNE (Value *LHS, Value *RHS, const Twine &Name="")
Value * CreateICmpUGT (Value *LHS, Value *RHS, const Twine &Name="")
Value * CreateICmpUGE (Value *LHS, Value *RHS, const Twine &Name="")
Value * CreateICmpULT (Value *LHS, Value *RHS, const Twine &Name="")
Value * CreateICmpULE (Value *LHS, Value *RHS, const Twine &Name="")
Value * CreateICmpSGT (Value *LHS, Value *RHS, const Twine &Name="")
Value * CreateICmpSGE (Value *LHS, Value *RHS, const Twine &Name="")
Value * CreateICmpSLT (Value *LHS, Value *RHS, const Twine &Name="")
Value * CreateICmpSLE (Value *LHS, Value *RHS, const Twine &Name="")
Value * CreateFCmpOEQ (Value *LHS, Value *RHS, const Twine &Name="", MDNode *FPMathTag=nullptr)
Value * CreateFCmpOGT (Value *LHS, Value *RHS, const Twine &Name="", MDNode *FPMathTag=nullptr)
Value * CreateFCmpOGE (Value *LHS, Value *RHS, const Twine &Name="", MDNode *FPMathTag=nullptr)
Value * CreateFCmpOLT (Value *LHS, Value *RHS, const Twine &Name="", MDNode *FPMathTag=nullptr)
Value * CreateFCmpOLE (Value *LHS, Value *RHS, const Twine &Name="", MDNode *FPMathTag=nullptr)
Value * CreateFCmpONE (Value *LHS, Value *RHS, const Twine &Name="", MDNode *FPMathTag=nullptr)
Value * CreateFCmpORD (Value *LHS, Value *RHS, const Twine &Name="", MDNode *FPMathTag=nullptr)
Value * CreateFCmpUNO (Value *LHS, Value *RHS, const Twine &Name="", MDNode *FPMathTag=nullptr)
Value * CreateFCmpUEQ (Value *LHS, Value *RHS, const Twine &Name="", MDNode *FPMathTag=nullptr)
Value * CreateFCmpUGT (Value *LHS, Value *RHS, const Twine &Name="", MDNode *FPMathTag=nullptr)
Value * CreateFCmpUGE (Value *LHS, Value *RHS, const Twine &Name="", MDNode *FPMathTag=nullptr)
Value * CreateFCmpULT (Value *LHS, Value *RHS, const Twine &Name="", MDNode *FPMathTag=nullptr)
Value * CreateFCmpULE (Value *LHS, Value *RHS, const Twine &Name="", MDNode *FPMathTag=nullptr)
Value * CreateFCmpUNE (Value *LHS, Value *RHS, const Twine &Name="", MDNode *FPMathTag=nullptr)
Value * CreateICmp (CmpInst::Predicate P, Value *LHS, Value *RHS, const Twine &Name="")
Value * CreateFCmp (CmpInst::Predicate P, Value *LHS, Value *RHS, const Twine &Name="", MDNode *FPMathTag=nullptr)
Value * CreateFCmpFMF (CmpInst::Predicate P, Value *LHS, Value *RHS, FMFSource FMFSource, const Twine &Name="", MDNode *FPMathTag=nullptr)
Value * CreateCmp (CmpInst::Predicate Pred, Value *LHS, Value *RHS, const Twine &Name="", MDNode *FPMathTag=nullptr)
Value * CreateFCmpS (CmpInst::Predicate P, Value *LHS, Value *RHS, const Twine &Name="", MDNode *FPMathTag=nullptr)
LLVM_ABI CallInst * CreateConstrainedFPCmp (Intrinsic::ID ID, CmpInst::Predicate P, Value *L, Value *R, const Twine &Name="", std::optional< fp::ExceptionBehavior > Except=std::nullopt)
PHINode * CreatePHI (Type *Ty, unsigned NumReservedValues, const Twine &Name="")
CallInst * CreateCall (FunctionType *FTy, Value *Callee, ArrayRef< Value * > Args={}, const Twine &Name="", MDNode *FPMathTag=nullptr)
CallInst * CreateCall (FunctionType *FTy, Value *Callee, ArrayRef< Value * > Args, FMFSource FMFSource, const Twine &Name="", MDNode *FPMathTag=nullptr)
CallInst * CreateCall (FunctionType *FTy, Value *Callee, ArrayRef< Value * > Args, ArrayRef< OperandBundleDef > OpBundles, const Twine &Name="", MDNode *FPMathTag=nullptr)
CallInst * CreateCall (FunctionType *FTy, Value *Callee, ArrayRef< Value * > Args, ArrayRef< OperandBundleDef > OpBundles, FMFSource FMFSource, const Twine &Name="", MDNode *FPMathTag=nullptr)
CallInst * CreateCall (FunctionCallee Callee, ArrayRef< Value * > Args={}, const Twine &Name="", MDNode *FPMathTag=nullptr)
CallInst * CreateCall (FunctionCallee Callee, ArrayRef< Value * > Args, FMFSource FMFSource, const Twine &Name="", MDNode *FPMathTag=nullptr)
CallInst * CreateCall (FunctionCallee Callee, ArrayRef< Value * > Args, ArrayRef< OperandBundleDef > OpBundles, const Twine &Name="", MDNode *FPMathTag=nullptr)
CallInst * CreateCall (FunctionCallee Callee, ArrayRef< Value * > Args, ArrayRef< OperandBundleDef > OpBundles, FMFSource FMFSource, const Twine &Name="", MDNode *FPMathTag=nullptr)
LLVM_ABI CallInst * CreateConstrainedFPCall (Function *Callee, ArrayRef< Value * > Args, const Twine &Name="", std::optional< RoundingMode > Rounding=std::nullopt, std::optional< fp::ExceptionBehavior > Except=std::nullopt)
LLVM_ABI Value * CreateSelectWithUnknownProfile (Value *C, Value *True, Value *False, StringRef PassName, const Twine &Name="")
LLVM_ABI Value * CreateSelectFMFWithUnknownProfile (Value *C, Value *True, Value *False, FMFSource FMFSource, StringRef PassName, const Twine &Name="")
LLVM_ABI Value * CreateSelect (Value *C, Value *True, Value *False, const Twine &Name="", Instruction *MDFrom=nullptr)
LLVM_ABI Value * CreateSelectFMF (Value *C, Value *True, Value *False, FMFSource FMFSource, const Twine &Name="", Instruction *MDFrom=nullptr)
VAArgInst * CreateVAArg (Value *List, Type *Ty, const Twine &Name="")
Value * CreateExtractElement (Value *Vec, Value *Idx, const Twine &Name="")
Value * CreateExtractElement (Value *Vec, uint64_t Idx, const Twine &Name="")
Value * CreateInsertElement (Type *VecTy, Value *NewElt, Value *Idx, const Twine &Name="")
Value * CreateInsertElement (Type *VecTy, Value *NewElt, uint64_t Idx, const Twine &Name="")
Value * CreateInsertElement (Value *Vec, Value *NewElt, Value *Idx, const Twine &Name="")
Value * CreateInsertElement (Value *Vec, Value *NewElt, uint64_t Idx, const Twine &Name="")
Value * CreateShuffleVector (Value *V1, Value *V2, Value *Mask, const Twine &Name="")
Value * CreateShuffleVector (Value *V1, Value *V2, ArrayRef< int > Mask, const Twine &Name="")
 See class ShuffleVectorInst for a description of the mask representation.
Value * CreateShuffleVector (Value *V, ArrayRef< int > Mask, const Twine &Name="")
 Create a unary shuffle.
LLVM_ABI Value * CreateVectorInterleave (ArrayRef< Value * > Ops, const Twine &Name="")
Value * CreateExtractValue (Value *Agg, ArrayRef< unsigned > Idxs, const Twine &Name="")
Value * CreateInsertValue (Value *Agg, Value *Val, ArrayRef< unsigned > Idxs, const Twine &Name="")
LandingPadInst * CreateLandingPad (Type *Ty, unsigned NumClauses, const Twine &Name="")
Value * CreateFreeze (Value *V, const Twine &Name="")
Value * CreateBitInsert (Value *Base, Value *Val, Value *Offset, const Twine &Name="")
Value * CreateBitExtract (Type *Ty, Value *Src, Value *Offset, const Twine &Name="")
Value * CreateIsNull (Value *Arg, const Twine &Name="")
 Return a boolean value testing if Arg == 0.
Value * CreateIsNotNull (Value *Arg, const Twine &Name="")
 Return a boolean value testing if Arg != 0.
Value * CreateIsNeg (Value *Arg, const Twine &Name="")
 Return a boolean value testing if Arg < 0.
Value * CreateIsNotNeg (Value *Arg, const Twine &Name="")
 Return a boolean value testing if Arg > -1.
LLVM_ABI Value * CreatePtrDiff (Value *LHS, Value *RHS, const Twine &Name="", bool IsNUW=false)
 Return the difference between two pointer values.
LLVM_ABI Value * CreatePtrDiff (Type *ElemTy, Value *LHS, Value *RHS, const Twine &Name="")
 Return the difference between two pointer values, dividing out the size of the pointed-to objects.
LLVM_ABI Value * CreateLaunderInvariantGroup (Value *Ptr)
 Create a launder.invariant.group intrinsic call.
LLVM_ABI Value * CreateVectorReverse (Value *V, const Twine &Name="")
 Return a vector value that contains the vector V reversed.
LLVM_ABI Value * CreateVectorSpliceLeft (Value *V1, Value *V2, Value *Offset, const Twine &Name="")
 Create a vector.splice.left intrinsic call, or a shufflevector that produces the same result if the result type is a fixed-length vector and Offset is a constant.
Value * CreateVectorSpliceLeft (Value *V1, Value *V2, uint32_t Offset, const Twine &Name="")
LLVM_ABI Value * CreateVectorSpliceRight (Value *V1, Value *V2, Value *Offset, const Twine &Name="")
 Create a vector.splice.right intrinsic call, or a shufflevector that produces the same result if the result type is a fixed-length vector and Offset is a constant.
Value * CreateVectorSpliceRight (Value *V1, Value *V2, uint32_t Offset, const Twine &Name="")
LLVM_ABI Value * CreateVectorSplat (unsigned NumElts, Value *V, const Twine &Name="")
 Return a vector value that contains.
LLVM_ABI Value * CreateVectorSplat (ElementCount EC, Value *V, const Twine &Name="")
 Return a vector value that contains.
LLVM_ABI Value * CreatePreserveArrayAccessIndex (Type *ElTy, Value *Base, unsigned Dimension, unsigned LastIndex, MDNode *DbgInfo)
LLVM_ABI Value * CreatePreserveUnionAccessIndex (Value *Base, unsigned FieldIndex, MDNode *DbgInfo)
LLVM_ABI Value * CreatePreserveStructAccessIndex (Type *ElTy, Value *Base, unsigned Index, unsigned FieldIndex, MDNode *DbgInfo)
LLVM_ABI Value * createIsFPClass (Value *FPNum, unsigned Test)
LLVM_ABI CallInst * CreateAlignmentAssumption (const DataLayout &DL, Value *PtrValue, uint64_t Alignment, Value *OffsetValue=nullptr)
 Create an assume intrinsic call that represents an alignment assumption on the provided pointer.
LLVM_ABI CallInst * CreateAlignmentAssumption (const DataLayout &DL, Value *PtrValue, Value *Alignment, Value *OffsetValue=nullptr)
 Create an assume intrinsic call that represents an alignment assumption on the provided pointer.
LLVM_ABI CallInst * CreateDereferenceableAssumption (Value *PtrValue, Value *SizeValue)
 Create an assume intrinsic call that represents a dereferencable assumption on the provided pointer.
LLVM_ABI CallInst * CreateNonnullAssumption (Value *PtrValue)
 Create an assume intrinsic call that represents a nonnull assumption on the provided pointer.

Static Public Member Functions

static void ensureDebugInfo (IRBuilder<> &IRB, const Function &F)

Additional Inherited Members

Protected Attributes inherited from llvm::IRBuilderBase
BasicBlock * BB
BasicBlock::iterator InsertPt
LLVMContext & Context
const IRBuilderFolder & Folder
const IRBuilderDefaultInserter & Inserter
MDNode * DefaultFPMathTag
FastMathFlags FMF
bool IsFPConstrained = false
fp::ExceptionBehavior DefaultConstrainedExcept = fp::ebStrict
RoundingMode DefaultConstrainedRounding = RoundingMode::Dynamic
ArrayRef< OperandBundleDef > DefaultOperandBundles

Detailed Description

Definition at line 180 of file Instrumentation.h.

Constructor & Destructor Documentation

◆ InstrumentationIRBuilder() [1/2]

llvm::InstrumentationIRBuilder::InstrumentationIRBuilder ( Instruction * IP)
inlineexplicit

◆ InstrumentationIRBuilder() [2/2]

llvm::InstrumentationIRBuilder::InstrumentationIRBuilder ( BasicBlock * BB,
BasicBlock::iterator It )
inlineexplicit

Member Function Documentation

◆ ensureDebugInfo()


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