From 8b4ce1c2f80eb7b5fc7d5a727d016ef2cb3c6123 Mon Sep 17 00:00:00 2001 From: Aaron Taylor Date: Wed, 31 Jul 2019 18:05:02 -0700 Subject: [PATCH] Added test for `rshift` subroutine from stdlib. --- stdlib_tests/3003_rshift.pvvs | 51 +++++++++++++++++++++++++++++++++++ stdlib_tests/vv_test.py | 1 + 2 files changed, 52 insertions(+) create mode 100644 stdlib_tests/3003_rshift.pvvs diff --git a/stdlib_tests/3003_rshift.pvvs b/stdlib_tests/3003_rshift.pvvs new file mode 100644 index 0000000..5c70023 --- /dev/null +++ b/stdlib_tests/3003_rshift.pvvs @@ -0,0 +1,51 @@ +@ Shift by zero. +SSSTN | PUSH +1 +SSSSN | PUSH 0 +NSTTSTTSSN | JSR > 101100 (rshift) +NSTTSSTN | JSR > 1001 (print number from stack) + +@ Shift by one, positive sign extension. +SSSTSN | PUSH +2 +SSSTN | PUSH +1 +NSTTSTTSSN | JSR > 101100 (rshift) +NSTTSSTN | JSR > 1001 (print number from stack) + +@ Shift by four, positive sign extension. +SSSTSSSSN | PUSH +16 +SSSTSSN | PUSH +4 +NSTTSTTSSN | JSR > 101100 (rshift) +NSTTSSTN | JSR > 1001 (print number from stack) + +@ Shift by one, negative sign extension. +@ -9223372036854775805 = 1000000000000000000000000000000000000000000000000000000000000011 +@ -4611686018427387903 = 1100000000000000000000000000000000000000000000000000000000000001 +SSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTSTN | PUSH -9223372036854775805 +SSSTN | PUSH +1 +NSTTSTTSSN | JSR > 101100 (rshift) +NSTTSSTN | JSR > 1001 (print number from stack) + +@ Shift by four, negative sign extension +@ -9223372036854775638 = 1000000000000000000000000000000000000000000000000000000010101010 +@ -576460752303423478 = 1111100000000000000000000000000000000000000000000000000000001010 +SSTSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTSTSTSTTSN | PUSH -9223372036854775638 +SSSTSSN | PUSH +4 +NSTTSTTSSN | JSR > 101100 (rshift) +NSTTSSTN | JSR > 1001 (print number from stack) + +@ Test for special case: rshift(-1) = -1 +SSTTN | PUSH -1 +SSSTN | PUSH +1 +NSTTSTTSSN | JSR > 101100 (rshift) +NSTTSSTN | JSR > 1001 (print number from stack) + +@ Shift a single 1 in the MSb into all ones +SSTTSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSN | PUSH -(2^63) +SSSTTTTTTN | PUSH +63 +NSTTSTTSSN | JSR > 101100 (rshift) +NSTTSSTN | JSR > 1001 (print number from stack) + +@ All done. +NNN | DIE + +#include +#include diff --git a/stdlib_tests/vv_test.py b/stdlib_tests/vv_test.py index 353c176..87f3ca4 100755 --- a/stdlib_tests/vv_test.py +++ b/stdlib_tests/vv_test.py @@ -32,6 +32,7 @@ tests = [ ['2007_memrand', '', ''], ['3001_not', '', '-1+0-6148914691236517206+6148914691236517205'], ['3002_lshift', '', '+1+2+4611686018427387904-9223372036854775808'], + ['3003_rshift', '', '+1+1+1-4611686018427387903-576460752303423478-1-1'], ] for test in tests: -- 2.20.1