mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-21 13:20:27 -06:00
set eol-style native
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@5307 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
@ -1,71 +1,71 @@
|
||||
#include "DSPJitTester.h"
|
||||
|
||||
bool DSPJitTester::Test(SDSP dsp_settings)
|
||||
{
|
||||
if (be_verbose)
|
||||
printf("Running %s: ", instruction_name);
|
||||
|
||||
last_int_dsp = RunInterpreter(dsp_settings);
|
||||
last_jit_dsp = RunJit(dsp_settings);
|
||||
|
||||
run_count++;
|
||||
bool success = AreEqual(last_int_dsp, last_jit_dsp);
|
||||
if (!success)
|
||||
fail_count++;
|
||||
return success;
|
||||
}
|
||||
SDSP DSPJitTester::RunInterpreter(SDSP dsp_settings)
|
||||
{
|
||||
ResetInterpreter();
|
||||
memcpy(&g_dsp, &dsp_settings, sizeof(SDSP));
|
||||
ExecuteInstruction(instruction);
|
||||
|
||||
return g_dsp;
|
||||
}
|
||||
SDSP DSPJitTester::RunJit(SDSP dsp_settings)
|
||||
{
|
||||
ResetJit();
|
||||
memcpy(&g_dsp, &dsp_settings, sizeof(SDSP));
|
||||
const u8* code = jit.GetCodePtr();
|
||||
jit.WriteCallInterpreter(instruction);
|
||||
jit.RET();
|
||||
((void(*)())code)();
|
||||
|
||||
return g_dsp;
|
||||
}
|
||||
void DSPJitTester::ResetInterpreter()
|
||||
{
|
||||
for (int i=0; i < WRITEBACKLOGSIZE; i++)
|
||||
writeBackLogIdx[i] = -1;
|
||||
}
|
||||
void DSPJitTester::ResetJit()
|
||||
{
|
||||
jit.ClearCodeSpace();
|
||||
}
|
||||
bool DSPJitTester::AreEqual(SDSP& int_dsp, SDSP& jit_dsp)
|
||||
{
|
||||
bool equal = true;
|
||||
for (int i = 0; i < 32; i++)
|
||||
{
|
||||
if (int_dsp.r[i] != jit_dsp.r[i])
|
||||
{
|
||||
if (equal && be_verbose)
|
||||
printf("failed\n");
|
||||
equal = false;
|
||||
if (be_verbose)
|
||||
printf("\t%s: int = 0x%04x, jit = 0x%04x\n", regnames[i].name, int_dsp.r[i], jit_dsp.r[i]);
|
||||
}
|
||||
}
|
||||
if (equal && be_verbose)
|
||||
printf("passed\n");
|
||||
return equal;
|
||||
}
|
||||
void DSPJitTester::Report()
|
||||
{
|
||||
printf("%s (0x%04x): Ran %d times, Failed %d times.\n", instruction_name, instruction, run_count, fail_count);
|
||||
}
|
||||
void DSPJitTester::Initialize()
|
||||
{
|
||||
//init int
|
||||
InitInstructionTable();
|
||||
#include "DSPJitTester.h"
|
||||
|
||||
bool DSPJitTester::Test(SDSP dsp_settings)
|
||||
{
|
||||
if (be_verbose)
|
||||
printf("Running %s: ", instruction_name);
|
||||
|
||||
last_int_dsp = RunInterpreter(dsp_settings);
|
||||
last_jit_dsp = RunJit(dsp_settings);
|
||||
|
||||
run_count++;
|
||||
bool success = AreEqual(last_int_dsp, last_jit_dsp);
|
||||
if (!success)
|
||||
fail_count++;
|
||||
return success;
|
||||
}
|
||||
SDSP DSPJitTester::RunInterpreter(SDSP dsp_settings)
|
||||
{
|
||||
ResetInterpreter();
|
||||
memcpy(&g_dsp, &dsp_settings, sizeof(SDSP));
|
||||
ExecuteInstruction(instruction);
|
||||
|
||||
return g_dsp;
|
||||
}
|
||||
SDSP DSPJitTester::RunJit(SDSP dsp_settings)
|
||||
{
|
||||
ResetJit();
|
||||
memcpy(&g_dsp, &dsp_settings, sizeof(SDSP));
|
||||
const u8* code = jit.GetCodePtr();
|
||||
jit.WriteCallInterpreter(instruction);
|
||||
jit.RET();
|
||||
((void(*)())code)();
|
||||
|
||||
return g_dsp;
|
||||
}
|
||||
void DSPJitTester::ResetInterpreter()
|
||||
{
|
||||
for (int i=0; i < WRITEBACKLOGSIZE; i++)
|
||||
writeBackLogIdx[i] = -1;
|
||||
}
|
||||
void DSPJitTester::ResetJit()
|
||||
{
|
||||
jit.ClearCodeSpace();
|
||||
}
|
||||
bool DSPJitTester::AreEqual(SDSP& int_dsp, SDSP& jit_dsp)
|
||||
{
|
||||
bool equal = true;
|
||||
for (int i = 0; i < 32; i++)
|
||||
{
|
||||
if (int_dsp.r[i] != jit_dsp.r[i])
|
||||
{
|
||||
if (equal && be_verbose)
|
||||
printf("failed\n");
|
||||
equal = false;
|
||||
if (be_verbose)
|
||||
printf("\t%s: int = 0x%04x, jit = 0x%04x\n", regnames[i].name, int_dsp.r[i], jit_dsp.r[i]);
|
||||
}
|
||||
}
|
||||
if (equal && be_verbose)
|
||||
printf("passed\n");
|
||||
return equal;
|
||||
}
|
||||
void DSPJitTester::Report()
|
||||
{
|
||||
printf("%s (0x%04x): Ran %d times, Failed %d times.\n", instruction_name, instruction, run_count, fail_count);
|
||||
}
|
||||
void DSPJitTester::Initialize()
|
||||
{
|
||||
//init int
|
||||
InitInstructionTable();
|
||||
}
|
Reference in New Issue
Block a user