36 #include "config/the_gpu_isa.hh" 
   37 #include "debug/GPURename.hh" 
   60     panic_if((vgprIndex >= 
w->reservedVectorRegs)
 
   61              || (
w->reservedVectorRegs < 0),
 
   62              "VGPR index %d is out of range: VGPR range=[0,%d]",
 
   63              vgprIndex, 
w->reservedVectorRegs);
 
   66     int physicalVgprIndex = 
w->startVgprIndex + vgprIndex;
 
   68     panic_if(!((
w->startVgprIndex <= physicalVgprIndex) &&
 
   69              (
w->startVgprIndex + 
w->reservedVectorRegs - 1)
 
   70              >= physicalVgprIndex),
 
   71              "Invalid VGPR index %d\n", physicalVgprIndex);
 
   74     return physicalVgprIndex % 
w->computeUnit->vrf[
w->simdId]->numRegs();
 
   80     panic_if(!((sgprIndex < w->reservedScalarRegs)
 
   81              && (
w->reservedScalarRegs > 0)),
 
   82              "SGPR index %d is out of range: SGPR range=[0,%d]\n",
 
   83              sgprIndex, 
w->reservedScalarRegs);
 
   86     int physicalSgprIndex = 
w->startSgprIndex + sgprIndex;
 
   88     panic_if(!((
w->startSgprIndex <= physicalSgprIndex) &&
 
   89              (
w->startSgprIndex + 
w->reservedScalarRegs - 1)
 
   90              >= physicalSgprIndex),
 
   91              "Invalid SGPR index %d\n", physicalSgprIndex);
 
   94     return physicalSgprIndex % 
w->computeUnit->srf[
w->simdId]->numRegs();
 
  102         canAllocate(nWfs, demandPerWf);
 
  110         canAllocate(nWfs, demandPerWf);
 
  117     uint32_t allocatedSize = 0;
 
  119         allocateRegion(vectorDemand, &allocatedSize);
 
  120     w->reservedVectorRegs = allocatedSize;
 
  123              "VRF[%d] has been overallocated %d > %d\n",
 
  129             allocateRegion(scalarDemand, &allocatedSize);
 
  130         w->reservedScalarRegs = allocatedSize;
 
  133                  "SRF[%d] has been overallocated %d > %d\n",
 
  143     w->computeUnit->vectorRegsReserved[
w->simdId] -= 
w->reservedVectorRegs;
 
  145     w->computeUnit->scalarRegsReserved[
w->simdId] -= 
w->reservedScalarRegs;
 
  147     panic_if(
w->computeUnit->vectorRegsReserved[
w->simdId] < 0,
 
  148              "Freeing VRF[%d] registers left %d registers reserved\n",
 
  150              w->computeUnit->vectorRegsReserved[
w->simdId]);
 
  151     panic_if(
w->computeUnit->scalarRegsReserved[
w->simdId] < 0,
 
  152              "Freeing SRF[%d] registers left %d registers reserved\n",
 
  154              w->computeUnit->scalarRegsReserved[
w->simdId]);
 
  157     int endIndex = 
w->startVgprIndex + 
w->reservedVectorRegs;
 
  159     w->computeUnit->registerManager->vrfPoolMgrs[
w->simdId]->
 
  160         freeRegion(
w->startVgprIndex, endIndex);
 
  163     for (
int i = 0; 
i < 
w->reservedVectorRegs; 
i++) {
 
  165         w->computeUnit->vrf[
w->simdId]->markReg(physVgprIdx, 
false);
 
  168     w->reservedVectorRegs = 0;
 
  169     w->startVgprIndex = 0;
 
  171     endIndex = 
w->startSgprIndex + 
w->reservedScalarRegs;
 
  172     w->computeUnit->registerManager->srfPoolMgrs[
w->simdId]->
 
  173         freeRegion(
w->startSgprIndex, endIndex);
 
  176     for (
int i = 0; 
i < 
w->reservedScalarRegs; 
i++) {
 
  178         w->computeUnit->srf[
w->simdId]->markReg(physSgprIdx, 
false);
 
  181     w->reservedScalarRegs = 0;
 
  182     w->startSgprIndex = 0;