Lines Matching refs:RS
105 getStrategyFor(const ResourceState &RS) {
106 if (RS.isAResourceGroup() || RS.getNumUnits() > 1)
107 return std::make_unique<DefaultResourceStrategy>(RS.getReadyMask());
138 const ResourceState &RS = *Resources[Index];
139 if (!RS.isAResourceGroup()) {
180 ResourceState &RS = *Resources[Index];
181 assert(RS.isReady() && "No available units to select!");
183 // Special case where RS is not a group, and it only declares a single
185 if (!RS.isAResourceGroup() && RS.getNumUnits() == 1)
186 return std::make_pair(ResourceID, RS.getReadyMask());
188 uint64_t SubResourceID = Strategies[Index]->select(RS.getReadyMask());
189 if (RS.isAResourceGroup())
197 ResourceState &RS = *Resources[RSID];
198 RS.markSubResourceAsUsed(RR.second);
201 if (RS.getNumUnits() > 1)
206 if (RS.isReady())
226 ResourceState &RS = *Resources[RSID];
227 bool WasFullyUsed = !RS.isReady();
228 RS.releaseSubResource(RR.second);
256 ResourceState &RS = *Resources[getResourceStateIndex(CurrentBuffer)];
258 assert(RS.isBufferAvailable() == ResourceStateEvent::RS_BUFFER_AVAILABLE);
259 if (!RS.reserveBuffer())
261 if (RS.isADispatchHazard()) {
274 ResourceState &RS = *Resources[getResourceStateIndex(CurrentBuffer)];
276 RS.releaseBuffer();
289 const ResourceState &RS = *Resources[getResourceStateIndex(E.first)];
290 if (!RS.isReady(NumUnits)) {
295 if (Desc.HasPartiallyOverlappingGroups && !RS.isAResourceGroup()) {
296 unsigned NumAvailableUnits = llvm::popcount(RS.getReadyMask());
315 const ResourceState &RS = *Resources[getResourceStateIndex(E.first)];
316 if (!E.second.isReserved() && RS.isAResourceGroup()) {
317 uint64_t ReadyMask = RS.getReadyMask() & ~ConsumedResourceMask;
319 BusyResourceMask |= RS.getReadyMask();