LLVM  8.0.1
Public Member Functions | Static Public Member Functions | List of all members
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, int64_t Offset, bool IsIndexSignExt)
 
SDValue getBase ()
 
SDValue getBase () const
 
SDValue getIndex ()
 
SDValue getIndex () const
 
bool equalBaseIndex (const BaseIndexOffset &Other, const SelectionDAG &DAG) const
 
bool equalBaseIndex (const BaseIndexOffset &Other, const SelectionDAG &DAG, int64_t &Off) const
 

Static Public Member Functions

static BaseIndexOffset match (const LSBaseSDNode *N, const SelectionDAG &DAG)
 Parses tree in Ptr for base, index, offset addresses. More...
 

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 33 of file SelectionDAGAddressAnalysis.h.

Constructor & Destructor Documentation

◆ BaseIndexOffset() [1/2]

llvm::BaseIndexOffset::BaseIndexOffset ( )
default

Referenced by match().

◆ BaseIndexOffset() [2/2]

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

Definition at line 42 of file SelectionDAGAddressAnalysis.h.

Member Function Documentation

◆ equalBaseIndex() [1/2]

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

◆ equalBaseIndex() [2/2]

bool BaseIndexOffset::equalBaseIndex ( const BaseIndexOffset Other,
const SelectionDAG DAG,
int64_t &  Off 
) const

◆ getBase() [1/2]

SDValue llvm::BaseIndexOffset::getBase ( )
inline

◆ getBase() [2/2]

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

Definition at line 48 of file SelectionDAGAddressAnalysis.h.

◆ getIndex() [1/2]

SDValue llvm::BaseIndexOffset::getIndex ( )
inline

Definition at line 49 of file SelectionDAGAddressAnalysis.h.

Referenced by replaceShuffleOfInsert().

◆ getIndex() [2/2]

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

Definition at line 50 of file SelectionDAGAddressAnalysis.h.

◆ match()

BaseIndexOffset BaseIndexOffset::match ( const LSBaseSDNode N,
const SelectionDAG DAG 
)
static

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