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

DomainValue [constructor]

Construct an empty DomainValue.

addDomain

Mark domain as available.

clear

Clear this DomainValue and point to next which has all its data.

getCommonDomains

Return bitmask of domains that are available and in mask.

getFirstDomain

First domain available.

hasDomain

Is domain available?

isCollapsed

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

setSingleDomain

Restrict to a single available domain.

Data Members

Name

Description

AvailableDomains

Bitmask of available domains.

Instrs

Twiddleable instructions using or defining these registers.

Next

Pointer to the next DomainValue in a chain.

Refs

Basic reference counting.

Created with MrDocs