LLVM 19.0.0git
Public Member Functions | Static Public Member Functions | Public Attributes | List of all members
llvm::MachinePointerInfo Struct Reference

This class contains a discriminated union of information about pointers in memory operands, relating them back to LLVM IR or to virtual locations (such as frame indices) that are exposed during codegen. More...

#include "llvm/CodeGen/MachineMemOperand.h"

Public Member Functions

 MachinePointerInfo (const Value *v, int64_t offset=0, uint8_t ID=0)
 
 MachinePointerInfo (const PseudoSourceValue *v, int64_t offset=0, uint8_t ID=0)
 
 MachinePointerInfo (unsigned AddressSpace=0, int64_t offset=0)
 
 MachinePointerInfo (PointerUnion< const Value *, const PseudoSourceValue * > v, int64_t offset=0, uint8_t ID=0)
 
MachinePointerInfo getWithOffset (int64_t O) const
 
bool isDereferenceable (unsigned Size, LLVMContext &C, const DataLayout &DL) const
 Return true if memory region [V, V+Offset+Size) is known to be dereferenceable.
 
unsigned getAddrSpace () const
 Return the LLVM IR address space number that this pointer points into.
 

Static Public Member Functions

static MachinePointerInfo getConstantPool (MachineFunction &MF)
 Return a MachinePointerInfo record that refers to the constant pool.
 
static MachinePointerInfo getFixedStack (MachineFunction &MF, int FI, int64_t Offset=0)
 Return a MachinePointerInfo record that refers to the specified FrameIndex.
 
static MachinePointerInfo getJumpTable (MachineFunction &MF)
 Return a MachinePointerInfo record that refers to a jump table entry.
 
static MachinePointerInfo getGOT (MachineFunction &MF)
 Return a MachinePointerInfo record that refers to a GOT entry.
 
static MachinePointerInfo getStack (MachineFunction &MF, int64_t Offset, uint8_t ID=0)
 Stack pointer relative access.
 
static MachinePointerInfo getUnknownStack (MachineFunction &MF)
 Stack memory without other information.
 

Public Attributes

PointerUnion< const Value *, const PseudoSourceValue * > 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*.
 
unsigned AddrSpace = 0
 
uint8_t StackID
 

Detailed Description

This class contains a discriminated union of information about pointers in memory operands, relating them back to LLVM IR or to virtual locations (such as frame indices) that are exposed during codegen.

Definition at line 41 of file MachineMemOperand.h.

Constructor & Destructor Documentation

◆ MachinePointerInfo() [1/4]

llvm::MachinePointerInfo::MachinePointerInfo ( const Value v,
int64_t  offset = 0,
uint8_t  ID = 0 
)
inlineexplicit

Definition at line 52 of file MachineMemOperand.h.

References AddrSpace.

◆ MachinePointerInfo() [2/4]

llvm::MachinePointerInfo::MachinePointerInfo ( const PseudoSourceValue v,
int64_t  offset = 0,
uint8_t  ID = 0 
)
inlineexplicit

Definition at line 58 of file MachineMemOperand.h.

References AddrSpace.

◆ MachinePointerInfo() [3/4]

llvm::MachinePointerInfo::MachinePointerInfo ( unsigned  AddressSpace = 0,
int64_t  offset = 0 
)
inlineexplicit

Definition at line 64 of file MachineMemOperand.h.

◆ MachinePointerInfo() [4/4]

llvm::MachinePointerInfo::MachinePointerInfo ( PointerUnion< const Value *, const PseudoSourceValue * >  v,
int64_t  offset = 0,
uint8_t  ID = 0 
)
inlineexplicit

Definition at line 68 of file MachineMemOperand.h.

References AddrSpace, and V.

Member Function Documentation

◆ getAddrSpace()

unsigned MachinePointerInfo::getAddrSpace ( ) const

◆ getConstantPool()

MachinePointerInfo MachinePointerInfo::getConstantPool ( MachineFunction MF)
static

◆ getFixedStack()

MachinePointerInfo MachinePointerInfo::getFixedStack ( MachineFunction MF,
int  FI,
int64_t  Offset = 0 
)
static

Return a MachinePointerInfo record that refers to the specified FrameIndex.

getFixedStack - Return a MachinePointerInfo record that refers to the the specified FrameIndex.

Definition at line 1062 of file MachineOperand.cpp.

References llvm::PseudoSourceValueManager::getFixedStack(), llvm::MachineFunction::getPSVManager(), and Offset.

Referenced by llvm::addFrameReference(), llvm::M68k::addFrameReference(), llvm::M68k::addMemOperand(), buildEpilogRestore(), llvm::X86TargetLowering::BuildFILD(), buildPrologSpill(), llvm::SIRegisterInfo::buildVGPRSpillLoadStore(), llvm::LegalizerHelper::createStackTemporary(), emitBuildPairF64Pseudo(), llvm::PPCTargetLowering::EmitInstrWithCustomInserter(), llvm::TargetLoweringBase::emitPatchPoint(), llvm::X86FrameLowering::emitPrologue(), emitSplitF64Pseudo(), EmitTailCallStoreFPAndRetAddr(), EmitTailCallStoreRetAddr(), llvm::TargetLowering::expandUnalignedLoad(), llvm::TargetLowering::expandUnalignedStore(), llvm::TargetLowering::expandVectorSplice(), foldInlineAsmMemOperand(), llvm::TargetInstrInfo::foldMemoryOperand(), llvm::RISCVInstrInfo::foldMemoryOperandImpl(), getAddressForMemoryInput(), getFrameIndexMMO(), getMachineMemOperand(), llvm::MipsInstrInfo::GetMemOperand(), getStackAlignedMMO(), InferPointerInfo(), llvm::CallLowering::insertSRetLoads(), llvm::AArch64InstrInfo::loadRegFromStackSlot(), llvm::ARMBaseInstrInfo::loadRegFromStackSlot(), llvm::Thumb1InstrInfo::loadRegFromStackSlot(), llvm::Thumb2InstrInfo::loadRegFromStackSlot(), llvm::HexagonInstrInfo::loadRegFromStackSlot(), llvm::SparcInstrInfo::loadRegFromStackSlot(), llvm::VEInstrInfo::loadRegFromStackSlot(), llvm::LoongArchInstrInfo::loadRegFromStackSlot(), llvm::RISCVInstrInfo::loadRegFromStackSlot(), llvm::MSP430InstrInfo::loadRegFromStackSlot(), llvm::SIInstrInfo::loadRegFromStackSlot(), llvm::ARCInstrInfo::loadRegFromStackSlot(), llvm::AVRInstrInfo::loadRegFromStackSlot(), llvm::CSKYInstrInfo::loadRegFromStackSlot(), llvm::XCoreInstrInfo::loadRegFromStackSlot(), llvm::PPCInstrInfo::loadRegFromStackSlotNoUpd(), LowerATOMIC_STORE(), llvm::SITargetLowering::LowerCall(), llvm::SystemZTargetLowering::LowerCall(), llvm::LoongArchTargetLowering::LowerCall(), llvm::RISCVTargetLowering::LowerCall(), llvm::TargetLowering::LowerCallTo(), llvm::MipsCallLowering::lowerFormalArguments(), llvm::HexagonTargetLowering::LowerFormalArguments(), llvm::LoongArchTargetLowering::LowerFormalArguments(), llvm::RISCVTargetLowering::LowerFormalArguments(), llvm::SystemZTargetLowering::LowerFormalArguments(), llvm::VETargetLowering::LowerFormalArguments(), llvm::SparcTargetLowering::LowerFormalArguments_64(), llvm::ARMTargetLowering::PerformMVEExtCombine(), llvm::ARMTargetLowering::PerformMVETruncCombine(), llvm::RISCVDAGToDAGISel::PreprocessISelDAG(), llvm::X86TargetLowering::ReplaceNodeResults(), llvm::AArch64FrameLowering::restoreCalleeSavedRegisters(), llvm::AArch64FrameLowering::spillCalleeSavedRegisters(), spillIncomingStatepointValue(), llvm::AArch64InstrInfo::storeRegToStackSlot(), llvm::ARMBaseInstrInfo::storeRegToStackSlot(), llvm::Thumb1InstrInfo::storeRegToStackSlot(), llvm::Thumb2InstrInfo::storeRegToStackSlot(), llvm::HexagonInstrInfo::storeRegToStackSlot(), llvm::LoongArchInstrInfo::storeRegToStackSlot(), llvm::RISCVInstrInfo::storeRegToStackSlot(), llvm::SparcInstrInfo::storeRegToStackSlot(), llvm::VEInstrInfo::storeRegToStackSlot(), llvm::SIInstrInfo::storeRegToStackSlot(), llvm::ARCInstrInfo::storeRegToStackSlot(), llvm::AVRInstrInfo::storeRegToStackSlot(), llvm::CSKYInstrInfo::storeRegToStackSlot(), llvm::MSP430InstrInfo::storeRegToStackSlot(), llvm::XCoreInstrInfo::storeRegToStackSlot(), llvm::PPCInstrInfo::storeRegToStackSlotNoUpd(), StoreTailCallArgumentsToStackSlot(), unpack64(), unpackF64OnRV32DSoftABI(), unpackFromMemLoc(), and llvm::SelectionDAGBuilder::visitSPDescriptorParent().

◆ getGOT()

MachinePointerInfo MachinePointerInfo::getGOT ( MachineFunction MF)
static

◆ getJumpTable()

MachinePointerInfo MachinePointerInfo::getJumpTable ( MachineFunction MF)
static

Return a MachinePointerInfo record that refers to a jump table entry.

Definition at line 1067 of file MachineOperand.cpp.

References llvm::PseudoSourceValueManager::getJumpTable(), and llvm::MachineFunction::getPSVManager().

◆ getStack()

MachinePointerInfo MachinePointerInfo::getStack ( MachineFunction MF,
int64_t  Offset,
uint8_t  ID = 0 
)
static

◆ getUnknownStack()

MachinePointerInfo MachinePointerInfo::getUnknownStack ( MachineFunction MF)
static

Stack memory without other information.

Definition at line 1080 of file MachineOperand.cpp.

References llvm::DataLayout::getAllocaAddrSpace(), and llvm::MachineFunction::getDataLayout().

Referenced by llvm::TargetLowering::expandVectorSplice().

◆ getWithOffset()

MachinePointerInfo llvm::MachinePointerInfo::getWithOffset ( int64_t  O) const
inline

◆ isDereferenceable()

bool MachinePointerInfo::isDereferenceable ( unsigned  Size,
LLVMContext C,
const DataLayout DL 
) const

Return true if memory region [V, V+Offset+Size) is known to be dereferenceable.

isDereferenceable - Return true if V is always dereferenceable for Offset + Size byte.

Definition at line 1041 of file MachineOperand.cpp.

References DL, llvm::isDereferenceableAndAlignedPointer(), Offset, Size, and V.

Referenced by EltsFromConsecutiveLoads(), getMemcpyLoadsAndStores(), getMemmoveLoadsAndStores(), and llvm::AMDGPUTargetLowering::WidenOrSplitVectorLoad().

Member Data Documentation

◆ AddrSpace

unsigned llvm::MachinePointerInfo::AddrSpace = 0

Definition at line 48 of file MachineMemOperand.h.

Referenced by getAddrSpace(), getWithOffset(), and MachinePointerInfo().

◆ Offset

int64_t llvm::MachinePointerInfo::Offset

Offset - This is an offset from the base Value*.

Definition at line 46 of file MachineMemOperand.h.

Referenced by getFixedStack(), getStack(), getWithOffset(), llvm::inferAlignFromPtrInfo(), and isDereferenceable().

◆ StackID

uint8_t llvm::MachinePointerInfo::StackID

Definition at line 50 of file MachineMemOperand.h.

Referenced by getWithOffset().

◆ V

PointerUnion<const Value *, const PseudoSourceValue *> llvm::MachinePointerInfo::V

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