Go to the documentation of this file.
38 #include "config/the_gpu_isa.hh"
39 #include "debug/GPURename.hh"
45 #include "params/RegisterManager.hh"
49 vrfPoolMgrs(
p->vrf_pool_managers)
51 if (
p->policy ==
"static") {
54 fatal(
"Unimplemented Register Manager Policy");
83 "Min SGPR allocation is not multiple of VRF size\n");
88 "Min VGPG allocation is not multiple of VRF size\n");
140 RegisterManagerParams::create()
#define fatal(...)
This implements a cprintf based fatal() function.
virtual void setParent(ComputeUnit *_cu)
bool canAllocateVgprs(int simdId, int nWfs, int demandPerWf)
void allocateRegisters(Wavefront *w, int vectorDemand, int scalarDemand)
virtual int mapVgpr(Wavefront *w, int vgprIndex)=0
virtual bool canAllocateSgprs(int simdId, int nWfs, int demandPerWf)=0
int mapSgpr(Wavefront *w, int sgprIndex)
ComputeUnit * computeUnit
virtual int mapSgpr(Wavefront *w, int sgprIndex)=0
void regStats()
Callback to set stat parameters.
std::vector< ScalarRegisterFile * > srf
std::vector< PoolManager * > vrfPoolMgrs
std::vector< VectorRegisterFile * > vrf
virtual bool canAllocateVgprs(int simdId, int nWfs, int demandPerWf)=0
std::vector< PoolManager * > srfPoolMgrs
RegisterManagerPolicy * policy
bool canAllocateSgprs(int simdId, int nWfs, int demandPerWf)
RegisterManager(const RegisterManagerParams *params)
virtual void allocateRegisters(Wavefront *w, int vectorDemand, int scalarDemand)=0
int mapVgpr(Wavefront *w, int vgprIndex)
void setParent(ComputeUnit *cu)
void freeRegisters(Wavefront *w)
#define fatal_if(cond,...)
Conditional fatal macro that checks the supplied condition and only causes a fatal error if the condi...
virtual void regStats()=0
virtual void freeRegisters(Wavefront *w)=0
Abstract superclass for simulation objects.
Generated on Wed Sep 30 2020 14:02:12 for gem5 by doxygen 1.8.17