LLVM: llvm::DomainValue Struct Reference (original) (raw)

A DomainValue is a bit like LiveIntervals' ValNo, but it also keeps track of execution domains. More...

#include "[llvm/CodeGen/ExecutionDomainFix.h](ExecutionDomainFix%5F8h%5Fsource.html)"

Public Member Functions
DomainValue ()
bool isCollapsed () const
A collapsed DomainValue has no instructions to twiddle - it simply keeps track of the domains where the registers are already available.
bool hasDomain (unsigned domain) const
Is domain available?
void addDomain (unsigned domain)
Mark domain as available.
void setSingleDomain (unsigned domain)
unsigned getCommonDomains (unsigned mask) const
Return bitmask of domains that are available and in mask.
unsigned getFirstDomain () const
First domain available.
void clear ()
Clear this DomainValue and point to next which has all its data.
Public Attributes
unsigned Refs = 0
Basic reference counting.
unsigned AvailableDomains
Bitmask of available domains.
DomainValue * Next
Pointer to the next DomainValue in a chain.
SmallVector< MachineInstr *, 8 > Instrs
Twiddleable instructions using or defining these registers.

A DomainValue is a bit like LiveIntervals' ValNo, but it also keeps track of execution domains.

An open DomainValue represents a set of instructions that can still switch execution domain. Multiple registers may refer to the same open DomainValue - they will eventually be collapsed to the same execution domain.

A collapsed DomainValue represents a single register that has been forced into one of more execution domains. There is a separate collapsed DomainValue for each register, but it may contain multiple execution domains. A register value is initially created in a single execution domain, but if we were forced to pay the penalty of a domain crossing, we keep track of the fact that the register is now available in multiple domains.

Definition at line 51 of file ExecutionDomainFix.h.

llvm::DomainValue::DomainValue ( ) inline

addDomain()

void llvm::DomainValue::addDomain ( unsigned domain) inline

clear()

void llvm::DomainValue::clear ( ) inline

getCommonDomains()

getFirstDomain()

unsigned llvm::DomainValue::getFirstDomain ( ) const inline

hasDomain()

bool llvm::DomainValue::hasDomain ( unsigned domain) const inline

isCollapsed()

bool llvm::DomainValue::isCollapsed ( ) const inline

A collapsed DomainValue has no instructions to twiddle - it simply keeps track of the domains where the registers are already available.

Definition at line 72 of file ExecutionDomainFix.h.

References Instrs.

setSingleDomain()

void llvm::DomainValue::setSingleDomain ( unsigned domain) inline

AvailableDomains

unsigned llvm::DomainValue::AvailableDomains

Instrs

Next

Pointer to the next DomainValue in a chain.

When two DomainValues are merged, Victim.Next is set to point to Victor, so old DomainValue references can be updated by following the chain.

Definition at line 63 of file ExecutionDomainFix.h.

Referenced by clear().

Refs


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