LLVM 22.0.0git
llvm::BaseIndexOffset Class Reference

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

#include "llvm/CodeGen/SelectionDAGAddressAnalysis.h"

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

Static Public Member Functions

static LLVM_ABI bool computeAliasing (const SDNode *Op0, const LocationSize NumBytes0, const SDNode *Op1, const LocationSize NumBytes1, const SelectionDAG &DAG, bool &IsAlias)
static LLVM_ABI BaseIndexOffset match (const SDNode *N, const SelectionDAG &DAG)
 Parses tree in N for base, index, offset addresses.

Detailed Description

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.

Constructor & Destructor Documentation

◆ BaseIndexOffset() [1/3]

llvm::BaseIndexOffset::BaseIndexOffset ( )
default

◆ BaseIndexOffset() [2/3]

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

Definition at line 43 of file SelectionDAGAddressAnalysis.h.

◆ BaseIndexOffset() [3/3]

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

Definition at line 45 of file SelectionDAGAddressAnalysis.h.

Member Function Documentation

◆ addToOffset()

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

Definition at line 54 of file SelectionDAGAddressAnalysis.h.

◆ computeAliasing()

◆ contains() [1/2]

bool llvm::BaseIndexOffset::contains ( const SelectionDAG & DAG,
int64_t BitSize,
const BaseIndexOffset & Other,
int64_t OtherBitSize ) const
inline

Definition at line 78 of file SelectionDAGAddressAnalysis.h.

References BaseIndexOffset(), contains(), and llvm::Other.

◆ contains() [2/2]

bool BaseIndexOffset::contains ( const SelectionDAG & DAG,
int64_t BitSize,
const BaseIndexOffset & Other,
int64_t OtherBitSize,
int64_t & BitOffset ) const

Definition at line 177 of file SelectionDAGAddressAnalysis.cpp.

References BaseIndexOffset(), equalBaseIndex(), and llvm::Other.

◆ dump()

LLVM_DUMP_METHOD void BaseIndexOffset::dump ( ) const

Definition at line 313 of file SelectionDAGAddressAnalysis.cpp.

References llvm::dbgs(), LLVM_DUMP_METHOD, and llvm::print().

◆ equalBaseIndex() [1/2]

bool llvm::BaseIndexOffset::equalBaseIndex ( const BaseIndexOffset & Other,
const SelectionDAG & DAG ) const
inline

Definition at line 66 of file SelectionDAGAddressAnalysis.h.

References BaseIndexOffset(), equalBaseIndex(), and llvm::Other.

◆ equalBaseIndex() [2/2]

◆ getBase() [1/2]

SDValue llvm::BaseIndexOffset::getBase ( )
inline

Definition at line 50 of file SelectionDAGAddressAnalysis.h.

◆ getBase() [2/2]

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

Definition at line 51 of file SelectionDAGAddressAnalysis.h.

◆ getIndex() [1/2]

SDValue llvm::BaseIndexOffset::getIndex ( )
inline

Definition at line 52 of file SelectionDAGAddressAnalysis.h.

◆ getIndex() [2/2]

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

Definition at line 53 of file SelectionDAGAddressAnalysis.h.

◆ getOffset()

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

Definition at line 58 of file SelectionDAGAddressAnalysis.h.

◆ hasValidOffset()

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

Definition at line 57 of file SelectionDAGAddressAnalysis.h.

◆ match()

◆ print()

void BaseIndexOffset::print ( raw_ostream & OS) const

Definition at line 317 of file SelectionDAGAddressAnalysis.cpp.


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