A DomainValue is a bit like LiveIntervals' ValNo, but it also keeps track of execution domains.
Synopsis
Declared in <llvm/CodeGen/ExecutionDomainFix.h>
struct DomainValue;
Description
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.
Member Functions
Name |
Description |
|
Construct an empty DomainValue. |
Mark domain as available. |
|
Clear this DomainValue and point to next which has all its data. |
|
Return bitmask of domains that are available and in mask. |
|
First domain available. |
|
Is domain available? |
|
A collapsed DomainValue has no instructions to twiddle ‐ it simply keeps track of the domains where the registers are already available. |
|
Restrict to a single available domain. |
Data Members
Name |
Description |
Bitmask of available domains. |
|
Twiddleable instructions using or defining these registers. |
|
Pointer to the next DomainValue in a chain. |
|
Basic reference counting. |
Created with MrDocs