16 #ifndef LLVM_CODEGEN_MACHINEMEMOPERAND_H
17 #define LLVM_CODEGEN_MACHINEMEMOPERAND_H
23 #include "llvm/Support/DataTypes.h"
27 class FoldingSetNodeID;
30 class ModuleSlotTracker;
122 unsigned base_alignment,
124 const MDNode *Ranges =
nullptr);
225 return !(LHS == RHS);
The memory access reads data.
The memory access writes data.
static MachinePointerInfo getJumpTable()
getJumpTable - Return a MachinePointerInfo record that refers to a jump table entry.
T dyn_cast() const
dyn_cast<T>() - If the current value is of the specified pointer type, return it, otherwise return nu...
Manage lifetime of a slot tracker for printing IR.
static MachinePointerInfo getConstantPool()
getConstantPool - Return a MachinePointerInfo record that refers to the constant pool.
const MachinePointerInfo & getPointerInfo() const
static MachinePointerInfo getFixedStack(int FI, int64_t offset=0)
getFixedStack - Return a MachinePointerInfo record that refers to the the specified FrameIndex...
void * getOpaqueValue() const
MachineMemOperand - A description of a memory reference used in the backend.
MachinePointerInfo(const PseudoSourceValue *v, int64_t offset=0)
MachinePointerInfo getWithOffset(int64_t O) const
friend bool operator!=(const MachineMemOperand &LHS, const MachineMemOperand &RHS)
The memory access is volatile.
void setFlags(unsigned f)
Bitwise OR the current flags with the given flags.
uint64_t getAlignment() const
getAlignment - Return the minimum known alignment in bytes of the actual memory reference.
The memory access is non-temporal.
FoldingSetNodeID - This class is used to gather all the unique data bits of a node.
unsigned int getFlags() const
getFlags - Return the raw flags of the source value,
AAMDNodes getAAInfo() const
getAAInfo - Return the AA tags for the memory reference.
PointerUnion< const Value *, const PseudoSourceValue * > V
V - This is the IR pointer value for the access, or it is null if unknown.
int64_t Offset
Offset - This is an offset from the base Value*.
void Profile(FoldingSetNodeID &ID) const
Profile - Gather unique data for the object.
void setOffset(int64_t NewOffset)
const PseudoSourceValue * getPseudoValue() const
MachinePointerInfo - This class contains a discriminated union of information about pointers in memor...
bool isNull() const
isNull - Return true if the pointer held in the union is null, regardless of which type it is...
The memory access is invariant.
void refineAlignment(const MachineMemOperand *MMO)
refineAlignment - Update this MachineMemOperand to reflect the alignment of MMO, if it has a greater ...
const void * getOpaqueValue() const
void setValue(const Value *NewSV)
setValue - Change the SourceValue for this MachineMemOperand.
T get() const
get<T>() - Return the value of the specified pointer type.
A collection of metadata nodes that might be associated with a memory access used by the alias-analys...
unsigned getAddrSpace() const
getAddrSpace - Return the LLVM IR address space number that this pointer points into.
MemOperandFlags
Flags values. These may be or'd together.
static MachinePointerInfo getStack(int64_t Offset)
getStack - stack pointer relative access.
MachineMemOperand(MachinePointerInfo PtrInfo, unsigned flags, uint64_t s, unsigned base_alignment, const AAMDNodes &AAInfo=AAMDNodes(), const MDNode *Ranges=nullptr)
MachineMemOperand - Construct an MachineMemOperand object with the specified PtrInfo, flags, size, and base alignment.
const Value * getValue() const
getValue - Return the base address of the memory access.
PseudoSourceValue - Special value supplied for machine level alias analysis.
void print(raw_ostream &OS) const
Support for operator<<.
bool isNonTemporal() const
friend bool operator==(const MachineMemOperand &LHS, const MachineMemOperand &RHS)
static MachinePointerInfo getGOT()
getGOT - Return a MachinePointerInfo record that refers to a GOT entry.
bool isUnordered() const
isUnordered - Returns true if this memory operation doesn't have any ordering constraints other than ...
unsigned getAddrSpace() const
raw_ostream & operator<<(raw_ostream &OS, const APInt &I)
void setValue(const PseudoSourceValue *NewSV)
MachinePointerInfo(const Value *v=nullptr, int64_t offset=0)
const MDNode * getRanges() const
getRanges - Return the range tag for the memory reference.
LLVM Value Representation.
int64_t getOffset() const
getOffset - For normal values, this is a byte offset added to the base address.
uint64_t getSize() const
getSize - Return the size in bytes of the memory reference.
This class implements an extremely fast bulk output stream that can only output to a stream...
int is() const
is<T>() return true if the Union currently holds the type matching T.
uint64_t getBaseAlignment() const
getBaseAlignment - Return the minimum known alignment in bytes of the base address, without the offset.