O3: Add a pointer to the macroop for a microop in the dyninst.
This commit is contained in:
parent
a81d4a8fcd
commit
ec204f003c
|
@ -103,6 +103,7 @@ class BaseDynInst : public FastAlloc, public RefCounted
|
||||||
|
|
||||||
/** The StaticInst used by this BaseDynInst. */
|
/** The StaticInst used by this BaseDynInst. */
|
||||||
StaticInstPtr staticInst;
|
StaticInstPtr staticInst;
|
||||||
|
StaticInstPtr macroop;
|
||||||
|
|
||||||
////////////////////////////////////////////
|
////////////////////////////////////////////
|
||||||
//
|
//
|
||||||
|
@ -378,13 +379,14 @@ class BaseDynInst : public FastAlloc, public RefCounted
|
||||||
* @param seq_num The sequence number of the instruction.
|
* @param seq_num The sequence number of the instruction.
|
||||||
* @param cpu Pointer to the instruction's CPU.
|
* @param cpu Pointer to the instruction's CPU.
|
||||||
*/
|
*/
|
||||||
BaseDynInst(StaticInstPtr staticInst, TheISA::PCState pc,
|
BaseDynInst(StaticInstPtr staticInst, StaticInstPtr macroop,
|
||||||
TheISA::PCState predPC, InstSeqNum seq_num, ImplCPU *cpu);
|
TheISA::PCState pc, TheISA::PCState predPC,
|
||||||
|
InstSeqNum seq_num, ImplCPU *cpu);
|
||||||
|
|
||||||
/** BaseDynInst constructor given a StaticInst pointer.
|
/** BaseDynInst constructor given a StaticInst pointer.
|
||||||
* @param _staticInst The StaticInst for this BaseDynInst.
|
* @param _staticInst The StaticInst for this BaseDynInst.
|
||||||
*/
|
*/
|
||||||
BaseDynInst(StaticInstPtr &_staticInst);
|
BaseDynInst(StaticInstPtr staticInst, StaticInstPtr macroop);
|
||||||
|
|
||||||
/** BaseDynInst destructor. */
|
/** BaseDynInst destructor. */
|
||||||
~BaseDynInst();
|
~BaseDynInst();
|
||||||
|
|
|
@ -76,9 +76,10 @@ my_hash_t thishash;
|
||||||
|
|
||||||
template <class Impl>
|
template <class Impl>
|
||||||
BaseDynInst<Impl>::BaseDynInst(StaticInstPtr _staticInst,
|
BaseDynInst<Impl>::BaseDynInst(StaticInstPtr _staticInst,
|
||||||
|
StaticInstPtr _macroop,
|
||||||
TheISA::PCState _pc, TheISA::PCState _predPC,
|
TheISA::PCState _pc, TheISA::PCState _predPC,
|
||||||
InstSeqNum seq_num, ImplCPU *cpu)
|
InstSeqNum seq_num, ImplCPU *cpu)
|
||||||
: staticInst(_staticInst), traceData(NULL), cpu(cpu)
|
: staticInst(_staticInst), macroop(_macroop), traceData(NULL), cpu(cpu)
|
||||||
{
|
{
|
||||||
seqNum = seq_num;
|
seqNum = seq_num;
|
||||||
|
|
||||||
|
@ -90,8 +91,9 @@ BaseDynInst<Impl>::BaseDynInst(StaticInstPtr _staticInst,
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class Impl>
|
template <class Impl>
|
||||||
BaseDynInst<Impl>::BaseDynInst(StaticInstPtr &_staticInst)
|
BaseDynInst<Impl>::BaseDynInst(StaticInstPtr _staticInst,
|
||||||
: staticInst(_staticInst), traceData(NULL)
|
StaticInstPtr _macroop)
|
||||||
|
: staticInst(_staticInst), macroop(_macroop), traceData(NULL)
|
||||||
{
|
{
|
||||||
seqNum = 0;
|
seqNum = 0;
|
||||||
initVars();
|
initVars();
|
||||||
|
|
|
@ -86,12 +86,12 @@ class BaseO3DynInst : public BaseDynInst<Impl>
|
||||||
|
|
||||||
public:
|
public:
|
||||||
/** BaseDynInst constructor given a binary instruction. */
|
/** BaseDynInst constructor given a binary instruction. */
|
||||||
BaseO3DynInst(StaticInstPtr staticInst,
|
BaseO3DynInst(StaticInstPtr staticInst, StaticInstPtr macroop,
|
||||||
TheISA::PCState pc, TheISA::PCState predPC,
|
TheISA::PCState pc, TheISA::PCState predPC,
|
||||||
InstSeqNum seq_num, O3CPU *cpu);
|
InstSeqNum seq_num, O3CPU *cpu);
|
||||||
|
|
||||||
/** BaseDynInst constructor given a static inst pointer. */
|
/** BaseDynInst constructor given a static inst pointer. */
|
||||||
BaseO3DynInst(StaticInstPtr &_staticInst);
|
BaseO3DynInst(StaticInstPtr _staticInst, StaticInstPtr _macroop);
|
||||||
|
|
||||||
/** Executes the instruction.*/
|
/** Executes the instruction.*/
|
||||||
Fault execute();
|
Fault execute();
|
||||||
|
|
|
@ -45,16 +45,18 @@
|
||||||
|
|
||||||
template <class Impl>
|
template <class Impl>
|
||||||
BaseO3DynInst<Impl>::BaseO3DynInst(StaticInstPtr staticInst,
|
BaseO3DynInst<Impl>::BaseO3DynInst(StaticInstPtr staticInst,
|
||||||
|
StaticInstPtr macroop,
|
||||||
TheISA::PCState pc, TheISA::PCState predPC,
|
TheISA::PCState pc, TheISA::PCState predPC,
|
||||||
InstSeqNum seq_num, O3CPU *cpu)
|
InstSeqNum seq_num, O3CPU *cpu)
|
||||||
: BaseDynInst<Impl>(staticInst, pc, predPC, seq_num, cpu)
|
: BaseDynInst<Impl>(staticInst, macroop, pc, predPC, seq_num, cpu)
|
||||||
{
|
{
|
||||||
initVars();
|
initVars();
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class Impl>
|
template <class Impl>
|
||||||
BaseO3DynInst<Impl>::BaseO3DynInst(StaticInstPtr &_staticInst)
|
BaseO3DynInst<Impl>::BaseO3DynInst(StaticInstPtr _staticInst,
|
||||||
: BaseDynInst<Impl>(_staticInst)
|
StaticInstPtr _macroop)
|
||||||
|
: BaseDynInst<Impl>(_staticInst, _macroop)
|
||||||
{
|
{
|
||||||
initVars();
|
initVars();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1097,7 +1097,7 @@ DefaultFetch<Impl>::buildInst(ThreadID tid, StaticInstPtr staticInst,
|
||||||
|
|
||||||
// Create a new DynInst from the instruction fetched.
|
// Create a new DynInst from the instruction fetched.
|
||||||
DynInstPtr instruction =
|
DynInstPtr instruction =
|
||||||
new DynInst(staticInst, thisPC, nextPC, seq, cpu);
|
new DynInst(staticInst, curMacroop, thisPC, nextPC, seq, cpu);
|
||||||
instruction->setTid(tid);
|
instruction->setTid(tid);
|
||||||
|
|
||||||
instruction->setASID(tid);
|
instruction->setASID(tid);
|
||||||
|
|
Loading…
Reference in a new issue