|
LLVM
4.0.0
|
Common base class shared among various IRBuilders. More...
#include <IRBuilder.h>
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... | |
| 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. 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 DebugLoc & | getCurrentDebugLocation () 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... | |
| Type * | getCurrentFunctionReturnType () 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... | |
| MDNode * | getDefaultFPMathTag () 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... | |
| GlobalVariable * | CreateGlobalString (StringRef Str, const Twine &Name="", unsigned AddressSpace=0) |
| Make a new global variable with initializer type i8*. More... | |
| ConstantInt * | getInt1 (bool V) |
| Get a constant value representing either true or false. More... | |
| ConstantInt * | getTrue () |
| Get the constant value for i1 true. More... | |
| ConstantInt * | getFalse () |
| Get the constant value for i1 false. More... | |
| ConstantInt * | getInt8 (uint8_t C) |
| Get a constant 8-bit value. More... | |
| ConstantInt * | getInt16 (uint16_t C) |
| Get a constant 16-bit value. More... | |
| ConstantInt * | getInt32 (uint32_t C) |
| Get a constant 32-bit value. More... | |
| ConstantInt * | getInt64 (uint64_t C) |
| Get a constant 64-bit value. More... | |
| ConstantInt * | getIntN (unsigned N, uint64_t C) |
| Get a constant N-bit value, zero extended or truncated from a 64-bit value. More... | |
| ConstantInt * | getInt (const APInt &AI) |
| Get a constant integer value. More... | |
| IntegerType * | getInt1Ty () |
| Fetch the type representing a single bit. More... | |
| IntegerType * | getInt8Ty () |
| Fetch the type representing an 8-bit integer. More... | |
| IntegerType * | getInt16Ty () |
| Fetch the type representing a 16-bit integer. More... | |
| IntegerType * | getInt32Ty () |
| Fetch the type representing a 32-bit integer. More... | |
| IntegerType * | getInt64Ty () |
| Fetch the type representing a 64-bit integer. More... | |
| IntegerType * | getInt128Ty () |
| Fetch the type representing a 128-bit integer. More... | |
| IntegerType * | getIntNTy (unsigned N) |
| Fetch the type representing an N-bit integer. More... | |
| Type * | getHalfTy () |
| Fetch the type representing a 16-bit floating point value. More... | |
| Type * | getFloatTy () |
| Fetch the type representing a 32-bit floating point value. More... | |
| Type * | getDoubleTy () |
| Fetch the type representing a 64-bit floating point value. More... | |
| Type * | getVoidTy () |
| Fetch the type representing void. More... | |
| PointerType * | getInt8PtrTy (unsigned AddrSpace=0) |
| Fetch the type representing a pointer to an 8-bit integer value. More... | |
| IntegerType * | getIntPtrTy (const DataLayout &DL, unsigned AddrSpace=0) |
| Fetch the type representing a pointer to an integer value. More... | |
| CallInst * | CreateMemSet (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... | |
| CallInst * | CreateMemSet (Value *Ptr, Value *Val, Value *Size, unsigned Align, bool isVolatile=false, MDNode *TBAATag=nullptr, MDNode *ScopeTag=nullptr, MDNode *NoAliasTag=nullptr) |
| CallInst * | 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) |
| Create and insert a memcpy between the specified pointers. More... | |
| CallInst * | CreateMemCpy (Value *Dst, Value *Src, Value *Size, unsigned Align, bool isVolatile=false, MDNode *TBAATag=nullptr, MDNode *TBAAStructTag=nullptr, MDNode *ScopeTag=nullptr, MDNode *NoAliasTag=nullptr) |
| CallInst * | CreateMemMove (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... | |
| CallInst * | CreateMemMove (Value *Dst, Value *Src, Value *Size, unsigned Align, bool isVolatile=false, MDNode *TBAATag=nullptr, MDNode *ScopeTag=nullptr, MDNode *NoAliasTag=nullptr) |
| CallInst * | CreateLifetimeStart (Value *Ptr, ConstantInt *Size=nullptr) |
| Create a lifetime.start intrinsic. More... | |
| CallInst * | CreateLifetimeEnd (Value *Ptr, ConstantInt *Size=nullptr) |
| Create a lifetime.end intrinsic. More... | |
| CallInst * | CreateInvariantStart (Value *Ptr, ConstantInt *Size=nullptr) |
| Create a call to invariant.start intrinsic. More... | |
| CallInst * | CreateMaskedLoad (Value *Ptr, unsigned Align, Value *Mask, Value *PassThru=nullptr, const Twine &Name="") |
| Create a call to Masked Load intrinsic. More... | |
| CallInst * | CreateMaskedStore (Value *Val, Value *Ptr, unsigned Align, Value *Mask) |
| Create a call to Masked Store intrinsic. More... | |
| CallInst * | CreateMaskedGather (Value *Ptrs, unsigned Align, Value *Mask=nullptr, Value *PassThru=nullptr, const Twine &Name="") |
| Create a call to Masked Gather intrinsic. More... | |
| CallInst * | CreateMaskedScatter (Value *Val, Value *Ptrs, unsigned Align, Value *Mask=nullptr) |
| Create a call to Masked Scatter intrinsic. More... | |
| CallInst * | CreateAssumption (Value *Cond) |
| Create an assume intrinsic call that allows the optimizer to assume that the provided condition will be true. More... | |
| CallInst * | 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. More... | |
| CallInst * | 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. More... | |
| CallInst * | CreateGCStatepointCall (uint64_t ID, uint32_t NumPatchBytes, Value *ActualCallee, ArrayRef< Use > CallArgs, ArrayRef< Value * > DeoptArgs, ArrayRef< Value * > GCArgs, const Twine &Name="") |
| InvokeInst * | 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. More... | |
| InvokeInst * | 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. More... | |
| InvokeInst * | 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="") |
| 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. More... | |
| 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. More... | |
Protected Attributes | |
| BasicBlock * | BB |
| BasicBlock::iterator | InsertPt |
| LLVMContext & | Context |
| MDNode * | DefaultFPMathTag |
| FastMathFlags | FMF |
| ArrayRef< OperandBundleDef > | DefaultOperandBundles |
Common base class shared among various IRBuilders.
Definition at line 89 of file IRBuilder.h.
|
inline |
Definition at line 103 of file IRBuilder.h.
References ClearInsertionPoint().
|
inline |
Clear the fast-math flags.
Definition at line 214 of file IRBuilder.h.
References llvm::FastMathFlags::clear(), and FMF.
|
inline |
Clear the insertion point: created instructions will not be inserted into a block.
Definition at line 116 of file IRBuilder.h.
Referenced by llvm::SCEVExpander::clearInsertPoint(), IRBuilderBase(), restoreIP(), saveAndClearIP(), and llvm::slpvectorizer::BoUpSLP::vectorizeTree().
Create an assume intrinsic call that allows the optimizer to assume that the provided condition will be true.
Definition at line 214 of file IRBuilder.cpp.
References assert(), BB, createCallHelper(), llvm::Intrinsic::getDeclaration(), getInt1Ty(), llvm::BasicBlock::getParent(), llvm::GlobalValue::getParent(), and llvm::Value::getType().
Referenced by llvm::IRBuilder< TargetFolder >::CreateAlignmentAssumption().
| 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 470 of file IRBuilder.cpp.
References AMDGPU::RuntimeMD::KeyName::Args, BB, createCallHelper(), llvm::Intrinsic::getDeclaration(), getInt32(), llvm::BasicBlock::getParent(), and llvm::GlobalValue::getParent().
| 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 458 of file IRBuilder.cpp.
References AMDGPU::RuntimeMD::KeyName::Args, BB, createCallHelper(), llvm::Intrinsic::getDeclaration(), llvm::BasicBlock::getParent(), and llvm::GlobalValue::getParent().
Referenced by makeStatepointExplicitImpl().
| 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 377 of file IRBuilder.cpp.
References llvm::None.
Referenced by makeStatepointExplicitImpl().
| 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 386 of file IRBuilder.cpp.
References fuzzer::Flags.
| 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 395 of file IRBuilder.cpp.
References llvm::None.
| 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 427 of file IRBuilder.cpp.
References llvm::None.
Referenced by makeStatepointExplicitImpl().
| 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 438 of file IRBuilder.cpp.
References fuzzer::Flags.
| 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 448 of file IRBuilder.cpp.
References llvm::None.
| 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 llvm::IRBuilder< TargetFolder >::CreateGlobalStringPtr().
| CallInst * IRBuilderBase::CreateInvariantStart | ( | Value * | Ptr, |
| ConstantInt * | Size = nullptr |
||
| ) |
Create a call to invariant.start intrinsic.
If the pointer isn't i8* it will be converted.
Definition at line 194 of file IRBuilder.cpp.
References assert(), BB, createCallHelper(), llvm::Intrinsic::getDeclaration(), getInt64(), getInt64Ty(), llvm::BasicBlock::getParent(), llvm::GlobalValue::getParent(), llvm::ConstantInt::getType(), and llvm::Value::getType().
| CallInst * IRBuilderBase::CreateLifetimeEnd | ( | Value * | Ptr, |
| ConstantInt * | Size = nullptr |
||
| ) |
Create a lifetime.end intrinsic.
If the pointer isn't i8* it will be converted.
Definition at line 179 of file IRBuilder.cpp.
References assert(), BB, createCallHelper(), llvm::Intrinsic::getDeclaration(), getInt64(), getInt64Ty(), llvm::BasicBlock::getParent(), llvm::GlobalValue::getParent(), llvm::ConstantInt::getType(), and llvm::Value::getType().
| CallInst * IRBuilderBase::CreateLifetimeStart | ( | Value * | Ptr, |
| ConstantInt * | Size = nullptr |
||
| ) |
Create a lifetime.start intrinsic.
If the pointer isn't i8* it will be converted.
Definition at line 164 of file IRBuilder.cpp.
References assert(), BB, createCallHelper(), llvm::Intrinsic::getDeclaration(), getInt64(), getInt64Ty(), llvm::BasicBlock::getParent(), llvm::GlobalValue::getParent(), llvm::ConstantInt::getType(), and llvm::Value::getType().
| 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 282 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().
| 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 232 of file IRBuilder.cpp.
References assert(), llvm::UndefValue::get(), llvm::PointerType::getElementType(), getInt32(), llvm::Value::getType(), llvm::BitmaskEnumDetail::Mask(), and Ptr.
Referenced by simplifyX86MaskedLoad(), and UpgradeMaskedLoad().
| 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 308 of file IRBuilder.cpp.
References assert(), Context, llvm::VectorType::get(), llvm::Constant::getAllOnesValue(), llvm::Type::getInt1Ty(), getInt32(), and llvm::Value::getType().
| 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 252 of file IRBuilder.cpp.
References assert(), llvm::PointerType::getElementType(), getInt32(), llvm::Value::getType(), and Ptr.
Referenced by simplifyX86MaskedStore(), and UpgradeMaskedStore().
|
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 422 of file IRBuilder.h.
References getInt64(), and isVolatile().
| 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 |
||
| ) |
Definition at line 107 of file IRBuilder.cpp.
References BB, createCallHelper(), llvm::Intrinsic::getDeclaration(), getInt1(), getInt32(), llvm::BasicBlock::getParent(), llvm::GlobalValue::getParent(), llvm::Value::getType(), llvm::LLVMContext::MD_alias_scope, llvm::LLVMContext::MD_noalias, llvm::LLVMContext::MD_tbaa, llvm::LLVMContext::MD_tbaa_struct, and llvm::Instruction::setMetadata().
|
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 443 of file IRBuilder.h.
References getInt64(), and isVolatile().
| CallInst * IRBuilderBase::CreateMemMove | ( | Value * | Dst, |
| Value * | Src, | ||
| Value * | Size, | ||
| unsigned | Align, | ||
| bool | isVolatile = false, |
||
| MDNode * | TBAATag = nullptr, |
||
| MDNode * | ScopeTag = nullptr, |
||
| MDNode * | NoAliasTag = nullptr |
||
| ) |
Definition at line 138 of file IRBuilder.cpp.
References BB, createCallHelper(), llvm::Intrinsic::getDeclaration(), getInt1(), getInt32(), llvm::BasicBlock::getParent(), llvm::GlobalValue::getParent(), llvm::Value::getType(), llvm::LLVMContext::MD_alias_scope, llvm::LLVMContext::MD_noalias, llvm::LLVMContext::MD_tbaa, and llvm::Instruction::setMetadata().
|
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 404 of file IRBuilder.h.
References getInt64(), and isVolatile().
| CallInst * IRBuilderBase::CreateMemSet | ( | Value * | Ptr, |
| Value * | Val, | ||
| Value * | Size, | ||
| unsigned | Align, | ||
| bool | isVolatile = false, |
||
| MDNode * | TBAATag = nullptr, |
||
| MDNode * | ScopeTag = nullptr, |
||
| MDNode * | NoAliasTag = nullptr |
||
| ) |
Definition at line 82 of file IRBuilder.cpp.
References BB, createCallHelper(), llvm::Intrinsic::getDeclaration(), getInt1(), getInt32(), llvm::BasicBlock::getParent(), llvm::GlobalValue::getParent(), llvm::Value::getType(), llvm::LLVMContext::MD_alias_scope, llvm::LLVMContext::MD_noalias, llvm::LLVMContext::MD_tbaa, Ptr, and llvm::Instruction::setMetadata().
|
inline |
Definition at line 123 of file IRBuilder.h.
References Context.
Referenced by generateUnsignedDivisionCode(), llvm::AArch64TargetLowering::getIRStackGuard(), llvm::X86TargetLowering::getIRStackGuard(), llvm::AArch64TargetLowering::getSafeStackPointerLocation(), and llvm::X86TargetLowering::getSafeStackPointerLocation().
Get location information used by debugging information.
Definition at line 154 of file IRBuilder.h.
| Type * IRBuilderBase::getCurrentFunctionReturnType | ( | ) | const |
Get the return type of the current function that we're emitting into.
Definition at line 41 of file IRBuilder.cpp.
References assert(), BB, llvm::BasicBlock::getParent(), and llvm::Function::getReturnType().
Referenced by llvm::IRBuilder< TargetFolder >::CreateAggregateRet().
|
inline |
Get the floating point math metadata being used.
Definition at line 208 of file IRBuilder.h.
References DefaultFPMathTag.
|
inline |
Fetch the type representing a 64-bit floating point value.
Definition at line 375 of file IRBuilder.h.
References Context, and llvm::Type::getDoubleTy().
Referenced by optimizeBinaryDoubleFP(), and optimizeUnaryDoubleFP().
|
inline |
Get the constant value for i1 false.
Definition at line 292 of file IRBuilder.h.
References Context, and llvm::ConstantInt::getFalse().
Referenced by handleNoSuspendCoroutine(), and llvm::UpgradeIntrinsicCall().
|
inline |
Get the flags to be applied to created floating point ops.
Definition at line 211 of file IRBuilder.h.
References FMF.
|
inline |
Fetch the type representing a 32-bit floating point value.
Definition at line 370 of file IRBuilder.h.
References Context, and llvm::Type::getFloatTy().
Referenced by optimizeUnaryDoubleFP().
|
inline |
Fetch the type representing a 16-bit floating point value.
Definition at line 365 of file IRBuilder.h.
References Context, and llvm::Type::getHalfTy().
|
inline |
Definition at line 121 of file IRBuilder.h.
References BB.
Referenced by callIntrinsic(), llvm::SanitizerStatReport::create(), createCallHelper(), CreateGCStatepointCallCommon(), CreateGCStatepointInvokeCommon(), createInvokeHelper(), createPopcntIntrinsic(), llvm::AArch64TargetLowering::emitAtomicCmpXchgNoStoreLLBalance(), llvm::ARMTargetLowering::emitAtomicCmpXchgNoStoreLLBalance(), llvm::emitBinaryFloatFnCall(), emitCalloc(), llvm::emitFPutC(), llvm::emitFPutS(), llvm::emitFWrite(), llvm::HexagonTargetLowering::emitLoadLinked(), llvm::AArch64TargetLowering::emitLoadLinked(), llvm::ARMTargetLowering::emitLoadLinked(), llvm::emitMemChr(), llvm::emitMemCmp(), llvm::emitMemCpyChk(), llvm::emitPutChar(), llvm::emitPutS(), llvm::HexagonTargetLowering::emitStoreConditional(), llvm::AArch64TargetLowering::emitStoreConditional(), llvm::ARMTargetLowering::emitStoreConditional(), llvm::emitStrChr(), llvm::emitStrCpy(), llvm::emitStrLen(), llvm::emitStrNCmp(), llvm::emitStrNCpy(), llvm::emitUnaryFloatFnCall(), foldMallocMemset(), generateUnsignedDivisionCode(), llvm::TargetLoweringBase::getDefaultSafeStackPointerLocation(), llvm::AArch64TargetLowering::getIRStackGuard(), llvm::TargetLoweringBase::getIRStackGuard(), llvm::AArch64TargetLowering::getSafeStackPointerLocation(), llvm::TargetLoweringBase::getSafeStackPointerLocation(), insertSinCosCall(), llvm::ARMTargetLowering::makeDMB(), saveAndClearIP(), and saveIP().
|
inline |
Definition at line 122 of file IRBuilder.h.
References InsertPt.
Referenced by createCallHelper(), createInvokeHelper(), llvm::expandDivision(), llvm::expandRemainder(), generateUnsignedDivisionCode(), saveAndClearIP(), saveIP(), and llvm::InductionDescriptor::transform().
|
inline |
Get a constant integer value.
Definition at line 323 of file IRBuilder.h.
References Context, and llvm::ConstantInt::get().
|
inline |
Get a constant value representing either true or false.
Definition at line 282 of file IRBuilder.h.
References llvm::ConstantInt::get(), and getInt1Ty().
Referenced by CreateMemCpy(), CreateMemMove(), and CreateMemSet().
|
inline |
Fetch the type representing a 128-bit integer.
Definition at line 357 of file IRBuilder.h.
References Context, and llvm::Type::getInt128Ty().
|
inline |
Get a constant 16-bit value.
Definition at line 302 of file IRBuilder.h.
References llvm::ConstantInt::get(), and getInt16Ty().
|
inline |
Fetch the type representing a 16-bit integer.
Definition at line 342 of file IRBuilder.h.
References Context, and llvm::Type::getInt16Ty().
Referenced by getInt16().
|
inline |
Fetch the type representing a single bit.
Definition at line 332 of file IRBuilder.h.
References Context, and llvm::Type::getInt1Ty().
Referenced by CreateAssumption(), emitX86MaskSelect(), getInt1(), and getX86MaskVec().
|
inline |
Get a constant 32-bit value.
Definition at line 307 of file IRBuilder.h.
References llvm::ConstantInt::get(), and getInt32Ty().
Referenced by CreateGCRelocate(), CreateGCRelocates(), CreateMaskedGather(), CreateMaskedLoad(), CreateMaskedScatter(), CreateMaskedStore(), CreateMemCpy(), CreateMemMove(), CreateMemSet(), createOrdering(), createRdxShuffleMask(), llvm::HexagonTargetLowering::emitStoreConditional(), foldVecTruncToExtElt(), generateSignedDivisionCode(), generateSignedRemainderCode(), generateUnsignedDivisionCode(), getInterleavedMask(), getSequentialMask(), getStatepointArgs(), getStridedMask(), llvm::ARMTargetLowering::lowerInterleavedLoad(), llvm::ARMTargetLowering::lowerInterleavedStore(), llvm::ARMTargetLowering::makeDMB(), optimizeIntegerToVectorInsertions(), simplifyAllocaArraySize(), and llvm::slpvectorizer::BoUpSLP::vectorizeTree().
|
inline |
Fetch the type representing a 32-bit integer.
Definition at line 347 of file IRBuilder.h.
References Context, and llvm::Type::getInt32Ty().
Referenced by llvm::SanitizerStatReport::create(), createRdxShuffleMask(), llvm::IRBuilder< TargetFolder >::CreateVectorSplat(), llvm::emitFPutC(), llvm::emitFPutS(), llvm::emitMemChr(), llvm::emitMemCmp(), llvm::emitPutChar(), llvm::emitPutS(), llvm::emitStrChr(), llvm::emitStrNCmp(), llvm::expandDivisionUpTo32Bits(), llvm::expandRemainderUpTo32Bits(), getInt32(), getSequentialMask(), and insertSinCosCall().
|
inline |
Get a constant 64-bit value.
Definition at line 312 of file IRBuilder.h.
References llvm::ConstantInt::get(), and getInt64Ty().
Referenced by llvm::IRBuilder< TargetFolder >::CreateExtractElement(), llvm::IRBuilder< TargetFolder >::CreateInsertElement(), CreateInvariantStart(), CreateLifetimeEnd(), CreateLifetimeStart(), CreateMemCpy(), CreateMemMove(), CreateMemSet(), generateSignedDivisionCode(), generateSignedRemainderCode(), generateUnsignedDivisionCode(), getStatepointArgs(), and llvm::UpgradeIntrinsicCall().
|
inline |
Fetch the type representing a 64-bit integer.
Definition at line 352 of file IRBuilder.h.
References Context, and llvm::Type::getInt64Ty().
Referenced by CreateInvariantStart(), CreateLifetimeEnd(), CreateLifetimeStart(), llvm::expandDivisionUpTo64Bits(), llvm::expandRemainderUpTo64Bits(), and getInt64().
|
inline |
Get a constant 8-bit value.
Definition at line 297 of file IRBuilder.h.
References llvm::ConstantInt::get(), and getInt8Ty().
Referenced by createResumeEntryBlock(), and llvm::UpgradeIntrinsicCall().
|
inline |
Fetch the type representing a pointer to an 8-bit integer value.
Definition at line 385 of file IRBuilder.h.
References Context, and llvm::Type::getInt8PtrTy().
Referenced by llvm::castToCStr(), llvm::SanitizerStatReport::create(), emitCalloc(), llvm::emitFPutS(), llvm::emitFWrite(), llvm::emitMemChr(), llvm::emitMemCmp(), llvm::emitMemCpyChk(), llvm::emitPutS(), llvm::emitStrChr(), llvm::emitStrCpy(), llvm::emitStrLen(), llvm::emitStrNCmp(), llvm::emitStrNCpy(), handleNoSuspendCoroutine(), llvm::ARMTargetLowering::lowerInterleavedLoad(), llvm::ARMTargetLowering::lowerInterleavedStore(), and lowerSubFn().
|
inline |
Fetch the type representing an 8-bit integer.
Definition at line 337 of file IRBuilder.h.
References Context, and llvm::Type::getInt8Ty().
Referenced by createResumeEntryBlock(), getInt8(), UpgradeX86PSLLDQIntrinsics(), and UpgradeX86PSRLDQIntrinsics().
|
inline |
Get a constant N-bit value, zero extended or truncated from a 64-bit value.
Definition at line 318 of file IRBuilder.h.
References llvm::ConstantInt::get(), and getIntNTy().
|
inline |
Fetch the type representing an N-bit integer.
Definition at line 360 of file IRBuilder.h.
References Context, and llvm::Type::getIntNTy().
Referenced by getIntN().
|
inline |
Fetch the type representing a pointer to an integer value.
Definition at line 390 of file IRBuilder.h.
References Context, and llvm::DataLayout::getIntPtrType().
Referenced by llvm::SanitizerStatReport::create(), and llvm::IRBuilder< TargetFolder >::CreateAlignmentAssumption().
|
inline |
Get the constant value for i1 true.
Definition at line 287 of file IRBuilder.h.
References Context, and llvm::ConstantInt::getTrue().
Referenced by foldCttzCtlz(), and generateUnsignedDivisionCode().
|
inline |
Fetch the type representing void.
Definition at line 380 of file IRBuilder.h.
References Context, and llvm::Type::getVoidTy().
Referenced by llvm::SanitizerStatReport::create().
|
inline |
Sets the current insert point to a previously-saved location.
Definition at line 200 of file IRBuilder.h.
References ClearInsertionPoint(), llvm::IRBuilderBase::InsertPoint::getBlock(), llvm::IRBuilderBase::InsertPoint::getPoint(), llvm::IRBuilderBase::InsertPoint::isSet(), and SetInsertPoint().
Referenced by llvm::IRBuilderBase::InsertPointGuard::~InsertPointGuard().
|
inline |
Returns the current insert point, clearing it in the process.
Definition at line 193 of file IRBuilder.h.
References ClearInsertionPoint(), GetInsertBlock(), and GetInsertPoint().
|
inline |
Returns the current insert point.
Definition at line 188 of file IRBuilder.h.
References GetInsertBlock(), and GetInsertPoint().
|
inline |
Set location information used by debugging information.
Definition at line 151 of file IRBuilder.h.
Referenced by makeStatepointExplicitImpl(), llvm::SCEVExpander::replaceCongruentIVs(), SetInsertPoint(), simplifyRelocatesOffABase(), SimplifyTerminatorOnSelect(), TryToSimplifyUncondBranchWithICmpInIt(), and llvm::IRBuilderBase::InsertPointGuard::~InsertPointGuard().
|
inline |
Set the floating point math metadata to be used.
Definition at line 217 of file IRBuilder.h.
References DefaultFPMathTag.
|
inline |
Set the fast-math flags to be used with generated fp-math operators.
Definition at line 220 of file IRBuilder.h.
References FMF.
Referenced by llvm::RecurrenceDescriptor::createMinMaxOp(), optimizeBinaryDoubleFP(), and optimizeUnaryDoubleFP().
|
inline |
This specifies that created instructions should be appended to the end of the specified block.
Definition at line 127 of file IRBuilder.h.
References BB, llvm::BasicBlock::end(), and InsertPt.
Referenced by combineLoadToOperationType(), createResumeEntryBlock(), despeculateCountZeros(), foldMallocMemset(), FoldTwoEntryPHINode(), generatedUnsignedRemainderCode(), generateSignedDivisionCode(), generateSignedRemainderCode(), generateUnsignedDivisionCode(), handleFinalSuspend(), insertSinCosCall(), llvm::IRBuilder< TargetFolder >::IRBuilder(), lowerSubFn(), makeStatepointExplicitImpl(), llvm::EscapeEnumerator::Next(), processUGT_ADDCST_ADD(), processUMulZExtIdiom(), ReduceSwitchRange(), restoreIP(), setInsertionPoint(), llvm::SCEVExpander::setInsertPoint(), SimplifyBranchOnICmpChain(), SimplifyCondBranchToTwoReturns(), SwitchToLookupTable(), SwitchToSelect(), TryToSimplifyUncondBranchWithICmpInIt(), llvm::UpgradeIntrinsicCall(), llvm::slpvectorizer::BoUpSLP::vectorizeTree(), and llvm::ObjectSizeOffsetEvaluator::visitPHINode().
|
inline |
This specifies that created instructions should be inserted before the specified instruction.
Definition at line 134 of file IRBuilder.h.
References assert(), BB, llvm::BasicBlock::end(), llvm::Instruction::getDebugLoc(), llvm::ilist_node_impl< OptionsT >::getIterator(), llvm::Instruction::getParent(), InsertPt, and SetCurrentDebugLocation().
|
inline |
This specifies that created instructions should be inserted at the specified point.
Definition at line 143 of file IRBuilder.h.
References BB, llvm::BasicBlock::end(), InsertPt, and SetCurrentDebugLocation().
|
inline |
If this builder has a current debug location, set it on the specified instruction.
Definition at line 158 of file IRBuilder.h.
References llvm::Instruction::setDebugLoc().
Referenced by createCallHelper(), createInvokeHelper(), and llvm::IRBuilder< TargetFolder >::Insert().
|
protected |
Definition at line 93 of file IRBuilder.h.
Referenced by ClearInsertionPoint(), CreateAssumption(), CreateGCRelocate(), CreateGCResult(), CreateGlobalString(), llvm::IRBuilder< TargetFolder >::CreateInvariantGroupBarrier(), CreateInvariantStart(), CreateLifetimeEnd(), CreateLifetimeStart(), CreateMemCpy(), CreateMemMove(), CreateMemSet(), getCurrentFunctionReturnType(), GetInsertBlock(), llvm::IRBuilder< TargetFolder >::Insert(), and SetInsertPoint().
|
protected |
Definition at line 95 of file IRBuilder.h.
Referenced by llvm::IRBuilder< TargetFolder >::CreateAggregateRet(), llvm::IRBuilder< TargetFolder >::CreateConstGEP1_32(), llvm::IRBuilder< TargetFolder >::CreateConstGEP1_64(), llvm::IRBuilder< TargetFolder >::CreateConstGEP2_32(), llvm::IRBuilder< TargetFolder >::CreateConstGEP2_64(), llvm::IRBuilder< TargetFolder >::CreateConstInBoundsGEP1_32(), llvm::IRBuilder< TargetFolder >::CreateConstInBoundsGEP1_64(), llvm::IRBuilder< TargetFolder >::CreateConstInBoundsGEP2_32(), llvm::IRBuilder< TargetFolder >::CreateConstInBoundsGEP2_64(), llvm::IRBuilder< TargetFolder >::CreateFence(), CreateGlobalString(), llvm::IRBuilder< TargetFolder >::CreateGlobalStringPtr(), CreateMaskedGather(), CreateMaskedScatter(), llvm::IRBuilder< TargetFolder >::CreatePtrDiff(), llvm::IRBuilder< TargetFolder >::CreateRet(), llvm::IRBuilder< TargetFolder >::CreateRetVoid(), llvm::IRBuilder< TargetFolder >::CreateShuffleVector(), llvm::IRBuilder< TargetFolder >::CreateUnreachable(), getContext(), getDoubleTy(), getFalse(), getFloatTy(), getHalfTy(), getInt(), getInt128Ty(), getInt16Ty(), getInt1Ty(), getInt32Ty(), getInt64Ty(), getInt8PtrTy(), getInt8Ty(), getIntNTy(), getIntPtrTy(), getTrue(), and getVoidTy().
|
protected |
Definition at line 97 of file IRBuilder.h.
Referenced by getDefaultFPMathTag(), setDefaultFPMathTag(), and llvm::IRBuilderBase::FastMathFlagGuard::~FastMathFlagGuard().
|
protected |
Definition at line 100 of file IRBuilder.h.
Referenced by llvm::IRBuilder< TargetFolder >::CreateCall().
|
protected |
Definition at line 98 of file IRBuilder.h.
Referenced by clearFastMathFlags(), getFastMathFlags(), setFastMathFlags(), and llvm::IRBuilderBase::FastMathFlagGuard::~FastMathFlagGuard().
|
protected |
Definition at line 94 of file IRBuilder.h.
Referenced by ClearInsertionPoint(), GetInsertPoint(), llvm::IRBuilder< TargetFolder >::Insert(), and SetInsertPoint().
1.8.6