class MemSDNode

Declaration

class MemSDNode : public SDNode { /* full declaration omitted */ };

Description

This is an abstract virtual class for memory operations.

Declared at: llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1260

Inherits from: SDNode

Member Variables

private llvm::EVT MemoryVT
protected llvm::MachineMemOperand* MMO
Memory reference information.

Inherited from SDNode:

protected
public PersistentId

Method Overview

Inherited from SDNode:

Inherited from FoldingSetBase::Node:

Methods

MemSDNode(unsigned int Opc,
          unsigned int Order,
          const llvm::DebugLoc& dl,
          llvm::SDVTList VTs,
          llvm::EVT memvt,
          llvm::MachineMemOperand* MMO)

Declared at: llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1270

Parameters

unsigned int Opc
unsigned int Order
const llvm::DebugLoc& dl
llvm::SDVTList VTs
llvm::EVT memvt
llvm::MachineMemOperand* MMO

static bool classof(const llvm::SDNode* N)

Declared at: llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1384

Parameters

const llvm::SDNode* N

llvm::AAMDNodes getAAInfo() const

Description

Returns the AA info that describes the dereference.

Declared at: llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1310

unsigned int getAddressSpace() const

Description

Return the address space for the associated pointer

Declared at: llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1353

llvm::Align getAlign() const

Declared at: llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1278

unsigned int getAlignment() const

Declared at: llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1280

const llvm::SDValue& getBasePtr() const

Declared at: llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1367

const llvm::SDValue& getChain() const

Declared at: llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1365

llvm::MachineMemOperand* getMemOperand() const

Description

Return a MachineMemOperand object describing the memory reference performed by operation.

Declared at: llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1346

llvm::EVT getMemoryVT() const

Description

Return the type of the in-memory value.

Declared at: llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1342

llvm::AtomicOrdering getMergedOrdering() const

Description

Return a single atomic ordering that is at least as strong as both the success and failure orderings for an atomic operation. (For operations other than cmpxchg, this is equivalent to getSuccessOrdering().)

Declared at: llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1328

llvm::Align getOriginalAlign() const

Description

Returns alignment and volatility of the memory access

Declared at: llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1277

const llvm::MachinePointerInfo& getPointerInfo()
    const

Declared at: llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1348

const llvm::MDNode* getRanges() const

Description

Returns the Ranges that describes the dereference.

Declared at: llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1313

unsigned int getRawSubclassData() const

Description

Return the SubclassData value, without HasDebugValue. This contains an encoding of the volatile flag, as well as bits used by subclasses. This function should only be used to compute a FoldingSetNodeID value. The HasDebugValue bit is masked out because CSE map needs to match nodes with debug info with nodes without debug info. Same is about isDivergent bit.

Declared at: llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1288

int64_t getSrcValueOffset() const

Declared at: llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1307

llvm::AtomicOrdering getSuccessOrdering() const

Description

Return the atomic ordering requirements for this memory operation. For cmpxchg atomic operations, return the atomic ordering requirements when store occurs.

Declared at: llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1321

SyncScope::ID getSyncScopeID() const

Description

Returns the synchronization scope ID for this memory operation.

Declared at: llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1316

bool isAtomic() const

Description

Return true if the memory operation ordering is Unordered or higher.

Declared at: llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1331

bool isDereferenceable() const

Declared at: llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1303

bool isInvariant() const

Declared at: llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1304

bool isNonTemporal() const

Declared at: llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1302

bool isSimple() const

Description

Returns true if the memory operation is neither atomic or volatile.

Declared at: llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1339

bool isUnordered() const

Description

Returns true if the memory operation doesn't imply any ordering constraints on surrounding memory operations beyond the normal memory aliasing rules.

Declared at: llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1336

bool isVolatile() const

Declared at: llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1301

bool readMem() const

Declared at: llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1273

void refineAlignment(
    const llvm::MachineMemOperand* NewMMO)

Description

Update this MemSDNode's MachineMemOperand information to reflect the alignment of NewMMO, if it has a greater alignment. This must only be used when the new alignment applies to all users of this MachineMemOperand.

Declared at: llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1361

Parameters

const llvm::MachineMemOperand* NewMMO

bool writeMem() const

Declared at: llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1274