Added test for `rshift` subroutine from stdlib.
[vvhitespace] / stdlib_tests / 3003_rshift.pvvs
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>