summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKorey Sewell <ksewell@umich.edu>2011-02-18 14:30:38 -0500
committerKorey Sewell <ksewell@umich.edu>2011-02-18 14:30:38 -0500
commit64d31e75b960f08de57cf78f8bdc793d1135c5cd (patch)
treec1265c324b865116490d0353bdf1d04e36fba80d
parent0fe19836c7101fea012148a4852b9619087e42d6 (diff)
downloadgem5-64d31e75b960f08de57cf78f8bdc793d1135c5cd.tar.xz
inorder: ignore nops in execution unit
-rw-r--r--src/cpu/inorder/resources/execution_unit.cc13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/cpu/inorder/resources/execution_unit.cc b/src/cpu/inorder/resources/execution_unit.cc
index e4d0c20b9..b2540cff8 100644
--- a/src/cpu/inorder/resources/execution_unit.cc
+++ b/src/cpu/inorder/resources/execution_unit.cc
@@ -101,8 +101,17 @@ ExecutionUnit::execute(int slot_num)
{
case ExecuteInst:
{
- DPRINTF(InOrderExecute, "[tid:%i] Executing [sn:%i] [PC:%s] %s.\n",
- inst->readTid(), seq_num, inst->pcState(), inst->instName());
+ if (inst->isNop()) {
+ DPRINTF(InOrderExecute, "[tid:%i] [sn:%i] [PC:%s] Ignoring execution"
+ "of %s.\n", inst->readTid(), seq_num, inst->pcState(),
+ inst->instName());
+ inst->setExecuted();
+ exec_req->done();
+ return;
+ } else {
+ DPRINTF(InOrderExecute, "[tid:%i] Executing [sn:%i] [PC:%s] %s.\n",
+ inst->readTid(), seq_num, inst->pcState(), inst->instName());
+ }
if (cur_tick != lastExecuteTick) {
lastExecuteTick = cur_tick;