|
LLVM
8.0.1
|
A DomainValue is a bit like LiveIntervals' ValNo, but it also keeps track of execution domains. More...
#include "llvm/CodeGen/ExecutionDomainFix.h"

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. More... | |
| bool | hasDomain (unsigned domain) const |
| Is domain available? More... | |
| void | addDomain (unsigned domain) |
| Mark domain as available. More... | |
| void | setSingleDomain (unsigned domain) |
| unsigned | getCommonDomains (unsigned mask) const |
| Return bitmask of domains that are available and in mask. More... | |
| unsigned | getFirstDomain () const |
| First domain available. More... | |
| void | clear () |
| Clear this DomainValue and point to next which has all its data. More... | |
Public Attributes | |
| unsigned | Refs = 0 |
| Basic reference counting. More... | |
| unsigned | AvailableDomains |
| Bitmask of available domains. More... | |
| DomainValue * | Next |
| Pointer to the next DomainValue in a chain. More... | |
| SmallVector< MachineInstr *, 8 > | Instrs |
| Twiddleable instructions using or defining these registers. More... | |
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 53 of file ExecutionDomainFix.h.
|
inline |
Definition at line 70 of file ExecutionDomainFix.h.
References clear().
|
inline |
Mark domain as available.
Definition at line 85 of file ExecutionDomainFix.h.
|
inline |
Clear this DomainValue and point to next which has all its data.
Definition at line 101 of file ExecutionDomainFix.h.
References llvm::SmallVectorImpl< T >::clear().
Referenced by DomainValue().
Return bitmask of domains that are available and in mask.
Definition at line 91 of file ExecutionDomainFix.h.
|
inline |
First domain available.
Definition at line 96 of file ExecutionDomainFix.h.
References llvm::countTrailingZeros().
|
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 74 of file ExecutionDomainFix.h.
References llvm::SmallVectorBase::empty().
|
inline |
Definition at line 88 of file ExecutionDomainFix.h.
| unsigned llvm::DomainValue::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.
Definition at line 60 of file ExecutionDomainFix.h.
| SmallVector<MachineInstr *, 8> llvm::DomainValue::Instrs |
Twiddleable instructions using or defining these registers.
Definition at line 68 of file ExecutionDomainFix.h.
| DomainValue* 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.
Definition at line 65 of file ExecutionDomainFix.h.
| unsigned llvm::DomainValue::Refs = 0 |
Basic reference counting.
Definition at line 55 of file ExecutionDomainFix.h.
Referenced by llvm::ExecutionDomainFix::getRequiredProperties().
1.8.13