summaryrefslogtreecommitdiff
path: root/vaporize/tests/MoreThan4.vaporm
diff options
context:
space:
mode:
Diffstat (limited to 'vaporize/tests/MoreThan4.vaporm')
-rw-r--r--vaporize/tests/MoreThan4.vaporm68
1 files changed, 68 insertions, 0 deletions
diff --git a/vaporize/tests/MoreThan4.vaporm b/vaporize/tests/MoreThan4.vaporm
new file mode 100644
index 0000000..bf549b2
--- /dev/null
+++ b/vaporize/tests/MoreThan4.vaporm
@@ -0,0 +1,68 @@
+const vmt_MT4
+ :MT4.Start
+ :MT4.Change
+
+func Main [in 0, out 3, local 0]
+ $t0 = HeapAllocZ(4)
+ [$t0] = :vmt_MT4
+ if $t0 goto :null1
+ Error("null pointer")
+null1:
+ $t1 = [$t0]
+ $t1 = [$t1]
+ $a0 = $t0
+ $a1 = 1
+ $a2 = 2
+ $a3 = 3
+ out[0] = 4
+ out[1] = 5
+ out[2] = 6
+ call $t1
+ $t1 = $v0
+ PrintIntS($t1)
+ ret
+
+func MT4.Start [in 3, out 3, local 0]
+ $t0 = $a0
+ $t1 = $a1
+ $t2 = $a2
+ $t3 = $a3
+ $t4 = in[0]
+ $t5 = in[1]
+ $t6 = in[2]
+ PrintIntS($t1)
+ PrintIntS($t2)
+ PrintIntS($t3)
+ PrintIntS($t4)
+ PrintIntS($t5)
+ PrintIntS($t6)
+ $t7 = [$t0]
+ $t7 = [$t7+4]
+ $a0 = $t0
+ $a1 = $t6
+ $a2 = $t5
+ $a3 = $t4
+ out[0] = $t3
+ out[1] = $t2
+ out[2] = $t1
+ call $t7
+ $t7 = $v0
+ $v0 = $t7
+ ret
+
+func MT4.Change [in 3, out 0, local 0]
+ $t0 = $a1
+ $t1 = $a2
+ $t2 = $a3
+ $t3 = in[0]
+ $t4 = in[1]
+ $t5 = in[2]
+ PrintIntS($t0)
+ PrintIntS($t1)
+ PrintIntS($t2)
+ PrintIntS($t3)
+ PrintIntS($t4)
+ PrintIntS($t5)
+ $v0 = 0
+ ret
+