void arch_dump_summary(struct arch_t *arch, FILE *f) { Emu *emu = arch->emu; Timing *timing = arch->timing; /* If no instruction was run for this architecture, skip * statistics summary. */ if (!emu->instructions) return; /* Architecture-specific emulation statistics */ assert(emu->DumpSummary); emu->DumpSummary(emu, f); /* Timing simulation statistics */ if (arch->sim_kind == arch_sim_kind_detailed) { /* Architecture-specific */ assert(timing->DumpSummary); timing->DumpSummary(timing, f); } /* End */ fprintf(f, "\n"); }
void arch_dump(struct arch_t *arch, FILE *f) { double time_in_sec; int i; Emu *emu; Timing *timing; /* Get objects */ emu = arch->emu; timing = arch->timing; /* Nothing to print if architecture was not active */ if (!emu->instructions) return; /* Header */ for (i = 0; i < 80; i++) fprintf(f, "="); fprintf(f, "\nArchitecture '%s'\n", arch->name); for (i = 0; i < 80; i++) fprintf(f, "="); fprintf(f, "\n\n"); /* Emulator */ time_in_sec = (double) m2s_timer_get_value(emu->timer) / 1.0e6; fprintf(f, "SimKind = %s\n", str_map_value(&arch_sim_kind_map, arch->sim_kind)); fprintf(f, "Time = %.2f\n", time_in_sec); fprintf(f, "Instructions = %lld\n", emu->instructions); fprintf(f, "\n"); assert(emu->DumpSummary); emu->DumpSummary(emu, f); /* Continue with timing simulator only it active */ if (arch->sim_kind == arch_sim_kind_functional) return; /* Timing simulator */ fprintf(f, "Cycles = %lld\n", timing->cycle); fprintf(f, "\n"); assert(timing->DumpSummary); timing->DumpSummary(timing, f); }