LLVM  6.0.0svn
Public Member Functions | Public Attributes | List of all members
llvm::DomainValue Struct Reference

A DomainValue is a bit like LiveIntervals' ValNo, but it also keeps track of execution domains. More...

#include "llvm/CodeGen/ExecutionDepsFix.h"

Collaboration diagram for llvm::DomainValue:
Collaboration graph
[legend]

Public Member Functions

 DomainValue ()
 
bool isCollapsed () const
 
bool hasDomain (unsigned domain) const
 
void addDomain (unsigned domain)
 
void setSingleDomain (unsigned domain)
 
unsigned getCommonDomains (unsigned mask) const
 
unsigned getFirstDomain () const
 
void clear ()
 

Public Attributes

unsigned Refs = 0
 
unsigned AvailableDomains
 
DomainValueNext
 
SmallVector< MachineInstr *, 8 > Instrs
 

Detailed 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.

Definition at line 62 of file ExecutionDepsFix.h.

Constructor & Destructor Documentation

◆ DomainValue()

llvm::DomainValue::DomainValue ( )
inline

Definition at line 79 of file ExecutionDepsFix.h.

References clear().

Member Function Documentation

◆ addDomain()

void llvm::DomainValue::addDomain ( unsigned  domain)
inline

Definition at line 94 of file ExecutionDepsFix.h.

◆ clear()

void llvm::DomainValue::clear ( )
inline

Definition at line 114 of file ExecutionDepsFix.h.

References llvm::SmallVectorImpl< T >::clear().

Referenced by DomainValue().

◆ getCommonDomains()

unsigned llvm::DomainValue::getCommonDomains ( unsigned  mask) const
inline

Definition at line 104 of file ExecutionDepsFix.h.

◆ getFirstDomain()

unsigned llvm::DomainValue::getFirstDomain ( ) const
inline

Definition at line 109 of file ExecutionDepsFix.h.

References llvm::countTrailingZeros().

◆ hasDomain()

bool llvm::DomainValue::hasDomain ( unsigned  domain) const
inline

Definition at line 86 of file ExecutionDepsFix.h.

References assert().

◆ isCollapsed()

bool llvm::DomainValue::isCollapsed ( ) const
inline

Definition at line 83 of file ExecutionDepsFix.h.

References llvm::SmallVectorBase::empty().

◆ setSingleDomain()

void llvm::DomainValue::setSingleDomain ( unsigned  domain)
inline

Definition at line 99 of file ExecutionDepsFix.h.

Member Data Documentation

◆ AvailableDomains

unsigned llvm::DomainValue::AvailableDomains

Definition at line 69 of file ExecutionDepsFix.h.

◆ Instrs

SmallVector<MachineInstr*, 8> llvm::DomainValue::Instrs

Definition at line 77 of file ExecutionDepsFix.h.

◆ Next

DomainValue* llvm::DomainValue::Next

Definition at line 74 of file ExecutionDepsFix.h.

◆ Refs

unsigned llvm::DomainValue::Refs = 0

Definition at line 64 of file ExecutionDepsFix.h.

Referenced by llvm::ExecutionDepsFix::getRequiredProperties().


The documentation for this struct was generated from the following file: