mmrdhu.cgs 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. # frv testcase for mmrdhu $GRi,$GRj,$GRk
  2. # mach: frv fr500 fr400
  3. .include "testutils.inc"
  4. start
  5. .global mmrdhu
  6. mmrdhu:
  7. set_accg_immed 0x80,accg0
  8. set_acc_immed 0,acc0
  9. set_accg_immed 0x80,accg1
  10. set_acc_immed 0,acc1
  11. set_fr_iimmed 3,2,fr7 ; multiply small numbers
  12. set_fr_iimmed 2,3,fr8
  13. mmrdhu fr7,fr8,acc0
  14. test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear
  15. test_spr_bits 2,1,0,msr0 ; msr0.ovf not set
  16. test_spr_bits 1,0,0,msr0 ; msr0.aovf not set
  17. test_spr_bits 0x7000,12,0,msr0 ; msr0.mtt not set
  18. test_accg_immed 0x7f,accg0
  19. test_acc_immed 0xfffffffa,acc0
  20. test_accg_immed 0x7f,accg1
  21. test_acc_immed 0xfffffffa,acc1
  22. set_fr_iimmed 1,2,fr7 ; multiply by 1
  23. set_fr_iimmed 2,1,fr8
  24. mmrdhu fr7,fr8,acc0
  25. test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear
  26. test_spr_bits 2,1,0,msr0 ; msr0.ovf not set
  27. test_spr_bits 1,0,0,msr0 ; msr0.aovf not set
  28. test_spr_bits 0x7000,12,0,msr0 ; msr0.mtt not set
  29. test_accg_immed 0x7f,accg0
  30. test_acc_immed 0xfffffff8,acc0
  31. test_accg_immed 0x7f,accg1
  32. test_acc_immed 0xfffffff8,acc1
  33. set_fr_iimmed 0,2,fr7 ; multiply by 0
  34. set_fr_iimmed 2,0,fr8
  35. mmrdhu fr7,fr8,acc0
  36. test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear
  37. test_spr_bits 2,1,0,msr0 ; msr0.ovf not set
  38. test_spr_bits 1,0,0,msr0 ; msr0.aovf not set
  39. test_spr_bits 0x7000,12,0,msr0 ; msr0.mtt not set
  40. test_accg_immed 0x7f,accg0
  41. test_acc_immed 0xfffffff8,acc0
  42. test_accg_immed 0x7f,accg1
  43. test_acc_immed 0xfffffff8,acc1
  44. set_fr_iimmed 0x3fff,2,fr7 ; 15 bit result
  45. set_fr_iimmed 2,0x3fff,fr8
  46. mmrdhu fr7,fr8,acc0
  47. test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear
  48. test_spr_bits 2,1,0,msr0 ; msr0.ovf not set
  49. test_spr_bits 1,0,0,msr0 ; msr0.aovf not set
  50. test_spr_bits 0x7000,12,0,msr0 ; msr0.mtt not set
  51. test_accg_immed 0x7f,accg0
  52. test_acc_limmed 0xffff,0x7ffa,acc0
  53. test_accg_immed 0x7f,accg1
  54. test_acc_limmed 0xffff,0x7ffa,acc1
  55. set_fr_iimmed 0x4000,2,fr7 ; 16 bit result
  56. set_fr_iimmed 2,0x4000,fr8
  57. mmrdhu fr7,fr8,acc0
  58. test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear
  59. test_spr_bits 2,1,0,msr0 ; msr0.ovf not set
  60. test_spr_bits 1,0,0,msr0 ; msr0.aovf not set
  61. test_spr_bits 0x7000,12,0,msr0 ; msr0.mtt not set
  62. test_accg_immed 0x7f,accg0
  63. test_acc_limmed 0xfffe,0xfffa,acc0
  64. test_accg_immed 0x7f,accg1
  65. test_acc_limmed 0xfffe,0xfffa,acc1
  66. set_fr_iimmed 0x8000,2,fr7 ; 17 bit result
  67. set_fr_iimmed 2,0x8000,fr8
  68. mmrdhu fr7,fr8,acc0
  69. test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear
  70. test_spr_bits 2,1,0,msr0 ; msr0.ovf not set
  71. test_spr_bits 1,0,0,msr0 ; msr0.aovf not set
  72. test_spr_bits 0x7000,12,0,msr0 ; msr0.mtt not set
  73. test_accg_immed 0x7f,accg0
  74. test_acc_limmed 0xfffd,0xfffa,acc0
  75. test_accg_immed 0x7f,accg1
  76. test_acc_limmed 0xfffd,0xfffa,acc1
  77. set_fr_iimmed 0x7fff,0x7fff,fr7 ; max positive result
  78. set_fr_iimmed 0x7fff,0x7fff,fr8
  79. mmrdhu fr7,fr8,acc0
  80. test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear
  81. test_spr_bits 2,1,0,msr0 ; msr0.ovf not set
  82. test_spr_bits 1,0,0,msr0 ; msr0.aovf not set
  83. test_spr_bits 0x7000,12,0,msr0 ; msr0.mtt not set
  84. test_accg_immed 0x7f,accg0
  85. test_acc_limmed 0xbffe,0xfff9,acc0
  86. test_accg_immed 0x7f,accg1
  87. test_acc_limmed 0xbffe,0xfff9,acc1
  88. set_fr_iimmed 0x8000,0x8000,fr7 ; max positive result
  89. set_fr_iimmed 0x8000,0x8000,fr8
  90. mmrdhu fr7,fr8,acc0
  91. test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear
  92. test_spr_bits 2,1,0,msr0 ; msr0.ovf not set
  93. test_spr_bits 1,0,0,msr0 ; msr0.aovf not set
  94. test_spr_bits 0x7000,12,0,msr0 ; msr0.mtt not set
  95. test_accg_immed 0x7f,accg0
  96. test_acc_limmed 0x7ffe,0xfff9,acc0
  97. test_accg_immed 0x7f,accg1
  98. test_acc_limmed 0x7ffe,0xfff9,acc1
  99. set_fr_iimmed 0xffff,0xffff,fr7 ; max positive result
  100. set_fr_iimmed 0xffff,0xffff,fr8
  101. mmrdhu fr7,fr8,acc0
  102. test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear
  103. test_spr_bits 2,1,0,msr0 ; msr0.ovf not set
  104. test_spr_bits 1,0,0,msr0 ; msr0.aovf not set
  105. test_spr_bits 0x7000,12,0,msr0 ; msr0.mtt not set
  106. test_accg_immed 0x7e,accg0
  107. test_acc_limmed 0x8000,0xfff8,acc0
  108. test_accg_immed 0x7e,accg1
  109. test_acc_limmed 0x8000,0xfff8,acc1
  110. set_accg_immed 0,accg0 ; saturation
  111. set_acc_immed 0,acc0
  112. set_accg_immed 0,accg1
  113. set_acc_immed 0,acc1
  114. set_fr_iimmed 1,1,fr7
  115. set_fr_iimmed 1,1,fr8
  116. mmrdhu fr7,fr8,acc0
  117. test_spr_bits 0x3c,2,0xc,msr0 ; msr0.sie is set
  118. test_spr_bits 2,1,1,msr0 ; msr0.ovf is set
  119. test_spr_bits 1,0,1,msr0 ; msr0.aovf is set
  120. test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt is set
  121. test_accg_immed 0,accg0
  122. test_acc_immed 0,acc0
  123. test_accg_immed 0,accg1
  124. test_acc_immed 0,acc1
  125. set_fr_iimmed 0x0000,0xffff,fr7
  126. set_fr_iimmed 0xffff,0xffff,fr8
  127. mmrdhu fr7,fr8,acc0
  128. test_spr_bits 0x3c,2,0x4,msr0 ; msr0.sie is set
  129. test_spr_bits 2,1,1,msr0 ; msr0.ovf is set
  130. test_spr_bits 1,0,1,msr0 ; msr0.aovf is set
  131. test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt is set
  132. test_accg_immed 0,accg0
  133. test_acc_immed 0,acc0
  134. test_accg_immed 0,accg1
  135. test_acc_immed 0,acc1
  136. pass