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:
- include/llvm/CodeGen/SelectionDAGAddressAnalysis.h
- lib/CodeGen/SelectionDAG/SelectionDAGAddressAnalysis.cpp