CLRX  1
An unofficial OpenCL extensions designed for Radeon GPUs
Classes | Public Types | Public Member Functions | List of all members
CLRX::AsmRegAllocator Class Reference

Classes

struct  CodeBlock
 
struct  LinearDep
 
struct  NextBlock
 
struct  SSAInfo
 
struct  VIdxSetEntry
 

Public Types

typedef Array< std::pair< size_t, size_t > > OutLiveness
 
typedef std::pair< size_t, size_t > SSAReplace
 
typedef std::unordered_map< AsmSingleVReg, VectorSet< SSAReplace > > SSAReplacesMap
 
typedef Array< DTreeSet< size_t > > InterGraph
 
typedef std::unordered_map< AsmSingleVReg, std::vector< size_t > > VarIndexMap
 

Public Member Functions

 AsmRegAllocator (Assembler &assembler)
 
 AsmRegAllocator (Assembler &assembler, const std::vector< CodeBlock > &codeBlocks, const SSAReplacesMap &ssaReplacesMap)
 
void createCodeStructure (const std::vector< AsmCodeFlowEntry > &codeFlow, size_t codeSize, const cxbyte *code)
 
void createSSAData (ISAUsageHandler &usageHandler, ISALinearDepHandler &linDepHandler)
 
void applySSAReplaces ()
 
void createLivenesses (ISAUsageHandler &usageHandler, ISALinearDepHandler &linDepHandler)
 
void createInterferenceGraph ()
 
void colorInterferenceGraph ()
 
void allocateRegisters (AsmSectionId sectionId)
 
const std::vector< CodeBlock > & getCodeBlocks () const
 
const SSAReplacesMap & getSSAReplacesMap () const
 
const Array< OutLiveness > * getOutLivenesses () const
 
const std::unordered_map< size_t, LinearDep > * getLinearDepMaps () const
 
const VarIndexMap * getVregIndexMaps () const
 
const std::unordered_map< size_t, VIdxSetEntry > & getVIdxRoutineMap () const
 
const std::unordered_map< size_t, VIdxSetEntry > & getVIdxCallMap () const
 

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