Dump the processor statistics
PutF1I[out, "instructions: %g", insts];
PutF1I[out, ", cycles: %g", cycles];
IF insts > 0
THEN {
PutReal1[out, "\n bytes/inst: %g", (bytes*1.0)/insts, 2];
PutReal1[out, ", cycles/inst: %g", (cycles*1.0)/insts, 2];
IF rejects > 0
THEN
PutReal1[out, ", cycles/reject: %g", (cycles*1.0)/rejects, 2];
};
PutF1I[out, "\n instBytesUsed: %g", bytes];
PutF1I[out, ", instBytesFlushed: %g", discarded];
PutF1I[out, ", forcedEmpty: %g", forcedEmpty];
PutF1I[out, "\n euFetches: %g", euFetches];
PutF1I[out, ", euStores: %g", euStores];
{
detail of jumps, calls, and predictions
fallThruGood: INT ← new.pStats.fallThruGood - old.pStats.fallThruGood;
jumpGood: INT ← new.pStats.jumpGood - old.pStats.jumpGood;
fallThruBad: INT ← new.pStats.fallThruBad - old.pStats.fallThruBad;
jumpBad: INT ← new.pStats.jumpBad - old.pStats.jumpBad;
goodPredict: INT ← fallThruGood+jumpGood;
badPredict: INT ← fallThruBad+jumpBad;
jumpBackU: INT ← new.pStats.jumpBackU - old.pStats.jumpBackU;
jumpBackG: INT ← new.pStats.jumpBackG - old.pStats.jumpBackG;
jumpBackB: INT ← new.pStats.jumpBackB - old.pStats.jumpBackB;
PutF1I[out, "\n goodPredictions: %g", goodPredict];
PutF1I[out, ", badPredictions: %g", badPredict];
PutF1I[out, ", uncond jumps: %g", new.pStats.jumps - old.pStats.jumps];
PutF1I[out, ", calls: %g", new.pStats.calls - old.pStats.calls];
PutF1I[out, "\n (fallThruGood: %g", fallThruGood];
PutF1I[out, ", jumpGood: %g", jumpGood];
PutF1I[out, ", fallThruBad: %g", fallThruBad];
PutF1I[out, ", jumpBad: %g)", jumpBad];
PutF1I[out, "\n (jumpBack - uncond: %g", jumpBackU];
PutF1I[out, ", good predict: %g", jumpBackG];
PutF1I[out, ", bad predict: %g)", jumpBackB];
};
PutF1I[out, "\n stackOver: %g",
new.pStats.stackOver - old.pStats.stackOver];
PutF1I[out, ", regBusyCycles: %g",
new.pStats.regBusyCycles - old.pStats.regBusyCycles];
PutF1I[out, "\n instBufferCycles: %g",
new.pStats.instBufferCycles - old.pStats.instBufferCycles];
PutF1I[out, ", returnInterlockCycles: %g",
new.pStats.returnInterlockCycles - old.pStats.returnInterlockCycles];
PutF1I[out, "\n lookaheadProbes: %g",
new.pStats.lookaheadProbes - old.pStats.lookaheadProbes];
PutF1I[out, ", lookaheadRejectCycles: %g",
new.pStats.lookaheadRejects - old.pStats.lookaheadRejects];