summaryrefslogtreecommitdiff
path: root/src/test/lib/tests/test_multiply.sail
diff options
context:
space:
mode:
authorAlasdair Armstrong2017-07-26 14:12:09 +0100
committerAlasdair Armstrong2017-07-26 14:12:09 +0100
commit678ab0e23ba4a8d95010df2bd2467dae7d544e29 (patch)
tree0b2e02773327b9483f24b2e1ad46b7235ec9633e /src/test/lib/tests/test_multiply.sail
parent26e59493cde0ffbf1868426fe3bec158f2dbaad0 (diff)
parent18cf235fad35a0e06e26ea91ee0e1c673febddb8 (diff)
Merge remote-tracking branch 'origin/master' into sail_new_tc
Diffstat (limited to 'src/test/lib/tests/test_multiply.sail')
-rw-r--r--src/test/lib/tests/test_multiply.sail21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/test/lib/tests/test_multiply.sail b/src/test/lib/tests/test_multiply.sail
new file mode 100644
index 00000000..03adfa27
--- /dev/null
+++ b/src/test/lib/tests/test_multiply.sail
@@ -0,0 +1,21 @@
+function unit test () = {
+ test_assert ("multiply", 6 * 9 == 54);
+ test_assert ("multiply_vec", ((bit[8])(0x6 * 0xb)) == 0x42);
+ test_assert ("mult_range_vec", ((bit[8])(6 * 0xb)) == 0x42);
+ test_assert ("mult_vec_range", ((bit[8])(0x6 * 11)) == 0x42);
+ (* XXX mult_oveflow_vec missing *)
+
+ (* XXX not implmented
+ test_assert ("multiply_signed", 6 *_s 9 == 54); *)
+ test_assert ("multiply_vec_signed", ((bit[8])(0x6 *_s 0xb)) == 0xe2);
+ test_assert ("mult_range_vec_signed", ((bit[8])(6 *_s 0xb)) == 0xe2);
+ test_assert ("mult_vec_range_signed", ((bit[8])(0x6 *_s 11)) == 0xe2);
+
+ (* XXX don't think it's possible to set carryout out bit *)
+ test_assert ("mult_overflow_vec_signed0", (((bit[8], bit, bit)) (0xf *_s 0x2)) == (0xfe, false, false));
+ test_assert ("mult_overflow_vec_signed1", (((bit[8], bit, bit)) (0xf *_s 0xf)) == (0x01, false, false));
+ test_assert ("mult_overflow_vec_signed2", (((bit[8], bit, bit)) (0x8 *_s 0x8)) == (0x40, true, false));
+ test_assert ("mult_overflow_vec_signed3", (((bit[8], bit, bit)) (0x7 *_s 0x7)) == (0x31, true, false));
+ test_assert ("mult_overflow_vec_signed4", (((bit[8], bit, bit)) (0x8 *_s 0x7)) == (0xc8, true, false));
+}
+