forked from dolphin-emu/dolphin
		
	git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@5329 8ced0084-cf51-0410-be5f-012b33b47a6e
		
			
				
	
	
		
			86 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
#include "DSPJitTester.h"
 | 
						|
 | 
						|
void nx_dr()
 | 
						|
{
 | 
						|
	SDSP test_dsp;
 | 
						|
	DSPJitTester tester(0x40, 0x04);
 | 
						|
 | 
						|
	for (u16 input_reg = 0; input_reg < 50; input_reg++)
 | 
						|
	for (u16 input_wr0 = 0; input_wr0 < 10; input_wr0++)
 | 
						|
	{
 | 
						|
		memset(&test_dsp, 0, sizeof(SDSP));
 | 
						|
		test_dsp.r[DSP_REG_WR0] = input_wr0;
 | 
						|
		test_dsp.r[0] = input_reg;
 | 
						|
		if (!tester.Test(test_dsp))
 | 
						|
		{
 | 
						|
			printf("%s Test failed: in = 0x%04x, wr0 = 0x%04x > int = 0x%04x, jit = 0x%04x\n", 
 | 
						|
				tester.GetInstructionName(),
 | 
						|
				input_reg, input_wr0,
 | 
						|
				tester.GetLastInterpreterDSP().r[0], tester.GetLastJitDSP().r[0]);
 | 
						|
		}
 | 
						|
	}
 | 
						|
	tester.Report();
 | 
						|
}
 | 
						|
 | 
						|
void nx_ir()
 | 
						|
{
 | 
						|
	SDSP test_dsp;
 | 
						|
	DSPJitTester tester(0x40, 0x08);
 | 
						|
 | 
						|
	for (u16 input_reg = 0; input_reg < 50; input_reg++)
 | 
						|
	for (u16 input_wr0 = 0; input_wr0 < 10; input_wr0++)
 | 
						|
	{
 | 
						|
		memset(&test_dsp, 0, sizeof(SDSP));
 | 
						|
		test_dsp.r[DSP_REG_WR0] = input_wr0;
 | 
						|
		test_dsp.r[0] = input_reg;
 | 
						|
		if (!tester.Test(test_dsp))
 | 
						|
		{
 | 
						|
			printf("%s Test failed: in = 0x%04x, wr0 = 0x%04x > int = 0x%04x, jit = 0x%04x\n", 
 | 
						|
				tester.GetInstructionName(),
 | 
						|
				input_reg, input_wr0,
 | 
						|
				tester.GetLastInterpreterDSP().r[0], tester.GetLastJitDSP().r[0]);
 | 
						|
		}
 | 
						|
	}
 | 
						|
	tester.Report();
 | 
						|
}
 | 
						|
 | 
						|
void nx_nr()
 | 
						|
{
 | 
						|
	SDSP test_dsp;
 | 
						|
	DSPJitTester tester(0x40, 0x0c);
 | 
						|
 | 
						|
	for (u16 input_reg = 0; input_reg < 10; input_reg++)
 | 
						|
	for (u16 input_wr0 = 0; input_wr0 < 10; input_wr0++)
 | 
						|
	for (u16 input_ix0 = 0; input_ix0 < 10; input_ix0++)
 | 
						|
	{
 | 
						|
		memset(&test_dsp, 0, sizeof(SDSP));
 | 
						|
		test_dsp.r[DSP_REG_IX0] = input_ix0;
 | 
						|
		test_dsp.r[DSP_REG_WR0] = input_wr0;
 | 
						|
		test_dsp.r[0] = input_reg;
 | 
						|
		if (!tester.Test(test_dsp))
 | 
						|
		{
 | 
						|
			printf("%s Test failed: in = 0x%04x, wr0 = 0x%04x, ix0 = 0x%04x > int = 0x%04x, jit = 0x%04x\n", 
 | 
						|
				tester.GetInstructionName(),
 | 
						|
				input_reg, input_wr0, input_ix0,
 | 
						|
				tester.GetLastInterpreterDSP().r[0], tester.GetLastJitDSP().r[0]);
 | 
						|
		}
 | 
						|
	}
 | 
						|
	tester.Report();
 | 
						|
}
 | 
						|
 | 
						|
void AudioJitTests()
 | 
						|
{
 | 
						|
	DSPJitTester::Initialize();
 | 
						|
 | 
						|
	nx_ir();
 | 
						|
	nx_dr();
 | 
						|
	nx_nr();
 | 
						|
}
 | 
						|
 | 
						|
//required to be able to link against DSPCore
 | 
						|
void DSPHost_UpdateDebugger() { }
 | 
						|
unsigned int DSPHost_CodeLoaded(unsigned const char*, int) { return 0; }
 | 
						|
void DSPHost_InterruptRequest() { }
 | 
						|
bool DSPHost_OnThread() { return false; }
 | 
						|
void DSPHost_WriteHostMemory(unsigned char, unsigned int) { }
 | 
						|
unsigned char DSPHost_ReadHostMemory(unsigned int) { return 0; } |