mqmulxhs.cgs 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. # frv testcase for mqmulxhs $GRi,$GRj,$ACCk
  2. # mach: all
  3. .include "testutils.inc"
  4. start
  5. .global mqmulxhs
  6. mqmulxhs:
  7. ; Positive operands
  8. set_fr_iimmed 2,3,fr8 ; multiply small numbers
  9. set_fr_iimmed 3,2,fr10
  10. set_fr_iimmed 0,1,fr9 ; multiply by 0
  11. set_fr_iimmed 0,2,fr11
  12. mqmulxhs fr8,fr10,acc0
  13. test_accg_immed 0,accg0
  14. test_acc_immed 4,acc0
  15. test_accg_immed 0,accg1
  16. test_acc_immed 9,acc1
  17. test_accg_immed 0,accg2
  18. test_acc_immed 0,acc2
  19. test_accg_immed 0,accg3
  20. test_acc_immed 0,acc3
  21. set_fr_iimmed 2,1,fr8 ; multiply by 1
  22. set_fr_iimmed 2,1,fr10
  23. set_fr_iimmed 0x3fff,2,fr9 ; 15 bit result
  24. set_fr_iimmed 0x3fff,2,fr11
  25. mqmulxhs fr8,fr10,acc0
  26. test_accg_immed 0,accg0
  27. test_acc_immed 2,acc0
  28. test_accg_immed 0,accg1
  29. test_acc_immed 2,acc1
  30. test_accg_immed 0,accg2
  31. test_acc_limmed 0,0x7ffe,acc2
  32. test_accg_immed 0,accg3
  33. test_acc_limmed 0,0x7ffe,acc3
  34. set_fr_iimmed 0x4000,2,fr8 ; 16 bit result
  35. set_fr_iimmed 0x4000,2,fr10
  36. set_fr_iimmed 0x7fff,0x7fff,fr9 ; max positive result
  37. set_fr_iimmed 0x7fff,0x7fff,fr11
  38. mqmulxhs fr8,fr10,acc0
  39. test_accg_immed 0,accg0
  40. test_acc_limmed 0x0000,0x8000,acc0
  41. test_accg_immed 0,accg1
  42. test_acc_limmed 0x0000,0x8000,acc1
  43. test_accg_immed 0,accg2
  44. test_acc_limmed 0x3fff,0x0001,acc2
  45. test_accg_immed 0,accg3
  46. test_acc_limmed 0x3fff,0x0001,acc3
  47. ; Mixed operands
  48. set_fr_iimmed 2,0xfffd,fr8 ; multiply small numbers
  49. set_fr_iimmed 2,0xfffd,fr10
  50. set_fr_iimmed 0xfffe,1,fr9 ; multiply by 1
  51. set_fr_iimmed 0xfffe,1,fr11
  52. mqmulxhs fr8,fr10,acc0
  53. test_accg_immed 0xff,accg0
  54. test_acc_immed -6,acc0
  55. test_accg_immed 0xff,accg1
  56. test_acc_immed -6,acc1
  57. test_accg_immed 0xff,accg2
  58. test_acc_immed -2,acc2
  59. test_accg_immed 0xff,accg3
  60. test_acc_immed -2,acc3
  61. set_fr_iimmed 0xfffe,0,fr8 ; multiply by 0
  62. set_fr_iimmed 0xfffe,0,fr10
  63. set_fr_iimmed 0x2001,0xfffe,fr9 ; 15 bit result
  64. set_fr_iimmed 0x2001,0xfffe,fr11
  65. mqmulxhs fr8,fr10,acc0
  66. test_accg_immed 0,accg0
  67. test_acc_immed 0,acc0
  68. test_accg_immed 0,accg1
  69. test_acc_immed 0,acc1
  70. test_accg_immed 0xff,accg2
  71. test_acc_limmed 0xffff,0xbffe,acc2
  72. test_accg_immed 0xff,accg3
  73. test_acc_limmed 0xffff,0xbffe,acc3
  74. set_fr_iimmed 0x4000,0xfffe,fr8 ; 16 bit result
  75. set_fr_iimmed 0x4000,0xfffe,fr10
  76. set_fr_iimmed 0x7fff,0x8000,fr9 ; max negative result
  77. set_fr_iimmed 0x7fff,0x8000,fr11
  78. mqmulxhs fr8,fr10,acc0
  79. test_accg_immed 0xff,accg0
  80. test_acc_limmed 0xffff,0x8000,acc0
  81. test_accg_immed 0xff,accg1
  82. test_acc_limmed 0xffff,0x8000,acc1
  83. test_accg_immed 0xff,accg2
  84. test_acc_limmed 0xc000,0x8000,acc2
  85. test_accg_immed 0xff,accg3
  86. test_acc_limmed 0xc000,0x8000,acc3
  87. ; Negative operands
  88. set_fr_iimmed 0xfffe,0xfffd,fr8 ; multiply small numbers
  89. set_fr_iimmed 0xfffe,0xfffd,fr10
  90. set_fr_iimmed 0xffff,0xfffe,fr9 ; multiply by -1
  91. set_fr_iimmed 0xffff,0xfffe,fr11
  92. mqmulxhs fr8,fr10,acc0
  93. test_accg_immed 0,accg0
  94. test_acc_immed 6,acc0
  95. test_accg_immed 0,accg1
  96. test_acc_immed 6,acc1
  97. test_accg_immed 0,accg2
  98. test_acc_immed 2,acc2
  99. test_accg_immed 0,accg3
  100. test_acc_immed 2,acc3
  101. set_fr_iimmed 0x8001,0x8001,fr8 ; almost max positive result
  102. set_fr_iimmed 0x8001,0x8001,fr10
  103. set_fr_iimmed 0x8000,0x8000,fr9 ; max positive result
  104. set_fr_iimmed 0x8000,0x8000,fr11
  105. mqmulxhs fr8,fr10,acc0
  106. test_accg_immed 0,accg0
  107. test_acc_immed 0x3fff0001,acc0
  108. test_accg_immed 0,accg1
  109. test_acc_immed 0x3fff0001,acc1
  110. test_accg_immed 0,accg2
  111. test_acc_immed 0x40000000,acc2
  112. test_accg_immed 0,accg3
  113. test_acc_immed 0x40000000,acc3
  114. pass