From 9b642fa1f8c10a428beef83c23198d6d3d0588b9 Mon Sep 17 00:00:00 2001 From: hrydgard Date: Fri, 1 May 2009 16:29:44 +0000 Subject: [PATCH] DSPSpy. test decrements too. Damn they are weird. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@3125 8ced0084-cf51-0410-be5f-012b33b47a6e --- Source/DSPSpy/tests/dr_test.ds | 314 +++++++++++++++++++++++++++++++++ 1 file changed, 314 insertions(+) create mode 100644 Source/DSPSpy/tests/dr_test.ds diff --git a/Source/DSPSpy/tests/dr_test.ds b/Source/DSPSpy/tests/dr_test.ds new file mode 100644 index 0000000000..03f9dabbd8 --- /dev/null +++ b/Source/DSPSpy/tests/dr_test.ds @@ -0,0 +1,314 @@ +; This test checks the effect of the index looping registers (R8-R11) +incdir "tests" +include "dsp_base.inc" + +; Tests done using AR1 = 0x0010, IX1 = 0. LP1 means R09. +; LP1 = 0 +; 10, 10, 10, 10, +; LP1 = 1 +; 10, 11, 10, 11, +; LP1 = 2 +; 10, 12, 11, 13, 12, 11, 13, 12, 11, 13, 12, 11 +; LP1 = 3 +; 10, 13, 12, 11, 10, 13, 12... +; LP1 = 4 +; 10, 14, 13, 17, 16, 15, 14, 13, 17, 16, 15, 14, 13, ... +; LP1 = 5 +; 10, 15, 14, 13, 12, 17, 16, 15, 14, 13, 12, 17, +; LP1 = 6 +; 10, 16, 15, 14, 13, 12, 11, 17, 16, 15, 14, 13 +; LP1 = 7 +; 10, 17, 16, 15, .. normal +; LP1 = 8 +; 10, 18, 17, 1f, 1e, 1d, 1c, 1b, 1a, 19, 18, 17, 1f, 1e, ..... + + +; I really don't know how the above could possibly be efficiently implemented in hardware. +; And thus it's tricky to implement in software too :p + +; test using indexing register 1 - 0 is used in send_back +lri $AR1, #16 +lri $IX1, #32 +lri $R09, #0 + +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 + +lri $AR1, #16 +lri $R09, #1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 + +lri $AR1, #16 +lri $R09, #2 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 + +lri $AR1, #16 +lri $R09, #3 + +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 + +lri $AR1, #16 +lri $R09, #4 + +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 + +lri $AR1, #16 +lri $R09, #5 + +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 + +lri $AR1, #16 +lri $R09, #6 + +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 + +lri $AR1, #16 +lri $R09, #7 + +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 + +lri $AR1, #16 +lri $R09, #8 + +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 +nx'dr : $AR1 +call send_back ; 1 + + +lri $R09, #0xFFFF + +; We're done, DO NOT DELETE THIS LINE +jmp end_of_test