mmulxhu.cgs 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. # frv testcase for mmulxhu $GRi,$GRj,$GRk
  2. # mach: all
  3. .include "testutils.inc"
  4. start
  5. .global mmulxhu
  6. mmulxhu:
  7. set_fr_iimmed 3,2,fr7 ; multiply small numbers
  8. set_fr_iimmed 3,2,fr8
  9. mmulxhu fr7,fr8,acc0
  10. test_accg_immed 0,accg0
  11. test_acc_immed 6,acc0
  12. test_accg_immed 0,accg1
  13. test_acc_immed 6,acc1
  14. set_fr_iimmed 1,2,fr7 ; multiply by 1
  15. set_fr_iimmed 1,2,fr8
  16. mmulxhu fr7,fr8,acc0
  17. test_accg_immed 0,accg0
  18. test_acc_immed 2,acc0
  19. test_accg_immed 0,accg1
  20. test_acc_immed 2,acc1
  21. set_fr_iimmed 0,2,fr7 ; multiply by 0
  22. set_fr_iimmed 0,2,fr8
  23. mmulxhu fr7,fr8,acc0
  24. test_accg_immed 0,accg0
  25. test_acc_immed 0,acc0
  26. test_accg_immed 0,accg1
  27. test_acc_immed 0,acc1
  28. set_fr_iimmed 0x3fff,2,fr7 ; 15 bit result
  29. set_fr_iimmed 0x3fff,2,fr8
  30. mmulxhu fr7,fr8,acc0
  31. test_accg_immed 0,accg0
  32. test_acc_limmed 0x0000,0x7ffe,acc0
  33. test_accg_immed 0,accg1
  34. test_acc_limmed 0x0000,0x7ffe,acc1
  35. set_fr_iimmed 0x4000,2,fr7 ; 16 bit result
  36. set_fr_iimmed 0x4000,2,fr8
  37. mmulxhu fr7,fr8,acc0
  38. test_accg_immed 0,accg0
  39. test_acc_limmed 0x0000,0x8000,acc0
  40. test_accg_immed 0,accg1
  41. test_acc_limmed 0x0000,0x8000,acc1
  42. set_fr_iimmed 0x8000,2,fr7 ; 17 bit result
  43. set_fr_iimmed 0x8000,2,fr8
  44. mmulxhu fr7,fr8,acc0
  45. test_accg_immed 0,accg0
  46. test_acc_immed 0x00010000,acc0
  47. test_accg_immed 0,accg1
  48. test_acc_immed 0x00010000,acc1
  49. set_fr_iimmed 0x7fff,0x7fff,fr7 ; max positive result
  50. set_fr_iimmed 0x7fff,0x7fff,fr8
  51. mmulxhu fr7,fr8,acc0
  52. test_accg_immed 0,accg0
  53. test_acc_immed 0x3fff0001,acc0
  54. test_accg_immed 0,accg1
  55. test_acc_immed 0x3fff0001,acc1
  56. set_fr_iimmed 0x8000,0x8000,fr7 ; max positive result
  57. set_fr_iimmed 0x8000,0x8000,fr8
  58. mmulxhu fr7,fr8,acc0
  59. test_accg_immed 0,accg0
  60. test_acc_limmed 0x4000,0x0000,acc0
  61. test_accg_immed 0,accg1
  62. test_acc_limmed 0x4000,0x0000,acc1
  63. set_fr_iimmed 0xffff,0xffff,fr7 ; max positive result
  64. set_fr_iimmed 0xffff,0xffff,fr8
  65. mmulxhu fr7,fr8,acc0
  66. test_accg_immed 0,accg0
  67. test_acc_limmed 0xfffe,0x0001,acc0
  68. test_accg_immed 0,accg1
  69. test_acc_limmed 0xfffe,0x0001,acc1
  70. pass