summaryrefslogtreecommitdiff
path: root/src/cpu/o3/dyn_inst_impl.hh
diff options
context:
space:
mode:
authorDjordje Kovacevic <djordje.kovacevic@arm.com>2012-09-25 11:49:40 -0500
committerDjordje Kovacevic <djordje.kovacevic@arm.com>2012-09-25 11:49:40 -0500
commitd060a28a2938aff5446e2b800176208c72b698da (patch)
tree6ec0965b063a0e168a9f1fe1d292c6cfeb91a54d /src/cpu/o3/dyn_inst_impl.hh
parentbfffbb67976fc4a01185e36c8eaf755454cf19a5 (diff)
downloadgem5-d060a28a2938aff5446e2b800176208c72b698da.tar.xz
CPU: Add abandoned instructions to O3 Pipe Viewer
Diffstat (limited to 'src/cpu/o3/dyn_inst_impl.hh')
-rw-r--r--src/cpu/o3/dyn_inst_impl.hh43
1 files changed, 37 insertions, 6 deletions
diff --git a/src/cpu/o3/dyn_inst_impl.hh b/src/cpu/o3/dyn_inst_impl.hh
index 85778aadc..7f8d5a030 100644
--- a/src/cpu/o3/dyn_inst_impl.hh
+++ b/src/cpu/o3/dyn_inst_impl.hh
@@ -43,6 +43,7 @@
#include "base/cp_annotate.hh"
#include "cpu/o3/dyn_inst.hh"
#include "sim/full_system.hh"
+#include "debug/O3PipeView.hh"
template <class Impl>
BaseO3DynInst<Impl>::BaseO3DynInst(StaticInstPtr staticInst,
@@ -62,6 +63,33 @@ BaseO3DynInst<Impl>::BaseO3DynInst(StaticInstPtr _staticInst,
initVars();
}
+template <class Impl>BaseO3DynInst<Impl>::~BaseO3DynInst()
+{
+#if TRACING_ON
+ Tick val, fetch = this->fetchTick;
+ // Print info needed by the pipeline activity viewer.
+ DPRINTFR(O3PipeView, "O3PipeView:fetch:%llu:0x%08llx:%d:%llu:%s\n",
+ fetch,
+ this->instAddr(),
+ this->microPC(),
+ this->seqNum,
+ this->staticInst->disassemble(this->instAddr()));
+ val = (this->decodeTick == -1) ? 0 : fetch + this->decodeTick;
+ DPRINTFR(O3PipeView, "O3PipeView:decode:%llu\n", val);
+ val = (this->renameTick == -1) ? 0 : fetch + this->renameTick;
+ DPRINTFR(O3PipeView, "O3PipeView:rename:%llu\n", val);
+ val = (this->dispatchTick == -1) ? 0 : fetch + this->dispatchTick;
+ DPRINTFR(O3PipeView, "O3PipeView:dispatch:%llu\n", val);
+ val = (this->issueTick == -1) ? 0 : fetch + this->issueTick;
+ DPRINTFR(O3PipeView, "O3PipeView:issue:%llu\n", val);
+ val = (this->completeTick == -1) ? 0 : fetch + this->completeTick;
+ DPRINTFR(O3PipeView, "O3PipeView:complete:%llu\n", val);
+ val = (this->commitTick == -1) ? 0 : fetch + this->commitTick;
+ DPRINTFR(O3PipeView, "O3PipeView:retire:%llu\n", val);
+#endif
+};
+
+
template <class Impl>
void
BaseO3DynInst<Impl>::initVars()
@@ -82,12 +110,15 @@ BaseO3DynInst<Impl>::initVars()
_numDestMiscRegs = 0;
#if TRACING_ON
- fetchTick = 0;
- decodeTick = 0;
- renameTick = 0;
- dispatchTick = 0;
- issueTick = 0;
- completeTick = 0;
+ // Value -1 indicates that particular phase
+ // hasn't happened (yet).
+ fetchTick = -1;
+ decodeTick = -1;
+ renameTick = -1;
+ dispatchTick = -1;
+ issueTick = -1;
+ completeTick = -1;
+ commitTick = -1;
#endif
}