Initial commit of OpenSPARC T2 architecture model.
[OpenSPARC-T2-SAM] / rst / rstzip3 / rstzip_v2 / footer.H
/*
* ========== Copyright Header Begin ==========================================
*
* OpenSPARC T2 Processor File: footer.H
* Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES.
*
* The above named program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public
* License version 2 as published by the Free Software Foundation.
*
* The above named program is distributed in the hope that it will be
* useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this work; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
*
* ========== Copyright Header End ============================================
*/
// ========== Copyright Header Begin ==========================================
//
// OpenSPARC T2 Processor File: footer.H
// Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved.
// DO NOT ALTER OR REMOVE COPYRIGHT NOTICES.
//
// The above named program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public
// License version 2 as published by the Free Software Foundation.
//
// The above named program is distributed in the hope that it will be
// useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// General Public License for more details.
//
// You should have received a copy of the GNU General Public
// License along with this work; if not, write to the Free Software
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
//
// ========== Copyright Header End ============================================
#ifndef _FOOTER_H
#define _FOOTER_H
class RstzipFooter {
public:
uint32_t max_chunksize;
uint64_t total_instr;
uint64_t total_noninstr;
uint64_t total_loop_chunk;
uint64_t total_nonloop_chunk;
uint64_t total_zpavadiff;
uint64_t total_pavadiff;
uint64_t zero_offset_count;
uint64_t offset_count[OFFSET_64BITS_IDX + 1];
uint64_t chunksize_count[CHUNKSIZE_RES];
RstzipFooter() {
init();
}
void init() {
int i;
max_chunksize = 0;
total_instr = 0;
total_noninstr = 0;
total_loop_chunk = 0;
total_nonloop_chunk = 0;
total_zpavadiff = 0;
total_pavadiff = 0;
zero_offset_count = 0;
for (i = 0; i < OFFSET_64BITS_IDX + 1; i++) {
offset_count[i] = 0;
}
for (i = 0; i < CHUNKSIZE_RES; i++) {
chunksize_count[i] = 0;
}
}
void fprint(FILE* fp) {
int i;
fprintf(fp, "\n");
fprintf(fp, "Max chunksize = %d\n", max_chunksize);
fprintf(fp, "Total instr recs = %llu\n", total_instr);
fprintf(fp, "Total non-instr recs = %llu\n", total_noninstr);
fprintf(fp, "Total compressed chunks = %llu\n", total_loop_chunk);
fprintf(fp, "Total uncompressed chunks = %llu\n", total_nonloop_chunk);
fprintf(fp, "Total compressed pavadiff recs = %llu\n", total_zpavadiff);
fprintf(fp, "Total uncompressed pavadiff recs = %llu\n", total_pavadiff - total_zpavadiff);
fprintf(fp, "Total EA zero offsets = %llu\n", zero_offset_count);
fprintf(fp, "\n");
fprintf(fp, "%14s%14s\n", "EA offset size", "Count");
for (i = 0; i <= OFFSET_64BITS_IDX; i++) {
switch (i) {
case OFFSET_8BITS_IDX:
fprintf(fp, "%-14d%14llu\n", 8, offset_count[i]);
break;
case OFFSET_8BITS_RESERVED_IDX:
fprintf(fp, "%-14d%14llu\n", 8, offset_count[i]);
break;
case OFFSET_16BITS_IDX:
fprintf(fp, "%-14d%14llu\n", 16, offset_count[i]);
break;
case OFFSET_32BITS_IDX:
fprintf(fp, "%-14d%14llu\n", 32, offset_count[i]);
break;
case OFFSET_64BITS_IDX:
fprintf(fp, "%-14d%14llu\n", 64, offset_count[i]);
break;
}
}
fprintf(fp, "\n");
fprintf(fp, "%-14s%14s\n", "Chunk size", "Count");
for (i = 0; i < CHUNKSIZE_RES; i++) {
switch (i) {
case 0:
fprintf(fp, "%-14s%14llu\n", " 0-99", chunksize_count[i]);
break;
case 1:
fprintf(fp, "%-14s%14llu\n", "100-199", chunksize_count[i]);
break;
case 2:
fprintf(fp, "%-14s%14llu\n", "200-299", chunksize_count[i]);
break;
case 3:
fprintf(fp, "%-14s%14llu\n", "300-399", chunksize_count[i]);
break;
case 4:
fprintf(fp, "%-14s%14llu\n", "400-499", chunksize_count[i]);
break;
case 5:
fprintf(fp, "%-14s%14llu\n", "500-599", chunksize_count[i]);
break;
case 6:
fprintf(fp, "%-14s%14llu\n", "600-699", chunksize_count[i]);
break;
case 7:
fprintf(fp, "%-14s%14llu\n", "700-799", chunksize_count[i]);
break;
case 8:
fprintf(fp, "%-14s%14llu\n", "800-899", chunksize_count[i]);
break;
case 9:
fprintf(fp, "%-14s%14llu\n", "900- ", chunksize_count[i]);
break;
}
}
fprintf(fp, "\n");
}
}; // RstzipFooter
#endif // _FOOTER_H