LLVM  8.0.1
Public Member Functions | Public Attributes | List of all members
llvm::RegisterBankInfo::PartialMapping Struct Reference

Helper struct that represents how a value is partially mapped into a register. More...

#include "llvm/CodeGen/GlobalISel/RegisterBankInfo.h"

Collaboration diagram for llvm::RegisterBankInfo::PartialMapping:
Collaboration graph
[legend]

Public Member Functions

 PartialMapping ()=default
 
 PartialMapping (unsigned StartIdx, unsigned Length, const RegisterBank &RegBank)
 Provide a shortcut for quickly building PartialMapping. More...
 
unsigned getHighBitIdx () const
 
void dump () const
 Print this partial mapping on dbgs() stream. More...
 
void print (raw_ostream &OS) const
 Print this partial mapping on OS;. More...
 
bool verify () const
 Check that the Mask is compatible with the RegBank. More...
 

Public Attributes

unsigned StartIdx
 Number of bits at which this partial mapping starts in the original value. More...
 
unsigned Length
 Length of this mapping in bits. More...
 
const RegisterBankRegBank
 Register bank where the partial value lives. More...
 

Detailed Description

Helper struct that represents how a value is partially mapped into a register.

The StartIdx and Length represent what region of the orginal value this partial mapping covers. This can be represented as a Mask of contiguous bit starting at StartIdx bit and spanning Length bits. StartIdx is the number of bits from the less significant bits.

Definition at line 47 of file RegisterBankInfo.h.

Constructor & Destructor Documentation

◆ PartialMapping() [1/2]

llvm::RegisterBankInfo::PartialMapping::PartialMapping ( )
default

◆ PartialMapping() [2/2]

llvm::RegisterBankInfo::PartialMapping::PartialMapping ( unsigned  StartIdx,
unsigned  Length,
const RegisterBank RegBank 
)
inline

Provide a shortcut for quickly building PartialMapping.

Definition at line 64 of file RegisterBankInfo.h.

Member Function Documentation

◆ dump()

LLVM_DUMP_METHOD void RegisterBankInfo::PartialMapping::dump ( ) const

◆ getHighBitIdx()

unsigned llvm::RegisterBankInfo::PartialMapping::getHighBitIdx ( ) const
inline
Returns
the index of in the original value of the most significant bit that this partial mapping covers.

Definition at line 70 of file RegisterBankInfo.h.

References dump(), print(), and verify().

Referenced by llvm::RegisterBankInfo::ValueMapping::verify().

◆ print()

void RegisterBankInfo::PartialMapping::print ( raw_ostream OS) const

◆ verify()

bool RegisterBankInfo::PartialMapping::verify ( ) const

Check that the Mask is compatible with the RegBank.

Indeed, if the RegBank cannot accomadate the "active bits" of the mask, there is no way this mapping is valid.

Note
This method does not check anything when assertions are disabled.
Returns
True is the check was successful.

Definition at line 484 of file RegisterBankInfo.cpp.

References assert().

Referenced by llvm::applyMapping(), getHighBitIdx(), llvm::RegisterBankInfo::ValueMapping::isValid(), llvm::RegisterBankInfo::InstructionMapping::isValid(), and llvm::RegisterBankInfo::ValueMapping::verify().

Member Data Documentation

◆ Length

unsigned llvm::RegisterBankInfo::PartialMapping::Length

Length of this mapping in bits.

This is how many bits this partial mapping covers in the original value: from StartIdx to StartIdx + Length -1.

Definition at line 56 of file RegisterBankInfo.h.

Referenced by llvm::RegisterBankInfo::OperandsMapper::createVRegs(), llvm::RegisterBankInfo::getRegBank(), and hashPartialMapping().

◆ RegBank

const RegisterBank* llvm::RegisterBankInfo::PartialMapping::RegBank

◆ StartIdx

unsigned llvm::RegisterBankInfo::PartialMapping::StartIdx

Number of bits at which this partial mapping starts in the original value.

The bits are counted from less significant bits to most significant bits.

Definition at line 51 of file RegisterBankInfo.h.

Referenced by llvm::RegisterBankInfo::getRegBank(), hashPartialMapping(), and llvm::RegisterBankInfo::ValueMapping::verify().


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