void X86CpuUpdateOccupancyStats(X86Cpu *self) { X86Core *core; X86Thread *thread; int i; int j; for (i = 0; i < x86_cpu_num_cores; i++) { core = self->cores[i]; /* Update occupancy stats for shared structures */ if (x86_rob_kind == x86_rob_kind_shared) UPDATE_CORE_OCCUPANCY_STATS(rob); if (x86_iq_kind == x86_iq_kind_shared) UPDATE_CORE_OCCUPANCY_STATS(iq); if (x86_lsq_kind == x86_lsq_kind_shared) UPDATE_CORE_OCCUPANCY_STATS(lsq); if (x86_reg_file_kind == x86_reg_file_kind_shared) { UPDATE_CORE_OCCUPANCY_STATS(reg_file_int); UPDATE_CORE_OCCUPANCY_STATS(reg_file_fp); } /* Occupancy stats for private structures */ for (j = 0; j < x86_cpu_num_threads; j++) { thread = core->threads[j]; if (x86_rob_kind == x86_rob_kind_private) UPDATE_THREAD_OCCUPANCY_STATS(rob); if (x86_iq_kind == x86_iq_kind_private) UPDATE_THREAD_OCCUPANCY_STATS(iq); if (x86_lsq_kind == x86_lsq_kind_private) UPDATE_THREAD_OCCUPANCY_STATS(lsq); if (x86_reg_file_kind == x86_reg_file_kind_private) { UPDATE_THREAD_OCCUPANCY_STATS(reg_file_int); UPDATE_THREAD_OCCUPANCY_STATS(reg_file_fp); } } } }
void x86_cpu_update_occupancy_stats() { int core, thread; X86_CORE_FOR_EACH { /* Update occupancy stats for shared structures */ if (x86_rob_kind == x86_rob_kind_shared) UPDATE_CORE_OCCUPANCY_STATS(rob); if (x86_iq_kind == x86_iq_kind_shared) UPDATE_CORE_OCCUPANCY_STATS(iq); if (x86_lsq_kind == x86_lsq_kind_shared) UPDATE_CORE_OCCUPANCY_STATS(lsq); if (x86_reg_file_kind == x86_reg_file_kind_shared) { UPDATE_CORE_OCCUPANCY_STATS(reg_file_int); UPDATE_CORE_OCCUPANCY_STATS(reg_file_fp); } /* Occupancy stats for private structures */ X86_THREAD_FOR_EACH { if (x86_rob_kind == x86_rob_kind_private) UPDATE_THREAD_OCCUPANCY_STATS(rob); if (x86_iq_kind == x86_iq_kind_private) UPDATE_THREAD_OCCUPANCY_STATS(iq); if (x86_lsq_kind == x86_lsq_kind_private) UPDATE_THREAD_OCCUPANCY_STATS(lsq); if (x86_reg_file_kind == x86_reg_file_kind_private) { UPDATE_THREAD_OCCUPANCY_STATS(reg_file_int); UPDATE_THREAD_OCCUPANCY_STATS(reg_file_fp); } } } }