void setPredicate(bool val)
{
predicate = val;
+
+ if (traceData) {
+ traceData->setPredicate(val);
+ }
}
/** Sets the ASID. */
outs << Enums::OpClassStrings[inst->opClass()] << " : ";
}
+ if (IsOn(ExecResult) && predicate == false) {
+ outs << "Predicated False";
+ }
+
if (IsOn(ExecResult) && data_status != DataInvalid) {
ccprintf(outs, " D=%#018x", data.as_int);
}
// realizes there is activity.
// Mark it as executed unless it is an uncached load that
// needs to hit the head of commit.
+ DPRINTF(LSQUnit, "Load [sn:%lli] not executed from %s\n",
+ inst->seqNum,
+ (load_fault != NoFault ? "fault" : "predication"));
if (!(inst->hasRequest() && inst->uncacheable()) ||
inst->isAtCommit()) {
inst->setExecuted();
void setNextMicroPC(uint64_t val) { thread->setNextMicroPC(val); }
void setNextNPC(uint64_t val) { thread->setNextNPC(val); }
void setPredicate(bool val)
- { return thread->setPredicate(val); }
+ {
+ thread->setPredicate(val);
+ if (traceData) {
+ traceData->setPredicate(val);
+ }
+ }
MiscReg readMiscRegNoEffect(int misc_reg)
{
StaticInstPtr macroStaticInst;
MicroPC upc;
bool misspeculating;
+ bool predicate;
// The remaining fields are only valid for particular instruction
// types (e.g, addresses for memory ops) or when particular
fetch_seq_valid = false;
cp_seq_valid = false;
+ predicate = false;
}
virtual ~InstRecord() { }
void setCPSeq(InstSeqNum seq)
{ cp_seq = seq; cp_seq_valid = true; }
+ void setPredicate(bool val) { predicate = val; }
+
virtual void dump() = 0;
public: