37 #include "debug/GPUVRF.hh"
56 uint32_t reservedEntries = 0;
66 reservedEntries += it_free->first;
71 if (reservedEntries == 0)
72 _cout =
"VRF is empty\n";
74 _cout =
"VRF reserves " +
std::to_string(reservedEntries) +
" VGPRs\n";
95 DPRINTF(GPUVRF,
"Can Allocate %d\n",actualSize);
101 uint32_t *reservedPoolSize)
103 uint32_t startIdx = (unsigned)-1;
107 if (it->second >= actualSize) {
109 startIdx = it->first;
111 *reservedPoolSize = actualSize;
117 if (it->second == actualSize) {
123 it->first += actualSize;
124 it->second -= actualSize;
130 DPRINTF(GPUVRF,
"totRegSpace %d allocating Register at %d and"
140 DPRINTF(GPUVRF,
"freeing Region at %d %d, size %d\n",
141 firstIdx,lastIdx,lastIdx-firstIdx);
144 assert(firstIdx < lastIdx);
154 bool wrapAround = (region.first > region.second);
156 return region.second - region.first + 1;
158 return region.second +
poolSize() - region.first + 1;