LLVM 20.0.0git
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | List of all members
llvm::gvn::AvailableValue Struct Reference

Represents a particular available value that we know how to materialize. More...

Public Types

enum class  ValType {
  SimpleVal , LoadVal , MemIntrin , UndefVal ,
  SelectVal
}
 

Public Member Functions

bool isSimpleValue () const
 
bool isCoercedLoadValue () const
 
bool isMemIntrinValue () const
 
bool isUndefValue () const
 
bool isSelectValue () const
 
ValuegetSimpleValue () const
 
LoadInstgetCoercedLoadValue () const
 
MemIntrinsicgetMemIntrinValue () const
 
SelectInstgetSelectValue () const
 
ValueMaterializeAdjustedValue (LoadInst *Load, Instruction *InsertPt, GVNPass &gvn) const
 Emit code at the specified insertion point to adjust the value defined here to the specified type.
 

Static Public Member Functions

static AvailableValue get (Value *V, unsigned Offset=0)
 
static AvailableValue getMI (MemIntrinsic *MI, unsigned Offset=0)
 
static AvailableValue getLoad (LoadInst *Load, unsigned Offset=0)
 
static AvailableValue getUndef ()
 
static AvailableValue getSelect (SelectInst *Sel, Value *V1, Value *V2)
 

Public Attributes

ValueVal
 Val - The value that is live out of the block.
 
ValType Kind
 Kind of the live-out value.
 
unsigned Offset = 0
 Offset - The byte offset in Val that is interesting for the load query.
 
ValueV1 = nullptr
 V1, V2 - The dominating non-clobbered values of SelectVal.
 
ValueV2 = nullptr
 

Detailed Description

Represents a particular available value that we know how to materialize.

Materialization of an AvailableValue never fails. An AvailableValue is implicitly associated with a rematerialization point which is the location of the instruction from which it was formed.

Definition at line 196 of file GVN.cpp.

Member Enumeration Documentation

◆ ValType

Enumerator
SimpleVal 
LoadVal 
MemIntrin 
UndefVal 
SelectVal 

Definition at line 197 of file GVN.cpp.

Member Function Documentation

◆ get()

static AvailableValue llvm::gvn::AvailableValue::get ( Value V,
unsigned  Offset = 0 
)
inlinestatic

Definition at line 217 of file GVN.cpp.

References Kind, Offset, SimpleVal, and Val.

Referenced by llvm::gvn::AvailableValueInBlock::get().

◆ getCoercedLoadValue()

LoadInst * llvm::gvn::AvailableValue::getCoercedLoadValue ( ) const
inline

Definition at line 270 of file GVN.cpp.

References assert(), isCoercedLoadValue(), and Val.

◆ getLoad()

static AvailableValue llvm::gvn::AvailableValue::getLoad ( LoadInst Load,
unsigned  Offset = 0 
)
inlinestatic

Definition at line 233 of file GVN.cpp.

References Kind, LoadVal, Offset, and Val.

◆ getMemIntrinValue()

MemIntrinsic * llvm::gvn::AvailableValue::getMemIntrinValue ( ) const
inline

Definition at line 275 of file GVN.cpp.

References assert(), isMemIntrinValue(), and Val.

◆ getMI()

static AvailableValue llvm::gvn::AvailableValue::getMI ( MemIntrinsic MI,
unsigned  Offset = 0 
)
inlinestatic

Definition at line 225 of file GVN.cpp.

References Kind, MemIntrin, MI, Offset, and Val.

◆ getSelect()

static AvailableValue llvm::gvn::AvailableValue::getSelect ( SelectInst Sel,
Value V1,
Value V2 
)
inlinestatic

Definition at line 249 of file GVN.cpp.

References Kind, Offset, SelectVal, V1, V2, and Val.

Referenced by llvm::gvn::AvailableValueInBlock::getSelect().

◆ getSelectValue()

SelectInst * llvm::gvn::AvailableValue::getSelectValue ( ) const
inline

Definition at line 280 of file GVN.cpp.

References assert(), isSelectValue(), and Val.

◆ getSimpleValue()

Value * llvm::gvn::AvailableValue::getSimpleValue ( ) const
inline

Definition at line 265 of file GVN.cpp.

References assert(), isSimpleValue(), and Val.

◆ getUndef()

static AvailableValue llvm::gvn::AvailableValue::getUndef ( )
inlinestatic

Definition at line 241 of file GVN.cpp.

References Kind, Offset, UndefVal, and Val.

Referenced by llvm::gvn::AvailableValueInBlock::getUndef().

◆ isCoercedLoadValue()

bool llvm::gvn::AvailableValue::isCoercedLoadValue ( ) const
inline

Definition at line 260 of file GVN.cpp.

References Kind, and LoadVal.

Referenced by getCoercedLoadValue().

◆ isMemIntrinValue()

bool llvm::gvn::AvailableValue::isMemIntrinValue ( ) const
inline

Definition at line 261 of file GVN.cpp.

References Kind, and MemIntrin.

Referenced by getMemIntrinValue().

◆ isSelectValue()

bool llvm::gvn::AvailableValue::isSelectValue ( ) const
inline

Definition at line 263 of file GVN.cpp.

References Kind, and SelectVal.

Referenced by getSelectValue().

◆ isSimpleValue()

bool llvm::gvn::AvailableValue::isSimpleValue ( ) const
inline

Definition at line 259 of file GVN.cpp.

References Kind, and SimpleVal.

Referenced by getSimpleValue().

◆ isUndefValue()

bool llvm::gvn::AvailableValue::isUndefValue ( ) const
inline

Definition at line 262 of file GVN.cpp.

References Kind, and UndefVal.

◆ MaterializeAdjustedValue()

Value * AvailableValue::MaterializeAdjustedValue ( LoadInst Load,
Instruction InsertPt,
GVNPass gvn 
) const

Member Data Documentation

◆ Kind

ValType llvm::gvn::AvailableValue::Kind

Kind of the live-out value.

Definition at line 210 of file GVN.cpp.

Referenced by get(), getLoad(), getMI(), getSelect(), getUndef(), isCoercedLoadValue(), isMemIntrinValue(), isSelectValue(), isSimpleValue(), and isUndefValue().

◆ Offset

unsigned llvm::gvn::AvailableValue::Offset = 0

Offset - The byte offset in Val that is interesting for the load query.

Definition at line 213 of file GVN.cpp.

Referenced by get(), getLoad(), getMI(), getSelect(), and getUndef().

◆ V1

Value* llvm::gvn::AvailableValue::V1 = nullptr

V1, V2 - The dominating non-clobbered values of SelectVal.

Definition at line 215 of file GVN.cpp.

Referenced by getSelect().

◆ V2

Value * llvm::gvn::AvailableValue::V2 = nullptr

Definition at line 215 of file GVN.cpp.

Referenced by getSelect().

◆ Val

Value* llvm::gvn::AvailableValue::Val

Val - The value that is live out of the block.

Definition at line 208 of file GVN.cpp.

Referenced by get(), getCoercedLoadValue(), getLoad(), getMemIntrinValue(), getMI(), getSelect(), getSelectValue(), getSimpleValue(), and getUndef().


The documentation for this struct was generated from the following file: