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

Methods

DomainValue()

Declared at: llvm/include/llvm/CodeGen/ExecutionDomainFix.h:69

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()

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

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

Description

First domain available.

Declared at: llvm/include/llvm/CodeGen/ExecutionDomainFix.h:95

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

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)

Declared at: llvm/include/llvm/CodeGen/ExecutionDomainFix.h:87

Parameters

unsigned int domain