Line 534... |
Line 534... |
case INST_OR32_ADDI: // l.addi
|
case INST_OR32_ADDI: // l.addi
|
v_reg_result = v_reg_ra + v_imm_int32;
|
v_reg_result = v_reg_ra + v_imm_int32;
|
v_write_rd = 1;
|
v_write_rd = 1;
|
|
|
// Carry out
|
// Carry out
|
r_sr = (r_sr & ~OR32_SR_CY_BIT) | (ADD_CARRY_OUT(v_reg_ra, v_reg_rb) ? OR32_SR_CY_BIT : 0);
|
r_sr = (r_sr & ~OR32_SR_CY_BIT) | (ADD_CARRY_OUT(v_reg_ra, v_imm_int32) ? OR32_SR_CY_BIT : 0);
|
break;
|
break;
|
|
|
case INST_OR32_ANDI: // l.andi
|
case INST_OR32_ANDI: // l.andi
|
v_reg_result = v_reg_ra & v_imm_uint32;
|
v_reg_result = v_reg_ra & v_imm_uint32;
|
v_write_rd = 1;
|
v_write_rd = 1;
|
Line 1305... |
Line 1305... |
exit(r_gpr[NOP_DATA_REG]);
|
exit(r_gpr[NOP_DATA_REG]);
|
break;
|
break;
|
// Report value
|
// Report value
|
case NOP_REPORT:
|
case NOP_REPORT:
|
if (Trace)
|
if (Trace)
|
fprintf(stderr, "report(0x%x)\n", r_gpr[NOP_DATA_REG]);
|
fprintf(stderr, "0x%x\n", r_gpr[NOP_DATA_REG]);
|
else
|
else
|
printf("report(0x%x)\n", r_gpr[NOP_DATA_REG]);
|
printf("0x%x\n", r_gpr[NOP_DATA_REG]);
|
break;
|
break;
|
// putc()
|
// putc()
|
case NOP_PUTC:
|
case NOP_PUTC:
|
if (EnablePutc)
|
if (EnablePutc)
|
{
|
{
|
Line 1342... |
Line 1342... |
void OR32::DumpStats(void)
|
void OR32::DumpStats(void)
|
{
|
{
|
printf("Runtime Stats:\n");
|
printf("Runtime Stats:\n");
|
printf("- Total Instructions %d\n", StatsInstructions);
|
printf("- Total Instructions %d\n", StatsInstructions);
|
printf("- Memory Operations %d (%d%%)\n", StatsMem, (StatsMem * 100) / StatsInstructions);
|
printf("- Memory Operations %d (%d%%)\n", StatsMem, (StatsMem * 100) / StatsInstructions);
|
|
if (StatsMem != 0)
|
|
{
|
printf(" - Reads %d (%d%%)\n", (StatsMem - StatsMemWrites), ((StatsMem - StatsMemWrites) * 100) / StatsMem);
|
printf(" - Reads %d (%d%%)\n", (StatsMem - StatsMemWrites), ((StatsMem - StatsMemWrites) * 100) / StatsMem);
|
printf(" - Writes %d (%d%%)\n", StatsMemWrites, (StatsMemWrites * 100) / StatsMem);
|
printf(" - Writes %d (%d%%)\n", StatsMemWrites, (StatsMemWrites * 100) / StatsMem);
|
|
}
|
printf("- MUL %d (%d%%)\n", StatsMul, (StatsMul * 100) / StatsInstructions);
|
printf("- MUL %d (%d%%)\n", StatsMul, (StatsMul * 100) / StatsInstructions);
|
printf("- MULU %d (%d%%)\n", StatsMulu, (StatsMulu * 100) / StatsInstructions);
|
printf("- MULU %d (%d%%)\n", StatsMulu, (StatsMulu * 100) / StatsInstructions);
|
printf("- NOPS %d (%d%%)\n", StatsNop, (StatsNop * 100) / StatsInstructions);
|
printf("- NOPS %d (%d%%)\n", StatsNop, (StatsNop * 100) / StatsInstructions);
|
printf("- Markers %d (%d%%)\n", StatsMarkers, (StatsMarkers * 100) / StatsInstructions);
|
printf("- Markers %d (%d%%)\n", StatsMarkers, (StatsMarkers * 100) / StatsInstructions);
|
printf("- Branches Operations %d (%d%%)\n", StatsBranches, (StatsBranches * 100) / StatsInstructions);
|
printf("- Branches Operations %d (%d%%)\n", StatsBranches, (StatsBranches * 100) / StatsInstructions);
|