mul_test.ds 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252
  1. ; This test checks the effect of SET15 on multiplications.
  2. incdir "tests"
  3. include "dsp_base.inc"
  4. ; Results are in capitals like this: UNSIGNED
  5. test_main:
  6. CLR15
  7. ; Test MULXMVZ - SET15
  8. CLR $ACC0
  9. CLRP
  10. LRI $AX0.L, #0xFFFF
  11. LRI $AX1.H, #0x100
  12. MULXMVZ $AX0.L, $AX1.H, $ACC0 ; SIGNED
  13. MOVP $ACC0
  14. call send_back
  15. CLR $ACC0
  16. CLRP
  17. SET15
  18. LRI $AX0.L, #0xFFFF
  19. LRI $AX1.H, #0x100
  20. MULXMVZ $AX0.L, $AX1.H, $ACC0 ; UNSIGNED
  21. MOVP $ACC0
  22. call send_back
  23. CLR15
  24. ; Test MULXMV - SET15
  25. CLR $ACC0
  26. CLRP
  27. LRI $AX0.L, #0xFFFF
  28. LRI $AX1.H, #0x100
  29. MULXMV $AX0.L, $AX1.H, $ACC0 ; SIGNED
  30. MOVP $ACC0
  31. call send_back
  32. CLR $ACC0
  33. CLRP
  34. SET15
  35. LRI $AX0.L, #0xFFFF
  36. LRI $AX1.H, #0x100
  37. MULXMV $AX0.L, $AX1.H, $ACC0 ; UNSIGNED
  38. MOVP $ACC0
  39. call send_back
  40. CLR15
  41. ; Test MULXAC - SET15
  42. CLR $ACC0
  43. CLRP
  44. LRI $AX0.L, #0xFFFF
  45. LRI $AX1.H, #0x100
  46. MULXAC $AX0.L, $AX1.H, $ACC0 ; SIGNED
  47. MOVP $ACC0
  48. call send_back
  49. CLR $ACC0
  50. CLRP
  51. SET15
  52. LRI $AX0.L, #0xFFFF
  53. LRI $AX1.H, #0x100
  54. MULXAC $AX0.L, $AX1.H, $ACC0 ; UNSIGNED
  55. MOVP $ACC0
  56. call send_back
  57. CLR15
  58. ; Test MULX - SET15
  59. CLR $ACC0
  60. CLRP
  61. LRI $AX0.L, #0xFFFF
  62. LRI $AX1.H, #0x100
  63. MULX $AX0.L, $AX1.H ; SIGNED
  64. MOVP $ACC0
  65. call send_back
  66. CLR $ACC0
  67. CLRP
  68. SET15
  69. LRI $AX0.L, #0xFFFF
  70. LRI $AX1.H, #0x100
  71. MULX $AX0.L, $AX1.H ; UNSIGNED
  72. MOVP $ACC0
  73. call send_back
  74. CLR15
  75. ; Test MADDX - SET15
  76. CLR $ACC0
  77. CLRP
  78. LRI $AX0.L, #0xFFFF
  79. LRI $AX1.L, #0x100
  80. MADDX $AX0.L, $AX1.L ; SIGNED
  81. MOVP $ACC0
  82. call send_back
  83. CLR $ACC0
  84. CLRP
  85. SET15
  86. LRI $AX0.L, #0xFFFF
  87. LRI $AX1.L, #0x100
  88. MADDX $AX0.L, $AX1.L ; SIGNED (!)
  89. MOVP $ACC0
  90. call send_back
  91. CLR15
  92. ; Test MULC - SET15
  93. CLR $ACC0
  94. CLRP
  95. LRI $AC0.M, #0xFFFF
  96. LRI $AX0.H, #0x100
  97. MULC $AC0.M, $AX0.H ; SIGNED
  98. MOVP $ACC0
  99. call send_back
  100. CLR $ACC0
  101. CLRP
  102. SET15
  103. LRI $AC0.M, #0xFFFF
  104. LRI $AX0.H, #0x100
  105. MULC $AC0.M, $AX0.H ; SIGNED (!)
  106. MOVP $ACC0
  107. call send_back
  108. CLR15
  109. ; Test MULCAC - SET15
  110. CLR $ACC0
  111. CLRP
  112. LRI $AC0.M, #0xFFFF
  113. LRI $AX0.H, #0x100
  114. MULCAC $AC0.M, $AX0.H, $ACC0 ; SIGNED
  115. MOVP $ACC0
  116. call send_back
  117. CLR $ACC0
  118. CLRP
  119. SET15
  120. LRI $AC0.M, #0xFFFF
  121. LRI $AX0.H, #0x100
  122. MULCAC $AC0.M, $AX0.H, $ACC0 ; SIGNED (!)
  123. MOVP $ACC0
  124. call send_back
  125. CLR15
  126. ; Test MUL - SET15
  127. CLR $ACC0
  128. CLRP
  129. LRI $AX0.L, #0xFFFF
  130. LRI $AX0.H, #0x100
  131. MUL $AX0.L, $AX0.H ; SIGNED
  132. MOVP $ACC0
  133. call send_back
  134. CLR $ACC0
  135. SET15
  136. LRI $AX0.L, #0xFFFF
  137. LRI $AX0.H, #0x100
  138. MUL $AX0.L, $AX0.H ; SIGNED (!)
  139. MOVP $ACC0
  140. call send_back
  141. CLR15
  142. ; Test MULAC - SET15
  143. CLR $ACC0
  144. CLRP
  145. LRI $AX0.L, #0xFFFF
  146. LRI $AX0.H, #0x100
  147. MULAC $AX0.L, $AX0.H, $ACC0 ; SIGNED
  148. MOVP $ACC0
  149. call send_back
  150. CLR $ACC0
  151. SET15
  152. LRI $AX0.L, #0xFFFF
  153. LRI $AX0.H, #0x100
  154. MULAC $AX0.L, $AX0.H, $ACC0 ; SIGNED (!)
  155. MOVP $ACC0
  156. call send_back
  157. CLR15
  158. ; We're done, DO NOT DELETE THIS LINE
  159. jmp end_of_test
  160. ; test accelerator
  161. ; TODO: DSPSpy puts a 16-bit ramp at 0x10000000
  162. LRIS $AC1.M, #0x0a ; 16-bit PCM audio
  163. ;SRS @SampleFormat, $AC1.M
  164. ; Start accelerator position
  165. LRI $AC1.M, #0x0100
  166. SRS @ACCAH, $AC1.M
  167. LRI $AC1.M, #0x1000
  168. SRS @ACCAH, $AC1.M
  169. ; Current accelerator position
  170. LRI $AC1.M, #0x0100
  171. SRS @ACCAH, $AC1.M
  172. LRI $AC1.M, #0x1000
  173. SRS @ACCAH, $AC1.M
  174. ; End accelerator position
  175. LRI $AC1.M, #0x0100
  176. SRS @ACCAH, $AC1.M
  177. LRI $AC1.M, #0x2000
  178. SRS @ACCAH, $AC1.M
  179. ; Now to the interesting parameter - gain.
  180. LRI $AC1.M, #0xFFFF
  181. SRS @GAIN, $AC1.M
  182. ; Let's now load a sample through the accelerator.
  183. LRS $AC1.M, @ARAM
  184. call send_back
  185. jmp end_of_test
  186. ; test addpaxz
  187. call send_back
  188. clrp
  189. lri $AX0.L, #0x1111
  190. lri $AX0.H, #0x2222
  191. call send_back
  192. clrp
  193. addpaxz $ACC0, $AX0.H
  194. call send_back
  195. clrp
  196. set40
  197. addpaxz $ACC0, $AX0.H
  198. set16
  199. call send_back
  200. clrp
  201. set15
  202. addpaxz $ACC0, $AX0.H
  203. clr15
  204. call send_back
  205. jmp end_of_test