diff options
Diffstat (limited to 'sim/testsuite/v850/satsubi.cgs')
-rw-r--r-- | sim/testsuite/v850/satsubi.cgs | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/sim/testsuite/v850/satsubi.cgs b/sim/testsuite/v850/satsubi.cgs new file mode 100644 index 00000000000..b86b26d23cd --- /dev/null +++ b/sim/testsuite/v850/satsubi.cgs @@ -0,0 +1,59 @@ +# v850 satsubi +# 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 0x7ffffffe, r1 + satsubi -10, 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 0x80000001, r1 + satsubi 10, r1, r2 + + flags sat + nc + v + s + nz + reg r2, 0x80000000 + +# Check that the SAT flag remains set until reset + + seti 2, r1 + satsubi 1, r1, r2 + + flags sat + nc + nv + ns + nz + reg r2, 1 + + noflags + seti 2, r1 + satsubi 1, r1, r2 + + flags nsat + nc + nv + ns + nz + reg r2, 1 + +# Check that results exactly equal to min/max don't saturate + + noflags + seti 0x7ffffffe, r1 + satsubi -1, r1, r2 + + flags nsat + c + nv + ns + nz + reg r2, 0x7fffffff + + + noflags + seti 0x80000001, r1 + satsubi 1, r1, r2 + + flags nsat + nc + nv + s + nz + reg r2, 0x80000000 + + + pass |