summaryrefslogtreecommitdiff
path: root/output/LinearSearch.opt.vaporm
diff options
context:
space:
mode:
Diffstat (limited to 'output/LinearSearch.opt.vaporm')
-rw-r--r--output/LinearSearch.opt.vaporm162
1 files changed, 162 insertions, 0 deletions
diff --git a/output/LinearSearch.opt.vaporm b/output/LinearSearch.opt.vaporm
new file mode 100644
index 0000000..4fa8c5c
--- /dev/null
+++ b/output/LinearSearch.opt.vaporm
@@ -0,0 +1,162 @@
+const empty_LS
+
+func Main [in 0, out 0, local 0]
+ $t0 = HeapAllocZ(8)
+ if $t0 goto :null1
+ Error("null pointer")
+null1:
+ $a0 = $t0
+ $a1 = 10
+ call :LS.Start
+ $t0 = $v0
+ PrintIntS($t0)
+ ret
+
+func LS.Start [in 0, out 0, local 1]
+ local[0] = $s0
+ $s0 = $a0
+ $t0 = $a1
+ $a0 = $s0
+ $a1 = $t0
+ call :LS.Init
+ $a0 = $s0
+ call :LS.Print
+ PrintIntS(9999)
+ $a0 = $s0
+ $a1 = 8
+ call :LS.Search
+ $t0 = $v0
+ PrintIntS($t0)
+ $a0 = $s0
+ $a1 = 12
+ call :LS.Search
+ $t0 = $v0
+ PrintIntS($t0)
+ $a0 = $s0
+ $a1 = 17
+ call :LS.Search
+ $t0 = $v0
+ PrintIntS($t0)
+ $a0 = $s0
+ $a1 = 50
+ call :LS.Search
+ $t0 = $v0
+ PrintIntS($t0)
+ $v0 = 55
+ $s0 = local[0]
+ ret
+
+func LS.Print [in 0, out 0, local 0]
+ $t0 = $a0
+ $t1 = 1
+while1_top:
+ $t2 = [$t0+4]
+ $t2 = LtS($t1 $t2)
+ if0 $t2 goto :while1_end
+ $t2 = [$t0]
+ if $t2 goto :null2
+ Error("null pointer")
+null2:
+ $t3 = [$t2]
+ $t3 = Lt($t1 $t3)
+ if $t3 goto :bounds1
+ Error("array index out of bounds")
+bounds1:
+ $t3 = MulS($t1 4)
+ $t3 = Add($t3 $t2)
+ $t3 = [$t3+4]
+ PrintIntS($t3)
+ $t1 = Add($t1 1)
+ goto :while1_top
+while1_end:
+ $v0 = 0
+ ret
+
+func LS.Search [in 0, out 0, local 0]
+ $t0 = $a0
+ $t1 = $a1
+ $t2 = 1
+ $t3 = 0
+while2_top:
+ $t4 = [$t0+4]
+ $t4 = LtS($t2 $t4)
+ if0 $t4 goto :while2_end
+ $t4 = [$t0]
+ if $t4 goto :null3
+ Error("null pointer")
+null3:
+ $t5 = [$t4]
+ $t5 = Lt($t2 $t5)
+ if $t5 goto :bounds2
+ Error("array index out of bounds")
+bounds2:
+ $t5 = MulS($t2 4)
+ $t5 = Add($t5 $t4)
+ $t5 = [$t5+4]
+ $t4 = Add($t1 1)
+ $t6 = LtS($t5 $t1)
+ if0 $t6 goto :if1_else
+ goto :if1_end
+if1_else:
+ $t4 = LtS($t5 $t4)
+ if $t4 goto :if2_else
+ goto :if2_end
+if2_else:
+ $t3 = 1
+ $t2 = [$t0+4]
+if2_end:
+if1_end:
+ $t2 = Add($t2 1)
+ goto :while2_top
+while2_end:
+ $v0 = $t3
+ ret
+
+func LS.Init [in 0, out 0, local 1]
+ local[0] = $s0
+ $s0 = $a0
+ $t0 = $a1
+ [$s0+4] = $t0
+ $a0 = $t0
+ call :AllocArray
+ $t0 = $v0
+ [$s0] = $t0
+ $t0 = 1
+ $t1 = [$s0+4]
+ $t1 = Add($t1 1)
+while3_top:
+ $t2 = [$s0+4]
+ $t2 = LtS($t0 $t2)
+ if0 $t2 goto :while3_end
+ $t2 = MulS(2 $t0)
+ $t3 = Sub($t1 3)
+ $t4 = [$s0]
+ if $t4 goto :null4
+ Error("null pointer")
+null4:
+ $t5 = [$t4]
+ $t5 = Lt($t0 $t5)
+ if $t5 goto :bounds3
+ Error("array index out of bounds")
+bounds3:
+ $t5 = MulS($t0 4)
+ $t5 = Add($t5 $t4)
+ $t3 = Add($t2 $t3)
+ [$t5+4] = $t3
+ $t0 = Add($t0 1)
+ $t1 = Sub($t1 1)
+ goto :while3_top
+while3_end:
+ $v0 = 0
+ $s0 = local[0]
+ ret
+
+func AllocArray [in 0, out 0, local 0]
+ $t0 = $a0
+ $t1 = MulS($t0 4)
+ $t1 = Add($t1 4)
+ $t1 = HeapAllocZ($t1)
+ [$t1] = $t0
+ $v0 = $t1
+ ret
+