LLVM: llvm::BaseIndexOffset Class Reference (original) (raw)

Helper struct to parse and store a memory address as base + index + offset. More...

#include "[llvm/CodeGen/SelectionDAGAddressAnalysis.h](SelectionDAGAddressAnalysis%5F8h%5Fsource.html)"

Public Member Functions
BaseIndexOffset ()=default
BaseIndexOffset (SDValue Base, SDValue Index, bool IsIndexSignExt)
BaseIndexOffset (SDValue Base, SDValue Index, int64_t Offset, bool IsIndexSignExt)
SDValue getBase ()
SDValue getBase () const
SDValue getIndex ()
SDValue getIndex () const
void addToOffset (int64_t VectorOff)
bool hasValidOffset () const
int64_t getOffset () const
LLVM_ABI bool equalBaseIndex (const BaseIndexOffset &Other, const SelectionDAG &DAG, int64_t &Off) const
bool equalBaseIndex (const BaseIndexOffset &Other, const SelectionDAG &DAG) const
LLVM_ABI bool contains (const SelectionDAG &DAG, int64_t BitSize, const BaseIndexOffset &Other, int64_t OtherBitSize, int64_t &BitOffset) const
bool contains (const SelectionDAG &DAG, int64_t BitSize, const BaseIndexOffset &Other, int64_t OtherBitSize) const
LLVM_ABI void print (raw_ostream &OS) const
LLVM_ABI void dump () const

Helper struct to parse and store a memory address as base + index + offset.

We ignore sign extensions when it is safe to do so. The following two expressions are not equivalent. To differentiate we need to store whether there was a sign extension involved in the index computation. (load (i64 add (i64 copyfromreg c) (i64 signextend (add (i8 load index) (i8 1)))) vs

(load (i64 add (i64 copyfromreg c) (i64 signextend (i32 add (i32 signextend (i8 load index)) (i32 1)))))

Definition at line 34 of file SelectionDAGAddressAnalysis.h.

llvm::BaseIndexOffset::BaseIndexOffset ( ) default

BaseIndexOffset() [2/3]

llvm::BaseIndexOffset::BaseIndexOffset ( SDValue Base, SDValue Index, bool IsIndexSignExt ) inline

BaseIndexOffset() [3/3]

llvm::BaseIndexOffset::BaseIndexOffset ( SDValue Base, SDValue Index, int64_t Offset, bool IsIndexSignExt ) inline

addToOffset()

void llvm::BaseIndexOffset::addToOffset ( int64_t VectorOff) inline

computeAliasing()

Definition at line 93 of file SelectionDAGAddressAnalysis.cpp.

References A(), B(), BaseIndexOffset(), llvm::cast(), llvm::dyn_cast(), llvm::GISelAddressing::BaseIndexOffset::getBase(), llvm::MachineFunction::getFrameInfo(), llvm::SelectionDAG::getMachineFunction(), llvm::LocationSize::getValue(), llvm::LocationSize::hasValue(), llvm::isa(), llvm::MachineFrameInfo::isFixedObjectIndex(), llvm::LocationSize::isScalable(), and llvm::PatternMatch::match().

contains() [1/2]

contains() [2/2]

dump()

equalBaseIndex() [1/2]

equalBaseIndex() [2/2]

Definition at line 24 of file SelectionDAGAddressAnalysis.cpp.

References A(), B(), BaseIndexOffset(), llvm::dyn_cast(), llvm::MachineFunction::getFrameInfo(), llvm::SelectionDAG::getMachineFunction(), llvm::MachineFrameInfo::getObjectOffset(), llvm::GISelAddressing::BaseIndexOffset::hasValidOffset(), llvm::MachineFrameInfo::isFixedObjectIndex(), and llvm::Other.

Referenced by contains(), and equalBaseIndex().

getBase() [1/2]

SDValue llvm::BaseIndexOffset::getBase ( ) inline

getBase() [2/2]

SDValue llvm::BaseIndexOffset::getBase ( ) const inline

getIndex() [1/2]

SDValue llvm::BaseIndexOffset::getIndex ( ) inline

getIndex() [2/2]

SDValue llvm::BaseIndexOffset::getIndex ( ) const inline

getOffset()

int64_t llvm::BaseIndexOffset::getOffset ( ) const inline

hasValidOffset()

bool llvm::BaseIndexOffset::hasValidOffset ( ) const inline

match()

print()


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