Added test for `rshift` subroutine from stdlib.
authorAaron Taylor <ataylor@subgeniuskitty.com>
Thu, 1 Aug 2019 01:05:02 +0000 (18:05 -0700)
committerAaron Taylor <ataylor@subgeniuskitty.com>
Thu, 1 Aug 2019 01:05:02 +0000 (18:05 -0700)
stdlib_tests/3003_rshift.pvvs [new file with mode: 0644]
stdlib_tests/vv_test.py

diff --git a/stdlib_tests/3003_rshift.pvvs b/stdlib_tests/3003_rshift.pvvs
new file mode 100644 (file)
index 0000000..5c70023
--- /dev/null
@@ -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 <logic.pvvs>
+#include <stdio.pvvs>
index 353c176..87f3ca4 100755 (executable)
@@ -32,6 +32,7 @@ tests = [
         ['2007_memrand', '', ''],
         ['3001_not', '', '-1+0-6148914691236517206+6148914691236517205'],
         ['3002_lshift', '', '+1+2+4611686018427387904-9223372036854775808'],
         ['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:
         ] 
 
 for test in tests: