struct DomainValue
Declaration
struct DomainValue { /* full declaration omitted */ };
Description
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.
Declared at: llvm/include/llvm/CodeGen/ExecutionDomainFix.h:52
Member Variables
- public unsigned int Refs = 0
- Basic reference counting.
- public unsigned int AvailableDomains
- Bitmask of available domains. For an open DomainValue, it is the still possible domains for collapsing. For a collapsed DomainValue it is the domains where the register is available for free.
- public llvm::DomainValue* 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.
- public SmallVector<llvm::MachineInstr*, 8> Instrs
- Twiddleable instructions using or defining these registers.
Method Overview
- public DomainValue()
- public void addDomain(unsigned int domain)
- public void clear()
- public unsigned int getCommonDomains(unsigned int mask) const
- public unsigned int getFirstDomain() const
- public bool hasDomain(unsigned int domain) const
- public bool isCollapsed() const
- public void setSingleDomain(unsigned int domain)
Methods
¶DomainValue()
DomainValue()
Declared at: llvm/include/llvm/CodeGen/ExecutionDomainFix.h:69
¶void addDomain(unsigned int domain)
void addDomain(unsigned int domain)
Description
Mark domain as available.
Declared at: llvm/include/llvm/CodeGen/ExecutionDomainFix.h:84
Parameters
- unsigned int domain
¶void clear()
void clear()
Description
Clear this DomainValue and point to next which has all its data.
Declared at: llvm/include/llvm/CodeGen/ExecutionDomainFix.h:100
¶unsigned int getCommonDomains(
unsigned int mask) const
unsigned int getCommonDomains(
unsigned int mask) const
Description
Return bitmask of domains that are available and in mask.
Declared at: llvm/include/llvm/CodeGen/ExecutionDomainFix.h:90
Parameters
- unsigned int mask
¶unsigned int getFirstDomain() const
unsigned int getFirstDomain() const
Description
First domain available.
Declared at: llvm/include/llvm/CodeGen/ExecutionDomainFix.h:95
¶bool hasDomain(unsigned int domain) const
bool hasDomain(unsigned int domain) const
Description
Is domain available?
Declared at: llvm/include/llvm/CodeGen/ExecutionDomainFix.h:76
Parameters
- unsigned int domain
¶bool isCollapsed() const
bool isCollapsed() const
Description
A collapsed DomainValue has no instructions to twiddle - it simply keeps track of the domains where the registers are already available.
Declared at: llvm/include/llvm/CodeGen/ExecutionDomainFix.h:73
¶void setSingleDomain(unsigned int domain)
void setSingleDomain(unsigned int domain)
Declared at: llvm/include/llvm/CodeGen/ExecutionDomainFix.h:87
Parameters
- unsigned int domain