gpu-compute: WAX dependency detection

WAX Dependencies would be missed if a RAW Dependency also existed.

Change-Id: I2a9e50b9d0540a30de9c1bf6bb544c7b9654cb29
This commit is contained in:
KaiBatley
2024-01-03 22:02:02 -06:00
parent 1204267fd8
commit 55fce58c19

View File

@@ -58,15 +58,20 @@ VectorRegisterFile::VectorRegisterFile(const VectorRegisterFileParams &p)
bool
VectorRegisterFile::operandsReady(Wavefront *w, GPUDynInstPtr ii) const
{
bool src_ready = true, dst_ready=true;
for (const auto& srcVecOp : ii->srcVecRegOperands()) {
for (const auto& physIdx : srcVecOp.physIndices()) {
if (regBusy(physIdx)) {
DPRINTF(GPUVRF, "RAW stall: WV[%d]: %s: physReg[%d]\n",
w->wfDynId, ii->disassemble(), physIdx);
w->stats.numTimesBlockedDueRAWDependencies++;
return false;
src_ready = false;
break;
}
}
if (!src_ready) {
break;
}
}
for (const auto& dstVecOp : ii->dstVecRegOperands()) {
@@ -75,12 +80,16 @@ VectorRegisterFile::operandsReady(Wavefront *w, GPUDynInstPtr ii) const
DPRINTF(GPUVRF, "WAX stall: WV[%d]: %s: physReg[%d]\n",
w->wfDynId, ii->disassemble(), physIdx);
w->stats.numTimesBlockedDueWAXDependencies++;
return false;
dst_ready = false;
break;
}
}
if (!dst_ready) {
break;
}
}
return true;
return src_ready && dst_ready;
}
void