54 os <<
"UnpredictedBranch";
57 os <<
"BranchPrediction";
60 os <<
"CorrectlyPredictedBranch";
63 os <<
"BadlyPredictedBranch";
66 os <<
"BadlyPredictedBranchTarget";
72 os <<
"SuspendThread";
146 <<
";0x" << std::hex <<
target.instAddr() << std::dec
148 inst->reportData(os);
155 os << branch.
reason <<
" target: 0x"
156 << std::hex << branch.
target.instAddr() << std::dec
157 <<
' ' << *branch.
inst
181 line =
new uint8_t[width_];
227 numInsts(width), threadId(tid)
MinorDynInstPtr inst
Instruction which caused this branch.
std::ostream & operator<<(std::ostream &os, const InstId &id)
Print this id in the usual slash-separated format expected by MinorTrace.
decltype(nullptr) constexpr NoFault
Contains class definitions for data flowing between pipeline stages in the top-level structure portio...
const unsigned int MAX_FORWARD_INSTS
Maximum number of instructions that can be carried by the pipeline.
void reportData(std::ostream &os) const
ReportIF interface.
bool isFault() const
This is a fault, not a line.
bool bubbleFlag
This line is a bubble.
Reason reason
Explanation for this branch.
void reportData(std::ostream &os) const
ReportIF interface.
InstSeqNum newStreamSeqNum
Sequence number of new stream/prediction to be adopted.
T * getPtr()
get a pointer to the data ptr.
unsigned int width() const
Number of instructions carried by this object.
bool isBranch() const
As static isBranch but on this branch data.
bool isBubble() const
BubbleIF interface.
ForwardInstData(unsigned int width=0, ThreadID tid=InvalidThreadID)
void resize(unsigned int width)
Resize a bubble/empty ForwardInstData and fill with bubbles.
void reportData(std::ostream &os) const
ReportIF interface.
MinorDynInstPtr insts[MAX_FORWARD_INSTS]
Array of carried insts, ref counted.
const RequestPtr req
A pointer to the original request.
unsigned int lineWidth
Explicit line width, don't rely on data.size.
InstId id
Thread, stream, prediction ...
unsigned int numInsts
The number of insts slots that can be expected to be valid insts.
void bubbleFill()
Fill with bubbles from 0 to width() - 1.
A Packet is used to encapsulate a transfer between two objects in the memory system (e...
int16_t ThreadID
Thread index/ID type.
Forward data betwen Execute and Fetch1 carrying change-of-address/stream information.
bool isStreamChange() const
As static isStreamChange but on this branch data.
Packet * packet
Packet from which the line is taken.
static MinorDynInstPtr bubble()
There is a single bubble inst.
InstSeqNum newPredictionSeqNum
Fault fault
This line has a fault.
void allocateLine(unsigned int width_)
In-place initialise a ForwardLineData, freeing and overridding the line.
void setFault(Fault fault_)
Set fault and possible clear the bubble flag.
TheISA::PCState target
Starting PC of that stream.
ForwardInstData & operator=(const ForwardInstData &src)
Copy the inst array only as far as numInsts.
void adoptPacketData(Packet *packet)
Use the data from a packet as line instead of allocating new space.
std::shared_ptr< FaultBase > Fault
void freeLine()
Free this ForwardLineData line.
Forward flowing data between Fetch2,Decode,Execute carrying a packet of instructions of a width appro...