diff options
Diffstat (limited to 'sim/testsuite/v850/satsub.cgs')
-rw-r--r-- | sim/testsuite/v850/satsub.cgs | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/sim/testsuite/v850/satsub.cgs b/sim/testsuite/v850/satsub.cgs new file mode 100644 index 00000000000..b7085e72c3a --- /dev/null +++ b/sim/testsuite/v850/satsub.cgs @@ -0,0 +1,65 @@ +# v850 satsub +# mach: all + + .include "testutils.inc" + +# If the result of the add is "negative", that means we went too +# positive. The result should be the most positive number. + + noflags + seti 0x90000000, r1 + seti 0x70000000, r2 + satsub r1, r2 + + flags sat + c + v + ns + nz + reg r2, 0x7fffffff + +# Similarly, if the result of the add is "positive", that means we +# went too negative. The result should be the most negative number. + + noflags + seti 0x70000000, r1 + seti 0x90000000, r2 + satsub r1, r2 + + flags sat + nc + v + s + nz + reg r2, 0x80000000 + +# Check that the SAT flag remains set until reset + + seti 1, r1 + seti 2, r2 + satsub r1,r2 + + flags sat + nc + nv + ns + nz + reg r2, 1 + + noflags + seti 1, r1 + seti 2, r2 + satsub r1,r2 + + flags nsat + nc + nv + ns + nz + reg r2, 1 + +# Check that results exactly equal to min/max don't saturate + + noflags + seti 0x90000000, r1 + seti 0x0fffffff, r2 + satsub r1,r2 + + flags nsat + c + nv + ns + nz + reg r2, 0x7fffffff + + + noflags + seti 0x70000000, r1 + seti 0xf0000000, r2 + satsub r1,r2 + + flags nsat + nc + nv + s + nz + reg r2, 0x80000000 + + + pass |