LLVM
8.0.1
|
An instruction for reading from memory. More...
#include "llvm/IR/Instructions.h"
Public Member Functions | |
LoadInst (Type *Ty, Value *Ptr, const Twine &NameStr="", Instruction *InsertBefore=nullptr) | |
LoadInst (Type *Ty, Value *Ptr, const Twine &NameStr, BasicBlock *InsertAtEnd) | |
LoadInst (Type *Ty, Value *Ptr, const Twine &NameStr, bool isVolatile, Instruction *InsertBefore=nullptr) | |
LoadInst (Type *Ty, Value *Ptr, const Twine &NameStr, bool isVolatile, BasicBlock *InsertAtEnd) | |
LoadInst (Type *Ty, Value *Ptr, const Twine &NameStr, bool isVolatile, unsigned Align, Instruction *InsertBefore=nullptr) | |
LoadInst (Type *Ty, Value *Ptr, const Twine &NameStr, bool isVolatile, unsigned Align, BasicBlock *InsertAtEnd) | |
LoadInst (Type *Ty, Value *Ptr, const Twine &NameStr, bool isVolatile, unsigned Align, AtomicOrdering Order, SyncScope::ID SSID=SyncScope::System, Instruction *InsertBefore=nullptr) | |
LoadInst (Type *Ty, Value *Ptr, const Twine &NameStr, bool isVolatile, unsigned Align, AtomicOrdering Order, SyncScope::ID SSID, BasicBlock *InsertAtEnd) | |
LoadInst (Value *Ptr, const Twine &NameStr="", Instruction *InsertBefore=nullptr) | |
LoadInst (Value *Ptr, const Twine &NameStr, BasicBlock *InsertAtEnd) | |
LoadInst (Value *Ptr, const Twine &NameStr, bool isVolatile, Instruction *InsertBefore=nullptr) | |
LoadInst (Value *Ptr, const Twine &NameStr, bool isVolatile, BasicBlock *InsertAtEnd) | |
LoadInst (Value *Ptr, const Twine &NameStr, bool isVolatile, unsigned Align, Instruction *InsertBefore=nullptr) | |
LoadInst (Value *Ptr, const Twine &NameStr, bool isVolatile, unsigned Align, BasicBlock *InsertAtEnd) | |
LoadInst (Value *Ptr, const Twine &NameStr, bool isVolatile, unsigned Align, AtomicOrdering Order, SyncScope::ID SSID=SyncScope::System, Instruction *InsertBefore=nullptr) | |
LoadInst (Value *Ptr, const Twine &NameStr, bool isVolatile, unsigned Align, AtomicOrdering Order, SyncScope::ID SSID, BasicBlock *InsertAtEnd) | |
bool | isVolatile () const |
Return true if this is a load from a volatile memory location. More... | |
void | setVolatile (bool V) |
Specify whether this is a volatile load or not. More... | |
unsigned | getAlignment () const |
Return the alignment of the access that is being performed. More... | |
void | setAlignment (unsigned Align) |
AtomicOrdering | getOrdering () const |
Returns the ordering constraint of this load instruction. More... | |
void | setOrdering (AtomicOrdering Ordering) |
Sets the ordering constraint of this load instruction. More... | |
SyncScope::ID | getSyncScopeID () const |
Returns the synchronization scope ID of this load instruction. More... | |
void | setSyncScopeID (SyncScope::ID SSID) |
Sets the synchronization scope ID of this load instruction. More... | |
void | setAtomic (AtomicOrdering Ordering, SyncScope::ID SSID=SyncScope::System) |
Sets the ordering constraint and the synchronization scope ID of this load instruction. More... | |
bool | isSimple () const |
bool | isUnordered () const |
Value * | getPointerOperand () |
const Value * | getPointerOperand () const |
Type * | getPointerOperandType () const |
unsigned | getPointerAddressSpace () const |
Returns the address space of the pointer operand. More... | |
Public Member Functions inherited from llvm::UnaryInstruction | |
void * | operator new (size_t s) |
DECLARE_TRANSPARENT_OPERAND_ACCESSORS (Value) | |
Transparently provide more efficient getOperand methods. More... | |
Public Member Functions inherited from llvm::Instruction | |
Instruction (const Instruction &)=delete | |
Instruction & | operator= (const Instruction &)=delete |
Instruction * | user_back () |
Specialize the methods defined in Value, as we know that an instruction can only be used by other instructions. More... | |
const Instruction * | user_back () const |
const BasicBlock * | getParent () const |
BasicBlock * | getParent () |
const Module * | getModule () const |
Return the module owning the function this instruction belongs to or nullptr it the function does not have a module. More... | |
Module * | getModule () |
const Function * | getFunction () const |
Return the function this instruction belongs to. More... | |
Function * | getFunction () |
void | removeFromParent () |
This method unlinks 'this' from the containing basic block, but does not delete it. More... | |
SymbolTableList< Instruction >::iterator | eraseFromParent () |
This method unlinks 'this' from the containing basic block and deletes it. More... | |
void | insertBefore (Instruction *InsertPos) |
Insert an unlinked instruction into a basic block immediately before the specified instruction. More... | |
void | insertAfter (Instruction *InsertPos) |
Insert an unlinked instruction into a basic block immediately after the specified instruction. More... | |
void | moveBefore (Instruction *MovePos) |
Unlink this instruction from its current basic block and insert it into the basic block that MovePos lives in, right before MovePos. More... | |
void | moveBefore (BasicBlock &BB, SymbolTableList< Instruction >::iterator I) |
Unlink this instruction and insert into BB before I. More... | |
void | moveAfter (Instruction *MovePos) |
Unlink this instruction from its current basic block and insert it into the basic block that MovePos lives in, right after MovePos. More... | |
unsigned | getOpcode () const |
Returns a member of one of the enums like Instruction::Add. More... | |
const char * | getOpcodeName () const |
bool | isTerminator () const |
bool | isUnaryOp () const |
bool | isBinaryOp () const |
bool | isIntDivRem () const |
bool | isShift () |
bool | isCast () const |
bool | isFuncletPad () const |
bool | isExceptionalTerminator () const |
bool | isLogicalShift () const |
Return true if this is a logical shift left or a logical shift right. More... | |
bool | isArithmeticShift () const |
Return true if this is an arithmetic shift right. More... | |
bool | isBitwiseLogicOp () const |
Return true if this is and/or/xor. More... | |
bool | hasMetadata () const |
Return true if this instruction has any metadata attached to it. More... | |
bool | hasMetadataOtherThanDebugLoc () const |
Return true if this instruction has metadata attached to it other than a debug location. More... | |
MDNode * | getMetadata (unsigned KindID) const |
Get the metadata of given kind attached to this Instruction. More... | |
MDNode * | getMetadata (StringRef Kind) const |
Get the metadata of given kind attached to this Instruction. More... | |
void | getAllMetadata (SmallVectorImpl< std::pair< unsigned, MDNode *>> &MDs) const |
Get all metadata attached to this Instruction. More... | |
void | getAllMetadataOtherThanDebugLoc (SmallVectorImpl< std::pair< unsigned, MDNode *>> &MDs) const |
This does the same thing as getAllMetadata, except that it filters out the debug location. More... | |
void | getAAMetadata (AAMDNodes &N, bool Merge=false) const |
Fills the AAMDNodes structure with AA metadata from this instruction. More... | |
void | setMetadata (unsigned KindID, MDNode *Node) |
Set the metadata of the specified kind to the specified node. More... | |
void | setMetadata (StringRef Kind, MDNode *Node) |
void | copyMetadata (const Instruction &SrcInst, ArrayRef< unsigned > WL=ArrayRef< unsigned >()) |
Copy metadata from SrcInst to this instruction. More... | |
void | swapProfMetadata () |
If the instruction has "branch_weights" MD_prof metadata and the MDNode has three operands (including name string), swap the order of the metadata. More... | |
void | setAAMetadata (const AAMDNodes &N) |
Sets the metadata on this instruction from the AAMDNodes structure. More... | |
bool | extractProfMetadata (uint64_t &TrueVal, uint64_t &FalseVal) const |
Retrieve the raw weight values of a conditional branch or select. More... | |
bool | extractProfTotalWeight (uint64_t &TotalVal) const |
Retrieve total raw weight values of a branch. More... | |
void | updateProfWeight (uint64_t S, uint64_t T) |
Updates branch_weights metadata by scaling it by S / T . More... | |
void | setProfWeight (uint64_t W) |
Sets the branch_weights metadata to W for CallInst. More... | |
void | setDebugLoc (DebugLoc Loc) |
Set the debug location information for this instruction. More... | |
const DebugLoc & | getDebugLoc () const |
Return the debug location for this node as a DebugLoc. More... | |
void | setHasNoUnsignedWrap (bool b=true) |
Set or clear the nuw flag on this instruction, which must be an operator which supports this flag. More... | |
void | setHasNoSignedWrap (bool b=true) |
Set or clear the nsw flag on this instruction, which must be an operator which supports this flag. More... | |
void | setIsExact (bool b=true) |
Set or clear the exact flag on this instruction, which must be an operator which supports this flag. More... | |
bool | hasNoUnsignedWrap () const |
Determine whether the no unsigned wrap flag is set. More... | |
bool | hasNoSignedWrap () const |
Determine whether the no signed wrap flag is set. More... | |
void | dropPoisonGeneratingFlags () |
Drops flags that may cause this instruction to evaluate to poison despite having non-poison inputs. More... | |
bool | isExact () const |
Determine whether the exact flag is set. More... | |
void | setFast (bool B) |
Set or clear all fast-math-flags on this instruction, which must be an operator which supports this flag. More... | |
void | setHasAllowReassoc (bool B) |
Set or clear the reassociation flag on this instruction, which must be an operator which supports this flag. More... | |
void | setHasNoNaNs (bool B) |
Set or clear the no-nans flag on this instruction, which must be an operator which supports this flag. More... | |
void | setHasNoInfs (bool B) |
Set or clear the no-infs flag on this instruction, which must be an operator which supports this flag. More... | |
void | setHasNoSignedZeros (bool B) |
Set or clear the no-signed-zeros flag on this instruction, which must be an operator which supports this flag. More... | |
void | setHasAllowReciprocal (bool B) |
Set or clear the allow-reciprocal flag on this instruction, which must be an operator which supports this flag. More... | |
void | setHasApproxFunc (bool B) |
Set or clear the approximate-math-functions flag on this instruction, which must be an operator which supports this flag. More... | |
void | setFastMathFlags (FastMathFlags FMF) |
Convenience function for setting multiple fast-math flags on this instruction, which must be an operator which supports these flags. More... | |
void | copyFastMathFlags (FastMathFlags FMF) |
Convenience function for transferring all fast-math flag values to this instruction, which must be an operator which supports these flags. More... | |
bool | isFast () const |
Determine whether all fast-math-flags are set. More... | |
bool | hasAllowReassoc () const |
Determine whether the allow-reassociation flag is set. More... | |
bool | hasNoNaNs () const |
Determine whether the no-NaNs flag is set. More... | |
bool | hasNoInfs () const |
Determine whether the no-infs flag is set. More... | |
bool | hasNoSignedZeros () const |
Determine whether the no-signed-zeros flag is set. More... | |
bool | hasAllowReciprocal () const |
Determine whether the allow-reciprocal flag is set. More... | |
bool | hasAllowContract () const |
Determine whether the allow-contract flag is set. More... | |
bool | hasApproxFunc () const |
Determine whether the approximate-math-functions flag is set. More... | |
FastMathFlags | getFastMathFlags () const |
Convenience function for getting all the fast-math flags, which must be an operator which supports these flags. More... | |
void | copyFastMathFlags (const Instruction *I) |
Copy I's fast-math flags. More... | |
void | copyIRFlags (const Value *V, bool IncludeWrapFlags=true) |
Convenience method to copy supported exact, fast-math, and (optionally) wrapping flags from V to this instruction. More... | |
void | andIRFlags (const Value *V) |
Logical 'and' of any supported wrapping, exact, and fast-math flags of V and this instruction. More... | |
void | applyMergedLocation (const DILocation *LocA, const DILocation *LocB) |
Merge 2 debug locations and apply it to the Instruction. More... | |
bool | isAssociative () const LLVM_READONLY |
Return true if the instruction is associative: More... | |
bool | isCommutative () const |
Return true if the instruction is commutative: More... | |
bool | isIdempotent () const |
Return true if the instruction is idempotent: More... | |
bool | isNilpotent () const |
Return true if the instruction is nilpotent: More... | |
bool | mayWriteToMemory () const |
Return true if this instruction may modify memory. More... | |
bool | mayReadFromMemory () const |
Return true if this instruction may read memory. More... | |
bool | mayReadOrWriteMemory () const |
Return true if this instruction may read or write memory. More... | |
bool | isAtomic () const |
Return true if this instruction has an AtomicOrdering of unordered or higher. More... | |
bool | hasAtomicLoad () const |
Return true if this atomic instruction loads from memory. More... | |
bool | hasAtomicStore () const |
Return true if this atomic instruction stores to memory. More... | |
bool | mayThrow () const |
Return true if this instruction may throw an exception. More... | |
bool | isFenceLike () const |
Return true if this instruction behaves like a memory fence: it can load or store to memory location without being given a memory location. More... | |
bool | mayHaveSideEffects () const |
Return true if the instruction may have side effects. More... | |
bool | isSafeToRemove () const |
Return true if the instruction can be removed if the result is unused. More... | |
bool | isEHPad () const |
Return true if the instruction is a variety of EH-block. More... | |
bool | isLifetimeStartOrEnd () const |
Return true if the instruction is a llvm.lifetime.start or llvm.lifetime.end marker. More... | |
const Instruction * | getNextNonDebugInstruction () const |
Return a pointer to the next non-debug instruction in the same basic block as 'this', or nullptr if no such instruction exists. More... | |
Instruction * | getNextNonDebugInstruction () |
const Instruction * | getPrevNonDebugInstruction () const |
Return a pointer to the previous non-debug instruction in the same basic block as 'this', or nullptr if no such instruction exists. More... | |
Instruction * | getPrevNonDebugInstruction () |
Instruction * | clone () const |
Create a copy of 'this' instruction that is identical in all ways except the following: More... | |
bool | isIdenticalTo (const Instruction *I) const |
Return true if the specified instruction is exactly identical to the current one. More... | |
bool | isIdenticalToWhenDefined (const Instruction *I) const |
This is like isIdenticalTo, except that it ignores the SubclassOptionalData flags, which may specify conditions under which the instruction's result is undefined. More... | |
bool | isSameOperationAs (const Instruction *I, unsigned flags=0) const |
This function determines if the specified instruction executes the same operation as the current one. More... | |
bool | isUsedOutsideOfBlock (const BasicBlock *BB) const |
Return true if there are any uses of this instruction in blocks other than the specified block. More... | |
unsigned | getNumSuccessors () const |
Return the number of successors that this instruction has. More... | |
BasicBlock * | getSuccessor (unsigned Idx) const |
Return the specified successor. This instruction must be a terminator. More... | |
void | setSuccessor (unsigned Idx, BasicBlock *BB) |
Update the specified successor to point at the provided block. More... | |
void | dropUnknownNonDebugMetadata (ArrayRef< unsigned > KnownIDs) |
Drop all unknown metadata except for debug locations. More... | |
void | dropUnknownNonDebugMetadata () |
void | dropUnknownNonDebugMetadata (unsigned ID1) |
void | dropUnknownNonDebugMetadata (unsigned ID1, unsigned ID2) |
Public Member Functions inherited from llvm::User | |
User (const User &)=delete | |
void | operator delete (void *Usr) |
Free memory allocated for User and Use objects. More... | |
void | operator delete (void *Usr, unsigned) |
Placement delete - required by std, called if the ctor throws. More... | |
void | operator delete (void *Usr, unsigned, bool) |
Placement delete - required by std, called if the ctor throws. More... | |
const Use * | getOperandList () const |
Use * | getOperandList () |
Value * | getOperand (unsigned i) const |
void | setOperand (unsigned i, Value *Val) |
const Use & | getOperandUse (unsigned i) const |
Use & | getOperandUse (unsigned i) |
unsigned | getNumOperands () const |
ArrayRef< const uint8_t > | getDescriptor () const |
Returns the descriptor co-allocated with this User instance. More... | |
MutableArrayRef< uint8_t > | getDescriptor () |
Returns the descriptor co-allocated with this User instance. More... | |
void | setGlobalVariableNumOperands (unsigned NumOps) |
Set the number of operands on a GlobalVariable. More... | |
void | setNumHungOffUseOperands (unsigned NumOps) |
Subclasses with hung off uses need to manage the operand count themselves. More... | |
op_iterator | op_begin () |
const_op_iterator | op_begin () const |
op_iterator | op_end () |
const_op_iterator | op_end () const |
op_range | operands () |
const_op_range | operands () const |
value_op_iterator | value_op_begin () |
value_op_iterator | value_op_end () |
iterator_range< value_op_iterator > | operand_values () |
const_value_op_iterator | value_op_begin () const |
const_value_op_iterator | value_op_end () const |
iterator_range< const_value_op_iterator > | operand_values () const |
void | dropAllReferences () |
Drop all references to operands. More... | |
void | replaceUsesOfWith (Value *From, Value *To) |
Replace uses of one Value with another. More... | |
Public Member Functions inherited from llvm::Value | |
Value (const Value &)=delete | |
Value & | operator= (const Value &)=delete |
void | deleteValue () |
Delete a pointer to a generic Value. More... | |
void | dump () const |
Support for debugging, callable in GDB: V->dump() More... | |
Type * | getType () const |
All values are typed, get the type of this value. More... | |
LLVMContext & | getContext () const |
All values hold a context through their type. More... | |
bool | hasName () const |
ValueName * | getValueName () const |
void | setValueName (ValueName *VN) |
StringRef | getName () const |
Return a constant reference to the value's name. More... | |
void | setName (const Twine &Name) |
Change the name of the value. More... | |
void | takeName (Value *V) |
Transfer the name from V to this value. More... | |
void | replaceAllUsesWith (Value *V) |
Change all uses of this to point to a new Value. More... | |
void | replaceNonMetadataUsesWith (Value *V) |
Change non-metadata uses of this to point to a new Value. More... | |
void | replaceUsesOutsideBlock (Value *V, BasicBlock *BB) |
replaceUsesOutsideBlock - Go through the uses list for this definition and make each use point to "V" instead of "this" when the use is outside the block. More... | |
void | assertModuleIsMaterializedImpl () const |
void | assertModuleIsMaterialized () const |
bool | use_empty () const |
bool | materialized_use_empty () const |
use_iterator | materialized_use_begin () |
const_use_iterator | materialized_use_begin () const |
use_iterator | use_begin () |
const_use_iterator | use_begin () const |
use_iterator | use_end () |
const_use_iterator | use_end () const |
iterator_range< use_iterator > | materialized_uses () |
iterator_range< const_use_iterator > | materialized_uses () const |
iterator_range< use_iterator > | uses () |
iterator_range< const_use_iterator > | uses () const |
bool | user_empty () const |
user_iterator | materialized_user_begin () |
const_user_iterator | materialized_user_begin () const |
user_iterator | user_begin () |
const_user_iterator | user_begin () const |
user_iterator | user_end () |
const_user_iterator | user_end () const |
User * | user_back () |
const User * | user_back () const |
iterator_range< user_iterator > | materialized_users () |
iterator_range< const_user_iterator > | materialized_users () const |
iterator_range< user_iterator > | users () |
iterator_range< const_user_iterator > | users () const |
bool | hasOneUse () const |
Return true if there is exactly one user of this value. More... | |
bool | hasNUses (unsigned N) const |
Return true if this Value has exactly N users. More... | |
bool | hasNUsesOrMore (unsigned N) const |
Return true if this value has N users or more. More... | |
bool | isUsedInBasicBlock (const BasicBlock *BB) const |
Check if this value is used in the specified basic block. More... | |
unsigned | getNumUses () const |
This method computes the number of uses of this Value. More... | |
void | addUse (Use &U) |
This method should only be used by the Use class. More... | |
unsigned | getValueID () const |
Return an ID for the concrete type of this object. More... | |
unsigned | getRawSubclassOptionalData () const |
Return the raw optional flags value contained in this value. More... | |
void | clearSubclassOptionalData () |
Clear the optional flags contained in this value. More... | |
bool | hasSameSubclassOptionalData (const Value *V) const |
Check the optional flags for equality. More... | |
bool | hasValueHandle () const |
Return true if there is a value handle associated with this value. More... | |
bool | isUsedByMetadata () const |
Return true if there is metadata referencing this value. More... | |
bool | isSwiftError () const |
Return true if this value is a swifterror value. More... | |
const Value * | stripPointerCasts () const |
Strip off pointer casts, all-zero GEPs, and aliases. More... | |
Value * | stripPointerCasts () |
const Value * | stripPointerCastsAndInvariantGroups () const |
Strip off pointer casts, all-zero GEPs, aliases and invariant group info. More... | |
Value * | stripPointerCastsAndInvariantGroups () |
const Value * | stripPointerCastsNoFollowAliases () const |
Strip off pointer casts and all-zero GEPs. More... | |
Value * | stripPointerCastsNoFollowAliases () |
const Value * | stripInBoundsConstantOffsets () const |
Strip off pointer casts and all-constant inbounds GEPs. More... | |
Value * | stripInBoundsConstantOffsets () |
const Value * | stripAndAccumulateInBoundsConstantOffsets (const DataLayout &DL, APInt &Offset) const |
Accumulate offsets from stripInBoundsConstantOffsets(). More... | |
Value * | stripAndAccumulateInBoundsConstantOffsets (const DataLayout &DL, APInt &Offset) |
const Value * | stripInBoundsOffsets () const |
Strip off pointer casts and inbounds GEPs. More... | |
Value * | stripInBoundsOffsets () |
uint64_t | getPointerDereferenceableBytes (const DataLayout &DL, bool &CanBeNull) const |
Returns the number of bytes known to be dereferenceable for the pointer value. More... | |
unsigned | getPointerAlignment (const DataLayout &DL) const |
Returns an alignment of the pointer value. More... | |
const Value * | DoPHITranslation (const BasicBlock *CurBB, const BasicBlock *PredBB) const |
Translate PHI node to its predecessor from the given basic block. More... | |
Value * | DoPHITranslation (const BasicBlock *CurBB, const BasicBlock *PredBB) |
void | mutateType (Type *Ty) |
Mutate the type of this Value to be of the specified type. More... | |
template<class Compare > | |
void | sortUseList (Compare Cmp) |
Sort the use-list. More... | |
void | reverseUseList () |
Reverse the use-list. More... | |
void | print (raw_ostream &O, bool IsForDebug=false) const |
Implement operator<< on Value. More... | |
void | print (raw_ostream &O, ModuleSlotTracker &MST, bool IsForDebug=false) const |
void | printAsOperand (raw_ostream &O, bool PrintType=true, const Module *M=nullptr) const |
Print the name of this Value out to the specified raw_ostream. More... | |
void | printAsOperand (raw_ostream &O, bool PrintType, ModuleSlotTracker &MST) const |
Public Member Functions inherited from llvm::ilist_node_with_parent< Instruction, BasicBlock > | |
Instruction * | getPrevNode () |
const Instruction * | getPrevNode () const |
Get the previous node, or nullptr for the list head. More... | |
Instruction * | getNextNode () |
Get the next node, or nullptr for the list tail. More... | |
const Instruction * | getNextNode () const |
Get the next node, or nullptr for the list tail. More... | |
Public Member Functions inherited from llvm::ilist_node_impl< ilist_detail::compute_node_options< Instruction, Options... >::type > | |
self_iterator | getIterator () |
const_self_iterator | getIterator () const |
reverse_self_iterator | getReverseIterator () |
const_reverse_self_iterator | getReverseIterator () const |
bool | isSentinel () const |
Check whether this is the sentinel node. More... | |
Static Public Member Functions | |
static unsigned | getPointerOperandIndex () |
static bool | classof (const Instruction *I) |
static bool | classof (const Value *V) |
Static Public Member Functions inherited from llvm::UnaryInstruction | |
static bool | classof (const Instruction *I) |
static bool | classof (const Value *V) |
Static Public Member Functions inherited from llvm::Instruction | |
static const char * | getOpcodeName (unsigned OpCode) |
static bool | isTerminator (unsigned OpCode) |
static bool | isUnaryOp (unsigned Opcode) |
static bool | isBinaryOp (unsigned Opcode) |
static bool | isIntDivRem (unsigned Opcode) |
static bool | isShift (unsigned Opcode) |
Determine if the Opcode is one of the shift instructions. More... | |
static bool | isBitwiseLogicOp (unsigned Opcode) |
Determine if the Opcode is and/or/xor. More... | |
static bool | isCast (unsigned OpCode) |
Determine if the OpCode is one of the CastInst instructions. More... | |
static bool | isFuncletPad (unsigned OpCode) |
Determine if the OpCode is one of the FuncletPadInst instructions. More... | |
static bool | isExceptionalTerminator (unsigned OpCode) |
Returns true if the OpCode is a terminator related to exception handling. More... | |
static bool | isAssociative (unsigned Opcode) |
static bool | isCommutative (unsigned Opcode) |
static bool | isIdempotent (unsigned Opcode) |
static bool | isNilpotent (unsigned Opcode) |
static bool | classof (const Value *V) |
Methods for support type inquiry through isa, cast, and dyn_cast: More... | |
Static Public Member Functions inherited from llvm::User | |
static bool | classof (const Value *V) |
Protected Member Functions | |
LoadInst * | cloneImpl () const |
Protected Member Functions inherited from llvm::UnaryInstruction | |
UnaryInstruction (Type *Ty, unsigned iType, Value *V, Instruction *IB=nullptr) | |
UnaryInstruction (Type *Ty, unsigned iType, Value *V, BasicBlock *IAE) | |
Protected Member Functions inherited from llvm::Instruction | |
~Instruction () | |
void | setInstructionSubclassData (unsigned short D) |
unsigned | getSubclassDataFromInstruction () const |
Instruction (Type *Ty, unsigned iType, Use *Ops, unsigned NumOps, Instruction *InsertBefore=nullptr) | |
Instruction (Type *Ty, unsigned iType, Use *Ops, unsigned NumOps, BasicBlock *InsertAtEnd) | |
Protected Member Functions inherited from llvm::User | |
void * | operator new (size_t Size) |
Allocate a User with an operand pointer co-allocated. More... | |
void * | operator new (size_t Size, unsigned Us) |
Allocate a User with the operands co-allocated. More... | |
void * | operator new (size_t Size, unsigned Us, unsigned DescBytes) |
Allocate a User with the operands co-allocated. More... | |
User (Type *ty, unsigned vty, Use *, unsigned NumOps) | |
void | allocHungoffUses (unsigned N, bool IsPhi=false) |
Allocate the array of Uses, followed by a pointer (with bottom bit set) to the User. More... | |
void | growHungoffUses (unsigned N, bool IsPhi=false) |
Grow the number of hung off uses. More... | |
~User ()=default | |
template<int Idx> | |
Use & | Op () |
template<int Idx> | |
const Use & | Op () const |
Protected Member Functions inherited from llvm::Value | |
Value (Type *Ty, unsigned scid) | |
~Value () | |
Value's destructor should be virtual by design, but that would require that Value and all of its subclasses have a vtable that effectively duplicates the information in the value ID. More... | |
unsigned short | getSubclassDataFromValue () const |
void | setValueSubclassData (unsigned short D) |
Protected Member Functions inherited from llvm::ilist_node_with_parent< Instruction, BasicBlock > | |
ilist_node_with_parent ()=default | |
Protected Member Functions inherited from llvm::ilist_node_impl< ilist_detail::compute_node_options< Instruction, Options... >::type > | |
ilist_node_impl ()=default | |
Friends | |
class | Instruction |
An instruction for reading from memory.
This uses the SubclassData field in Value to store whether or not the load is volatile.
Definition at line 168 of file Instructions.h.
LoadInst::LoadInst | ( | Type * | Ty, |
Value * | Ptr, | ||
const Twine & | NameStr = "" , |
||
Instruction * | InsertBefore = nullptr |
||
) |
Definition at line 1141 of file Instructions.cpp.
LoadInst::LoadInst | ( | Type * | Ty, |
Value * | Ptr, | ||
const Twine & | NameStr, | ||
BasicBlock * | InsertAtEnd | ||
) |
Definition at line 1145 of file Instructions.cpp.
LoadInst::LoadInst | ( | Type * | Ty, |
Value * | Ptr, | ||
const Twine & | NameStr, | ||
bool | isVolatile, | ||
Instruction * | InsertBefore = nullptr |
||
) |
Definition at line 1149 of file Instructions.cpp.
LoadInst::LoadInst | ( | Type * | Ty, |
Value * | Ptr, | ||
const Twine & | NameStr, | ||
bool | isVolatile, | ||
BasicBlock * | InsertAtEnd | ||
) |
Definition at line 1153 of file Instructions.cpp.
LoadInst::LoadInst | ( | Type * | Ty, |
Value * | Ptr, | ||
const Twine & | NameStr, | ||
bool | isVolatile, | ||
unsigned | Align, | ||
Instruction * | InsertBefore = nullptr |
||
) |
Definition at line 1157 of file Instructions.cpp.
LoadInst::LoadInst | ( | Type * | Ty, |
Value * | Ptr, | ||
const Twine & | NameStr, | ||
bool | isVolatile, | ||
unsigned | Align, | ||
BasicBlock * | InsertAtEnd | ||
) |
Definition at line 1162 of file Instructions.cpp.
LoadInst::LoadInst | ( | Type * | Ty, |
Value * | Ptr, | ||
const Twine & | NameStr, | ||
bool | isVolatile, | ||
unsigned | Align, | ||
AtomicOrdering | Order, | ||
SyncScope::ID | SSID = SyncScope::System , |
||
Instruction * | InsertBefore = nullptr |
||
) |
Definition at line 1167 of file Instructions.cpp.
References assert(), llvm::Value::getType(), setAlignment(), setAtomic(), llvm::Value::setName(), and setVolatile().
LoadInst::LoadInst | ( | Type * | Ty, |
Value * | Ptr, | ||
const Twine & | NameStr, | ||
bool | isVolatile, | ||
unsigned | Align, | ||
AtomicOrdering | Order, | ||
SyncScope::ID | SSID, | ||
BasicBlock * | InsertAtEnd | ||
) |
Definition at line 1179 of file Instructions.cpp.
References assert(), llvm::Value::getType(), setAlignment(), setAtomic(), llvm::Value::setName(), and setVolatile().
|
inlineexplicit |
Definition at line 198 of file Instructions.h.
|
inline |
Definition at line 202 of file Instructions.h.
|
inline |
Definition at line 205 of file Instructions.h.
|
inline |
Definition at line 209 of file Instructions.h.
|
inline |
Definition at line 213 of file Instructions.h.
|
inline |
Definition at line 217 of file Instructions.h.
|
inline |
Definition at line 221 of file Instructions.h.
|
inline |
Definition at line 226 of file Instructions.h.
|
inlinestatic |
Definition at line 296 of file Instructions.h.
References llvm::Instruction::getOpcode(), and llvm::SPII::Load.
Definition at line 299 of file Instructions.h.
References llvm::AllocaInst::classof(), D, and llvm::Instruction::setInstructionSubclassData().
|
protected |
Definition at line 3840 of file Instructions.cpp.
References getAlignment(), llvm::User::getOperand(), llvm::Value::getType(), and isVolatile().
|
inline |
Return the alignment of the access that is being performed.
Definition at line 241 of file Instructions.h.
References llvm::AMDGPU::HSAMD::Kernel::Arg::Key::Align, llvm::Instruction::getSubclassDataFromInstruction(), and llvm::AllocaInst::setAlignment().
Referenced by alwaysAvailable(), atomicSizeSupported(), combineLoadToNewType(), computeBytesPoppedByCalleeForSRet(), CreateLoadIns(), doPromotion(), findLoadAlignment(), getAtomicOpAlign(), llvm::MemoryDependenceResults::getLoadLoadClobberFullWidthSize(), llvm::VNCoercion::getLoadValueForLoad(), getScalarIntrinsicDeclaration(), getUniformBase(), hasOnlySelectUsers(), INITIALIZE_PASS(), inversePermutation(), isContiguous(), isSafeAndProfitableToSinkLoad(), isSafePHIToSpeculate(), isSafeSelectToSpeculate(), llvm::isSafeToSpeculativelyExecute(), llvm::GVNExpression::LoadExpression::LoadExpression(), llvm::ARMTargetLowering::lowerInterleavedLoad(), matchVectorSplittingReduction(), mayLoopAccessLocation(), promotedOpIsNUW(), reportMayClobberedLoad(), setAlignment(), llvm::JumpThreadingPass::SimplifyPartiallyRedundantLoad(), speculatePHINodeLoads(), speculateSelectInstLoads(), TypeSizeToSizeIndex(), unpackLoadToAggregate(), llvm::sroa::AllocaSliceRewriter::visit(), and llvm::InstCombiner::visitLoadInst().
|
inline |
Returns the ordering constraint of this load instruction.
Definition at line 248 of file Instructions.h.
References llvm::Instruction::getSubclassDataFromInstruction().
Referenced by llvm::AliasSetTracker::add(), areLoadsReorderable(), atomicSizeSupported(), canUseSizedAtomicCall(), combineLoadToNewType(), computeValueLLTs(), llvm::AAResults::getModRefInfo(), getUniformBase(), isContiguous(), OptimizeGlobalAddressOfMalloc(), reportMayClobberedLoad(), llvm::JumpThreadingPass::SimplifyPartiallyRedundantLoad(), TryToShrinkGlobalToBoolean(), TypeSizeToSizeIndex(), llvm::sroa::AllocaSliceRewriter::visit(), and llvm::InstCombiner::visitLoadInst().
|
inline |
Returns the address space of the pointer operand.
Definition at line 291 of file Instructions.h.
Referenced by canSimplifyNullLoadOrGEP(), combineLoadToNewType(), CreateLoadIns(), getChainID(), getMulHu(), getTypePartition(), inversePermutation(), isLoadInvariantInLoop(), isSafeAndProfitableToSinkLoad(), llvm::AArch64TargetLowering::lowerInterleavedLoad(), llvm::ARMTargetLowering::lowerInterleavedLoad(), matchVectorSplittingReduction(), mayLoopAccessLocation(), tryUnmergingGEPsAcrossIndirectBr(), llvm::sroa::AllocaSliceRewriter::visit(), and llvm::InstCombiner::visitLoadInst().
|
inline |
Definition at line 285 of file Instructions.h.
References llvm::User::getOperand().
Referenced by llvm::MemoryDepChecker::addAccess(), alwaysAvailable(), llvm::VNCoercion::analyzeLoadFromClobberingLoad(), atomicSizeSupported(), canUseSizedAtomicCall(), canVectorizeInst(), combineLoadToNewType(), combineLoadToOperationType(), computeBytesPoppedByCalleeForSRet(), computeValueLLTs(), llvm::copyNonnullMetadata(), llvm::createFalkorMarkStridedAccessesPass(), CreateLoadIns(), llvm::FindAvailableLoadedValue(), llvm::MemoryLocation::get(), getChainID(), getFalkorUnrollingPreferences(), llvm::MemoryDependenceResults::getInvariantGroupPointerDependency(), llvm::MemoryDependenceResults::getLoadLoadClobberFullWidthSize(), llvm::VNCoercion::getLoadValueForLoad(), getMemSetPatternValue(), getMulHu(), getScalarIntrinsicDeclaration(), getTypePartition(), getUniformBase(), hasZeroSignBit(), INITIALIZE_PASS(), llvm::LoadInfo::insert(), InTreeUserNeedToExtract(), inversePermutation(), llvm::CodeExtractor::isLegalToShrinkwrapLifetimeMarkers(), isReportingError(), llvm::isSafeToSpeculativelyExecute(), llvm::AArch64TargetLowering::lowerInterleavedLoad(), llvm::ARMTargetLowering::lowerInterleavedLoad(), mayLoopAccessLocation(), patchAndReplaceAllUsesWith(), reportMayClobberedLoad(), shouldInstrumentReadWriteFromAddress(), TypeSizeToSizeIndex(), unpackLoadToAggregate(), llvm::sroa::AllocaSliceRewriter::visit(), and llvm::Interpreter::visitLoadInst().
Definition at line 286 of file Instructions.h.
References llvm::User::getOperand().
|
inlinestatic |
Definition at line 287 of file Instructions.h.
Referenced by getTypePartition(), and isSimplePointerUseValidToReplace().
|
inline |
Definition at line 288 of file Instructions.h.
References llvm::getPointerOperand(), and llvm::Value::getType().
Referenced by canVectorizeInst(), isLoadConditional(), and LowerRotate().
|
inline |
Returns the synchronization scope ID of this load instruction.
Definition at line 260 of file Instructions.h.
Referenced by atomicSizeSupported(), combineLoadToNewType(), computeValueLLTs(), getUniformBase(), isContiguous(), OptimizeGlobalAddressOfMalloc(), reportMayClobberedLoad(), llvm::JumpThreadingPass::SimplifyPartiallyRedundantLoad(), TryToShrinkGlobalToBoolean(), llvm::sroa::AllocaSliceRewriter::visit(), and llvm::InstCombiner::visitLoadInst().
|
inline |
Definition at line 277 of file Instructions.h.
References llvm::Instruction::isAtomic(), and isVolatile().
Referenced by alwaysAvailable(), llvm::VNCoercion::analyzeLoadFromClobberingLoad(), llvm::slpvectorizer::BoUpSLP::canMapToVector(), canVectorizeInst(), llvm::MemoryDependenceResults::getLoadLoadClobberFullWidthSize(), llvm::VNCoercion::getLoadValueForLoad(), getScalarIntrinsicDeclaration(), hasSameExtUse(), hasZeroSignBit(), llvm::LoadInfo::insert(), isReInterleaveMask(), isSafePHIToSpeculate(), isSafeSelectToSpeculate(), promotedOpIsNUW(), AllocaSlices::SliceBuilder::SliceBuilder(), speculateSelectInstLoads(), unpackLoadToAggregate(), and llvm::sroa::AllocaSliceRewriter::visit().
|
inline |
Definition at line 279 of file Instructions.h.
References isVolatile(), llvm::NotAtomic, and llvm::Unordered.
Referenced by combineLoadToOperationType(), llvm::FindAvailableLoadedValue(), getMemSetPatternValue(), llvm::isSafeToSpeculativelyExecute(), OptimizeGlobalAddressOfMalloc(), patchAndReplaceAllUsesWith(), reportMayClobberedLoad(), llvm::JumpThreadingPass::SimplifyPartiallyRedundantLoad(), and llvm::InstCombiner::visitLoadInst().
|
inline |
Return true if this is a load from a volatile memory location.
Definition at line 232 of file Instructions.h.
References llvm::Instruction::getSubclassDataFromInstruction().
Referenced by areLoadsReorderable(), atomicSizeSupported(), combineLoadToNewType(), computeValueLLTs(), llvm::ConstantFoldLoadFromConstPtr(), EvaluateConstantChrecAtConstant(), EvaluateExpression(), getMemSetPatternValue(), hasOnlySelectUsers(), isSafeAndProfitableToSinkLoad(), reportMayClobberedLoad(), AllocaSlices::SliceBuilder::SliceBuilder(), llvm::FastISel::tryToFoldLoad(), llvm::sroa::AllocaSliceRewriter::visit(), and llvm::Interpreter::visitLoadInst().
void LoadInst::setAlignment | ( | unsigned | Align | ) |
Definition at line 1191 of file Instructions.cpp.
References assert(), getAlignment(), llvm::User::getOperand(), llvm::Instruction::getSubclassDataFromInstruction(), llvm::Value::getType(), llvm::Instruction::isAtomic(), llvm::Log2_32(), and llvm::Value::MaximumAlignment.
Referenced by llvm::IRBuilder< TargetFolder >::CreateAlignedLoad(), doPromotion(), llvm::VNCoercion::getLoadValueForLoad(), getNegativeIsTrueBoolVec(), INITIALIZE_PASS(), inversePermutation(), LoadInst(), performMaskedAtomicOp(), llvm::promoteLoopAccessesToScalars(), speculatePHINodeLoads(), speculateSelectInstLoads(), llvm::sroa::AllocaSliceRewriter::visit(), and llvm::InstCombiner::visitLoadInst().
|
inline |
Sets the ordering constraint and the synchronization scope ID of this load instruction.
Definition at line 271 of file Instructions.h.
Referenced by combineLoadToNewType(), LoadInst(), LowerLoadInst(), LowerRotate(), llvm::sroa::AllocaSliceRewriter::visit(), and llvm::InstCombiner::visitLoadInst().
|
inline |
Sets the ordering constraint of this load instruction.
May not be Release or AcquireRelease.
Definition at line 254 of file Instructions.h.
References llvm::Instruction::getSubclassDataFromInstruction().
Referenced by getNegativeIsTrueBoolVec(), llvm::promoteLoopAccessesToScalars(), and TypeSizeToSizeIndex().
|
inline |
Sets the synchronization scope ID of this load instruction.
Definition at line 265 of file Instructions.h.
|
inline |
Specify whether this is a volatile load or not.
Definition at line 235 of file Instructions.h.
References llvm::Instruction::getSubclassDataFromInstruction().
Referenced by getNegativeIsTrueBoolVec(), LoadInst(), and performMaskedAtomicOp().
|
friend |
Definition at line 173 of file Instructions.h.