divu.cgs 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. # v850 divu
  2. # mach: v850e
  3. # as(v850e): -mv850e
  4. .include "testutils.inc"
  5. seti 6, r1
  6. seti 45, r2
  7. divu r1, r2, r3
  8. flags 0
  9. reg r1, 6
  10. reg r2, 7
  11. reg r3, 3
  12. seti 4, r1
  13. seti 0x40000000, r2
  14. divu r1, r2, r3
  15. flags 0
  16. reg r1, 4
  17. reg r2, 0x10000000
  18. reg r3, 0
  19. # If the data is divided by zero, OV=1 and the quotient is undefined.
  20. # According to NEC, the S and Z flags, and the output registers, are
  21. # unchanged.
  22. noflags
  23. seti 0, r1
  24. seti 45, r2
  25. seti 67, r3
  26. divu r1, r2, r3
  27. flags v
  28. reg r2, 45
  29. reg r3, 67
  30. allflags
  31. seti 0, r1
  32. seti 45, r2
  33. seti 67, r3
  34. divu r1, r2, r3
  35. flags sat + c + v + s + z
  36. reg r2, 45
  37. reg r3, 67
  38. # Zero / (N!=0) => normal
  39. noflags
  40. seti 45, r1
  41. seti 0, r2
  42. seti 67, r3
  43. divu r1, r2, r3
  44. flags z
  45. reg r1, 45
  46. reg r2, 0
  47. reg r3, 0
  48. # The Z flag is based on the quotient, not the remainder
  49. noflags
  50. seti 45, r1
  51. seti 16, r2
  52. divu r1, r2, r3
  53. flags z
  54. reg r2, 0
  55. reg r3, 16
  56. # If the quot and rem registers are the same, the remainder is stored.
  57. seti 6, r1
  58. seti 45, r2
  59. divu r1, r2, r2
  60. flags 0
  61. reg r1, 6
  62. reg r2, 3
  63. pass