umulicc.cgs 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. # frv testcase for umulicc $GRi,$GRj,$GRk
  2. # mach: all
  3. .include "testutils.inc"
  4. start
  5. .global umulicc
  6. umulicc:
  7. set_gr_immed 3,gr7 ; multiply small numbers
  8. set_icc 0x0f,0 ; Set mask opposite of expected
  9. umulicc gr7,2,gr8,icc0
  10. test_icc 0 0 1 1 icc0
  11. test_gr_immed 0,gr8
  12. test_gr_immed 6,gr9
  13. set_gr_immed 1,gr7 ; multiply by 1
  14. set_icc 0x0e,0 ; Set mask opposite of expected
  15. umulicc gr7,2,gr8,icc0
  16. test_icc 0 0 1 0 icc0
  17. test_gr_immed 0,gr8
  18. test_gr_immed 2,gr9
  19. set_gr_immed 2,gr7 ; multiply by 1
  20. set_icc 0x0f,0 ; Set mask opposite of expected
  21. umulicc gr7,1,gr8,icc0
  22. test_icc 0 0 1 1 icc0
  23. test_gr_immed 0,gr8
  24. test_gr_immed 2,gr9
  25. set_gr_immed 0,gr7 ; multiply by 0
  26. set_icc 0x0b,0 ; Set mask opposite of expected
  27. umulicc gr7,2,gr8,icc0
  28. test_icc 0 1 1 1 icc0
  29. test_gr_immed 0,gr8
  30. test_gr_immed 0,gr9
  31. set_gr_immed 2,gr7 ; multiply by 0
  32. set_icc 0x0a,0 ; Set mask opposite of expected
  33. umulicc gr7,0,gr8,icc0
  34. test_icc 0 1 1 0 icc0
  35. test_gr_immed 0,gr8
  36. test_gr_immed 0,gr9
  37. set_gr_limmed 0x3fff,0xffff,gr7 ; 31 bit result
  38. set_icc 0x0f,0 ; Set mask opposite of expected
  39. umulicc gr7,2,gr8,icc0
  40. test_icc 0 0 1 1 icc0
  41. test_gr_immed 0,gr8
  42. test_gr_limmed 0x7fff,0xfffe,gr9
  43. set_gr_limmed 0x4000,0x0000,gr7 ; 32 bit result
  44. set_icc 0x0e,0 ; Set mask opposite of expected
  45. umulicc gr7,2,gr8,icc0
  46. test_icc 0 0 1 0 icc0
  47. test_gr_immed 0,gr8
  48. test_gr_limmed 0x8000,0x0000,gr9
  49. set_gr_limmed 0x8000,0x0000,gr7 ; 33 bit result
  50. set_icc 0x09,0 ; Set mask opposite of expected
  51. umulicc gr7,2,gr8,icc0
  52. test_icc 0 0 0 1 icc0
  53. test_gr_immed 1,gr8
  54. test_gr_immed 0x00000000,gr9
  55. set_gr_limmed 0x7fff,0xffff,gr7 ; max positive result
  56. set_icc 0x0d,0 ; Set mask opposite of expected
  57. umulicc gr7,0x1ff,gr8,icc0
  58. test_icc 0 0 0 1 icc0
  59. test_gr_immed 0xff,gr8
  60. test_gr_limmed 0x7fff,0xfe01,gr9
  61. set_gr_limmed 0x8000,0x0000,gr7 ; max positive result
  62. set_icc 0x09,0 ; Set mask opposite of expected
  63. umulicc gr7,-512,gr8,icc0
  64. test_icc 0 0 0 1 icc0
  65. test_gr_limmed 0x7fff,0xff00,gr8
  66. test_gr_limmed 0x0000,0x0000,gr9
  67. set_gr_limmed 0xffff,0xffff,gr7 ; max positive result
  68. set_icc 0x05,0 ; Set mask opposite of expected
  69. umulicc gr7,-1,gr8,icc0
  70. test_icc 1 0 0 1 icc0
  71. test_gr_limmed 0xffff,0xfffe,gr8
  72. test_gr_immed 1,gr9
  73. pass