LLVM  6.0.0svn
Classes | Public Member Functions | Protected Attributes | List of all members
llvm::IRBuilderBase Class Reference

Common base class shared among various IRBuilders. More...

#include "llvm/IR/IRBuilder.h"

Inheritance diagram for llvm::IRBuilderBase:
Inheritance graph
[legend]
Collaboration diagram for llvm::IRBuilderBase:
Collaboration graph
[legend]

Classes

class  FastMathFlagGuard
 
class  InsertPoint
 InsertPoint - A saved insertion point. More...
 
class  InsertPointGuard
 

Public Member Functions

 IRBuilderBase (LLVMContext &context, MDNode *FPMathTag=nullptr, ArrayRef< OperandBundleDef > OpBundles=None)
 
void ClearInsertionPoint ()
 Clear the insertion point: created instructions will not be inserted into a block. More...
 
BasicBlockGetInsertBlock () const
 
BasicBlock::iterator GetInsertPoint () const
 
LLVMContextgetContext () const
 
void SetInsertPoint (BasicBlock *TheBB)
 This specifies that created instructions should be appended to the end of the specified block. More...
 
void SetInsertPoint (Instruction *I)
 This specifies that created instructions should be inserted before the specified instruction. More...
 
void SetInsertPoint (BasicBlock *TheBB, BasicBlock::iterator IP)
 This specifies that created instructions should be inserted at the specified point. More...
 
void SetCurrentDebugLocation (DebugLoc L)
 Set location information used by debugging information. More...
 
const DebugLocgetCurrentDebugLocation () const
 Get location information used by debugging information. More...
 
void SetInstDebugLocation (Instruction *I) const
 If this builder has a current debug location, set it on the specified instruction. More...
 
TypegetCurrentFunctionReturnType () const
 Get the return type of the current function that we're emitting into. More...
 
InsertPoint saveIP () const
 Returns the current insert point. More...
 
InsertPoint saveAndClearIP ()
 Returns the current insert point, clearing it in the process. More...
 
void restoreIP (InsertPoint IP)
 Sets the current insert point to a previously-saved location. More...
 
MDNodegetDefaultFPMathTag () const
 Get the floating point math metadata being used. More...
 
FastMathFlags getFastMathFlags () const
 Get the flags to be applied to created floating point ops. More...
 
void clearFastMathFlags ()
 Clear the fast-math flags. More...
 
void setDefaultFPMathTag (MDNode *FPMathTag)
 Set the floating point math metadata to be used. More...
 
void setFastMathFlags (FastMathFlags NewFMF)
 Set the fast-math flags to be used with generated fp-math operators. More...
 
GlobalVariableCreateGlobalString (StringRef Str, const Twine &Name="", unsigned AddressSpace=0)
 Make a new global variable with initializer type i8*. More...
 
ConstantIntgetInt1 (bool V)
 Get a constant value representing either true or false. More...
 
ConstantIntgetTrue ()
 Get the constant value for i1 true. More...
 
ConstantIntgetFalse ()
 Get the constant value for i1 false. More...
 
ConstantIntgetInt8 (uint8_t C)
 Get a constant 8-bit value. More...
 
ConstantIntgetInt16 (uint16_t C)
 Get a constant 16-bit value. More...
 
ConstantIntgetInt32 (uint32_t C)
 Get a constant 32-bit value. More...
 
ConstantIntgetInt64 (uint64_t C)
 Get a constant 64-bit value. More...
 
ConstantIntgetIntN (unsigned N, uint64_t C)
 Get a constant N-bit value, zero extended or truncated from a 64-bit value. More...
 
ConstantIntgetInt (const APInt &AI)
 Get a constant integer value. More...
 
IntegerTypegetInt1Ty ()
 Fetch the type representing a single bit. More...
 
IntegerTypegetInt8Ty ()
 Fetch the type representing an 8-bit integer. More...
 
IntegerTypegetInt16Ty ()
 Fetch the type representing a 16-bit integer. More...
 
IntegerTypegetInt32Ty ()
 Fetch the type representing a 32-bit integer. More...
 
IntegerTypegetInt64Ty ()
 Fetch the type representing a 64-bit integer. More...
 
IntegerTypegetInt128Ty ()
 Fetch the type representing a 128-bit integer. More...
 
IntegerTypegetIntNTy (unsigned N)
 Fetch the type representing an N-bit integer. More...
 
TypegetHalfTy ()
 Fetch the type representing a 16-bit floating point value. More...
 
TypegetFloatTy ()
 Fetch the type representing a 32-bit floating point value. More...
 
TypegetDoubleTy ()
 Fetch the type representing a 64-bit floating point value. More...
 
TypegetVoidTy ()
 Fetch the type representing void. More...
 
PointerTypegetInt8PtrTy (unsigned AddrSpace=0)
 Fetch the type representing a pointer to an 8-bit integer value. More...
 
IntegerTypegetIntPtrTy (const DataLayout &DL, unsigned AddrSpace=0)
 Fetch the type representing a pointer to an integer value. More...
 
CallInstCreateMemSet (Value *Ptr, Value *Val, uint64_t Size, unsigned Align, bool isVolatile=false, MDNode *TBAATag=nullptr, MDNode *ScopeTag=nullptr, MDNode *NoAliasTag=nullptr)
 Create and insert a memset to the specified pointer and the specified value. More...
 
CallInstCreateMemSet (Value *Ptr, Value *Val, Value *Size, unsigned Align, bool isVolatile=false, MDNode *TBAATag=nullptr, MDNode *ScopeTag=nullptr, MDNode *NoAliasTag=nullptr)
 
CallInstCreateMemCpy (Value *Dst, Value *Src, uint64_t Size, unsigned Align, bool isVolatile=false, MDNode *TBAATag=nullptr, MDNode *TBAAStructTag=nullptr, MDNode *ScopeTag=nullptr, MDNode *NoAliasTag=nullptr)
 Create and insert a memcpy between the specified pointers. More...
 
CallInstCreateMemCpy (Value *Dst, Value *Src, Value *Size, unsigned Align, bool isVolatile=false, MDNode *TBAATag=nullptr, MDNode *TBAAStructTag=nullptr, MDNode *ScopeTag=nullptr, MDNode *NoAliasTag=nullptr)
 
CallInstCreateElementUnorderedAtomicMemCpy (Value *Dst, Value *Src, uint64_t Size, uint32_t ElementSize, MDNode *TBAATag=nullptr, MDNode *TBAAStructTag=nullptr, MDNode *ScopeTag=nullptr, MDNode *NoAliasTag=nullptr)
 Create and insert an element unordered-atomic memcpy between the specified pointers. More...
 
CallInstCreateElementUnorderedAtomicMemCpy (Value *Dst, Value *Src, Value *Size, uint32_t ElementSize, MDNode *TBAATag=nullptr, MDNode *TBAAStructTag=nullptr, MDNode *ScopeTag=nullptr, MDNode *NoAliasTag=nullptr)
 
CallInstCreateMemMove (Value *Dst, Value *Src, uint64_t Size, unsigned Align, bool isVolatile=false, MDNode *TBAATag=nullptr, MDNode *ScopeTag=nullptr, MDNode *NoAliasTag=nullptr)
 Create and insert a memmove between the specified pointers. More...
 
CallInstCreateMemMove (Value *Dst, Value *Src, Value *Size, unsigned Align, bool isVolatile=false, MDNode *TBAATag=nullptr, MDNode *ScopeTag=nullptr, MDNode *NoAliasTag=nullptr)
 
CallInstCreateFAddReduce (Value *Acc, Value *Src)
 Create a vector fadd reduction intrinsic of the source vector. More...
 
CallInstCreateFMulReduce (Value *Acc, Value *Src)
 Create a vector fmul reduction intrinsic of the source vector. More...
 
CallInstCreateAddReduce (Value *Src)
 Create a vector int add reduction intrinsic of the source vector. More...
 
CallInstCreateMulReduce (Value *Src)
 Create a vector int mul reduction intrinsic of the source vector. More...
 
CallInstCreateAndReduce (Value *Src)
 Create a vector int AND reduction intrinsic of the source vector. More...
 
CallInstCreateOrReduce (Value *Src)
 Create a vector int OR reduction intrinsic of the source vector. More...
 
CallInstCreateXorReduce (Value *Src)
 Create a vector int XOR reduction intrinsic of the source vector. More...
 
CallInstCreateIntMaxReduce (Value *Src, bool IsSigned=false)
 Create a vector integer max reduction intrinsic of the source vector. More...
 
CallInstCreateIntMinReduce (Value *Src, bool IsSigned=false)
 Create a vector integer min reduction intrinsic of the source vector. More...
 
CallInstCreateFPMaxReduce (Value *Src, bool NoNaN=false)
 Create a vector float max reduction intrinsic of the source vector. More...
 
CallInstCreateFPMinReduce (Value *Src, bool NoNaN=false)
 Create a vector float min reduction intrinsic of the source vector. More...
 
CallInstCreateLifetimeStart (Value *Ptr, ConstantInt *Size=nullptr)
 Create a lifetime.start intrinsic. More...
 
CallInstCreateLifetimeEnd (Value *Ptr, ConstantInt *Size=nullptr)
 Create a lifetime.end intrinsic. More...
 
CallInstCreateInvariantStart (Value *Ptr, ConstantInt *Size=nullptr)
 Create a call to invariant.start intrinsic. More...
 
CallInstCreateMaskedLoad (Value *Ptr, unsigned Align, Value *Mask, Value *PassThru=nullptr, const Twine &Name="")
 Create a call to Masked Load intrinsic. More...
 
CallInstCreateMaskedStore (Value *Val, Value *Ptr, unsigned Align, Value *Mask)
 Create a call to Masked Store intrinsic. More...
 
CallInstCreateMaskedGather (Value *Ptrs, unsigned Align, Value *Mask=nullptr, Value *PassThru=nullptr, const Twine &Name="")
 Create a call to Masked Gather intrinsic. More...
 
CallInstCreateMaskedScatter (Value *Val, Value *Ptrs, unsigned Align, Value *Mask=nullptr)
 Create a call to Masked Scatter intrinsic. More...
 
CallInstCreateAssumption (Value *Cond)
 Create an assume intrinsic call that allows the optimizer to assume that the provided condition will be true. More...
 
CallInstCreateGCStatepointCall (uint64_t ID, uint32_t NumPatchBytes, Value *ActualCallee, ArrayRef< Value *> CallArgs, ArrayRef< Value *> DeoptArgs, ArrayRef< Value *> GCArgs, const Twine &Name="")
 Create a call to the experimental.gc.statepoint intrinsic to start a new statepoint sequence. More...
 
CallInstCreateGCStatepointCall (uint64_t ID, uint32_t NumPatchBytes, Value *ActualCallee, uint32_t Flags, ArrayRef< Use > CallArgs, ArrayRef< Use > TransitionArgs, ArrayRef< Use > DeoptArgs, ArrayRef< Value *> GCArgs, const Twine &Name="")
 Create a call to the experimental.gc.statepoint intrinsic to start a new statepoint sequence. More...
 
CallInstCreateGCStatepointCall (uint64_t ID, uint32_t NumPatchBytes, Value *ActualCallee, ArrayRef< Use > CallArgs, ArrayRef< Value *> DeoptArgs, ArrayRef< Value *> GCArgs, const Twine &Name="")
 
InvokeInstCreateGCStatepointInvoke (uint64_t ID, uint32_t NumPatchBytes, Value *ActualInvokee, BasicBlock *NormalDest, BasicBlock *UnwindDest, ArrayRef< Value *> InvokeArgs, ArrayRef< Value *> DeoptArgs, ArrayRef< Value *> GCArgs, const Twine &Name="")
 brief Create an invoke to the experimental.gc.statepoint intrinsic to start a new statepoint sequence. More...
 
InvokeInstCreateGCStatepointInvoke (uint64_t ID, uint32_t NumPatchBytes, Value *ActualInvokee, BasicBlock *NormalDest, BasicBlock *UnwindDest, uint32_t Flags, ArrayRef< Use > InvokeArgs, ArrayRef< Use > TransitionArgs, ArrayRef< Use > DeoptArgs, ArrayRef< Value *> GCArgs, const Twine &Name="")
 brief Create an invoke to the experimental.gc.statepoint intrinsic to start a new statepoint sequence. More...
 
InvokeInstCreateGCStatepointInvoke (uint64_t ID, uint32_t NumPatchBytes, Value *ActualInvokee, BasicBlock *NormalDest, BasicBlock *UnwindDest, ArrayRef< Use > InvokeArgs, ArrayRef< Value *> DeoptArgs, ArrayRef< Value *> GCArgs, const Twine &Name="")
 
CallInstCreateGCResult (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. More...
 
CallInstCreateGCRelocate (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. More...
 
CallInstCreateBinaryIntrinsic (Intrinsic::ID ID, Value *LHS, Value *RHS, const Twine &Name="")
 Create a call to intrinsic ID with 2 operands which is mangled on the first type. More...
 
CallInstCreateMinNum (Value *LHS, Value *RHS, const Twine &Name="")
 Create call to the minnum intrinsic. More...
 
CallInstCreateMaxNum (Value *LHS, Value *RHS, const Twine &Name="")
 Create call to the maxnum intrinsic. More...
 

Protected Attributes

BasicBlockBB
 
BasicBlock::iterator InsertPt
 
LLVMContextContext
 
MDNodeDefaultFPMathTag
 
FastMathFlags FMF
 
ArrayRef< OperandBundleDefDefaultOperandBundles
 

Detailed Description

Common base class shared among various IRBuilders.

Definition at line 90 of file IRBuilder.h.

Constructor & Destructor Documentation

◆ IRBuilderBase()

llvm::IRBuilderBase::IRBuilderBase ( LLVMContext context,
MDNode FPMathTag = nullptr,
ArrayRef< OperandBundleDef OpBundles = None 
)
inline

Definition at line 104 of file IRBuilder.h.

Member Function Documentation

◆ clearFastMathFlags()

void llvm::IRBuilderBase::clearFastMathFlags ( )
inline

Clear the fast-math flags.

Definition at line 215 of file IRBuilder.h.

References llvm::FastMathFlags::clear().

◆ ClearInsertionPoint()

void llvm::IRBuilderBase::ClearInsertionPoint ( )
inline

Clear the insertion point: created instructions will not be inserted into a block.

Definition at line 117 of file IRBuilder.h.

Referenced by llvm::SCEVExpander::clearInsertPoint().

◆ CreateAddReduce()

CallInst * IRBuilderBase::CreateAddReduce ( Value Src)

Create a vector int add reduction intrinsic of the source vector.

Definition at line 224 of file IRBuilder.cpp.

References getReductionIntrinsic().

Referenced by llvm::createSimpleTargetReduction().

◆ CreateAndReduce()

CallInst * IRBuilderBase::CreateAndReduce ( Value Src)

Create a vector int AND reduction intrinsic of the source vector.

Definition at line 234 of file IRBuilder.cpp.

References getReductionIntrinsic().

Referenced by llvm::createSimpleTargetReduction().

◆ CreateAssumption()

CallInst * IRBuilderBase::CreateAssumption ( Value Cond)

Create an assume intrinsic call that allows the optimizer to assume that the provided condition will be true.

Definition at line 335 of file IRBuilder.cpp.

References assert(), BB, createCallHelper(), llvm::Intrinsic::getDeclaration(), getInt1Ty(), llvm::BasicBlock::getParent(), llvm::GlobalValue::getParent(), and llvm::Value::getType().

◆ CreateBinaryIntrinsic()

CallInst * IRBuilderBase::CreateBinaryIntrinsic ( Intrinsic::ID  ID,
Value LHS,
Value RHS,
const Twine Name = "" 
)

Create a call to intrinsic ID with 2 operands which is mangled on the first type.

Definition at line 616 of file IRBuilder.cpp.

References BB, createCallHelper(), llvm::Intrinsic::getDeclaration(), llvm::BasicBlock::getParent(), llvm::GlobalValue::getParent(), and llvm::Value::getType().

◆ CreateElementUnorderedAtomicMemCpy() [1/2]

CallInst* llvm::IRBuilderBase::CreateElementUnorderedAtomicMemCpy ( Value Dst,
Value Src,
uint64_t  Size,
uint32_t  ElementSize,
MDNode TBAATag = nullptr,
MDNode TBAAStructTag = nullptr,
MDNode ScopeTag = nullptr,
MDNode NoAliasTag = nullptr 
)
inline

Create and insert an element unordered-atomic memcpy between the specified pointers.

If the pointers aren't i8*, they will be converted. If a TBAA tag is specified, it will be added to the instruction. Likewise with alias.scope and noalias tags.

Definition at line 444 of file IRBuilder.h.

◆ CreateElementUnorderedAtomicMemCpy() [2/2]

CallInst * IRBuilderBase::CreateElementUnorderedAtomicMemCpy ( Value Dst,
Value Src,
Value Size,
uint32_t  ElementSize,
MDNode TBAATag = nullptr,
MDNode TBAAStructTag = nullptr,
MDNode ScopeTag = nullptr,
MDNode NoAliasTag = nullptr 
)

◆ CreateFAddReduce()

CallInst * IRBuilderBase::CreateFAddReduce ( Value Acc,
Value Src 
)

Create a vector fadd reduction intrinsic of the source vector.

The first parameter is a scalar accumulator value for ordered reductions.

Definition at line 204 of file IRBuilder.cpp.

References createCallHelper(), llvm::Intrinsic::getDeclaration(), GetInsertBlock(), llvm::BasicBlock::getParent(), llvm::GlobalValue::getParent(), llvm::Value::getType(), and llvm::Type::getVectorElementType().

Referenced by llvm::createSimpleTargetReduction().

◆ CreateFMulReduce()

CallInst * IRBuilderBase::CreateFMulReduce ( Value Acc,
Value Src 
)

Create a vector fmul reduction intrinsic of the source vector.

The first parameter is a scalar accumulator value for ordered reductions.

Definition at line 214 of file IRBuilder.cpp.

References createCallHelper(), llvm::Intrinsic::getDeclaration(), GetInsertBlock(), llvm::BasicBlock::getParent(), llvm::GlobalValue::getParent(), llvm::Value::getType(), and llvm::Type::getVectorElementType().

Referenced by llvm::createSimpleTargetReduction().

◆ CreateFPMaxReduce()

CallInst * IRBuilderBase::CreateFPMaxReduce ( Value Src,
bool  NoNaN = false 
)

Create a vector float max reduction intrinsic of the source vector.

Definition at line 261 of file IRBuilder.cpp.

References FMF, getReductionIntrinsic(), and llvm::FastMathFlags::setNoNaNs().

Referenced by llvm::createSimpleTargetReduction().

◆ CreateFPMinReduce()

CallInst * IRBuilderBase::CreateFPMinReduce ( Value Src,
bool  NoNaN = false 
)

Create a vector float min reduction intrinsic of the source vector.

Definition at line 272 of file IRBuilder.cpp.

References FMF, getReductionIntrinsic(), and llvm::FastMathFlags::setNoNaNs().

Referenced by llvm::createSimpleTargetReduction().

◆ CreateGCRelocate()

CallInst * IRBuilderBase::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.

Definition at line 600 of file IRBuilder.cpp.

References llvm::AMDGPU::HSAMD::Kernel::Key::Args, BB, createCallHelper(), llvm::Intrinsic::getDeclaration(), getInt32(), llvm::BasicBlock::getParent(), and llvm::GlobalValue::getParent().

◆ CreateGCResult()

CallInst * IRBuilderBase::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.

Definition at line 588 of file IRBuilder.cpp.

References llvm::AMDGPU::HSAMD::Kernel::Key::Args, BB, createCallHelper(), llvm::Intrinsic::getDeclaration(), llvm::BasicBlock::getParent(), and llvm::GlobalValue::getParent().

Referenced by makeStatepointExplicitImpl().

◆ CreateGCStatepointCall() [1/3]

CallInst * IRBuilderBase::CreateGCStatepointCall ( uint64_t  ID,
uint32_t  NumPatchBytes,
Value ActualCallee,
ArrayRef< Value *>  CallArgs,
ArrayRef< Value *>  DeoptArgs,
ArrayRef< Value *>  GCArgs,
const Twine Name = "" 
)

Create a call to the experimental.gc.statepoint intrinsic to start a new statepoint sequence.

Definition at line 507 of file IRBuilder.cpp.

References llvm::None.

Referenced by makeStatepointExplicitImpl().

◆ CreateGCStatepointCall() [2/3]

CallInst * IRBuilderBase::CreateGCStatepointCall ( uint64_t  ID,
uint32_t  NumPatchBytes,
Value ActualCallee,
uint32_t  Flags,
ArrayRef< Use CallArgs,
ArrayRef< Use TransitionArgs,
ArrayRef< Use DeoptArgs,
ArrayRef< Value *>  GCArgs,
const Twine Name = "" 
)

Create a call to the experimental.gc.statepoint intrinsic to start a new statepoint sequence.

Definition at line 516 of file IRBuilder.cpp.

◆ CreateGCStatepointCall() [3/3]

CallInst * IRBuilderBase::CreateGCStatepointCall ( uint64_t  ID,
uint32_t  NumPatchBytes,
Value ActualCallee,
ArrayRef< Use CallArgs,
ArrayRef< Value *>  DeoptArgs,
ArrayRef< Value *>  GCArgs,
const Twine Name = "" 
)

Definition at line 525 of file IRBuilder.cpp.

References llvm::None.

◆ CreateGCStatepointInvoke() [1/3]

InvokeInst * IRBuilderBase::CreateGCStatepointInvoke ( uint64_t  ID,
uint32_t  NumPatchBytes,
Value ActualInvokee,
BasicBlock NormalDest,
BasicBlock UnwindDest,
ArrayRef< Value *>  InvokeArgs,
ArrayRef< Value *>  DeoptArgs,
ArrayRef< Value *>  GCArgs,
const Twine Name = "" 
)

brief Create an invoke to the experimental.gc.statepoint intrinsic to start a new statepoint sequence.

Definition at line 557 of file IRBuilder.cpp.

References llvm::None.

Referenced by makeStatepointExplicitImpl().

◆ CreateGCStatepointInvoke() [2/3]

InvokeInst * IRBuilderBase::CreateGCStatepointInvoke ( uint64_t  ID,
uint32_t  NumPatchBytes,
Value ActualInvokee,
BasicBlock NormalDest,
BasicBlock UnwindDest,
uint32_t  Flags,
ArrayRef< Use InvokeArgs,
ArrayRef< Use TransitionArgs,
ArrayRef< Use DeoptArgs,
ArrayRef< Value *>  GCArgs,
const Twine Name = "" 
)

brief Create an invoke to the experimental.gc.statepoint intrinsic to start a new statepoint sequence.

Definition at line 568 of file IRBuilder.cpp.

◆ CreateGCStatepointInvoke() [3/3]

InvokeInst * IRBuilderBase::CreateGCStatepointInvoke ( uint64_t  ID,
uint32_t  NumPatchBytes,
Value ActualInvokee,
BasicBlock NormalDest,
BasicBlock UnwindDest,
ArrayRef< Use InvokeArgs,
ArrayRef< Value *>  DeoptArgs,
ArrayRef< Value *>  GCArgs,
const Twine Name = "" 
)

Definition at line 578 of file IRBuilder.cpp.

References llvm::None.

◆ CreateGlobalString()

GlobalVariable * IRBuilderBase::CreateGlobalString ( StringRef  Str,
const Twine Name = "",
unsigned  AddressSpace = 0 
)

Make a new global variable with initializer type i8*.

CreateGlobalString - Make a new global variable with an initializer that has array of i8 type filled in with the nul terminated string value specified.

Make a new global variable with an initializer that has array of i8 type filled in with the null terminated string value specified. The new global variable will be marked mergable with any others of the same contents. If Name is specified, it is the name of the global variable created.

If Name is specified, it is the name of the global variable created.

Definition at line 27 of file IRBuilder.cpp.

References BB, Context, llvm::BasicBlock::getParent(), llvm::GlobalValue::getParent(), llvm::ConstantDataArray::getString(), llvm::Value::getType(), llvm::GlobalValue::Global, llvm::GlobalValue::NotThreadLocal, llvm::GlobalValue::PrivateLinkage, and llvm::GlobalValue::setUnnamedAddr().

Referenced by isReportingError().

◆ CreateIntMaxReduce()

CallInst * IRBuilderBase::CreateIntMaxReduce ( Value Src,
bool  IsSigned = false 
)

Create a vector integer max reduction intrinsic of the source vector.

Definition at line 249 of file IRBuilder.cpp.

References getReductionIntrinsic().

Referenced by llvm::createSimpleTargetReduction().

◆ CreateIntMinReduce()

CallInst * IRBuilderBase::CreateIntMinReduce ( Value Src,
bool  IsSigned = false 
)

Create a vector integer min reduction intrinsic of the source vector.

Definition at line 255 of file IRBuilder.cpp.

References getReductionIntrinsic().

Referenced by llvm::createSimpleTargetReduction().

◆ CreateInvariantStart()

CallInst * IRBuilderBase::CreateInvariantStart ( Value Ptr,
ConstantInt Size = nullptr 
)

◆ CreateLifetimeEnd()

CallInst * IRBuilderBase::CreateLifetimeEnd ( Value Ptr,
ConstantInt Size = nullptr 
)

◆ CreateLifetimeStart()

CallInst * IRBuilderBase::CreateLifetimeStart ( Value Ptr,
ConstantInt Size = nullptr 
)

◆ CreateMaskedGather()

CallInst * IRBuilderBase::CreateMaskedGather ( Value Ptrs,
unsigned  Align,
Value Mask = nullptr,
Value PassThru = nullptr,
const Twine Name = "" 
)

Create a call to Masked Gather intrinsic.

Create a call to a Masked Gather intrinsic.

Ptrs - vector of pointers for loading Align - alignment for one element Mask - vector of booleans which indicates what vector lanes should be accessed in memory PassThru - pass-through value that is used to fill the masked-off lanes of the result Name - name of the result variable

Definition at line 405 of file IRBuilder.cpp.

References Context, llvm::VectorType::get(), llvm::UndefValue::get(), llvm::Constant::getAllOnesValue(), llvm::Type::getInt1Ty(), getInt32(), llvm::Value::getType(), and llvm::BitmaskEnumDetail::Mask().

Referenced by llvm::InnerLoopVectorizer::vectorizeMemoryInstruction().

◆ CreateMaskedLoad()

CallInst * IRBuilderBase::CreateMaskedLoad ( Value Ptr,
unsigned  Align,
Value Mask,
Value PassThru = nullptr,
const Twine Name = "" 
)

Create a call to Masked Load intrinsic.

Create a call to a Masked Load intrinsic.

Ptr - base pointer for the load Align - alignment of the source location Mask - vector of booleans which indicates what vector lanes should be accessed in memory PassThru - pass-through value that is used to fill the masked-off lanes of the result Name - name of the result variable

Definition at line 353 of file IRBuilder.cpp.

References assert(), llvm::UndefValue::get(), llvm::PointerType::getElementType(), getInt32(), llvm::Value::getType(), and llvm::BitmaskEnumDetail::Mask().

Referenced by simplifyX86MaskedLoad(), UpgradeMaskedLoad(), and llvm::InnerLoopVectorizer::vectorizeMemoryInstruction().

◆ CreateMaskedScatter()

CallInst * IRBuilderBase::CreateMaskedScatter ( Value Data,
Value Ptrs,
unsigned  Align,
Value Mask = nullptr 
)

Create a call to Masked Scatter intrinsic.

Create a call to a Masked Scatter intrinsic.

Data - data to be stored, Ptrs - the vector of pointers, where the Data elements should be stored Align - alignment for one element Mask - vector of booleans which indicates what vector lanes should be accessed in memory

Definition at line 436 of file IRBuilder.cpp.

References assert(), Context, llvm::Data, llvm::VectorType::get(), llvm::Constant::getAllOnesValue(), llvm::Type::getInt1Ty(), getInt32(), and llvm::Value::getType().

Referenced by llvm::InnerLoopVectorizer::vectorizeMemoryInstruction().

◆ CreateMaskedStore()

CallInst * IRBuilderBase::CreateMaskedStore ( Value Val,
Value Ptr,
unsigned  Align,
Value Mask 
)

Create a call to Masked Store intrinsic.

Create a call to a Masked Store intrinsic.

Val - data to be stored, Ptr - base pointer for the store Align - alignment of the destination location Mask - vector of booleans which indicates what vector lanes should be accessed in memory

Definition at line 374 of file IRBuilder.cpp.

References assert(), BB, createCallHelper(), llvm::Intrinsic::getDeclaration(), llvm::PointerType::getElementType(), getInt32(), llvm::BasicBlock::getParent(), llvm::GlobalValue::getParent(), and llvm::Value::getType().

Referenced by simplifyX86MaskedStore(), UpgradeMaskedStore(), and llvm::InnerLoopVectorizer::vectorizeMemoryInstruction().

◆ CreateMaxNum()

CallInst* llvm::IRBuilderBase::CreateMaxNum ( Value LHS,
Value RHS,
const Twine Name = "" 
)
inline

Create call to the maxnum intrinsic.

Definition at line 635 of file IRBuilder.h.

References llvm::minnum().

◆ CreateMemCpy() [1/2]

CallInst* llvm::IRBuilderBase::CreateMemCpy ( Value Dst,
Value Src,
uint64_t  Size,
unsigned  Align,
bool  isVolatile = false,
MDNode TBAATag = nullptr,
MDNode TBAAStructTag = nullptr,
MDNode ScopeTag = nullptr,
MDNode NoAliasTag = nullptr 
)
inline

Create and insert a memcpy between the specified pointers.

If the pointers aren't i8*, they will be converted. If a TBAA tag is specified, it will be added to the instruction. Likewise with alias.scope and noalias tags.

Definition at line 423 of file IRBuilder.h.

References isVolatile().

Referenced by CreateMemSet(), handleMemIntrinsicPtrUse(), hasUnaryFloatFn(), isCallPromotable(), isReportingError(), llvm::LibCallSimplifier::LibCallSimplifier(), mayLoopAccessLocation(), moveUp(), StackMallocSizeClass(), and TypeSizeToSizeIndex().

◆ CreateMemCpy() [2/2]

CallInst * IRBuilderBase::CreateMemCpy ( Value Dst,
Value Src,
Value Size,
unsigned  Align,
bool  isVolatile = false,
MDNode TBAATag = nullptr,
MDNode TBAAStructTag = nullptr,
MDNode ScopeTag = nullptr,
MDNode NoAliasTag = nullptr 
)

◆ CreateMemMove() [1/2]

CallInst* llvm::IRBuilderBase::CreateMemMove ( Value Dst,
Value Src,
uint64_t  Size,
unsigned  Align,
bool  isVolatile = false,
MDNode TBAATag = nullptr,
MDNode ScopeTag = nullptr,
MDNode NoAliasTag = nullptr 
)
inline

Create and insert a memmove between the specified pointers.

If the pointers aren't i8*, they will be converted. If a TBAA tag is specified, it will be added to the instruction. Likewise with alias.scope and noalias tags.

Definition at line 464 of file IRBuilder.h.

References isVolatile(), and llvm::BitmaskEnumDetail::Mask().

Referenced by CreateElementUnorderedAtomicMemCpy(), handleMemIntrinsicPtrUse(), hasUnaryFloatFn(), isCallPromotable(), llvm::LibCallSimplifier::LibCallSimplifier(), mayLoopAccessLocation(), and moveUp().

◆ CreateMemMove() [2/2]

CallInst * IRBuilderBase::CreateMemMove ( Value Dst,
Value Src,
Value Size,
unsigned  Align,
bool  isVolatile = false,
MDNode TBAATag = nullptr,
MDNode ScopeTag = nullptr,
MDNode NoAliasTag = nullptr 
)

◆ CreateMemSet() [1/2]

CallInst* llvm::IRBuilderBase::CreateMemSet ( Value Ptr,
Value Val,
uint64_t  Size,
unsigned  Align,
bool  isVolatile = false,
MDNode TBAATag = nullptr,
MDNode ScopeTag = nullptr,
MDNode NoAliasTag = nullptr 
)
inline

Create and insert a memset to the specified pointer and the specified value.

If the pointer isn't an i8*, it will be converted. If a TBAA tag is specified, it will be added to the instruction. Likewise with alias.scope and noalias tags.

Definition at line 405 of file IRBuilder.h.

References llvm::AMDGPU::HSAMD::Kernel::Arg::Key::Align, isVolatile(), and llvm::AMDGPU::HSAMD::Kernel::Arg::Key::Size.

Referenced by createInvokeHelper(), foldMallocMemset(), handleMemIntrinsicPtrUse(), hasUnaryFloatFn(), isCallPromotable(), llvm::LibCallSimplifier::LibCallSimplifier(), moveUp(), and TypeSizeToSizeIndex().

◆ CreateMemSet() [2/2]

CallInst * IRBuilderBase::CreateMemSet ( Value Ptr,
Value Val,
Value Size,
unsigned  Align,
bool  isVolatile = false,
MDNode TBAATag = nullptr,
MDNode ScopeTag = nullptr,
MDNode NoAliasTag = nullptr 
)

◆ CreateMinNum()

CallInst* llvm::IRBuilderBase::CreateMinNum ( Value LHS,
Value RHS,
const Twine Name = "" 
)
inline

Create call to the minnum intrinsic.

Definition at line 630 of file IRBuilder.h.

References llvm::minnum().

◆ CreateMulReduce()

CallInst * IRBuilderBase::CreateMulReduce ( Value Src)

Create a vector int mul reduction intrinsic of the source vector.

Definition at line 229 of file IRBuilder.cpp.

References getReductionIntrinsic().

Referenced by llvm::createSimpleTargetReduction().

◆ CreateOrReduce()

CallInst * IRBuilderBase::CreateOrReduce ( Value Src)

Create a vector int OR reduction intrinsic of the source vector.

Definition at line 239 of file IRBuilder.cpp.

References getReductionIntrinsic().

Referenced by llvm::createSimpleTargetReduction().

◆ CreateXorReduce()

CallInst * IRBuilderBase::CreateXorReduce ( Value Src)

Create a vector int XOR reduction intrinsic of the source vector.

Definition at line 244 of file IRBuilder.cpp.

References getReductionIntrinsic().

Referenced by llvm::createSimpleTargetReduction().

◆ getContext()

LLVMContext& llvm::IRBuilderBase::getContext ( ) const
inline

◆ getCurrentDebugLocation()

const DebugLoc& llvm::IRBuilderBase::getCurrentDebugLocation ( ) const
inline

Get location information used by debugging information.

Definition at line 155 of file IRBuilder.h.

◆ getCurrentFunctionReturnType()

Type * IRBuilderBase::getCurrentFunctionReturnType ( ) const

◆ getDefaultFPMathTag()

MDNode* llvm::IRBuilderBase::getDefaultFPMathTag ( ) const
inline

Get the floating point math metadata being used.

Definition at line 209 of file IRBuilder.h.

◆ getDoubleTy()

Type* llvm::IRBuilderBase::getDoubleTy ( )
inline

Fetch the type representing a 64-bit floating point value.

Definition at line 376 of file IRBuilder.h.

References llvm::Type::getDoubleTy().

Referenced by optimizeBinaryDoubleFP(), and optimizeUnaryDoubleFP().

◆ getFalse()

ConstantInt* llvm::IRBuilderBase::getFalse ( )
inline

Get the constant value for i1 false.

Definition at line 293 of file IRBuilder.h.

References llvm::ConstantInt::getFalse().

Referenced by createCTLZIntrinsic(), handleNoSuspendCoroutine(), insertSinCosCall(), and llvm::UpgradeIntrinsicCall().

◆ getFastMathFlags()

FastMathFlags llvm::IRBuilderBase::getFastMathFlags ( ) const
inline

Get the flags to be applied to created floating point ops.

Definition at line 212 of file IRBuilder.h.

◆ getFloatTy()

Type* llvm::IRBuilderBase::getFloatTy ( )
inline

Fetch the type representing a 32-bit floating point value.

Definition at line 371 of file IRBuilder.h.

References llvm::Type::getFloatTy().

Referenced by optimizeUnaryDoubleFP(), and llvm::UpgradeIntrinsicCall().

◆ getHalfTy()

Type* llvm::IRBuilderBase::getHalfTy ( )
inline

Fetch the type representing a 16-bit floating point value.

Definition at line 366 of file IRBuilder.h.

References llvm::Type::getHalfTy().

◆ GetInsertBlock()

BasicBlock* llvm::IRBuilderBase::GetInsertBlock ( ) const
inline

◆ GetInsertPoint()

BasicBlock::iterator llvm::IRBuilderBase::GetInsertPoint ( ) const
inline

◆ getInt()

ConstantInt* llvm::IRBuilderBase::getInt ( const APInt AI)
inline

Get a constant integer value.

Definition at line 324 of file IRBuilder.h.

References llvm::ConstantInt::get().

Referenced by hasUnaryFloatFn().

◆ getInt1()

ConstantInt* llvm::IRBuilderBase::getInt1 ( bool  V)
inline

Get a constant value representing either true or false.

Definition at line 283 of file IRBuilder.h.

References llvm::ConstantInt::get().

Referenced by CreateMemCpy(), CreateMemMove(), CreateMemSet(), and llvm::UpgradeIntrinsicCall().

◆ getInt128Ty()

IntegerType* llvm::IRBuilderBase::getInt128Ty ( )
inline

Fetch the type representing a 128-bit integer.

Definition at line 358 of file IRBuilder.h.

References llvm::Type::getInt128Ty().

◆ getInt16()

ConstantInt* llvm::IRBuilderBase::getInt16 ( uint16_t  C)
inline

Get a constant 16-bit value.

Definition at line 303 of file IRBuilder.h.

References llvm::ConstantInt::get().

◆ getInt16Ty()

IntegerType* llvm::IRBuilderBase::getInt16Ty ( )
inline

Fetch the type representing a 16-bit integer.

Definition at line 343 of file IRBuilder.h.

References llvm::Type::getInt16Ty().

◆ getInt1Ty()

IntegerType* llvm::IRBuilderBase::getInt1Ty ( )
inline

Fetch the type representing a single bit.

Definition at line 333 of file IRBuilder.h.

References llvm::Type::getInt1Ty().

Referenced by CreateAssumption(), emitX86MaskSelect(), getX86MaskVec(), and upgradeMaskedCompare().

◆ getInt32()

ConstantInt* llvm::IRBuilderBase::getInt32 ( uint32_t  C)
inline

Get a constant 32-bit value.

Definition at line 308 of file IRBuilder.h.

References llvm::ConstantInt::get().

Referenced by llvm::LoopVectorizationPlanner::buildVPlans(), CreateElementUnorderedAtomicMemCpy(), CreateGCRelocate(), CreateGCRelocates(), llvm::createInterleaveMask(), CreateMaskedGather(), CreateMaskedLoad(), CreateMaskedScatter(), CreateMaskedStore(), CreateMemCpy(), CreateMemMove(), CreateMemSet(), createOrdering(), createPrivateNonConstGlobalForString(), createRdxShuffleMask(), llvm::createSequentialMask(), llvm::createStrideMask(), llvm::HexagonTargetLowering::emitStoreConditional(), llvm::InnerLoopVectorizer::fixFirstOrderRecurrence(), llvm::InnerLoopVectorizer::fixReduction(), foldVecTruncToExtElt(), generateSignedDivisionCode(), generateSignedRemainderCode(), generateUnsignedDivisionCode(), llvm::InnerLoopVectorizer::getOrCreateScalarValue(), getScalarIntrinsicDeclaration(), llvm::getShuffleReduction(), getSignature(), getStatepointArgs(), getSuccState(), INITIALIZE_PASS(), INITIALIZE_PASS_WITH_OPTIONS(), insertSinCosCall(), instrumentMaskedLoadOrStore(), instrumentOneFunc(), isReportingError(), llvm::ARMTargetLowering::lowerInterleavedLoad(), llvm::ARMTargetLowering::lowerInterleavedStore(), llvm::ARMTargetLowering::makeDMB(), optimizeIntegerToVectorInsertions(), llvm::InnerLoopVectorizer::packScalarIntoVectorValue(), llvm::InnerLoopVectorizer::reverseVector(), shouldKeepInEntry(), simplifyAllocaArraySize(), sumEdgeCount(), switchToSelect(), TypeSizeToSizeIndex(), llvm::InnerLoopVectorizer::vectorizeInterleaveGroup(), and llvm::InnerLoopVectorizer::vectorizeMemoryInstruction().

◆ getInt32Ty()

IntegerType* llvm::IRBuilderBase::getInt32Ty ( )
inline

◆ getInt64()

ConstantInt* llvm::IRBuilderBase::getInt64 ( uint64_t  C)
inline

◆ getInt64Ty()

IntegerType* llvm::IRBuilderBase::getInt64Ty ( )
inline

◆ getInt8()

ConstantInt* llvm::IRBuilderBase::getInt8 ( uint8_t  C)
inline

◆ getInt8PtrTy()

PointerType* llvm::IRBuilderBase::getInt8PtrTy ( unsigned  AddrSpace = 0)
inline

◆ getInt8Ty()

IntegerType* llvm::IRBuilderBase::getInt8Ty ( )
inline

◆ getIntN()

ConstantInt* llvm::IRBuilderBase::getIntN ( unsigned  N,
uint64_t  C 
)
inline

Get a constant N-bit value, zero extended or truncated from a 64-bit value.

Definition at line 319 of file IRBuilder.h.

References llvm::ConstantInt::get().

Referenced by hasUnaryFloatFn(), and instrumentMaskedLoadOrStore().

◆ getIntNTy()

IntegerType* llvm::IRBuilderBase::getIntNTy ( unsigned  N)
inline

Fetch the type representing an N-bit integer.

Definition at line 361 of file IRBuilder.h.

References llvm::Type::getIntNTy().

Referenced by createPrivateNonConstGlobalForString(), hasUnsafeFPMath(), and TypeSizeToSizeIndex().

◆ getIntPtrTy()

IntegerType* llvm::IRBuilderBase::getIntPtrTy ( const DataLayout DL,
unsigned  AddrSpace = 0 
)
inline

Fetch the type representing a pointer to an integer value.

Definition at line 391 of file IRBuilder.h.

References llvm::DataLayout::getIntPtrType().

Referenced by llvm::SanitizerStatReport::create(), createPrivateNonConstGlobalForString(), and mayLoopAccessLocation().

◆ getTrue()

ConstantInt* llvm::IRBuilderBase::getTrue ( )
inline

◆ getVoidTy()

Type* llvm::IRBuilderBase::getVoidTy ( )
inline

◆ restoreIP()

void llvm::IRBuilderBase::restoreIP ( InsertPoint  IP)
inline

◆ saveAndClearIP()

InsertPoint llvm::IRBuilderBase::saveAndClearIP ( )
inline

Returns the current insert point, clearing it in the process.

Definition at line 194 of file IRBuilder.h.

◆ saveIP()

InsertPoint llvm::IRBuilderBase::saveIP ( ) const
inline

Returns the current insert point.

Definition at line 189 of file IRBuilder.h.

Referenced by llvm::InnerLoopVectorizer::createVectorIntOrFpInductionPHI(), and llvm::InnerLoopVectorizer::getOrCreateVectorValue().

◆ SetCurrentDebugLocation()

void llvm::IRBuilderBase::SetCurrentDebugLocation ( DebugLoc  L)
inline

◆ setDefaultFPMathTag()

void llvm::IRBuilderBase::setDefaultFPMathTag ( MDNode FPMathTag)
inline

Set the floating point math metadata to be used.

Definition at line 218 of file IRBuilder.h.

◆ setFastMathFlags()

void llvm::IRBuilderBase::setFastMathFlags ( FastMathFlags  NewFMF)
inline

◆ SetInsertPoint() [1/3]

void llvm::IRBuilderBase::SetInsertPoint ( BasicBlock TheBB)
inline

This specifies that created instructions should be appended to the end of the specified block.

Definition at line 128 of file IRBuilder.h.

References llvm::BasicBlock::end().

Referenced by combineLoadToOperationType(), llvm::ObjectSizeOffsetEvaluator::compute(), createCTLZIntrinsic(), llvm::createEfficiencySanitizerPass(), llvm::InnerLoopVectorizer::createInductionVariable(), createResumeEntryBlock(), llvm::InnerLoopVectorizer::createVectorIntOrFpInductionPHI(), llvm::InnerLoopVectorizer::createVectorizedLoopSkeleton(), despeculateCountZeros(), llvm::VPBasicBlock::execute(), llvm::VPlan::execute(), FitWeights(), llvm::InnerLoopVectorizer::fixFirstOrderRecurrence(), llvm::InnerLoopVectorizer::fixReduction(), llvm::AMDGPULibCalls::fold(), foldMallocMemset(), FoldTwoEntryPHINode(), generatedUnsignedRemainderCode(), generateSignedDivisionCode(), generateSignedRemainderCode(), generateUnsignedDivisionCode(), llvm::InnerLoopVectorizer::getBroadcastInstrs(), llvm::InnerLoopVectorizer::getOrCreateVectorValue(), getScalarIntrinsicDeclaration(), getSignature(), handleFinalSuspend(), insertSinCosCall(), instrumentMaskedLoadOrStore(), isCallPromotable(), isKnownTypeIdMember(), isLoopInvariant(), isReInterleaveMask(), lowerSubFn(), makeStatepointExplicitImpl(), mayLoopAccessLocation(), llvm::EscapeEnumerator::Next(), performMaskedAtomicOp(), processUGT_ADDCST_ADD(), processUMulZExtIdiom(), ReduceSwitchRange(), removeUndefIntroducingPredecessor(), setInsertionPoint(), llvm::SCEVExpander::setInsertPoint(), shouldKeepInEntry(), SimplifyBranchOnICmpChain(), SimplifyCondBranchToTwoReturns(), splitMergedValStore(), StackMallocSizeClass(), SumCanReachMin(), SwitchToLookupTable(), switchToSelect(), tryToSimplifyUncondBranchWithICmpInIt(), TypeSizeToSizeIndex(), llvm::UpgradeIntrinsicCall(), and llvm::ObjectSizeOffsetEvaluator::visitPHINode().

◆ SetInsertPoint() [2/3]

void llvm::IRBuilderBase::SetInsertPoint ( Instruction I)
inline

This specifies that created instructions should be inserted before the specified instruction.

Definition at line 135 of file IRBuilder.h.

References assert(), llvm::BasicBlock::end(), llvm::Instruction::getDebugLoc(), llvm::ilist_node_impl< OptionsT >::getIterator(), and llvm::Instruction::getParent().

◆ SetInsertPoint() [3/3]

void llvm::IRBuilderBase::SetInsertPoint ( BasicBlock TheBB,
BasicBlock::iterator  IP 
)
inline

This specifies that created instructions should be inserted at the specified point.

Definition at line 144 of file IRBuilder.h.

References llvm::BasicBlock::end().

◆ SetInstDebugLocation()

void llvm::IRBuilderBase::SetInstDebugLocation ( Instruction I) const
inline

If this builder has a current debug location, set it on the specified instruction.

Definition at line 159 of file IRBuilder.h.

References llvm::Instruction::setDebugLoc().

Referenced by createCallHelper(), createInvokeHelper(), and getCurrentFunctionReturnType().

Member Data Documentation

◆ BB

BasicBlock* llvm::IRBuilderBase::BB
protected

◆ Context

LLVMContext& llvm::IRBuilderBase::Context
protected

Definition at line 96 of file IRBuilder.h.

Referenced by CreateGlobalString(), CreateMaskedGather(), and CreateMaskedScatter().

◆ DefaultFPMathTag

MDNode* llvm::IRBuilderBase::DefaultFPMathTag
protected

◆ DefaultOperandBundles

ArrayRef<OperandBundleDef> llvm::IRBuilderBase::DefaultOperandBundles
protected

Definition at line 101 of file IRBuilder.h.

◆ FMF

FastMathFlags llvm::IRBuilderBase::FMF
protected

◆ InsertPt

BasicBlock::iterator llvm::IRBuilderBase::InsertPt
protected

Definition at line 95 of file IRBuilder.h.

Referenced by getCurrentFunctionReturnType().


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