class BaseIndexOffset
Declaration
class BaseIndexOffset { /* full declaration omitted */ };
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)))))
Declared at: llvm/include/llvm/CodeGen/SelectionDAGAddressAnalysis.h:32
Method Overview
- public BaseIndexOffset()
- public BaseIndexOffset(llvm::SDValue Base, llvm::SDValue Index, bool IsIndexSignExt)
- public BaseIndexOffset(llvm::SDValue Base, llvm::SDValue Index, int64_t Offset, bool IsIndexSignExt)
- public static bool computeAliasing(const llvm::SDNode * Op0, const Optional<int64_t> NumBytes0, const llvm::SDNode * Op1, const Optional<int64_t> NumBytes1, const llvm::SelectionDAG & DAG, bool & IsAlias)
- public bool contains(const llvm::SelectionDAG & DAG, int64_t BitSize, const llvm::BaseIndexOffset & Other, int64_t OtherBitSize, int64_t & BitOffset) const
- public bool contains(const llvm::SelectionDAG & DAG, int64_t BitSize, const llvm::BaseIndexOffset & Other, int64_t OtherBitSize) const
- public void dump() const
- public bool equalBaseIndex(const llvm::BaseIndexOffset & Other, const llvm::SelectionDAG & DAG, int64_t & Off) const
- public bool equalBaseIndex(const llvm::BaseIndexOffset & Other, const llvm::SelectionDAG & DAG) const
- public llvm::SDValue getBase()
- public llvm::SDValue getBase() const
- public llvm::SDValue getIndex()
- public llvm::SDValue getIndex() const
- public bool hasValidOffset() const
- public static llvm::BaseIndexOffset match(const llvm::SDNode * N, const llvm::SelectionDAG & DAG)
- public void print(llvm::raw_ostream & OS) const
Methods
¶BaseIndexOffset()
BaseIndexOffset()
Declared at: llvm/include/llvm/CodeGen/SelectionDAGAddressAnalysis.h:40
¶BaseIndexOffset(llvm::SDValue Base,
llvm::SDValue Index,
bool IsIndexSignExt)
BaseIndexOffset(llvm::SDValue Base,
llvm::SDValue Index,
bool IsIndexSignExt)
Declared at: llvm/include/llvm/CodeGen/SelectionDAGAddressAnalysis.h:41
Parameters
- llvm::SDValue Base
- llvm::SDValue Index
- bool IsIndexSignExt
¶BaseIndexOffset(llvm::SDValue Base,
llvm::SDValue Index,
int64_t Offset,
bool IsIndexSignExt)
BaseIndexOffset(llvm::SDValue Base,
llvm::SDValue Index,
int64_t Offset,
bool IsIndexSignExt)
Declared at: llvm/include/llvm/CodeGen/SelectionDAGAddressAnalysis.h:43
Parameters
- llvm::SDValue Base
- llvm::SDValue Index
- int64_t Offset
- bool IsIndexSignExt
¶static bool computeAliasing(
const llvm::SDNode* Op0,
const Optional<int64_t> NumBytes0,
const llvm::SDNode* Op1,
const Optional<int64_t> NumBytes1,
const llvm::SelectionDAG& DAG,
bool& IsAlias)
static bool computeAliasing(
const llvm::SDNode* Op0,
const Optional<int64_t> NumBytes0,
const llvm::SDNode* Op1,
const Optional<int64_t> NumBytes1,
const llvm::SelectionDAG& DAG,
bool& IsAlias)
Declared at: llvm/include/llvm/CodeGen/SelectionDAGAddressAnalysis.h:80
Parameters
- const llvm::SDNode* Op0
- const Optional<int64_t> NumBytes0
- const llvm::SDNode* Op1
- const Optional<int64_t> NumBytes1
- const llvm::SelectionDAG& DAG
- bool& IsAlias
¶bool contains(const llvm::SelectionDAG& DAG,
int64_t BitSize,
const llvm::BaseIndexOffset& Other,
int64_t OtherBitSize,
int64_t& BitOffset) const
bool contains(const llvm::SelectionDAG& DAG,
int64_t BitSize,
const llvm::BaseIndexOffset& Other,
int64_t OtherBitSize,
int64_t& BitOffset) const
Declared at: llvm/include/llvm/CodeGen/SelectionDAGAddressAnalysis.h:68
Parameters
- const llvm::SelectionDAG& DAG
- int64_t BitSize
- const llvm::BaseIndexOffset& Other
- int64_t OtherBitSize
- int64_t& BitOffset
¶bool contains(const llvm::SelectionDAG& DAG,
int64_t BitSize,
const llvm::BaseIndexOffset& Other,
int64_t OtherBitSize) const
bool contains(const llvm::SelectionDAG& DAG,
int64_t BitSize,
const llvm::BaseIndexOffset& Other,
int64_t OtherBitSize) const
Declared at: llvm/include/llvm/CodeGen/SelectionDAGAddressAnalysis.h:72
Parameters
- const llvm::SelectionDAG& DAG
- int64_t BitSize
- const llvm::BaseIndexOffset& Other
- int64_t OtherBitSize
¶void dump() const
void dump() const
Declared at: llvm/include/llvm/CodeGen/SelectionDAGAddressAnalysis.h:90
¶bool equalBaseIndex(
const llvm::BaseIndexOffset& Other,
const llvm::SelectionDAG& DAG,
int64_t& Off) const
bool equalBaseIndex(
const llvm::BaseIndexOffset& Other,
const llvm::SelectionDAG& DAG,
int64_t& Off) const
Declared at: llvm/include/llvm/CodeGen/SelectionDAGAddressAnalysis.h:57
Parameters
- const llvm::BaseIndexOffset& Other
- const llvm::SelectionDAG& DAG
- int64_t& Off
¶bool equalBaseIndex(
const llvm::BaseIndexOffset& Other,
const llvm::SelectionDAG& DAG) const
bool equalBaseIndex(
const llvm::BaseIndexOffset& Other,
const llvm::SelectionDAG& DAG) const
Declared at: llvm/include/llvm/CodeGen/SelectionDAGAddressAnalysis.h:60
Parameters
- const llvm::BaseIndexOffset& Other
- const llvm::SelectionDAG& DAG
¶llvm::SDValue getBase()
llvm::SDValue getBase()
Declared at: llvm/include/llvm/CodeGen/SelectionDAGAddressAnalysis.h:48
¶llvm::SDValue getBase() const
llvm::SDValue getBase() const
Declared at: llvm/include/llvm/CodeGen/SelectionDAGAddressAnalysis.h:49
¶llvm::SDValue getIndex()
llvm::SDValue getIndex()
Declared at: llvm/include/llvm/CodeGen/SelectionDAGAddressAnalysis.h:50
¶llvm::SDValue getIndex() const
llvm::SDValue getIndex() const
Declared at: llvm/include/llvm/CodeGen/SelectionDAGAddressAnalysis.h:51
¶bool hasValidOffset() const
bool hasValidOffset() const
Declared at: llvm/include/llvm/CodeGen/SelectionDAGAddressAnalysis.h:52
¶static llvm::BaseIndexOffset match(
const llvm::SDNode* N,
const llvm::SelectionDAG& DAG)
static llvm::BaseIndexOffset match(
const llvm::SDNode* N,
const llvm::SelectionDAG& DAG)
Description
Parses tree in N for base, index, offset addresses.
Declared at: llvm/include/llvm/CodeGen/SelectionDAGAddressAnalysis.h:87
Parameters
- const llvm::SDNode* N
- const llvm::SelectionDAG& DAG
¶void print(llvm::raw_ostream& OS) const
void print(llvm::raw_ostream& OS) const
Declared at: llvm/include/llvm/CodeGen/SelectionDAGAddressAnalysis.h:89