gpu-compute: WAX dependency detection
WAX Dependencies would be missed if a RAW Dependency also existed. Change-Id: I2a9e50b9d0540a30de9c1bf6bb544c7b9654cb29
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user