summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTony Gutierrez <anthony.gutierrez@amd.com>2016-10-26 22:47:27 -0400
committerTony Gutierrez <anthony.gutierrez@amd.com>2016-10-26 22:47:27 -0400
commitc7a79c9a4298220852252738dbf5d7d174705333 (patch)
treec4b00969af16a9cef490137918ccd2ced09287fa
parent00a6346c91f6e09eb9c0f4cf61a7d72932a1282f (diff)
downloadgem5-c7a79c9a4298220852252738dbf5d7d174705333.tar.xz
gpu-compute, hsail: call discardFetch() from the WF
because every taken branch causes fetch to be discarded, we move the call to the WF to avoid to have to call it from each and every branch instruction type.
-rw-r--r--src/arch/hsail/insts/branch.hh3
-rw-r--r--src/gpu-compute/wavefront.cc2
2 files changed, 2 insertions, 3 deletions
diff --git a/src/arch/hsail/insts/branch.hh b/src/arch/hsail/insts/branch.hh
index 89bcc1277..3a520b216 100644
--- a/src/arch/hsail/insts/branch.hh
+++ b/src/arch/hsail/insts/branch.hh
@@ -133,7 +133,6 @@ namespace HsailISA
// Rpc and execution mask remain the same
w->pc(getTargetPc());
}
- w->discardFetch();
}
class BrnDirectInst : public BrnInstBase<LabelOperand>
@@ -293,7 +292,6 @@ namespace HsailISA
w->pushToReconvergenceStack(true_pc, rpc, true_mask);
}
assert(w->pc() != curr_pc);
- w->discardFetch();
}
@@ -405,7 +403,6 @@ namespace HsailISA
// Rpc and execution mask remain the same
w->pc(getTargetPc());
}
- w->discardFetch();
}
class BrDirectInst : public BrInstBase<LabelOperand>
diff --git a/src/gpu-compute/wavefront.cc b/src/gpu-compute/wavefront.cc
index caeed85a7..96f0d0e96 100644
--- a/src/gpu-compute/wavefront.cc
+++ b/src/gpu-compute/wavefront.cc
@@ -675,6 +675,8 @@ Wavefront::exec()
} else {
instructionBuffer.pop_front();
}
+ } else {
+ discardFetch();
}
if (computeUnit->shader->hsail_mode==Shader::SIMT) {