summaryrefslogtreecommitdiff
path: root/sim/testsuite/v850/satsubi.cgs
diff options
context:
space:
mode:
Diffstat (limited to 'sim/testsuite/v850/satsubi.cgs')
-rw-r--r--sim/testsuite/v850/satsubi.cgs59
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