satsubr.cgs 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. # v850 satsub
  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 0x90000000, r1
  8. seti 0x70000000, r2
  9. satsubr r2, r1
  10. flags sat + c + v + ns + nz
  11. reg r1, 0x7fffffff
  12. # Similarly, if the result of the add is "positive", that means we
  13. # went too negative. The result should be the most negative number.
  14. noflags
  15. seti 0x70000000, r1
  16. seti 0x90000000, r2
  17. satsubr r2, r1
  18. flags sat + nc + v + s + nz
  19. reg r1, 0x80000000
  20. # Check that the SAT flag remains set until reset
  21. seti 1, r1
  22. seti 2, r2
  23. satsubr r2, r1
  24. flags sat + nc + nv + ns + nz
  25. reg r1, 1
  26. noflags
  27. seti 1, r1
  28. seti 2, r2
  29. satsubr r2, r1
  30. flags nsat + nc + nv + ns + nz
  31. reg r1, 1
  32. # Check that results exactly equal to min/max don't saturate
  33. noflags
  34. seti 0x90000000, r1
  35. seti 0x0fffffff, r2
  36. satsubr r2, r1
  37. flags nsat + c + nv + ns + nz
  38. reg r1, 0x7fffffff
  39. noflags
  40. seti 0x70000000, r1
  41. seti 0xf0000000, r2
  42. satsubr r2, r1
  43. flags nsat + nc + nv + s + nz
  44. reg r1, 0x80000000
  45. pass