div.cgs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. # v850 div
  2. # mach: v850e
  3. # as(v850e): -mv850e
  4. .include "testutils.inc"
  5. # Regular division - check signs
  6. # The S flag is based on the quotient, not the remainder
  7. seti 6, r1
  8. seti 45, r2
  9. div r1, r2, r3
  10. flags 0
  11. reg r1, 6
  12. reg r2, 7
  13. reg r3, 3
  14. seti -6, r1
  15. seti 45, r2
  16. div r1, r2, r3
  17. flags s
  18. reg r1, -6
  19. reg r2, -7
  20. reg r3, 3
  21. seti 6, r1
  22. seti -45, r2
  23. div r1, r2, r3
  24. flags s
  25. reg r1, 6
  26. reg r2, -7
  27. reg r3, -3
  28. seti -6, r1
  29. seti -45, r2
  30. div r1, r2, r3
  31. flags 0
  32. reg r1, -6
  33. reg r2, 7
  34. reg r3, -3
  35. # If the data is divided by zero, OV=1 and the quotient is undefined.
  36. # According to NEC, the S and Z flags, and the output registers, are
  37. # unchanged.
  38. noflags
  39. seti 0, r1
  40. seti 45, r2
  41. seti 67, r3
  42. div r1, r2, r3
  43. flags v
  44. reg r2, 45
  45. reg r3, 67
  46. allflags
  47. seti 0, r1
  48. seti 45, r2
  49. seti 67, r3
  50. div r1, r2, r3
  51. flags sat + c + v + s + z
  52. reg r2, 45
  53. reg r3, 67
  54. # Zero / (N!=0) => normal
  55. noflags
  56. seti 45, r1
  57. seti 0, r2
  58. seti 67, r3
  59. div r1, r2, r3
  60. flags z
  61. reg r1, 45
  62. reg r2, 0
  63. reg r3, 0
  64. # Test for regular overflow
  65. noflags
  66. seti -1, r1
  67. seti 0x80000000, r2
  68. seti 67, r3
  69. div r1, r2, r3
  70. flags v + s
  71. reg r1, -1
  72. reg r2, 0x80000000
  73. reg r3, 0
  74. # The Z flag is based on the quotient, not the remainder
  75. noflags
  76. seti 45, r1
  77. seti 16, r2
  78. div r1, r2, r3
  79. flags z
  80. reg r2, 0
  81. reg r3, 16
  82. # If the quot and rem registers are the same, the remainder is stored.
  83. seti 6, r1
  84. seti 45, r2
  85. div r1, r2, r2
  86. flags 0
  87. reg r1, 6
  88. reg r2, 3
  89. pass