mulr.s 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. # sh testcase for mulr
  2. # mach: all
  3. # as(sh): -defsym sim_cpu=0
  4. # as(shdsp): -defsym sim_cpu=1 -dsp
  5. .include "testutils.inc"
  6. start
  7. mulr_1: ! multiply by one
  8. set_grs_a5a5
  9. mov #1, r0
  10. mulr r0, r1
  11. assertreg0 1
  12. test_gr_a5a5 r1
  13. test_gr_a5a5 r2
  14. test_gr_a5a5 r3
  15. test_gr_a5a5 r4
  16. test_gr_a5a5 r5
  17. test_gr_a5a5 r6
  18. test_gr_a5a5 r7
  19. test_gr_a5a5 r8
  20. test_gr_a5a5 r9
  21. test_gr_a5a5 r10
  22. test_gr_a5a5 r11
  23. test_gr_a5a5 r12
  24. test_gr_a5a5 r13
  25. test_gr_a5a5 r14
  26. mulr_2: ! multiply by two
  27. set_grs_a5a5
  28. mov #2, r0
  29. mov #12, r1
  30. mulr r0, r1
  31. assertreg0 2
  32. assertreg 24, r1
  33. test_gr_a5a5 r2
  34. test_gr_a5a5 r3
  35. test_gr_a5a5 r4
  36. test_gr_a5a5 r5
  37. test_gr_a5a5 r6
  38. test_gr_a5a5 r7
  39. test_gr_a5a5 r8
  40. test_gr_a5a5 r9
  41. test_gr_a5a5 r10
  42. test_gr_a5a5 r11
  43. test_gr_a5a5 r12
  44. test_gr_a5a5 r13
  45. test_gr_a5a5 r14
  46. mulr_3: ! multiply five by five
  47. set_grs_a5a5
  48. mov #5, r0
  49. mov #5, r1
  50. mulr r0, r1
  51. assertreg0 5
  52. assertreg 25, r1
  53. test_gr_a5a5 r2
  54. test_gr_a5a5 r3
  55. test_gr_a5a5 r4
  56. test_gr_a5a5 r5
  57. test_gr_a5a5 r6
  58. test_gr_a5a5 r7
  59. test_gr_a5a5 r8
  60. test_gr_a5a5 r9
  61. test_gr_a5a5 r10
  62. test_gr_a5a5 r11
  63. test_gr_a5a5 r12
  64. test_gr_a5a5 r13
  65. test_gr_a5a5 r14
  66. mulr_4: ! multiply 127 by 127
  67. set_grs_a5a5
  68. mov #127, r0
  69. mov #127, r1
  70. mulr r0, r1
  71. assertreg0 127
  72. assertreg 0x3f01, r1
  73. test_gr_a5a5 r2
  74. test_gr_a5a5 r3
  75. test_gr_a5a5 r4
  76. test_gr_a5a5 r5
  77. test_gr_a5a5 r6
  78. test_gr_a5a5 r7
  79. test_gr_a5a5 r8
  80. test_gr_a5a5 r9
  81. test_gr_a5a5 r10
  82. test_gr_a5a5 r11
  83. test_gr_a5a5 r12
  84. test_gr_a5a5 r13
  85. test_gr_a5a5 r14
  86. mulr_5: ! multiply -1 by -1
  87. set_grs_a5a5
  88. mov #-1, r0
  89. mov #-1, r1
  90. mulr r0, r1
  91. assertreg0 -1
  92. assertreg 1, r1
  93. test_gr_a5a5 r2
  94. test_gr_a5a5 r3
  95. test_gr_a5a5 r4
  96. test_gr_a5a5 r5
  97. test_gr_a5a5 r6
  98. test_gr_a5a5 r7
  99. test_gr_a5a5 r8
  100. test_gr_a5a5 r9
  101. test_gr_a5a5 r10
  102. test_gr_a5a5 r11
  103. test_gr_a5a5 r12
  104. test_gr_a5a5 r13
  105. test_gr_a5a5 r14
  106. mulr_6: ! multiply 46340 by 46340
  107. set_grs_a5a5
  108. movi20 #46340, r0
  109. movi20 #46340, r1
  110. mulr r0, r1
  111. assertreg0 46340
  112. assertreg 0x7ffea810, r1
  113. test_gr_a5a5 r2
  114. test_gr_a5a5 r3
  115. test_gr_a5a5 r4
  116. test_gr_a5a5 r5
  117. test_gr_a5a5 r6
  118. test_gr_a5a5 r7
  119. test_gr_a5a5 r8
  120. test_gr_a5a5 r9
  121. test_gr_a5a5 r10
  122. test_gr_a5a5 r11
  123. test_gr_a5a5 r12
  124. test_gr_a5a5 r13
  125. test_gr_a5a5 r14
  126. mulr_7: ! multiply 7ffff by 7ffff (overflow)
  127. set_grs_a5a5
  128. movi20 #0x7ffff, r0
  129. movi20 #0x7ffff, r1
  130. mulr r0, r1
  131. assertreg0 0x7ffff
  132. assertreg 0xfff00001, r1
  133. test_gr_a5a5 r2
  134. test_gr_a5a5 r3
  135. test_gr_a5a5 r4
  136. test_gr_a5a5 r5
  137. test_gr_a5a5 r6
  138. test_gr_a5a5 r7
  139. test_gr_a5a5 r8
  140. test_gr_a5a5 r9
  141. test_gr_a5a5 r10
  142. test_gr_a5a5 r11
  143. test_gr_a5a5 r12
  144. test_gr_a5a5 r13
  145. test_gr_a5a5 r14
  146. pass
  147. exit 0