37 #include "debug/GPUVRF.hh"
59 uint32_t reservedEntries = 0;
69 reservedEntries += it_free->first;
74 if (reservedEntries == 0)
75 _cout =
"VRF is empty\n";
77 _cout =
"VRF reserves " +
std::to_string(reservedEntries) +
" VGPRs\n";
98 DPRINTF(GPUVRF,
"Can Allocate %d\n",actualSize);
104 uint32_t *reservedPoolSize)
106 uint32_t startIdx = (unsigned)-1;
110 if (it->second >= actualSize) {
112 startIdx = it->first;
114 *reservedPoolSize = actualSize;
120 if (it->second == actualSize) {
126 it->first += actualSize;
127 it->second -= actualSize;
133 DPRINTF(GPUVRF,
"totRegSpace %d allocating Register at %d and"
143 DPRINTF(GPUVRF,
"freeing Region at %d %d, size %d\n",
144 firstIdx,lastIdx,lastIdx-firstIdx);
147 assert(firstIdx < lastIdx);
157 bool wrapAround = (region.first > region.second);
159 return region.second - region.first + 1;
161 return region.second +
poolSize() - region.first + 1;