mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-01-24 23:11:14 +01:00
DSP: heavily extend mul test. Seems that only MULX* family instructions support unsigned operation.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@3138 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
e7c7142c9d
commit
ae86ec4df6
@ -2,57 +2,249 @@
|
|||||||
incdir "tests"
|
incdir "tests"
|
||||||
include "dsp_base.inc"
|
include "dsp_base.inc"
|
||||||
|
|
||||||
SET40
|
; Results is in capitails like this: UNSIGNED
|
||||||
LRI $AC0.M, #0x1234
|
|
||||||
LRI $AC0.L, #0x5678
|
|
||||||
SET16
|
|
||||||
|
|
||||||
m2
|
CLR15
|
||||||
|
|
||||||
|
; Test MULXMVZ - SET15
|
||||||
CLR $ACC0
|
CLR $ACC0
|
||||||
|
CLRP
|
||||||
|
LRI $AX0.L, #0xFFFF
|
||||||
|
LRI $AX1.H, #0x100
|
||||||
|
MULXMVZ $AX0.L, $AX1.H, $ACC0 ; SIGNED
|
||||||
|
MOVP $ACC0
|
||||||
|
call send_back
|
||||||
|
|
||||||
|
CLR $ACC0
|
||||||
|
CLRP
|
||||||
|
SET15
|
||||||
|
LRI $AX0.L, #0xFFFF
|
||||||
|
LRI $AX1.H, #0x100
|
||||||
|
MULXMVZ $AX0.L, $AX1.H, $ACC0 ; UNSIGNED
|
||||||
|
MOVP $ACC0
|
||||||
|
call send_back
|
||||||
|
CLR15
|
||||||
|
|
||||||
|
; Test MULXMV - SET15
|
||||||
|
CLR $ACC0
|
||||||
|
CLRP
|
||||||
|
LRI $AX0.L, #0xFFFF
|
||||||
|
LRI $AX1.H, #0x100
|
||||||
|
MULXMV $AX0.L, $AX1.H, $ACC0 ; SIGNED
|
||||||
|
MOVP $ACC0
|
||||||
|
call send_back
|
||||||
|
|
||||||
|
CLR $ACC0
|
||||||
|
CLRP
|
||||||
|
SET15
|
||||||
|
LRI $AX0.L, #0xFFFF
|
||||||
|
LRI $AX1.H, #0x100
|
||||||
|
MULXMV $AX0.L, $AX1.H, $ACC0 ; UNSIGNED
|
||||||
|
MOVP $ACC0
|
||||||
|
call send_back
|
||||||
|
CLR15
|
||||||
|
|
||||||
|
; Test MULXAC - SET15
|
||||||
|
CLR $ACC0
|
||||||
|
CLRP
|
||||||
|
LRI $AX0.L, #0xFFFF
|
||||||
|
LRI $AX1.H, #0x100
|
||||||
|
MULXAC $AX0.L, $AX1.H, $ACC0 ; SIGNED
|
||||||
|
MOVP $ACC0
|
||||||
|
call send_back
|
||||||
|
|
||||||
|
CLR $ACC0
|
||||||
|
CLRP
|
||||||
|
SET15
|
||||||
|
LRI $AX0.L, #0xFFFF
|
||||||
|
LRI $AX1.H, #0x100
|
||||||
|
MULXAC $AX0.L, $AX1.H, $ACC0 ; UNSIGNED
|
||||||
|
MOVP $ACC0
|
||||||
|
call send_back
|
||||||
|
CLR15
|
||||||
|
|
||||||
|
; Test MULX - SET15
|
||||||
|
CLR $ACC0
|
||||||
|
CLRP
|
||||||
|
LRI $AX0.L, #0xFFFF
|
||||||
|
LRI $AX1.H, #0x100
|
||||||
|
MULX $AX0.L, $AX1.H ; SIGNED
|
||||||
|
MOVP $ACC0
|
||||||
|
call send_back
|
||||||
|
|
||||||
|
CLR $ACC0
|
||||||
|
CLRP
|
||||||
|
SET15
|
||||||
|
LRI $AX0.L, #0xFFFF
|
||||||
|
LRI $AX1.H, #0x100
|
||||||
|
MULX $AX0.L, $AX1.H ; UNSIGNED
|
||||||
|
MOVP $ACC0
|
||||||
|
call send_back
|
||||||
|
CLR15
|
||||||
|
|
||||||
|
|
||||||
|
; Test MADDX - SET15
|
||||||
|
CLR $ACC0
|
||||||
|
CLRP
|
||||||
LRI $AX0.L, #0xFFFF
|
LRI $AX0.L, #0xFFFF
|
||||||
LRI $AX1.L, #0x100
|
LRI $AX1.L, #0x100
|
||||||
MULX $AX0.L, $AX1.L
|
MADDX $AX0.L, $AX1.L ; SIGNED
|
||||||
MULXAC $AX0.L, $AX1.L, $ACC0
|
MOVP $ACC0
|
||||||
|
call send_back
|
||||||
|
|
||||||
|
CLR $ACC0
|
||||||
|
CLRP
|
||||||
|
SET15
|
||||||
|
LRI $AX0.L, #0xFFFF
|
||||||
|
LRI $AX1.L, #0x100
|
||||||
|
MADDX $AX0.L, $AX1.L ; SIGNED (!)
|
||||||
|
MOVP $ACC0
|
||||||
|
call send_back
|
||||||
|
CLR15
|
||||||
|
|
||||||
|
|
||||||
|
; Test MULC - SET15
|
||||||
|
CLR $ACC0
|
||||||
|
CLRP
|
||||||
|
LRI $AC0.M, #0xFFFF
|
||||||
|
LRI $AX0.H, #0x100
|
||||||
|
MULC $AC0.M, $AX0.H ; SIGNED
|
||||||
|
MOVP $ACC0
|
||||||
|
call send_back
|
||||||
|
|
||||||
|
CLR $ACC0
|
||||||
|
CLRP
|
||||||
|
SET15
|
||||||
|
LRI $AC0.M, #0xFFFF
|
||||||
|
LRI $AX0.H, #0x100
|
||||||
|
MULC $AC0.M, $AX0.H ; SIGNED (!)
|
||||||
|
MOVP $ACC0
|
||||||
|
call send_back
|
||||||
|
CLR15
|
||||||
|
|
||||||
|
|
||||||
|
; Test MULCAC - SET15
|
||||||
|
CLR $ACC0
|
||||||
|
CLRP
|
||||||
|
LRI $AC0.M, #0xFFFF
|
||||||
|
LRI $AX0.H, #0x100
|
||||||
|
MULCAC $AC0.M, $AX0.H, $ACC0 ; SIGNED
|
||||||
|
MOVP $ACC0
|
||||||
|
call send_back
|
||||||
|
|
||||||
|
CLR $ACC0
|
||||||
|
CLRP
|
||||||
|
SET15
|
||||||
|
LRI $AC0.M, #0xFFFF
|
||||||
|
LRI $AX0.H, #0x100
|
||||||
|
MULCAC $AC0.M, $AX0.H, $ACC0 ; SIGNED (!)
|
||||||
|
MOVP $ACC0
|
||||||
|
call send_back
|
||||||
|
CLR15
|
||||||
|
|
||||||
|
|
||||||
|
; Test MUL - SET15
|
||||||
|
CLR $ACC0
|
||||||
|
CLRP
|
||||||
|
LRI $AX0.L, #0xFFFF
|
||||||
|
LRI $AX0.H, #0x100
|
||||||
|
MUL $AX0.L, $AX0.H ; SIGNED
|
||||||
|
MOVP $ACC0
|
||||||
call send_back
|
call send_back
|
||||||
|
|
||||||
CLR $ACC0
|
CLR $ACC0
|
||||||
SET15
|
SET15
|
||||||
LRI $AX0.L, #0xFFFF
|
LRI $AX0.L, #0xFFFF
|
||||||
LRI $AX1.L, #0x100
|
LRI $AX0.H, #0x100
|
||||||
MULX $AX0.L, $AX1.L
|
MUL $AX0.L, $AX0.H ; SIGNED (!)
|
||||||
MULXAC $AX0.L, $AX1.L, $ACC0
|
MOVP $ACC0
|
||||||
CLR15
|
|
||||||
call send_back
|
call send_back
|
||||||
m0
|
CLR15
|
||||||
lri $AX0.L, #1
|
|
||||||
lri $AX1.L, #2
|
|
||||||
mulx $AX0.L, $AX1.L
|
; Test MULAC - SET15
|
||||||
movp $ACC0
|
CLR $ACC0
|
||||||
call send_back ; 1
|
CLRP
|
||||||
|
LRI $AX0.L, #0xFFFF
|
||||||
|
LRI $AX0.H, #0x100
|
||||||
|
MULAC $AX0.L, $AX0.H, $ACC0 ; SIGNED
|
||||||
|
MOVP $ACC0
|
||||||
|
call send_back
|
||||||
|
|
||||||
|
CLR $ACC0
|
||||||
|
SET15
|
||||||
|
LRI $AX0.L, #0xFFFF
|
||||||
|
LRI $AX0.H, #0x100
|
||||||
|
MULAC $AX0.L, $AX0.H, $ACC0 ; SIGNED (!)
|
||||||
|
MOVP $ACC0
|
||||||
|
call send_back
|
||||||
|
CLR15
|
||||||
|
|
||||||
|
|
||||||
set15
|
|
||||||
lri $AX0.L, #2
|
|
||||||
lri $AX1.L, #4
|
|
||||||
mulx $AX0.L, $AX1.L
|
|
||||||
movp $ACC0
|
|
||||||
clr15
|
|
||||||
call send_back ; 1
|
|
||||||
|
|
||||||
m2
|
|
||||||
lri $AX0.L, #1
|
|
||||||
lri $AX1.L, #2
|
|
||||||
mulx $AX0.L, $AX1.L
|
|
||||||
movp $ACC0
|
|
||||||
call send_back ; 1
|
|
||||||
|
|
||||||
set15
|
|
||||||
lri $AX0.L, #2
|
|
||||||
lri $AX1.L, #4
|
|
||||||
mulx $AX0.L, $AX1.L
|
|
||||||
movp $ACC0
|
|
||||||
clr15
|
|
||||||
call send_back ; 1
|
|
||||||
m0
|
|
||||||
|
|
||||||
; We're done, DO NOT DELETE THIS LINE
|
; We're done, DO NOT DELETE THIS LINE
|
||||||
jmp end_of_test
|
jmp end_of_test
|
||||||
|
|
||||||
|
; test accelerator
|
||||||
|
|
||||||
|
; TODO: DSPSpy puts a 16-bit ramp at 0x10000000
|
||||||
|
LRIS $AC1.M, #0x0a ; 16-bit PCM audio
|
||||||
|
;SRS @SampleFormat, $AC1.M
|
||||||
|
; Start accelerator position
|
||||||
|
LRI $AC1.M, #0x0100
|
||||||
|
SRS @ACCAH, $AC1.M
|
||||||
|
LRI $AC1.M, #0x1000
|
||||||
|
SRS @ACCAH, $AC1.M
|
||||||
|
; Current accelerator position
|
||||||
|
LRI $AC1.M, #0x0100
|
||||||
|
SRS @ACCAH, $AC1.M
|
||||||
|
LRI $AC1.M, #0x1000
|
||||||
|
SRS @ACCAH, $AC1.M
|
||||||
|
; End accelerator position
|
||||||
|
LRI $AC1.M, #0x0100
|
||||||
|
SRS @ACCAH, $AC1.M
|
||||||
|
LRI $AC1.M, #0x2000
|
||||||
|
SRS @ACCAH, $AC1.M
|
||||||
|
|
||||||
|
; Now to the interesting parameter - gain.
|
||||||
|
LRI $AC1.M, #0xFFFF
|
||||||
|
SRS @GAIN, $AC1.M
|
||||||
|
|
||||||
|
; Let's now load a sample through the accelerator.
|
||||||
|
LRS $AC1.M, @ARAM
|
||||||
|
call send_back
|
||||||
|
|
||||||
|
jmp end_of_test
|
||||||
|
|
||||||
|
; test addpaxz
|
||||||
|
call send_back
|
||||||
|
|
||||||
|
clrp
|
||||||
|
lri $AX0.L, #0x1111
|
||||||
|
lri $AX0.H, #0x2222
|
||||||
|
call send_back
|
||||||
|
|
||||||
|
clrp
|
||||||
|
addpaxz $ACC0, $AX0.H
|
||||||
|
|
||||||
|
call send_back
|
||||||
|
|
||||||
|
clrp
|
||||||
|
set40
|
||||||
|
addpaxz $ACC0, $AX0.H
|
||||||
|
set16
|
||||||
|
|
||||||
|
call send_back
|
||||||
|
|
||||||
|
clrp
|
||||||
|
set15
|
||||||
|
addpaxz $ACC0, $AX0.H
|
||||||
|
clr15
|
||||||
|
|
||||||
|
call send_back
|
||||||
|
|
||||||
|
|
||||||
|
jmp end_of_test
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user