dolphin/Source/DSPSpy/tests/dr_test.ds
Pokechu22 51c26d82a5 DSPSpy: Require user to specify a test_main label
This makes the point where execution starts more obvious compared to a start_of_test label at the end of the include, and allows putting other functions at the start of the file.  This change also modifies the existing tests to build with this change.
2021-08-22 10:49:46 -07:00

315 lines
5.3 KiB
Text

; 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. WR1 (wrap 1) means WR1.
; WR1 = 0
; 10, 10, 10, 10,
; WR1 = 1
; 10, 11, 10, 11,
; WR1 = 2
; 10, 12, 11, 13, 12, 11, 13, 12, 11, 13, 12, 11
; WR1 = 3
; 10, 13, 12, 11, 10, 13, 12...
; WR1 = 4
; 10, 14, 13, 17, 16, 15, 14, 13, 17, 16, 15, 14, 13, ...
; WR1 = 5
; 10, 15, 14, 13, 12, 17, 16, 15, 14, 13, 12, 17,
; WR1 = 6
; 10, 16, 15, 14, 13, 12, 11, 17, 16, 15, 14, 13
; WR1 = 7
; 10, 17, 16, 15, .. normal
; WR1 = 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
test_main:
lri $AR1, #16
lri $IX1, #32
lri $WR1, #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 $WR1, #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 $WR1, #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 $WR1, #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 $WR1, #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 $WR1, #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 $WR1, #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 $WR1, #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 $WR1, #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 $WR1, #0xFFFF
; We're done, DO NOT DELETE THIS LINE
jmp end_of_test