satadd.cgs 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. # v850 satadd
  2. # mach: all
  3. .include "testutils.inc"
  4. # If the result of the add is "negative", that means we went too
  5. # positive. The result should be the most positive number.
  6. noflags
  7. seti 0x70000000, r1
  8. seti 0x70000000, r2
  9. satadd r1, r2
  10. flags sat + nc + v + ns + nz
  11. reg r2, 0x7fffffff
  12. noflags
  13. seti 0x7ffffffe, r1
  14. satadd 10, r1
  15. flags sat + nc + v + ns + nz
  16. reg r1, 0x7fffffff
  17. # Similarly, if the result of the add is "positive", that means we
  18. # went too negative. The result should be the most negative number.
  19. noflags
  20. seti 0x90000000, r1
  21. seti 0x90000000, r2
  22. satadd r1, r2
  23. flags sat + c + v + s + nz
  24. reg r2, 0x80000000
  25. noflags
  26. seti 0x80000001, r1
  27. satadd -10, r1
  28. flags sat + c + v + s + nz
  29. reg r1, 0x80000000
  30. # Check that the SAT flag remains set until reset
  31. seti 1, r1
  32. seti 2, r2
  33. satadd r1,r2
  34. flags sat + nc + nv + ns + nz
  35. reg r2, 3
  36. noflags
  37. seti 1, r1
  38. seti 2, r2
  39. satadd r1,r2
  40. flags nsat + nc + nv + ns + nz
  41. reg r2, 3
  42. # Check that results exactly equal to min/max don't saturate
  43. noflags
  44. seti 0x70000000, r1
  45. seti 0x0fffffff, r2
  46. satadd r1,r2
  47. flags nsat + nc + nv + ns + nz
  48. reg r2, 0x7fffffff
  49. noflags
  50. seti 0x90000000, r1
  51. seti 0xf0000000, r2
  52. satadd r1,r2
  53. flags nsat + c + nv + s + nz
  54. reg r2, 0x80000000
  55. pass