From 1851f5e76018ec1df3b55dce6cc9a64c9497bf7a Mon Sep 17 00:00:00 2001 From: bd-912 Date: Fri, 26 Apr 2024 15:50:38 -0600 Subject: Rearrange directory structure --- vaporize/tests/BinaryTree.names.vaporm | 996 ---------------------- vaporize/tests/BinaryTree.opt.names.vaporm | 797 ----------------- vaporize/tests/BinaryTree.opt.regalloc | 451 ---------- vaporize/tests/BinaryTree.opt.vapor | 526 ------------ vaporize/tests/BinaryTree.opt.vaporm | 797 ----------------- vaporize/tests/BinaryTree.regalloc | 703 --------------- vaporize/tests/BinaryTree.vapor | 719 ---------------- vaporize/tests/BinaryTree.vaporm | 996 ---------------------- vaporize/tests/BubbleSort.names.vaporm | 316 ------- vaporize/tests/BubbleSort.opt.names.vaporm | 301 ------- vaporize/tests/BubbleSort.opt.regalloc | 230 ----- vaporize/tests/BubbleSort.opt.vapor | 277 ------ vaporize/tests/BubbleSort.opt.vaporm | 301 ------- vaporize/tests/BubbleSort.regalloc | 245 ------ vaporize/tests/BubbleSort.vapor | 292 ------- vaporize/tests/BubbleSort.vaporm | 316 ------- vaporize/tests/Factorial.names.vaporm | 40 - vaporize/tests/Factorial.opt.names.vaporm | 30 - vaporize/tests/Factorial.opt.regalloc | 33 - vaporize/tests/Factorial.opt.vapor | 20 - vaporize/tests/Factorial.opt.vaporm | 30 - vaporize/tests/Factorial.regalloc | 42 - vaporize/tests/Factorial.vapor | 30 - vaporize/tests/Factorial.vaporm | 40 - vaporize/tests/LinearSearch.names.vaporm | 182 ---- vaporize/tests/LinearSearch.opt.names.vaporm | 162 ---- vaporize/tests/LinearSearch.opt.regalloc | 169 ---- vaporize/tests/LinearSearch.opt.vapor | 130 --- vaporize/tests/LinearSearch.opt.vaporm | 162 ---- vaporize/tests/LinearSearch.regalloc | 193 ----- vaporize/tests/LinearSearch.vapor | 150 ---- vaporize/tests/LinearSearch.vaporm | 182 ---- vaporize/tests/LinkedList.names.vaporm | 698 --------------- vaporize/tests/LinkedList.opt.names.vaporm | 562 ------------ vaporize/tests/LinkedList.opt.regalloc | 362 -------- vaporize/tests/LinkedList.opt.vapor | 373 -------- vaporize/tests/LinkedList.opt.vaporm | 562 ------------ vaporize/tests/LinkedList.regalloc | 539 ------------ vaporize/tests/LinkedList.vapor | 505 ----------- vaporize/tests/LinkedList.vaporm | 698 --------------- vaporize/tests/MoreThan4.names.vaporm | 68 -- vaporize/tests/MoreThan4.opt.names.vaporm | 57 -- vaporize/tests/MoreThan4.opt.regalloc | 64 -- vaporize/tests/MoreThan4.opt.vapor | 27 - vaporize/tests/MoreThan4.opt.vaporm | 57 -- vaporize/tests/MoreThan4.regalloc | 73 -- vaporize/tests/MoreThan4.vapor | 38 - vaporize/tests/MoreThan4.vaporm | 68 -- vaporize/tests/QuickSort.names.vaporm | 439 ---------- vaporize/tests/QuickSort.opt.names.vaporm | 418 --------- vaporize/tests/QuickSort.opt.regalloc | 286 ------- vaporize/tests/QuickSort.opt.vapor | 378 --------- vaporize/tests/QuickSort.opt.vaporm | 418 --------- vaporize/tests/QuickSort.regalloc | 313 ------- vaporize/tests/QuickSort.vapor | 399 --------- vaporize/tests/QuickSort.vaporm | 439 ---------- vaporize/tests/ShortCircuit.opt.vapor | 215 ----- vaporize/tests/ShortCircuit.vapor | 128 --- vaporize/tests/TreeVisitor.names.vaporm | 1174 -------------------------- vaporize/tests/TreeVisitor.opt.names.vaporm | 948 --------------------- vaporize/tests/TreeVisitor.opt.regalloc | 539 ------------ vaporize/tests/TreeVisitor.opt.vapor | 635 -------------- vaporize/tests/TreeVisitor.opt.vaporm | 948 --------------------- vaporize/tests/TreeVisitor.regalloc | 830 ------------------ vaporize/tests/TreeVisitor.vapor | 855 ------------------- vaporize/tests/TreeVisitor.vaporm | 1174 -------------------------- vaporize/tests/ex32.vapor | 15 - vaporize/tests/ex32.vaporm | 35 - 68 files changed, 25195 deletions(-) delete mode 100644 vaporize/tests/BinaryTree.names.vaporm delete mode 100644 vaporize/tests/BinaryTree.opt.names.vaporm delete mode 100644 vaporize/tests/BinaryTree.opt.regalloc delete mode 100644 vaporize/tests/BinaryTree.opt.vapor delete mode 100644 vaporize/tests/BinaryTree.opt.vaporm delete mode 100644 vaporize/tests/BinaryTree.regalloc delete mode 100644 vaporize/tests/BinaryTree.vapor delete mode 100644 vaporize/tests/BinaryTree.vaporm delete mode 100644 vaporize/tests/BubbleSort.names.vaporm delete mode 100644 vaporize/tests/BubbleSort.opt.names.vaporm delete mode 100644 vaporize/tests/BubbleSort.opt.regalloc delete mode 100644 vaporize/tests/BubbleSort.opt.vapor delete mode 100644 vaporize/tests/BubbleSort.opt.vaporm delete mode 100644 vaporize/tests/BubbleSort.regalloc delete mode 100644 vaporize/tests/BubbleSort.vapor delete mode 100644 vaporize/tests/BubbleSort.vaporm delete mode 100644 vaporize/tests/Factorial.names.vaporm delete mode 100644 vaporize/tests/Factorial.opt.names.vaporm delete mode 100644 vaporize/tests/Factorial.opt.regalloc delete mode 100644 vaporize/tests/Factorial.opt.vapor delete mode 100644 vaporize/tests/Factorial.opt.vaporm delete mode 100644 vaporize/tests/Factorial.regalloc delete mode 100644 vaporize/tests/Factorial.vapor delete mode 100644 vaporize/tests/Factorial.vaporm delete mode 100644 vaporize/tests/LinearSearch.names.vaporm delete mode 100644 vaporize/tests/LinearSearch.opt.names.vaporm delete mode 100644 vaporize/tests/LinearSearch.opt.regalloc delete mode 100644 vaporize/tests/LinearSearch.opt.vapor delete mode 100644 vaporize/tests/LinearSearch.opt.vaporm delete mode 100644 vaporize/tests/LinearSearch.regalloc delete mode 100644 vaporize/tests/LinearSearch.vapor delete mode 100644 vaporize/tests/LinearSearch.vaporm delete mode 100644 vaporize/tests/LinkedList.names.vaporm delete mode 100644 vaporize/tests/LinkedList.opt.names.vaporm delete mode 100644 vaporize/tests/LinkedList.opt.regalloc delete mode 100644 vaporize/tests/LinkedList.opt.vapor delete mode 100644 vaporize/tests/LinkedList.opt.vaporm delete mode 100644 vaporize/tests/LinkedList.regalloc delete mode 100644 vaporize/tests/LinkedList.vapor delete mode 100644 vaporize/tests/LinkedList.vaporm delete mode 100644 vaporize/tests/MoreThan4.names.vaporm delete mode 100644 vaporize/tests/MoreThan4.opt.names.vaporm delete mode 100644 vaporize/tests/MoreThan4.opt.regalloc delete mode 100644 vaporize/tests/MoreThan4.opt.vapor delete mode 100644 vaporize/tests/MoreThan4.opt.vaporm delete mode 100644 vaporize/tests/MoreThan4.regalloc delete mode 100644 vaporize/tests/MoreThan4.vapor delete mode 100644 vaporize/tests/MoreThan4.vaporm delete mode 100644 vaporize/tests/QuickSort.names.vaporm delete mode 100644 vaporize/tests/QuickSort.opt.names.vaporm delete mode 100644 vaporize/tests/QuickSort.opt.regalloc delete mode 100644 vaporize/tests/QuickSort.opt.vapor delete mode 100644 vaporize/tests/QuickSort.opt.vaporm delete mode 100644 vaporize/tests/QuickSort.regalloc delete mode 100644 vaporize/tests/QuickSort.vapor delete mode 100644 vaporize/tests/QuickSort.vaporm delete mode 100644 vaporize/tests/ShortCircuit.opt.vapor delete mode 100644 vaporize/tests/ShortCircuit.vapor delete mode 100644 vaporize/tests/TreeVisitor.names.vaporm delete mode 100644 vaporize/tests/TreeVisitor.opt.names.vaporm delete mode 100644 vaporize/tests/TreeVisitor.opt.regalloc delete mode 100644 vaporize/tests/TreeVisitor.opt.vapor delete mode 100644 vaporize/tests/TreeVisitor.opt.vaporm delete mode 100644 vaporize/tests/TreeVisitor.regalloc delete mode 100644 vaporize/tests/TreeVisitor.vapor delete mode 100644 vaporize/tests/TreeVisitor.vaporm delete mode 100644 vaporize/tests/ex32.vapor delete mode 100644 vaporize/tests/ex32.vaporm (limited to 'vaporize/tests') diff --git a/vaporize/tests/BinaryTree.names.vaporm b/vaporize/tests/BinaryTree.names.vaporm deleted file mode 100644 index e5785ee..0000000 --- a/vaporize/tests/BinaryTree.names.vaporm +++ /dev/null @@ -1,996 +0,0 @@ -const vmt_BT - :BT.Start - -const vmt_Tree - :Tree.Init - :Tree.SetRight - :Tree.SetLeft - :Tree.GetRight - :Tree.GetLeft - :Tree.GetKey - :Tree.SetKey - :Tree.GetHas_Right - :Tree.GetHas_Left - :Tree.SetHas_Left - :Tree.SetHas_Right - :Tree.Compare - :Tree.Insert - :Tree.Delete - :Tree.Remove - :Tree.RemoveRight - :Tree.RemoveLeft - :Tree.Search - :Tree.Print - :Tree.RecPrint - -func Main [in 0, out 0, local 0] - $t0{t.0} = HeapAllocZ(4) - [$t0{t.0}] = :vmt_BT - if $t0{t.0} goto :null1 - Error("null pointer") -null1: - $t1{t.1} = [$t0{t.0}] - $t1{t.1} = [$t1{t.1}] - $a0 = $t0{t.0} - call $t1{t.1} - $t1{t.2} = $v0 - PrintIntS($t1{t.2}) - ret - -func BT.Start [in 0, out 0, local 1] - local[0] = $s0 - $t0{t.0} = HeapAllocZ(28) - [$t0{t.0}] = :vmt_Tree - $s0{root} = $t0{t.0} - if $s0{root} goto :null2 - Error("null pointer") -null2: - $t0{t.1} = [$s0{root}] - $t0{t.1} = [$t0{t.1}] - $a0 = $s0{root} - $a1 = 16 - call $t0{t.1} - if $s0{root} goto :null3 - Error("null pointer") -null3: - $t0{t.2} = [$s0{root}] - $t0{t.2} = [$t0{t.2}+72] - $a0 = $s0{root} - call $t0{t.2} - PrintIntS(100000000) - if $s0{root} goto :null4 - Error("null pointer") -null4: - $t0{t.3} = [$s0{root}] - $t0{t.3} = [$t0{t.3}+48] - $a0 = $s0{root} - $a1 = 8 - call $t0{t.3} - if $s0{root} goto :null5 - Error("null pointer") -null5: - $t0{t.4} = [$s0{root}] - $t0{t.4} = [$t0{t.4}+72] - $a0 = $s0{root} - call $t0{t.4} - if $s0{root} goto :null6 - Error("null pointer") -null6: - $t0{t.5} = [$s0{root}] - $t0{t.5} = [$t0{t.5}+48] - $a0 = $s0{root} - $a1 = 24 - call $t0{t.5} - if $s0{root} goto :null7 - Error("null pointer") -null7: - $t0{t.6} = [$s0{root}] - $t0{t.6} = [$t0{t.6}+48] - $a0 = $s0{root} - $a1 = 4 - call $t0{t.6} - if $s0{root} goto :null8 - Error("null pointer") -null8: - $t0{t.7} = [$s0{root}] - $t0{t.7} = [$t0{t.7}+48] - $a0 = $s0{root} - $a1 = 12 - call $t0{t.7} - if $s0{root} goto :null9 - Error("null pointer") -null9: - $t0{t.8} = [$s0{root}] - $t0{t.8} = [$t0{t.8}+48] - $a0 = $s0{root} - $a1 = 20 - call $t0{t.8} - if $s0{root} goto :null10 - Error("null pointer") -null10: - $t0{t.9} = [$s0{root}] - $t0{t.9} = [$t0{t.9}+48] - $a0 = $s0{root} - $a1 = 28 - call $t0{t.9} - if $s0{root} goto :null11 - Error("null pointer") -null11: - $t0{t.10} = [$s0{root}] - $t0{t.10} = [$t0{t.10}+48] - $a0 = $s0{root} - $a1 = 14 - call $t0{t.10} - if $s0{root} goto :null12 - Error("null pointer") -null12: - $t0{t.11} = [$s0{root}] - $t0{t.11} = [$t0{t.11}+72] - $a0 = $s0{root} - call $t0{t.11} - if $s0{root} goto :null13 - Error("null pointer") -null13: - $t0{t.12} = [$s0{root}] - $t0{t.12} = [$t0{t.12}+68] - $a0 = $s0{root} - $a1 = 24 - call $t0{t.12} - $t0{t.13} = $v0 - PrintIntS($t0{t.13}) - if $s0{root} goto :null14 - Error("null pointer") -null14: - $t0{t.14} = [$s0{root}] - $t0{t.14} = [$t0{t.14}+68] - $a0 = $s0{root} - $a1 = 12 - call $t0{t.14} - $t0{t.15} = $v0 - PrintIntS($t0{t.15}) - if $s0{root} goto :null15 - Error("null pointer") -null15: - $t0{t.16} = [$s0{root}] - $t0{t.16} = [$t0{t.16}+68] - $a0 = $s0{root} - $a1 = 16 - call $t0{t.16} - $t0{t.17} = $v0 - PrintIntS($t0{t.17}) - if $s0{root} goto :null16 - Error("null pointer") -null16: - $t0{t.18} = [$s0{root}] - $t0{t.18} = [$t0{t.18}+68] - $a0 = $s0{root} - $a1 = 50 - call $t0{t.18} - $t0{t.19} = $v0 - PrintIntS($t0{t.19}) - if $s0{root} goto :null17 - Error("null pointer") -null17: - $t0{t.20} = [$s0{root}] - $t0{t.20} = [$t0{t.20}+68] - $a0 = $s0{root} - $a1 = 12 - call $t0{t.20} - $t0{t.21} = $v0 - PrintIntS($t0{t.21}) - if $s0{root} goto :null18 - Error("null pointer") -null18: - $t0{t.22} = [$s0{root}] - $t0{t.22} = [$t0{t.22}+52] - $a0 = $s0{root} - $a1 = 12 - call $t0{t.22} - if $s0{root} goto :null19 - Error("null pointer") -null19: - $t0{t.23} = [$s0{root}] - $t0{t.23} = [$t0{t.23}+72] - $a0 = $s0{root} - call $t0{t.23} - if $s0{root} goto :null20 - Error("null pointer") -null20: - $t0{t.24} = [$s0{root}] - $t0{t.24} = [$t0{t.24}+68] - $a0 = $s0{root} - $a1 = 12 - call $t0{t.24} - $t0{t.25} = $v0 - PrintIntS($t0{t.25}) - $v0 = 0 - $s0 = local[0] - ret - -func Tree.Init [in 0, out 0, local 0] - $t0{this} = $a0 - $t1{v_key} = $a1 - [$t0{this}+12] = $t1{v_key} - [$t0{this}+16] = 0 - [$t0{this}+20] = 0 - $v0 = 1 - ret - -func Tree.SetRight [in 0, out 0, local 0] - $t0{this} = $a0 - $t1{rn} = $a1 - [$t0{this}+8] = $t1{rn} - $v0 = 1 - ret - -func Tree.SetLeft [in 0, out 0, local 0] - $t0{this} = $a0 - $t1{ln} = $a1 - [$t0{this}+4] = $t1{ln} - $v0 = 1 - ret - -func Tree.GetRight [in 0, out 0, local 0] - $t0{this} = $a0 - $t0{t.0} = [$t0{this}+8] - $v0 = $t0{t.0} - ret - -func Tree.GetLeft [in 0, out 0, local 0] - $t0{this} = $a0 - $t0{t.0} = [$t0{this}+4] - $v0 = $t0{t.0} - ret - -func Tree.GetKey [in 0, out 0, local 0] - $t0{this} = $a0 - $t0{t.0} = [$t0{this}+12] - $v0 = $t0{t.0} - ret - -func Tree.SetKey [in 0, out 0, local 0] - $t0{this} = $a0 - $t1{v_key} = $a1 - [$t0{this}+12] = $t1{v_key} - $v0 = 1 - ret - -func Tree.GetHas_Right [in 0, out 0, local 0] - $t0{this} = $a0 - $t0{t.0} = [$t0{this}+20] - $v0 = $t0{t.0} - ret - -func Tree.GetHas_Left [in 0, out 0, local 0] - $t0{this} = $a0 - $t0{t.0} = [$t0{this}+16] - $v0 = $t0{t.0} - ret - -func Tree.SetHas_Left [in 0, out 0, local 0] - $t0{this} = $a0 - $t1{val} = $a1 - [$t0{this}+16] = $t1{val} - $v0 = 1 - ret - -func Tree.SetHas_Right [in 0, out 0, local 0] - $t0{this} = $a0 - $t1{val} = $a1 - [$t0{this}+20] = $t1{val} - $v0 = 1 - ret - -func Tree.Compare [in 0, out 0, local 0] - $t0{num1} = $a1 - $t1{num2} = $a2 - $t2{nti} = Add($t1{num2} 1) - $t1{t.0} = LtS($t0{num1} $t1{num2}) - if0 $t1{t.0} goto :if1_else - $t1{ntb} = 0 - goto :if1_end -if1_else: - $t2{t.1} = LtS($t0{num1} $t2{nti}) - $t2{t.2} = Sub(1 $t2{t.1}) - if0 $t2{t.2} goto :if2_else - $t1{ntb} = 0 - goto :if2_end -if2_else: - $t1{ntb} = 1 -if2_end: -if1_end: - $v0 = $t1{ntb} - ret - -func Tree.Insert [in 0, out 0, local 4] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - local[3] = $s3 - $s0{this} = $a0 - $s1{v_key} = $a1 - $t0{t.0} = HeapAllocZ(28) - [$t0{t.0}] = :vmt_Tree - $s2{new_node} = $t0{t.0} - if $s2{new_node} goto :null21 - Error("null pointer") -null21: - $t0{t.1} = [$s2{new_node}] - $t0{t.1} = [$t0{t.1}] - $a0 = $s2{new_node} - $a1 = $s1{v_key} - call $t0{t.1} - $s0{current_node} = $s0{this} - $s3{cont} = 1 -while1_top: - if0 $s3{cont} goto :while1_end - if $s0{current_node} goto :null22 - Error("null pointer") -null22: - $t0{t.2} = [$s0{current_node}] - $t0{t.2} = [$t0{t.2}+20] - $a0 = $s0{current_node} - call $t0{t.2} - $t0{key_aux} = $v0 - $t0{t.3} = LtS($s1{v_key} $t0{key_aux}) - if0 $t0{t.3} goto :if3_else - if $s0{current_node} goto :null23 - Error("null pointer") -null23: - $t0{t.4} = [$s0{current_node}] - $t0{t.4} = [$t0{t.4}+32] - $a0 = $s0{current_node} - call $t0{t.4} - $t0{t.5} = $v0 - if0 $t0{t.5} goto :if4_else - if $s0{current_node} goto :null24 - Error("null pointer") -null24: - $t0{t.6} = [$s0{current_node}] - $t0{t.6} = [$t0{t.6}+16] - $a0 = $s0{current_node} - call $t0{t.6} - $s0{current_node} = $v0 - goto :if4_end -if4_else: - $s3{cont} = 0 - if $s0{current_node} goto :null25 - Error("null pointer") -null25: - $t0{t.7} = [$s0{current_node}] - $t0{t.7} = [$t0{t.7}+36] - $a0 = $s0{current_node} - $a1 = 1 - call $t0{t.7} - if $s0{current_node} goto :null26 - Error("null pointer") -null26: - $t0{t.8} = [$s0{current_node}] - $t0{t.8} = [$t0{t.8}+8] - $a0 = $s0{current_node} - $a1 = $s2{new_node} - call $t0{t.8} -if4_end: - goto :if3_end -if3_else: - if $s0{current_node} goto :null27 - Error("null pointer") -null27: - $t0{t.9} = [$s0{current_node}] - $t0{t.9} = [$t0{t.9}+28] - $a0 = $s0{current_node} - call $t0{t.9} - $t0{t.10} = $v0 - if0 $t0{t.10} goto :if5_else - if $s0{current_node} goto :null28 - Error("null pointer") -null28: - $t0{t.11} = [$s0{current_node}] - $t0{t.11} = [$t0{t.11}+12] - $a0 = $s0{current_node} - call $t0{t.11} - $s0{current_node} = $v0 - goto :if5_end -if5_else: - $s3{cont} = 0 - if $s0{current_node} goto :null29 - Error("null pointer") -null29: - $t0{t.12} = [$s0{current_node}] - $t0{t.12} = [$t0{t.12}+40] - $a0 = $s0{current_node} - $a1 = 1 - call $t0{t.12} - if $s0{current_node} goto :null30 - Error("null pointer") -null30: - $t0{t.13} = [$s0{current_node}] - $t0{t.13} = [$t0{t.13}+4] - $a0 = $s0{current_node} - $a1 = $s2{new_node} - call $t0{t.13} -if5_end: -if3_end: - goto :while1_top -while1_end: - $v0 = 1 - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - $s3 = local[3] - ret - -func Tree.Delete [in 0, out 0, local 7] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - local[3] = $s3 - local[4] = $s4 - local[5] = $s5 - local[6] = $s6 - $s0{this} = $a0 - $s1{v_key} = $a1 - $s2{current_node} = $s0{this} - $s3{parent_node} = $s0{this} - $s4{cont} = 1 - $s5{found} = 0 - $s6{is_root} = 1 -while2_top: - if0 $s4{cont} goto :while2_end - if $s2{current_node} goto :null31 - Error("null pointer") -null31: - $t0{t.0} = [$s2{current_node}] - $t0{t.0} = [$t0{t.0}+20] - $a0 = $s2{current_node} - call $t0{t.0} - $t0{key_aux} = $v0 - $t1{t.1} = LtS($s1{v_key} $t0{key_aux}) - if0 $t1{t.1} goto :if6_else - if $s2{current_node} goto :null32 - Error("null pointer") -null32: - $t1{t.2} = [$s2{current_node}] - $t1{t.2} = [$t1{t.2}+32] - $a0 = $s2{current_node} - call $t1{t.2} - $t1{t.3} = $v0 - if0 $t1{t.3} goto :if7_else - $s3{parent_node} = $s2{current_node} - if $s2{current_node} goto :null33 - Error("null pointer") -null33: - $t1{t.4} = [$s2{current_node}] - $t1{t.4} = [$t1{t.4}+16] - $a0 = $s2{current_node} - call $t1{t.4} - $s2{current_node} = $v0 - goto :if7_end -if7_else: - $s4{cont} = 0 -if7_end: - goto :if6_end -if6_else: - $t0{t.5} = LtS($t0{key_aux} $s1{v_key}) - if0 $t0{t.5} goto :if8_else - if $s2{current_node} goto :null34 - Error("null pointer") -null34: - $t0{t.6} = [$s2{current_node}] - $t0{t.6} = [$t0{t.6}+28] - $a0 = $s2{current_node} - call $t0{t.6} - $t0{t.7} = $v0 - if0 $t0{t.7} goto :if9_else - $s3{parent_node} = $s2{current_node} - if $s2{current_node} goto :null35 - Error("null pointer") -null35: - $t0{t.8} = [$s2{current_node}] - $t0{t.8} = [$t0{t.8}+12] - $a0 = $s2{current_node} - call $t0{t.8} - $s2{current_node} = $v0 - goto :if9_end -if9_else: - $s4{cont} = 0 -if9_end: - goto :if8_end -if8_else: - if0 $s6{is_root} goto :if10_else - if $s2{current_node} goto :null36 - Error("null pointer") -null36: - $t0{t.10} = [$s2{current_node}] - $t0{t.10} = [$t0{t.10}+28] - $a0 = $s2{current_node} - call $t0{t.10} - $t0{t.11} = $v0 - $t0{t.12} = Sub(1 $t0{t.11}) - if0 $t0{t.12} goto :ss1_else - if $s2{current_node} goto :null37 - Error("null pointer") -null37: - $t0{t.13} = [$s2{current_node}] - $t0{t.13} = [$t0{t.13}+32] - $a0 = $s2{current_node} - call $t0{t.13} - $t0{t.14} = $v0 - $t0{t.9} = Sub(1 $t0{t.14}) - goto :ss1_end -ss1_else: - $t0{t.9} = 0 -ss1_end: - if0 $t0{t.9} goto :if11_else - goto :if11_end -if11_else: - $t0{t.15} = [$s0{this}] - $t0{t.15} = [$t0{t.15}+56] - $a0 = $s0{this} - $a1 = $s3{parent_node} - $a2 = $s2{current_node} - call $t0{t.15} -if11_end: - goto :if10_end -if10_else: - $t0{t.16} = [$s0{this}] - $t0{t.16} = [$t0{t.16}+56] - $a0 = $s0{this} - $a1 = $s3{parent_node} - $a2 = $s2{current_node} - call $t0{t.16} -if10_end: - $s5{found} = 1 - $s4{cont} = 0 -if8_end: -if6_end: - $s6{is_root} = 0 - goto :while2_top -while2_end: - $v0 = $s5{found} - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - $s3 = local[3] - $s4 = local[4] - $s5 = local[5] - $s6 = local[6] - ret - -func Tree.Remove [in 0, out 0, local 3] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - $s0{this} = $a0 - $s1{p_node} = $a1 - $s2{c_node} = $a2 - if $s2{c_node} goto :null38 - Error("null pointer") -null38: - $t0{t.0} = [$s2{c_node}] - $t0{t.0} = [$t0{t.0}+32] - $a0 = $s2{c_node} - call $t0{t.0} - $t0{t.1} = $v0 - if0 $t0{t.1} goto :if12_else - $t0{t.2} = [$s0{this}] - $t0{t.2} = [$t0{t.2}+64] - $a0 = $s0{this} - $a1 = $s1{p_node} - $a2 = $s2{c_node} - call $t0{t.2} - goto :if12_end -if12_else: - if $s2{c_node} goto :null39 - Error("null pointer") -null39: - $t0{t.3} = [$s2{c_node}] - $t0{t.3} = [$t0{t.3}+28] - $a0 = $s2{c_node} - call $t0{t.3} - $t0{t.4} = $v0 - if0 $t0{t.4} goto :if13_else - $t0{t.5} = [$s0{this}] - $t0{t.5} = [$t0{t.5}+60] - $a0 = $s0{this} - $a1 = $s1{p_node} - $a2 = $s2{c_node} - call $t0{t.5} - goto :if13_end -if13_else: - if $s2{c_node} goto :null40 - Error("null pointer") -null40: - $t0{t.6} = [$s2{c_node}] - $t0{t.6} = [$t0{t.6}+20] - $a0 = $s2{c_node} - call $t0{t.6} - $s2{auxkey1} = $v0 - if $s1{p_node} goto :null41 - Error("null pointer") -null41: - $t0{t.7} = [$s1{p_node}] - $t0{t.7} = [$t0{t.7}+16] - $a0 = $s1{p_node} - call $t0{t.7} - $t0{t.8} = $v0 - if $t0{t.8} goto :null42 - Error("null pointer") -null42: - $t1{t.9} = [$t0{t.8}] - $t1{t.9} = [$t1{t.9}+20] - $a0 = $t0{t.8} - call $t1{t.9} - $t1{auxkey2} = $v0 - $t0{t.10} = [$s0{this}] - $t0{t.10} = [$t0{t.10}+44] - $a0 = $s0{this} - $a1 = $s2{auxkey1} - $a2 = $t1{auxkey2} - call $t0{t.10} - $t0{t.11} = $v0 - if0 $t0{t.11} goto :if14_else - if $s1{p_node} goto :null43 - Error("null pointer") -null43: - $t0{t.12} = [$s1{p_node}] - $t0{t.12} = [$t0{t.12}+8] - $t1{t.13} = [$s0{this}+24] - $a0 = $s1{p_node} - $a1 = $t1{t.13} - call $t0{t.12} - if $s1{p_node} goto :null44 - Error("null pointer") -null44: - $t1{t.14} = [$s1{p_node}] - $t1{t.14} = [$t1{t.14}+36] - $a0 = $s1{p_node} - $a1 = 0 - call $t1{t.14} - goto :if14_end -if14_else: - if $s1{p_node} goto :null45 - Error("null pointer") -null45: - $t1{t.15} = [$s1{p_node}] - $t1{t.15} = [$t1{t.15}+4] - $t0{t.16} = [$s0{this}+24] - $a0 = $s1{p_node} - $a1 = $t0{t.16} - call $t1{t.15} - if $s1{p_node} goto :null46 - Error("null pointer") -null46: - $t0{t.17} = [$s1{p_node}] - $t0{t.17} = [$t0{t.17}+40] - $a0 = $s1{p_node} - $a1 = 0 - call $t0{t.17} -if14_end: -if13_end: -if12_end: - $v0 = 1 - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - ret - -func Tree.RemoveRight [in 0, out 0, local 4] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - local[3] = $s3 - $s0{this} = $a0 - $s1{p_node} = $a1 - $s2{c_node} = $a2 -while3_top: - if $s2{c_node} goto :null47 - Error("null pointer") -null47: - $t0{t.0} = [$s2{c_node}] - $t0{t.0} = [$t0{t.0}+28] - $a0 = $s2{c_node} - call $t0{t.0} - $t0{t.1} = $v0 - if0 $t0{t.1} goto :while3_end - if $s2{c_node} goto :null48 - Error("null pointer") -null48: - $s3{t.2} = [$s2{c_node}] - $s3{t.2} = [$s3{t.2}+24] - if $s2{c_node} goto :null49 - Error("null pointer") -null49: - $t0{t.3} = [$s2{c_node}] - $t0{t.3} = [$t0{t.3}+12] - $a0 = $s2{c_node} - call $t0{t.3} - $t0{t.4} = $v0 - if $t0{t.4} goto :null50 - Error("null pointer") -null50: - $t1{t.5} = [$t0{t.4}] - $t1{t.5} = [$t1{t.5}+20] - $a0 = $t0{t.4} - call $t1{t.5} - $t1{t.6} = $v0 - $a0 = $s2{c_node} - $a1 = $t1{t.6} - call $s3{t.2} - $s1{p_node} = $s2{c_node} - if $s2{c_node} goto :null51 - Error("null pointer") -null51: - $t1{t.7} = [$s2{c_node}] - $t1{t.7} = [$t1{t.7}+12] - $a0 = $s2{c_node} - call $t1{t.7} - $s2{c_node} = $v0 - goto :while3_top -while3_end: - if $s1{p_node} goto :null52 - Error("null pointer") -null52: - $t1{t.8} = [$s1{p_node}] - $t1{t.8} = [$t1{t.8}+4] - $t0{t.9} = [$s0{this}+24] - $a0 = $s1{p_node} - $a1 = $t0{t.9} - call $t1{t.8} - if $s1{p_node} goto :null53 - Error("null pointer") -null53: - $t0{t.10} = [$s1{p_node}] - $t0{t.10} = [$t0{t.10}+40] - $a0 = $s1{p_node} - $a1 = 0 - call $t0{t.10} - $v0 = 1 - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - $s3 = local[3] - ret - -func Tree.RemoveLeft [in 0, out 0, local 4] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - local[3] = $s3 - $s0{this} = $a0 - $s1{p_node} = $a1 - $s2{c_node} = $a2 -while4_top: - if $s2{c_node} goto :null54 - Error("null pointer") -null54: - $t0{t.0} = [$s2{c_node}] - $t0{t.0} = [$t0{t.0}+32] - $a0 = $s2{c_node} - call $t0{t.0} - $t0{t.1} = $v0 - if0 $t0{t.1} goto :while4_end - if $s2{c_node} goto :null55 - Error("null pointer") -null55: - $s3{t.2} = [$s2{c_node}] - $s3{t.2} = [$s3{t.2}+24] - if $s2{c_node} goto :null56 - Error("null pointer") -null56: - $t0{t.3} = [$s2{c_node}] - $t0{t.3} = [$t0{t.3}+16] - $a0 = $s2{c_node} - call $t0{t.3} - $t0{t.4} = $v0 - if $t0{t.4} goto :null57 - Error("null pointer") -null57: - $t1{t.5} = [$t0{t.4}] - $t1{t.5} = [$t1{t.5}+20] - $a0 = $t0{t.4} - call $t1{t.5} - $t1{t.6} = $v0 - $a0 = $s2{c_node} - $a1 = $t1{t.6} - call $s3{t.2} - $s1{p_node} = $s2{c_node} - if $s2{c_node} goto :null58 - Error("null pointer") -null58: - $t1{t.7} = [$s2{c_node}] - $t1{t.7} = [$t1{t.7}+16] - $a0 = $s2{c_node} - call $t1{t.7} - $s2{c_node} = $v0 - goto :while4_top -while4_end: - if $s1{p_node} goto :null59 - Error("null pointer") -null59: - $t1{t.8} = [$s1{p_node}] - $t1{t.8} = [$t1{t.8}+8] - $t0{t.9} = [$s0{this}+24] - $a0 = $s1{p_node} - $a1 = $t0{t.9} - call $t1{t.8} - if $s1{p_node} goto :null60 - Error("null pointer") -null60: - $t0{t.10} = [$s1{p_node}] - $t0{t.10} = [$t0{t.10}+36] - $a0 = $s1{p_node} - $a1 = 0 - call $t0{t.10} - $v0 = 1 - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - $s3 = local[3] - ret - -func Tree.Search [in 0, out 0, local 4] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - local[3] = $s3 - $t0{this} = $a0 - $s0{v_key} = $a1 - $s1{current_node} = $t0{this} - $s2{cont} = 1 - $s3{ifound} = 0 -while5_top: - if0 $s2{cont} goto :while5_end - if $s1{current_node} goto :null61 - Error("null pointer") -null61: - $t0{t.0} = [$s1{current_node}] - $t0{t.0} = [$t0{t.0}+20] - $a0 = $s1{current_node} - call $t0{t.0} - $t0{key_aux} = $v0 - $t1{t.1} = LtS($s0{v_key} $t0{key_aux}) - if0 $t1{t.1} goto :if15_else - if $s1{current_node} goto :null62 - Error("null pointer") -null62: - $t1{t.2} = [$s1{current_node}] - $t1{t.2} = [$t1{t.2}+32] - $a0 = $s1{current_node} - call $t1{t.2} - $t1{t.3} = $v0 - if0 $t1{t.3} goto :if16_else - if $s1{current_node} goto :null63 - Error("null pointer") -null63: - $t1{t.4} = [$s1{current_node}] - $t1{t.4} = [$t1{t.4}+16] - $a0 = $s1{current_node} - call $t1{t.4} - $s1{current_node} = $v0 - goto :if16_end -if16_else: - $s2{cont} = 0 -if16_end: - goto :if15_end -if15_else: - $t0{t.5} = LtS($t0{key_aux} $s0{v_key}) - if0 $t0{t.5} goto :if17_else - if $s1{current_node} goto :null64 - Error("null pointer") -null64: - $t0{t.6} = [$s1{current_node}] - $t0{t.6} = [$t0{t.6}+28] - $a0 = $s1{current_node} - call $t0{t.6} - $t0{t.7} = $v0 - if0 $t0{t.7} goto :if18_else - if $s1{current_node} goto :null65 - Error("null pointer") -null65: - $t0{t.8} = [$s1{current_node}] - $t0{t.8} = [$t0{t.8}+12] - $a0 = $s1{current_node} - call $t0{t.8} - $s1{current_node} = $v0 - goto :if18_end -if18_else: - $s2{cont} = 0 -if18_end: - goto :if17_end -if17_else: - $s3{ifound} = 1 - $s2{cont} = 0 -if17_end: -if15_end: - goto :while5_top -while5_end: - $v0 = $s3{ifound} - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - $s3 = local[3] - ret - -func Tree.Print [in 0, out 0, local 0] - $t0{this} = $a0 - $t1{current_node} = $t0{this} - $t2{t.0} = [$t0{this}] - $t2{t.0} = [$t2{t.0}+76] - $a0 = $t0{this} - $a1 = $t1{current_node} - call $t2{t.0} - $v0 = 1 - ret - -func Tree.RecPrint [in 0, out 0, local 3] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - $s0{this} = $a0 - $s1{node} = $a1 - if $s1{node} goto :null66 - Error("null pointer") -null66: - $t0{t.0} = [$s1{node}] - $t0{t.0} = [$t0{t.0}+32] - $a0 = $s1{node} - call $t0{t.0} - $t0{t.1} = $v0 - if0 $t0{t.1} goto :if19_else - $s2{t.2} = [$s0{this}] - $s2{t.2} = [$s2{t.2}+76] - if $s1{node} goto :null67 - Error("null pointer") -null67: - $t0{t.3} = [$s1{node}] - $t0{t.3} = [$t0{t.3}+16] - $a0 = $s1{node} - call $t0{t.3} - $t0{t.4} = $v0 - $a0 = $s0{this} - $a1 = $t0{t.4} - call $s2{t.2} - goto :if19_end -if19_else: -if19_end: - if $s1{node} goto :null68 - Error("null pointer") -null68: - $t0{t.5} = [$s1{node}] - $t0{t.5} = [$t0{t.5}+20] - $a0 = $s1{node} - call $t0{t.5} - $t0{t.6} = $v0 - PrintIntS($t0{t.6}) - if $s1{node} goto :null69 - Error("null pointer") -null69: - $t0{t.7} = [$s1{node}] - $t0{t.7} = [$t0{t.7}+28] - $a0 = $s1{node} - call $t0{t.7} - $t0{t.8} = $v0 - if0 $t0{t.8} goto :if20_else - $s2{t.9} = [$s0{this}] - $s2{t.9} = [$s2{t.9}+76] - if $s1{node} goto :null70 - Error("null pointer") -null70: - $t0{t.10} = [$s1{node}] - $t0{t.10} = [$t0{t.10}+12] - $a0 = $s1{node} - call $t0{t.10} - $t0{t.11} = $v0 - $a0 = $s0{this} - $a1 = $t0{t.11} - call $s2{t.9} - goto :if20_end -if20_else: -if20_end: - $v0 = 1 - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - ret - diff --git a/vaporize/tests/BinaryTree.opt.names.vaporm b/vaporize/tests/BinaryTree.opt.names.vaporm deleted file mode 100644 index fa61f97..0000000 --- a/vaporize/tests/BinaryTree.opt.names.vaporm +++ /dev/null @@ -1,797 +0,0 @@ -const empty_BT - -const empty_Tree - -func Main [in 0, out 0, local 0] - $a0 = :empty_BT - call :BT.Start - $t0{t.0} = $v0 - PrintIntS($t0{t.0}) - ret - -func BT.Start [in 0, out 0, local 1] - local[0] = $s0 - $s0{root} = HeapAllocZ(24) - if $s0{root} goto :null1 - Error("null pointer") -null1: - $a0 = $s0{root} - $a1 = 16 - call :Tree.Init - if $s0{root} goto :null2 - Error("null pointer") -null2: - $a0 = $s0{root} - call :Tree.Print - PrintIntS(100000000) - if $s0{root} goto :null3 - Error("null pointer") -null3: - $a0 = $s0{root} - $a1 = 8 - call :Tree.Insert - if $s0{root} goto :null4 - Error("null pointer") -null4: - $a0 = $s0{root} - call :Tree.Print - if $s0{root} goto :null5 - Error("null pointer") -null5: - $a0 = $s0{root} - $a1 = 24 - call :Tree.Insert - if $s0{root} goto :null6 - Error("null pointer") -null6: - $a0 = $s0{root} - $a1 = 4 - call :Tree.Insert - if $s0{root} goto :null7 - Error("null pointer") -null7: - $a0 = $s0{root} - $a1 = 12 - call :Tree.Insert - if $s0{root} goto :null8 - Error("null pointer") -null8: - $a0 = $s0{root} - $a1 = 20 - call :Tree.Insert - if $s0{root} goto :null9 - Error("null pointer") -null9: - $a0 = $s0{root} - $a1 = 28 - call :Tree.Insert - if $s0{root} goto :null10 - Error("null pointer") -null10: - $a0 = $s0{root} - $a1 = 14 - call :Tree.Insert - if $s0{root} goto :null11 - Error("null pointer") -null11: - $a0 = $s0{root} - call :Tree.Print - if $s0{root} goto :null12 - Error("null pointer") -null12: - $a0 = $s0{root} - $a1 = 24 - call :Tree.Search - $t0{t.0} = $v0 - PrintIntS($t0{t.0}) - if $s0{root} goto :null13 - Error("null pointer") -null13: - $a0 = $s0{root} - $a1 = 12 - call :Tree.Search - $t0{t.1} = $v0 - PrintIntS($t0{t.1}) - if $s0{root} goto :null14 - Error("null pointer") -null14: - $a0 = $s0{root} - $a1 = 16 - call :Tree.Search - $t0{t.2} = $v0 - PrintIntS($t0{t.2}) - if $s0{root} goto :null15 - Error("null pointer") -null15: - $a0 = $s0{root} - $a1 = 50 - call :Tree.Search - $t0{t.3} = $v0 - PrintIntS($t0{t.3}) - if $s0{root} goto :null16 - Error("null pointer") -null16: - $a0 = $s0{root} - $a1 = 12 - call :Tree.Search - $t0{t.4} = $v0 - PrintIntS($t0{t.4}) - if $s0{root} goto :null17 - Error("null pointer") -null17: - $a0 = $s0{root} - $a1 = 12 - call :Tree.Delete - if $s0{root} goto :null18 - Error("null pointer") -null18: - $a0 = $s0{root} - call :Tree.Print - if $s0{root} goto :null19 - Error("null pointer") -null19: - $a0 = $s0{root} - $a1 = 12 - call :Tree.Search - $t0{t.5} = $v0 - PrintIntS($t0{t.5}) - $v0 = 0 - $s0 = local[0] - ret - -func Tree.Init [in 0, out 0, local 0] - $t0{this} = $a0 - $t1{v_key} = $a1 - [$t0{this}+8] = $t1{v_key} - [$t0{this}+12] = 0 - [$t0{this}+16] = 0 - $v0 = 1 - ret - -func Tree.SetRight [in 0, out 0, local 0] - $t0{this} = $a0 - $t1{rn} = $a1 - [$t0{this}+4] = $t1{rn} - $v0 = 1 - ret - -func Tree.SetLeft [in 0, out 0, local 0] - $t0{this} = $a0 - $t1{ln} = $a1 - [$t0{this}] = $t1{ln} - $v0 = 1 - ret - -func Tree.GetRight [in 0, out 0, local 0] - $t0{this} = $a0 - $t0{t.0} = [$t0{this}+4] - $v0 = $t0{t.0} - ret - -func Tree.GetLeft [in 0, out 0, local 0] - $t0{this} = $a0 - $t0{t.0} = [$t0{this}] - $v0 = $t0{t.0} - ret - -func Tree.GetKey [in 0, out 0, local 0] - $t0{this} = $a0 - $t0{t.0} = [$t0{this}+8] - $v0 = $t0{t.0} - ret - -func Tree.SetKey [in 0, out 0, local 0] - $t0{this} = $a0 - $t1{v_key} = $a1 - [$t0{this}+8] = $t1{v_key} - $v0 = 1 - ret - -func Tree.GetHas_Right [in 0, out 0, local 0] - $t0{this} = $a0 - $t0{t.0} = [$t0{this}+16] - $v0 = $t0{t.0} - ret - -func Tree.GetHas_Left [in 0, out 0, local 0] - $t0{this} = $a0 - $t0{t.0} = [$t0{this}+12] - $v0 = $t0{t.0} - ret - -func Tree.SetHas_Left [in 0, out 0, local 0] - $t0{this} = $a0 - $t1{val} = $a1 - [$t0{this}+12] = $t1{val} - $v0 = 1 - ret - -func Tree.SetHas_Right [in 0, out 0, local 0] - $t0{this} = $a0 - $t1{val} = $a1 - [$t0{this}+16] = $t1{val} - $v0 = 1 - ret - -func Tree.Compare [in 0, out 0, local 0] - $t0{num1} = $a1 - $t1{num2} = $a2 - $t2{nti} = Add($t1{num2} 1) - $t1{t.0} = LtS($t0{num1} $t1{num2}) - if0 $t1{t.0} goto :if1_else - $t1{ntb} = 0 - goto :if1_end -if1_else: - $t2{t.1} = LtS($t0{num1} $t2{nti}) - if $t2{t.1} goto :if2_else - $t1{ntb} = 0 - goto :if2_end -if2_else: - $t1{ntb} = 1 -if2_end: -if1_end: - $v0 = $t1{ntb} - ret - -func Tree.Insert [in 0, out 0, local 4] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - local[3] = $s3 - $s0{this} = $a0 - $s1{v_key} = $a1 - $s2{new_node} = HeapAllocZ(24) - if $s2{new_node} goto :null20 - Error("null pointer") -null20: - $a0 = $s2{new_node} - $a1 = $s1{v_key} - call :Tree.Init - $s0{current_node} = $s0{this} - $s3{cont} = 1 -while1_top: - if0 $s3{cont} goto :while1_end - if $s0{current_node} goto :null21 - Error("null pointer") -null21: - $a0 = $s0{current_node} - call :Tree.GetKey - $t0{key_aux} = $v0 - $t0{t.0} = LtS($s1{v_key} $t0{key_aux}) - if0 $t0{t.0} goto :if3_else - if $s0{current_node} goto :null22 - Error("null pointer") -null22: - $a0 = $s0{current_node} - call :Tree.GetHas_Left - $t0{t.1} = $v0 - if0 $t0{t.1} goto :if4_else - if $s0{current_node} goto :null23 - Error("null pointer") -null23: - $a0 = $s0{current_node} - call :Tree.GetLeft - $s0{current_node} = $v0 - goto :if4_end -if4_else: - $s3{cont} = 0 - if $s0{current_node} goto :null24 - Error("null pointer") -null24: - $a0 = $s0{current_node} - $a1 = 1 - call :Tree.SetHas_Left - if $s0{current_node} goto :null25 - Error("null pointer") -null25: - $a0 = $s0{current_node} - $a1 = $s2{new_node} - call :Tree.SetLeft -if4_end: - goto :if3_end -if3_else: - if $s0{current_node} goto :null26 - Error("null pointer") -null26: - $a0 = $s0{current_node} - call :Tree.GetHas_Right - $t0{t.2} = $v0 - if0 $t0{t.2} goto :if5_else - if $s0{current_node} goto :null27 - Error("null pointer") -null27: - $a0 = $s0{current_node} - call :Tree.GetRight - $s0{current_node} = $v0 - goto :if5_end -if5_else: - $s3{cont} = 0 - if $s0{current_node} goto :null28 - Error("null pointer") -null28: - $a0 = $s0{current_node} - $a1 = 1 - call :Tree.SetHas_Right - if $s0{current_node} goto :null29 - Error("null pointer") -null29: - $a0 = $s0{current_node} - $a1 = $s2{new_node} - call :Tree.SetRight -if5_end: -if3_end: - goto :while1_top -while1_end: - $v0 = 1 - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - $s3 = local[3] - ret - -func Tree.Delete [in 0, out 0, local 7] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - local[3] = $s3 - local[4] = $s4 - local[5] = $s5 - local[6] = $s6 - $s0{this} = $a0 - $s1{v_key} = $a1 - $s2{current_node} = $s0{this} - $s3{parent_node} = $s0{this} - $s4{cont} = 1 - $s5{found} = 0 - $s6{is_root} = 1 -while2_top: - if0 $s4{cont} goto :while2_end - if $s2{current_node} goto :null30 - Error("null pointer") -null30: - $a0 = $s2{current_node} - call :Tree.GetKey - $t0{key_aux} = $v0 - $t1{t.0} = LtS($s1{v_key} $t0{key_aux}) - if0 $t1{t.0} goto :if6_else - if $s2{current_node} goto :null31 - Error("null pointer") -null31: - $a0 = $s2{current_node} - call :Tree.GetHas_Left - $t1{t.1} = $v0 - if0 $t1{t.1} goto :if7_else - $s3{parent_node} = $s2{current_node} - if $s2{current_node} goto :null32 - Error("null pointer") -null32: - $a0 = $s2{current_node} - call :Tree.GetLeft - $s2{current_node} = $v0 - goto :if7_end -if7_else: - $s4{cont} = 0 -if7_end: - goto :if6_end -if6_else: - $t0{t.2} = LtS($t0{key_aux} $s1{v_key}) - if0 $t0{t.2} goto :if8_else - if $s2{current_node} goto :null33 - Error("null pointer") -null33: - $a0 = $s2{current_node} - call :Tree.GetHas_Right - $t0{t.3} = $v0 - if0 $t0{t.3} goto :if9_else - $s3{parent_node} = $s2{current_node} - if $s2{current_node} goto :null34 - Error("null pointer") -null34: - $a0 = $s2{current_node} - call :Tree.GetRight - $s2{current_node} = $v0 - goto :if9_end -if9_else: - $s4{cont} = 0 -if9_end: - goto :if8_end -if8_else: - if0 $s6{is_root} goto :if10_else - if $s2{current_node} goto :null35 - Error("null pointer") -null35: - $a0 = $s2{current_node} - call :Tree.GetHas_Right - $t0{t.4} = $v0 - if $t0{t.4} goto :if11_else - if $s2{current_node} goto :null36 - Error("null pointer") -null36: - $a0 = $s2{current_node} - call :Tree.GetHas_Left - $t0{t.5} = $v0 - if $t0{t.5} goto :if11_else - goto :if11_end -if11_else: - $a0 = $s0{this} - $a1 = $s3{parent_node} - $a2 = $s2{current_node} - call :Tree.Remove -if11_end: - goto :if10_end -if10_else: - $a0 = $s0{this} - $a1 = $s3{parent_node} - $a2 = $s2{current_node} - call :Tree.Remove -if10_end: - $s5{found} = 1 - $s4{cont} = 0 -if8_end: -if6_end: - $s6{is_root} = 0 - goto :while2_top -while2_end: - $v0 = $s5{found} - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - $s3 = local[3] - $s4 = local[4] - $s5 = local[5] - $s6 = local[6] - ret - -func Tree.Remove [in 0, out 0, local 3] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - $s0{this} = $a0 - $s1{p_node} = $a1 - $s2{c_node} = $a2 - if $s2{c_node} goto :null37 - Error("null pointer") -null37: - $a0 = $s2{c_node} - call :Tree.GetHas_Left - $t0{t.0} = $v0 - if0 $t0{t.0} goto :if12_else - $a0 = $s0{this} - $a1 = $s1{p_node} - $a2 = $s2{c_node} - call :Tree.RemoveLeft - goto :if12_end -if12_else: - if $s2{c_node} goto :null38 - Error("null pointer") -null38: - $a0 = $s2{c_node} - call :Tree.GetHas_Right - $t0{t.1} = $v0 - if0 $t0{t.1} goto :if13_else - $a0 = $s0{this} - $a1 = $s1{p_node} - $a2 = $s2{c_node} - call :Tree.RemoveRight - goto :if13_end -if13_else: - if $s2{c_node} goto :null39 - Error("null pointer") -null39: - $a0 = $s2{c_node} - call :Tree.GetKey - $s2{auxkey1} = $v0 - if $s1{p_node} goto :null40 - Error("null pointer") -null40: - $a0 = $s1{p_node} - call :Tree.GetLeft - $t0{t.2} = $v0 - if $t0{t.2} goto :null41 - Error("null pointer") -null41: - $a0 = $t0{t.2} - call :Tree.GetKey - $t0{auxkey2} = $v0 - $a0 = $s0{this} - $a1 = $s2{auxkey1} - $a2 = $t0{auxkey2} - call :Tree.Compare - $t0{t.3} = $v0 - if0 $t0{t.3} goto :if14_else - if $s1{p_node} goto :null42 - Error("null pointer") -null42: - $t0{t.4} = [$s0{this}+20] - $a0 = $s1{p_node} - $a1 = $t0{t.4} - call :Tree.SetLeft - if $s1{p_node} goto :null43 - Error("null pointer") -null43: - $a0 = $s1{p_node} - $a1 = 0 - call :Tree.SetHas_Left - goto :if14_end -if14_else: - if $s1{p_node} goto :null44 - Error("null pointer") -null44: - $t0{t.5} = [$s0{this}+20] - $a0 = $s1{p_node} - $a1 = $t0{t.5} - call :Tree.SetRight - if $s1{p_node} goto :null45 - Error("null pointer") -null45: - $a0 = $s1{p_node} - $a1 = 0 - call :Tree.SetHas_Right -if14_end: -if13_end: -if12_end: - $v0 = 1 - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - ret - -func Tree.RemoveRight [in 0, out 0, local 3] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - $s0{this} = $a0 - $s1{p_node} = $a1 - $s2{c_node} = $a2 -while3_top: - if $s2{c_node} goto :null46 - Error("null pointer") -null46: - $a0 = $s2{c_node} - call :Tree.GetHas_Right - $t0{t.0} = $v0 - if0 $t0{t.0} goto :while3_end - if $s2{c_node} goto :null47 - Error("null pointer") -null47: - if $s2{c_node} goto :null48 - Error("null pointer") -null48: - $a0 = $s2{c_node} - call :Tree.GetRight - $t0{t.1} = $v0 - if $t0{t.1} goto :null49 - Error("null pointer") -null49: - $a0 = $t0{t.1} - call :Tree.GetKey - $t0{t.2} = $v0 - $a0 = $s2{c_node} - $a1 = $t0{t.2} - call :Tree.SetKey - $s1{p_node} = $s2{c_node} - if $s2{c_node} goto :null50 - Error("null pointer") -null50: - $a0 = $s2{c_node} - call :Tree.GetRight - $s2{c_node} = $v0 - goto :while3_top -while3_end: - if $s1{p_node} goto :null51 - Error("null pointer") -null51: - $t0{t.3} = [$s0{this}+20] - $a0 = $s1{p_node} - $a1 = $t0{t.3} - call :Tree.SetRight - if $s1{p_node} goto :null52 - Error("null pointer") -null52: - $a0 = $s1{p_node} - $a1 = 0 - call :Tree.SetHas_Right - $v0 = 1 - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - ret - -func Tree.RemoveLeft [in 0, out 0, local 3] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - $s0{this} = $a0 - $s1{p_node} = $a1 - $s2{c_node} = $a2 -while4_top: - if $s2{c_node} goto :null53 - Error("null pointer") -null53: - $a0 = $s2{c_node} - call :Tree.GetHas_Left - $t0{t.0} = $v0 - if0 $t0{t.0} goto :while4_end - if $s2{c_node} goto :null54 - Error("null pointer") -null54: - if $s2{c_node} goto :null55 - Error("null pointer") -null55: - $a0 = $s2{c_node} - call :Tree.GetLeft - $t0{t.1} = $v0 - if $t0{t.1} goto :null56 - Error("null pointer") -null56: - $a0 = $t0{t.1} - call :Tree.GetKey - $t0{t.2} = $v0 - $a0 = $s2{c_node} - $a1 = $t0{t.2} - call :Tree.SetKey - $s1{p_node} = $s2{c_node} - if $s2{c_node} goto :null57 - Error("null pointer") -null57: - $a0 = $s2{c_node} - call :Tree.GetLeft - $s2{c_node} = $v0 - goto :while4_top -while4_end: - if $s1{p_node} goto :null58 - Error("null pointer") -null58: - $t0{t.3} = [$s0{this}+20] - $a0 = $s1{p_node} - $a1 = $t0{t.3} - call :Tree.SetLeft - if $s1{p_node} goto :null59 - Error("null pointer") -null59: - $a0 = $s1{p_node} - $a1 = 0 - call :Tree.SetHas_Left - $v0 = 1 - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - ret - -func Tree.Search [in 0, out 0, local 4] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - local[3] = $s3 - $t0{this} = $a0 - $s0{v_key} = $a1 - $s1{current_node} = $t0{this} - $s2{cont} = 1 - $s3{ifound} = 0 -while5_top: - if0 $s2{cont} goto :while5_end - if $s1{current_node} goto :null60 - Error("null pointer") -null60: - $a0 = $s1{current_node} - call :Tree.GetKey - $t0{key_aux} = $v0 - $t1{t.0} = LtS($s0{v_key} $t0{key_aux}) - if0 $t1{t.0} goto :if15_else - if $s1{current_node} goto :null61 - Error("null pointer") -null61: - $a0 = $s1{current_node} - call :Tree.GetHas_Left - $t1{t.1} = $v0 - if0 $t1{t.1} goto :if16_else - if $s1{current_node} goto :null62 - Error("null pointer") -null62: - $a0 = $s1{current_node} - call :Tree.GetLeft - $s1{current_node} = $v0 - goto :if16_end -if16_else: - $s2{cont} = 0 -if16_end: - goto :if15_end -if15_else: - $t0{t.2} = LtS($t0{key_aux} $s0{v_key}) - if0 $t0{t.2} goto :if17_else - if $s1{current_node} goto :null63 - Error("null pointer") -null63: - $a0 = $s1{current_node} - call :Tree.GetHas_Right - $t0{t.3} = $v0 - if0 $t0{t.3} goto :if18_else - if $s1{current_node} goto :null64 - Error("null pointer") -null64: - $a0 = $s1{current_node} - call :Tree.GetRight - $s1{current_node} = $v0 - goto :if18_end -if18_else: - $s2{cont} = 0 -if18_end: - goto :if17_end -if17_else: - $s3{ifound} = 1 - $s2{cont} = 0 -if17_end: -if15_end: - goto :while5_top -while5_end: - $v0 = $s3{ifound} - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - $s3 = local[3] - ret - -func Tree.Print [in 0, out 0, local 0] - $t0{this} = $a0 - $t1{current_node} = $t0{this} - $a0 = $t0{this} - $a1 = $t1{current_node} - call :Tree.RecPrint - $v0 = 1 - ret - -func Tree.RecPrint [in 0, out 0, local 2] - local[0] = $s0 - local[1] = $s1 - $s0{this} = $a0 - $s1{node} = $a1 - if $s1{node} goto :null65 - Error("null pointer") -null65: - $a0 = $s1{node} - call :Tree.GetHas_Left - $t0{t.0} = $v0 - if0 $t0{t.0} goto :if19_else - if $s1{node} goto :null66 - Error("null pointer") -null66: - $a0 = $s1{node} - call :Tree.GetLeft - $t0{t.1} = $v0 - $a0 = $s0{this} - $a1 = $t0{t.1} - call :Tree.RecPrint - goto :if19_end -if19_else: -if19_end: - if $s1{node} goto :null67 - Error("null pointer") -null67: - $a0 = $s1{node} - call :Tree.GetKey - $t0{t.2} = $v0 - PrintIntS($t0{t.2}) - if $s1{node} goto :null68 - Error("null pointer") -null68: - $a0 = $s1{node} - call :Tree.GetHas_Right - $t0{t.3} = $v0 - if0 $t0{t.3} goto :if20_else - if $s1{node} goto :null69 - Error("null pointer") -null69: - $a0 = $s1{node} - call :Tree.GetRight - $t0{t.4} = $v0 - $a0 = $s0{this} - $a1 = $t0{t.4} - call :Tree.RecPrint - goto :if20_end -if20_else: -if20_end: - $v0 = 1 - $s0 = local[0] - $s1 = local[1] - ret - diff --git a/vaporize/tests/BinaryTree.opt.regalloc b/vaporize/tests/BinaryTree.opt.regalloc deleted file mode 100644 index 635f436..0000000 --- a/vaporize/tests/BinaryTree.opt.regalloc +++ /dev/null @@ -1,451 +0,0 @@ -func Main - in 0, out 0, callee-saves 0, spills 0 -Live In: - t.0: 9 -Linear Range: - t.0: 8-9 -Allocation: - t.0: t0 - -func BT.Start - in 0, out 0, callee-saves 1, spills 0 -Live In: - this: - root: 14 17-18 21-23 26-27 30-31 34-35 38-39 42-43 46-47 50-51 54-55 58-59 62-64 67-69 72-74 77-79 82-84 87-88 91-92 95 - ntb: - t.0: 63 - t.1: 68 - t.2: 73 - t.3: 78 - t.4: 83 - t.5: 96 -Linear Range: - root: 13-95 (cross call) - t.0: 62-63 - t.1: 67-68 - t.2: 72-73 - t.3: 77-78 - t.4: 82-83 - t.5: 95-96 -Allocation: - root: s0 - t.0: t0 - t.1: t0 - t.2: t0 - t.3: t0 - t.4: t0 - t.5: t0 - -func Tree.Init - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 100-102 - v_key: 100 -Linear Range: - this: 99-102 - v_key: 99-100 -Allocation: - this: t0 - v_key: t1 - -func Tree.SetRight - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 106 - rn: 106 -Linear Range: - this: 105-106 - rn: 105-106 -Allocation: - this: t0 - rn: t1 - -func Tree.SetLeft - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 110 - ln: 110 -Linear Range: - this: 109-110 - ln: 109-110 -Allocation: - this: t0 - ln: t1 - -func Tree.GetRight - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 114 - t.0: 115 -Linear Range: - this: 113-114 - t.0: 114-115 -Allocation: - this: t0 - t.0: t0 - -func Tree.GetLeft - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 118 - t.0: 119 -Linear Range: - this: 117-118 - t.0: 118-119 -Allocation: - this: t0 - t.0: t0 - -func Tree.GetKey - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 122 - t.0: 123 -Linear Range: - this: 121-122 - t.0: 122-123 -Allocation: - this: t0 - t.0: t0 - -func Tree.SetKey - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 126 - v_key: 126 -Linear Range: - this: 125-126 - v_key: 125-126 -Allocation: - this: t0 - v_key: t1 - -func Tree.GetHas_Right - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 130 - t.0: 131 -Linear Range: - this: 129-130 - t.0: 130-131 -Allocation: - this: t0 - t.0: t0 - -func Tree.GetHas_Left - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 134 - t.0: 135 -Linear Range: - this: 133-134 - t.0: 134-135 -Allocation: - this: t0 - t.0: t0 - -func Tree.SetHas_Left - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 138 - val: 138 -Linear Range: - this: 137-138 - val: 137-138 -Allocation: - this: t0 - val: t1 - -func Tree.SetHas_Right - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 142 - val: 142 -Linear Range: - this: 141-142 - val: 141-142 -Allocation: - this: t0 - val: t1 - -func Tree.Compare - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: - num1: 146-149 153 - num2: 146-148 - ntb: 151 156 161 - nti: 148-149 153 - t.0: 149 - t.1: 154 -Linear Range: - num1: 145-153 - num2: 145-148 - ntb: 150-161 - nti: 147-153 - t.0: 148-149 - t.1: 153-154 -Allocation: - num1: t0 - num2: t1 - ntb: t1 - nti: t2 - t.0: t1 - t.1: t2 - -func Tree.Insert - in 0, out 0, callee-saves 4, spills 0 -Live In: - this: 164-165 168-169 - v_key: 164-165 168-173 176-179 182-184 187-191 194-195 198-202 205-207 210-214 217-218 221-224 - new_node: 165 168-173 176-179 182-184 187-191 194-195 198-202 205-207 210-214 217-218 221-224 - ntb: - current_node: 170-173 176-179 182-184 187-191 194-195 198-202 205-207 210-214 217-218 221-224 - cont: 172-173 176-179 182-184 187-188 191 194-195 198-202 205-207 210-211 214 217-218 221-224 - key_aux: 177 - t.0: 178 - t.1: 183 - t.2: 206 -Linear Range: - this: 163-169 (cross call) - v_key: 163-224 (cross call) - new_node: 164-224 (cross call) - current_node: 169-224 (cross call) - cont: 170-224 (cross call) - key_aux: 176-177 - t.0: 177-178 - t.1: 182-183 - t.2: 205-206 -Allocation: - this: s0 - v_key: s1 - new_node: s2 - current_node: s0 - cont: s3 - key_aux: t0 - t.0: t0 - t.1: t0 - t.2: t0 - -func Tree.Delete - in 0, out 0, callee-saves 7, spills 0 -Live In: - this: 229-236 239-242 245-248 251-260 263-266 269-277 280-282 285-301 - v_key: 229-236 239-242 245-248 251-260 263-266 269-277 280-282 285-301 - current_node: 230-236 239-242 245-248 251-260 263-266 269-277 280-282 285-301 - parent_node: 231-236 239-242 245-246 248 251-260 263-264 266 269-277 280-282 285-301 - cont: 232-236 239-242 245-248 251-252 256-260 263-266 269-270 274 300-301 - found: 233-236 239-242 245-248 251-260 263-266 269-274 297-303 - is_root: 235-236 239-241 258-259 276 301 - key_aux: 240-241 258 - t.0: 241 - t.1: 246 - t.2: 259 - t.3: 264 - t.4: 281 - t.5: 286 - ntb: -Linear Range: - this: 228-301 (cross call) - v_key: 228-301 (cross call) - current_node: 229-301 (cross call) - parent_node: 230-301 (cross call) - cont: 231-301 (cross call) - found: 232-303 (cross call) - is_root: 233-301 (cross call) - key_aux: 239-258 - t.0: 240-241 - t.1: 245-246 - t.2: 258-259 - t.3: 263-264 - t.4: 280-281 - t.5: 285-286 -Allocation: - this: s0 - v_key: s1 - current_node: s2 - parent_node: s3 - cont: s4 - found: s5 - is_root: s6 - key_aux: t0 - t.0: t1 - t.1: t1 - t.2: t0 - t.3: t0 - t.4: t0 - t.5: t0 - -func Tree.Remove - in 0, out 0, callee-saves 3, spills 0 -Live In: - this: 306 309-311 314 317-319 322 325-326 329-330 333-336 339 347 350 - p_node: 306 309-311 314 317-319 322 325-326 329-330 333-336 339-341 344 347 350-352 355 - c_node: 306 309-311 314 317-319 322 325 - t.0: 310 - ntb: - t.1: 318 - auxkey1: 326 329-330 333-334 - t.2: 330 333 - auxkey2: 334 - t.3: 335 - t.4: 340 - t.5: 351 -Linear Range: - this: 305-350 (cross call) - p_node: 305-355 (cross call) - c_node: 305-325 (cross call) - t.0: 309-310 - t.1: 317-318 - auxkey1: 325-334 (cross call) - t.2: 329-333 - auxkey2: 333-334 - t.3: 334-335 - t.4: 339-340 - t.5: 350-351 -Allocation: - this: s0 - p_node: s1 - c_node: s2 - t.0: t0 - t.1: t0 - auxkey1: s2 - t.2: t0 - auxkey2: t0 - t.3: t0 - t.4: t0 - t.5: t0 - -func Tree.RemoveRight - in 0, out 0, callee-saves 3, spills 0 -Live In: - this: 363 366-368 371 374-375 378-381 384-387 390 - p_node: 363 366-367 381 384-387 390-392 395 - c_node: 363 366-368 371 374-375 378-381 384-385 - t.0: 367 - t.1: 375 378 - t.2: 379 - ntb: - t.3: 391 -Linear Range: - this: 361-390 (cross call) - p_node: 361-395 (cross call) - c_node: 361-385 (cross call) - t.0: 366-367 - t.1: 374-378 - t.2: 378-379 - t.3: 390-391 -Allocation: - this: s0 - p_node: s1 - c_node: s2 - t.0: t0 - t.1: t0 - t.2: t0 - t.3: t0 - -func Tree.RemoveLeft - in 0, out 0, callee-saves 3, spills 0 -Live In: - this: 400 403-405 408 411-412 415-418 421-424 427 - p_node: 400 403-404 418 421-424 427-429 432 - c_node: 400 403-405 408 411-412 415-418 421-422 - t.0: 404 - t.1: 412 415 - t.2: 416 - ntb: - t.3: 428 -Linear Range: - this: 398-427 (cross call) - p_node: 398-432 (cross call) - c_node: 398-422 (cross call) - t.0: 403-404 - t.1: 411-415 - t.2: 415-416 - t.3: 427-428 -Allocation: - this: s0 - p_node: s1 - c_node: s2 - t.0: t0 - t.1: t0 - t.2: t0 - t.3: t0 - -func Tree.Search - in 0, out 0, callee-saves 4, spills 0 -Live In: - this: 436 - v_key: 436-441 444-447 450-452 455-464 467-469 472-483 - current_node: 437-441 444-447 450-452 455-464 467-469 472-483 - cont: 438-441 444-447 450-452 455-456 460-464 467-469 472-473 477 483 - ifound: 440-441 444-447 450-452 455-464 467-469 472-477 480-485 - key_aux: 445-446 462 - t.0: 446 - t.1: 451 - t.2: 463 - t.3: 468 -Linear Range: - this: 435-436 - v_key: 435-483 (cross call) - current_node: 436-483 (cross call) - cont: 437-483 (cross call) - ifound: 438-485 (cross call) - key_aux: 444-462 - t.0: 445-446 - t.1: 450-451 - t.2: 462-463 - t.3: 467-468 -Allocation: - this: t0 - v_key: s0 - current_node: s1 - cont: s2 - ifound: s3 - key_aux: t0 - t.0: t1 - t.1: t1 - t.2: t0 - t.3: t0 - -func Tree.Print - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 488-489 - current_node: 489 - ntb: -Linear Range: - this: 487-489 - current_node: 488-489 -Allocation: - this: t0 - current_node: t1 - -func Tree.RecPrint - in 0, out 0, callee-saves 2, spills 0 -Live In: - this: 493 496-498 501-507 510-512 515-517 520-521 - node: 493 496-498 501-507 510-512 515-517 520 - t.0: 497 - t.1: 502 - ntb: - t.2: 511 - t.3: 516 - t.4: 521 -Linear Range: - this: 492-521 (cross call) - node: 492-520 (cross call) - t.0: 496-497 - t.1: 501-502 - t.2: 510-511 - t.3: 515-516 - t.4: 520-521 -Allocation: - this: s0 - node: s1 - t.0: t0 - t.1: t0 - t.2: t0 - t.3: t0 - t.4: t0 - diff --git a/vaporize/tests/BinaryTree.opt.vapor b/vaporize/tests/BinaryTree.opt.vapor deleted file mode 100644 index ef6ac4e..0000000 --- a/vaporize/tests/BinaryTree.opt.vapor +++ /dev/null @@ -1,526 +0,0 @@ - -const empty_BT - -const empty_Tree - - -func Main() - t.0 = call :BT.Start(:empty_BT) - PrintIntS(t.0) - ret - -func BT.Start(this) - root = HeapAllocZ(24) - if root goto :null1 - Error("null pointer") - null1: - ntb = call :Tree.Init(root 16) - if root goto :null2 - Error("null pointer") - null2: - ntb = call :Tree.Print(root) - PrintIntS(100000000) - if root goto :null3 - Error("null pointer") - null3: - ntb = call :Tree.Insert(root 8) - if root goto :null4 - Error("null pointer") - null4: - ntb = call :Tree.Print(root) - if root goto :null5 - Error("null pointer") - null5: - ntb = call :Tree.Insert(root 24) - if root goto :null6 - Error("null pointer") - null6: - ntb = call :Tree.Insert(root 4) - if root goto :null7 - Error("null pointer") - null7: - ntb = call :Tree.Insert(root 12) - if root goto :null8 - Error("null pointer") - null8: - ntb = call :Tree.Insert(root 20) - if root goto :null9 - Error("null pointer") - null9: - ntb = call :Tree.Insert(root 28) - if root goto :null10 - Error("null pointer") - null10: - ntb = call :Tree.Insert(root 14) - if root goto :null11 - Error("null pointer") - null11: - ntb = call :Tree.Print(root) - if root goto :null12 - Error("null pointer") - null12: - t.0 = call :Tree.Search(root 24) - PrintIntS(t.0) - if root goto :null13 - Error("null pointer") - null13: - t.1 = call :Tree.Search(root 12) - PrintIntS(t.1) - if root goto :null14 - Error("null pointer") - null14: - t.2 = call :Tree.Search(root 16) - PrintIntS(t.2) - if root goto :null15 - Error("null pointer") - null15: - t.3 = call :Tree.Search(root 50) - PrintIntS(t.3) - if root goto :null16 - Error("null pointer") - null16: - t.4 = call :Tree.Search(root 12) - PrintIntS(t.4) - if root goto :null17 - Error("null pointer") - null17: - ntb = call :Tree.Delete(root 12) - if root goto :null18 - Error("null pointer") - null18: - ntb = call :Tree.Print(root) - if root goto :null19 - Error("null pointer") - null19: - t.5 = call :Tree.Search(root 12) - PrintIntS(t.5) - ret 0 - -func Tree.Init(this v_key) - [this+8] = v_key - [this+12] = 0 - [this+16] = 0 - ret 1 - -func Tree.SetRight(this rn) - [this+4] = rn - ret 1 - -func Tree.SetLeft(this ln) - [this+0] = ln - ret 1 - -func Tree.GetRight(this) - t.0 = [this+4] - ret t.0 - -func Tree.GetLeft(this) - t.0 = [this+0] - ret t.0 - -func Tree.GetKey(this) - t.0 = [this+8] - ret t.0 - -func Tree.SetKey(this v_key) - [this+8] = v_key - ret 1 - -func Tree.GetHas_Right(this) - t.0 = [this+16] - ret t.0 - -func Tree.GetHas_Left(this) - t.0 = [this+12] - ret t.0 - -func Tree.SetHas_Left(this val) - [this+12] = val - ret 1 - -func Tree.SetHas_Right(this val) - [this+16] = val - ret 1 - -func Tree.Compare(this num1 num2) - ntb = 0 - nti = Add(num2 1) - t.0 = LtS(num1 num2) - if0 t.0 goto :if1_else - ntb = 0 - goto :if1_end - if1_else: - t.1 = LtS(num1 nti) - if t.1 goto :if2_else - ntb = 0 - goto :if2_end - if2_else: - ntb = 1 - if2_end: - if1_end: - ret ntb - -func Tree.Insert(this v_key) - new_node = HeapAllocZ(24) - if new_node goto :null20 - Error("null pointer") - null20: - ntb = call :Tree.Init(new_node v_key) - current_node = this - cont = 1 - while1_top: - if0 cont goto :while1_end - if current_node goto :null21 - Error("null pointer") - null21: - key_aux = call :Tree.GetKey(current_node) - t.0 = LtS(v_key key_aux) - if0 t.0 goto :if3_else - if current_node goto :null22 - Error("null pointer") - null22: - t.1 = call :Tree.GetHas_Left(current_node) - if0 t.1 goto :if4_else - if current_node goto :null23 - Error("null pointer") - null23: - current_node = call :Tree.GetLeft(current_node) - goto :if4_end - if4_else: - cont = 0 - if current_node goto :null24 - Error("null pointer") - null24: - ntb = call :Tree.SetHas_Left(current_node 1) - if current_node goto :null25 - Error("null pointer") - null25: - ntb = call :Tree.SetLeft(current_node new_node) - if4_end: - goto :if3_end - if3_else: - if current_node goto :null26 - Error("null pointer") - null26: - t.2 = call :Tree.GetHas_Right(current_node) - if0 t.2 goto :if5_else - if current_node goto :null27 - Error("null pointer") - null27: - current_node = call :Tree.GetRight(current_node) - goto :if5_end - if5_else: - cont = 0 - if current_node goto :null28 - Error("null pointer") - null28: - ntb = call :Tree.SetHas_Right(current_node 1) - if current_node goto :null29 - Error("null pointer") - null29: - ntb = call :Tree.SetRight(current_node new_node) - if5_end: - if3_end: - goto :while1_top - while1_end: - ret 1 - -func Tree.Delete(this v_key) - current_node = this - parent_node = this - cont = 1 - found = 0 - is_root = 1 - while2_top: - if0 cont goto :while2_end - if current_node goto :null30 - Error("null pointer") - null30: - key_aux = call :Tree.GetKey(current_node) - t.0 = LtS(v_key key_aux) - if0 t.0 goto :if6_else - if current_node goto :null31 - Error("null pointer") - null31: - t.1 = call :Tree.GetHas_Left(current_node) - if0 t.1 goto :if7_else - parent_node = current_node - if current_node goto :null32 - Error("null pointer") - null32: - current_node = call :Tree.GetLeft(current_node) - goto :if7_end - if7_else: - cont = 0 - if7_end: - goto :if6_end - if6_else: - t.2 = LtS(key_aux v_key) - if0 t.2 goto :if8_else - if current_node goto :null33 - Error("null pointer") - null33: - t.3 = call :Tree.GetHas_Right(current_node) - if0 t.3 goto :if9_else - parent_node = current_node - if current_node goto :null34 - Error("null pointer") - null34: - current_node = call :Tree.GetRight(current_node) - goto :if9_end - if9_else: - cont = 0 - if9_end: - goto :if8_end - if8_else: - if0 is_root goto :if10_else - if current_node goto :null35 - Error("null pointer") - null35: - t.4 = call :Tree.GetHas_Right(current_node) - if t.4 goto :if11_else - if current_node goto :null36 - Error("null pointer") - null36: - t.5 = call :Tree.GetHas_Left(current_node) - if t.5 goto :if11_else - ntb = 1 - goto :if11_end - if11_else: - ntb = call :Tree.Remove(this parent_node current_node) - if11_end: - goto :if10_end - if10_else: - ntb = call :Tree.Remove(this parent_node current_node) - if10_end: - found = 1 - cont = 0 - if8_end: - if6_end: - is_root = 0 - goto :while2_top - while2_end: - ret found - -func Tree.Remove(this p_node c_node) - if c_node goto :null37 - Error("null pointer") - null37: - t.0 = call :Tree.GetHas_Left(c_node) - if0 t.0 goto :if12_else - ntb = call :Tree.RemoveLeft(this p_node c_node) - goto :if12_end - if12_else: - if c_node goto :null38 - Error("null pointer") - null38: - t.1 = call :Tree.GetHas_Right(c_node) - if0 t.1 goto :if13_else - ntb = call :Tree.RemoveRight(this p_node c_node) - goto :if13_end - if13_else: - if c_node goto :null39 - Error("null pointer") - null39: - auxkey1 = call :Tree.GetKey(c_node) - if p_node goto :null40 - Error("null pointer") - null40: - t.2 = call :Tree.GetLeft(p_node) - if t.2 goto :null41 - Error("null pointer") - null41: - auxkey2 = call :Tree.GetKey(t.2) - t.3 = call :Tree.Compare(this auxkey1 auxkey2) - if0 t.3 goto :if14_else - if p_node goto :null42 - Error("null pointer") - null42: - t.4 = [this+20] - ntb = call :Tree.SetLeft(p_node t.4) - if p_node goto :null43 - Error("null pointer") - null43: - ntb = call :Tree.SetHas_Left(p_node 0) - goto :if14_end - if14_else: - if p_node goto :null44 - Error("null pointer") - null44: - t.5 = [this+20] - ntb = call :Tree.SetRight(p_node t.5) - if p_node goto :null45 - Error("null pointer") - null45: - ntb = call :Tree.SetHas_Right(p_node 0) - if14_end: - if13_end: - if12_end: - ret 1 - -func Tree.RemoveRight(this p_node c_node) - while3_top: - if c_node goto :null46 - Error("null pointer") - null46: - t.0 = call :Tree.GetHas_Right(c_node) - if0 t.0 goto :while3_end - if c_node goto :null47 - Error("null pointer") - null47: - if c_node goto :null48 - Error("null pointer") - null48: - t.1 = call :Tree.GetRight(c_node) - if t.1 goto :null49 - Error("null pointer") - null49: - t.2 = call :Tree.GetKey(t.1) - ntb = call :Tree.SetKey(c_node t.2) - p_node = c_node - if c_node goto :null50 - Error("null pointer") - null50: - c_node = call :Tree.GetRight(c_node) - goto :while3_top - while3_end: - if p_node goto :null51 - Error("null pointer") - null51: - t.3 = [this+20] - ntb = call :Tree.SetRight(p_node t.3) - if p_node goto :null52 - Error("null pointer") - null52: - ntb = call :Tree.SetHas_Right(p_node 0) - ret 1 - -func Tree.RemoveLeft(this p_node c_node) - while4_top: - if c_node goto :null53 - Error("null pointer") - null53: - t.0 = call :Tree.GetHas_Left(c_node) - if0 t.0 goto :while4_end - if c_node goto :null54 - Error("null pointer") - null54: - if c_node goto :null55 - Error("null pointer") - null55: - t.1 = call :Tree.GetLeft(c_node) - if t.1 goto :null56 - Error("null pointer") - null56: - t.2 = call :Tree.GetKey(t.1) - ntb = call :Tree.SetKey(c_node t.2) - p_node = c_node - if c_node goto :null57 - Error("null pointer") - null57: - c_node = call :Tree.GetLeft(c_node) - goto :while4_top - while4_end: - if p_node goto :null58 - Error("null pointer") - null58: - t.3 = [this+20] - ntb = call :Tree.SetLeft(p_node t.3) - if p_node goto :null59 - Error("null pointer") - null59: - ntb = call :Tree.SetHas_Left(p_node 0) - ret 1 - -func Tree.Search(this v_key) - current_node = this - cont = 1 - ifound = 0 - while5_top: - if0 cont goto :while5_end - if current_node goto :null60 - Error("null pointer") - null60: - key_aux = call :Tree.GetKey(current_node) - t.0 = LtS(v_key key_aux) - if0 t.0 goto :if15_else - if current_node goto :null61 - Error("null pointer") - null61: - t.1 = call :Tree.GetHas_Left(current_node) - if0 t.1 goto :if16_else - if current_node goto :null62 - Error("null pointer") - null62: - current_node = call :Tree.GetLeft(current_node) - goto :if16_end - if16_else: - cont = 0 - if16_end: - goto :if15_end - if15_else: - t.2 = LtS(key_aux v_key) - if0 t.2 goto :if17_else - if current_node goto :null63 - Error("null pointer") - null63: - t.3 = call :Tree.GetHas_Right(current_node) - if0 t.3 goto :if18_else - if current_node goto :null64 - Error("null pointer") - null64: - current_node = call :Tree.GetRight(current_node) - goto :if18_end - if18_else: - cont = 0 - if18_end: - goto :if17_end - if17_else: - ifound = 1 - cont = 0 - if17_end: - if15_end: - goto :while5_top - while5_end: - ret ifound - -func Tree.Print(this) - current_node = this - ntb = call :Tree.RecPrint(this current_node) - ret 1 - -func Tree.RecPrint(this node) - if node goto :null65 - Error("null pointer") - null65: - t.0 = call :Tree.GetHas_Left(node) - if0 t.0 goto :if19_else - if node goto :null66 - Error("null pointer") - null66: - t.1 = call :Tree.GetLeft(node) - ntb = call :Tree.RecPrint(this t.1) - goto :if19_end - if19_else: - ntb = 1 - if19_end: - if node goto :null67 - Error("null pointer") - null67: - t.2 = call :Tree.GetKey(node) - PrintIntS(t.2) - if node goto :null68 - Error("null pointer") - null68: - t.3 = call :Tree.GetHas_Right(node) - if0 t.3 goto :if20_else - if node goto :null69 - Error("null pointer") - null69: - t.4 = call :Tree.GetRight(node) - ntb = call :Tree.RecPrint(this t.4) - goto :if20_end - if20_else: - ntb = 1 - if20_end: - ret 1 diff --git a/vaporize/tests/BinaryTree.opt.vaporm b/vaporize/tests/BinaryTree.opt.vaporm deleted file mode 100644 index f3bee43..0000000 --- a/vaporize/tests/BinaryTree.opt.vaporm +++ /dev/null @@ -1,797 +0,0 @@ -const empty_BT - -const empty_Tree - -func Main [in 0, out 0, local 0] - $a0 = :empty_BT - call :BT.Start - $t0 = $v0 - PrintIntS($t0) - ret - -func BT.Start [in 0, out 0, local 1] - local[0] = $s0 - $s0 = HeapAllocZ(24) - if $s0 goto :null1 - Error("null pointer") -null1: - $a0 = $s0 - $a1 = 16 - call :Tree.Init - if $s0 goto :null2 - Error("null pointer") -null2: - $a0 = $s0 - call :Tree.Print - PrintIntS(100000000) - if $s0 goto :null3 - Error("null pointer") -null3: - $a0 = $s0 - $a1 = 8 - call :Tree.Insert - if $s0 goto :null4 - Error("null pointer") -null4: - $a0 = $s0 - call :Tree.Print - if $s0 goto :null5 - Error("null pointer") -null5: - $a0 = $s0 - $a1 = 24 - call :Tree.Insert - if $s0 goto :null6 - Error("null pointer") -null6: - $a0 = $s0 - $a1 = 4 - call :Tree.Insert - if $s0 goto :null7 - Error("null pointer") -null7: - $a0 = $s0 - $a1 = 12 - call :Tree.Insert - if $s0 goto :null8 - Error("null pointer") -null8: - $a0 = $s0 - $a1 = 20 - call :Tree.Insert - if $s0 goto :null9 - Error("null pointer") -null9: - $a0 = $s0 - $a1 = 28 - call :Tree.Insert - if $s0 goto :null10 - Error("null pointer") -null10: - $a0 = $s0 - $a1 = 14 - call :Tree.Insert - if $s0 goto :null11 - Error("null pointer") -null11: - $a0 = $s0 - call :Tree.Print - if $s0 goto :null12 - Error("null pointer") -null12: - $a0 = $s0 - $a1 = 24 - call :Tree.Search - $t0 = $v0 - PrintIntS($t0) - if $s0 goto :null13 - Error("null pointer") -null13: - $a0 = $s0 - $a1 = 12 - call :Tree.Search - $t0 = $v0 - PrintIntS($t0) - if $s0 goto :null14 - Error("null pointer") -null14: - $a0 = $s0 - $a1 = 16 - call :Tree.Search - $t0 = $v0 - PrintIntS($t0) - if $s0 goto :null15 - Error("null pointer") -null15: - $a0 = $s0 - $a1 = 50 - call :Tree.Search - $t0 = $v0 - PrintIntS($t0) - if $s0 goto :null16 - Error("null pointer") -null16: - $a0 = $s0 - $a1 = 12 - call :Tree.Search - $t0 = $v0 - PrintIntS($t0) - if $s0 goto :null17 - Error("null pointer") -null17: - $a0 = $s0 - $a1 = 12 - call :Tree.Delete - if $s0 goto :null18 - Error("null pointer") -null18: - $a0 = $s0 - call :Tree.Print - if $s0 goto :null19 - Error("null pointer") -null19: - $a0 = $s0 - $a1 = 12 - call :Tree.Search - $t0 = $v0 - PrintIntS($t0) - $v0 = 0 - $s0 = local[0] - ret - -func Tree.Init [in 0, out 0, local 0] - $t0 = $a0 - $t1 = $a1 - [$t0+8] = $t1 - [$t0+12] = 0 - [$t0+16] = 0 - $v0 = 1 - ret - -func Tree.SetRight [in 0, out 0, local 0] - $t0 = $a0 - $t1 = $a1 - [$t0+4] = $t1 - $v0 = 1 - ret - -func Tree.SetLeft [in 0, out 0, local 0] - $t0 = $a0 - $t1 = $a1 - [$t0] = $t1 - $v0 = 1 - ret - -func Tree.GetRight [in 0, out 0, local 0] - $t0 = $a0 - $t0 = [$t0+4] - $v0 = $t0 - ret - -func Tree.GetLeft [in 0, out 0, local 0] - $t0 = $a0 - $t0 = [$t0] - $v0 = $t0 - ret - -func Tree.GetKey [in 0, out 0, local 0] - $t0 = $a0 - $t0 = [$t0+8] - $v0 = $t0 - ret - -func Tree.SetKey [in 0, out 0, local 0] - $t0 = $a0 - $t1 = $a1 - [$t0+8] = $t1 - $v0 = 1 - ret - -func Tree.GetHas_Right [in 0, out 0, local 0] - $t0 = $a0 - $t0 = [$t0+16] - $v0 = $t0 - ret - -func Tree.GetHas_Left [in 0, out 0, local 0] - $t0 = $a0 - $t0 = [$t0+12] - $v0 = $t0 - ret - -func Tree.SetHas_Left [in 0, out 0, local 0] - $t0 = $a0 - $t1 = $a1 - [$t0+12] = $t1 - $v0 = 1 - ret - -func Tree.SetHas_Right [in 0, out 0, local 0] - $t0 = $a0 - $t1 = $a1 - [$t0+16] = $t1 - $v0 = 1 - ret - -func Tree.Compare [in 0, out 0, local 0] - $t0 = $a1 - $t1 = $a2 - $t2 = Add($t1 1) - $t1 = LtS($t0 $t1) - if0 $t1 goto :if1_else - $t1 = 0 - goto :if1_end -if1_else: - $t2 = LtS($t0 $t2) - if $t2 goto :if2_else - $t1 = 0 - goto :if2_end -if2_else: - $t1 = 1 -if2_end: -if1_end: - $v0 = $t1 - ret - -func Tree.Insert [in 0, out 0, local 4] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - local[3] = $s3 - $s0 = $a0 - $s1 = $a1 - $s2 = HeapAllocZ(24) - if $s2 goto :null20 - Error("null pointer") -null20: - $a0 = $s2 - $a1 = $s1 - call :Tree.Init - $s0 = $s0 - $s3 = 1 -while1_top: - if0 $s3 goto :while1_end - if $s0 goto :null21 - Error("null pointer") -null21: - $a0 = $s0 - call :Tree.GetKey - $t0 = $v0 - $t0 = LtS($s1 $t0) - if0 $t0 goto :if3_else - if $s0 goto :null22 - Error("null pointer") -null22: - $a0 = $s0 - call :Tree.GetHas_Left - $t0 = $v0 - if0 $t0 goto :if4_else - if $s0 goto :null23 - Error("null pointer") -null23: - $a0 = $s0 - call :Tree.GetLeft - $s0 = $v0 - goto :if4_end -if4_else: - $s3 = 0 - if $s0 goto :null24 - Error("null pointer") -null24: - $a0 = $s0 - $a1 = 1 - call :Tree.SetHas_Left - if $s0 goto :null25 - Error("null pointer") -null25: - $a0 = $s0 - $a1 = $s2 - call :Tree.SetLeft -if4_end: - goto :if3_end -if3_else: - if $s0 goto :null26 - Error("null pointer") -null26: - $a0 = $s0 - call :Tree.GetHas_Right - $t0 = $v0 - if0 $t0 goto :if5_else - if $s0 goto :null27 - Error("null pointer") -null27: - $a0 = $s0 - call :Tree.GetRight - $s0 = $v0 - goto :if5_end -if5_else: - $s3 = 0 - if $s0 goto :null28 - Error("null pointer") -null28: - $a0 = $s0 - $a1 = 1 - call :Tree.SetHas_Right - if $s0 goto :null29 - Error("null pointer") -null29: - $a0 = $s0 - $a1 = $s2 - call :Tree.SetRight -if5_end: -if3_end: - goto :while1_top -while1_end: - $v0 = 1 - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - $s3 = local[3] - ret - -func Tree.Delete [in 0, out 0, local 7] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - local[3] = $s3 - local[4] = $s4 - local[5] = $s5 - local[6] = $s6 - $s0 = $a0 - $s1 = $a1 - $s2 = $s0 - $s3 = $s0 - $s4 = 1 - $s5 = 0 - $s6 = 1 -while2_top: - if0 $s4 goto :while2_end - if $s2 goto :null30 - Error("null pointer") -null30: - $a0 = $s2 - call :Tree.GetKey - $t0 = $v0 - $t1 = LtS($s1 $t0) - if0 $t1 goto :if6_else - if $s2 goto :null31 - Error("null pointer") -null31: - $a0 = $s2 - call :Tree.GetHas_Left - $t1 = $v0 - if0 $t1 goto :if7_else - $s3 = $s2 - if $s2 goto :null32 - Error("null pointer") -null32: - $a0 = $s2 - call :Tree.GetLeft - $s2 = $v0 - goto :if7_end -if7_else: - $s4 = 0 -if7_end: - goto :if6_end -if6_else: - $t0 = LtS($t0 $s1) - if0 $t0 goto :if8_else - if $s2 goto :null33 - Error("null pointer") -null33: - $a0 = $s2 - call :Tree.GetHas_Right - $t0 = $v0 - if0 $t0 goto :if9_else - $s3 = $s2 - if $s2 goto :null34 - Error("null pointer") -null34: - $a0 = $s2 - call :Tree.GetRight - $s2 = $v0 - goto :if9_end -if9_else: - $s4 = 0 -if9_end: - goto :if8_end -if8_else: - if0 $s6 goto :if10_else - if $s2 goto :null35 - Error("null pointer") -null35: - $a0 = $s2 - call :Tree.GetHas_Right - $t0 = $v0 - if $t0 goto :if11_else - if $s2 goto :null36 - Error("null pointer") -null36: - $a0 = $s2 - call :Tree.GetHas_Left - $t0 = $v0 - if $t0 goto :if11_else - goto :if11_end -if11_else: - $a0 = $s0 - $a1 = $s3 - $a2 = $s2 - call :Tree.Remove -if11_end: - goto :if10_end -if10_else: - $a0 = $s0 - $a1 = $s3 - $a2 = $s2 - call :Tree.Remove -if10_end: - $s5 = 1 - $s4 = 0 -if8_end: -if6_end: - $s6 = 0 - goto :while2_top -while2_end: - $v0 = $s5 - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - $s3 = local[3] - $s4 = local[4] - $s5 = local[5] - $s6 = local[6] - ret - -func Tree.Remove [in 0, out 0, local 3] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - $s0 = $a0 - $s1 = $a1 - $s2 = $a2 - if $s2 goto :null37 - Error("null pointer") -null37: - $a0 = $s2 - call :Tree.GetHas_Left - $t0 = $v0 - if0 $t0 goto :if12_else - $a0 = $s0 - $a1 = $s1 - $a2 = $s2 - call :Tree.RemoveLeft - goto :if12_end -if12_else: - if $s2 goto :null38 - Error("null pointer") -null38: - $a0 = $s2 - call :Tree.GetHas_Right - $t0 = $v0 - if0 $t0 goto :if13_else - $a0 = $s0 - $a1 = $s1 - $a2 = $s2 - call :Tree.RemoveRight - goto :if13_end -if13_else: - if $s2 goto :null39 - Error("null pointer") -null39: - $a0 = $s2 - call :Tree.GetKey - $s2 = $v0 - if $s1 goto :null40 - Error("null pointer") -null40: - $a0 = $s1 - call :Tree.GetLeft - $t0 = $v0 - if $t0 goto :null41 - Error("null pointer") -null41: - $a0 = $t0 - call :Tree.GetKey - $t0 = $v0 - $a0 = $s0 - $a1 = $s2 - $a2 = $t0 - call :Tree.Compare - $t0 = $v0 - if0 $t0 goto :if14_else - if $s1 goto :null42 - Error("null pointer") -null42: - $t0 = [$s0+20] - $a0 = $s1 - $a1 = $t0 - call :Tree.SetLeft - if $s1 goto :null43 - Error("null pointer") -null43: - $a0 = $s1 - $a1 = 0 - call :Tree.SetHas_Left - goto :if14_end -if14_else: - if $s1 goto :null44 - Error("null pointer") -null44: - $t0 = [$s0+20] - $a0 = $s1 - $a1 = $t0 - call :Tree.SetRight - if $s1 goto :null45 - Error("null pointer") -null45: - $a0 = $s1 - $a1 = 0 - call :Tree.SetHas_Right -if14_end: -if13_end: -if12_end: - $v0 = 1 - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - ret - -func Tree.RemoveRight [in 0, out 0, local 3] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - $s0 = $a0 - $s1 = $a1 - $s2 = $a2 -while3_top: - if $s2 goto :null46 - Error("null pointer") -null46: - $a0 = $s2 - call :Tree.GetHas_Right - $t0 = $v0 - if0 $t0 goto :while3_end - if $s2 goto :null47 - Error("null pointer") -null47: - if $s2 goto :null48 - Error("null pointer") -null48: - $a0 = $s2 - call :Tree.GetRight - $t0 = $v0 - if $t0 goto :null49 - Error("null pointer") -null49: - $a0 = $t0 - call :Tree.GetKey - $t0 = $v0 - $a0 = $s2 - $a1 = $t0 - call :Tree.SetKey - $s1 = $s2 - if $s2 goto :null50 - Error("null pointer") -null50: - $a0 = $s2 - call :Tree.GetRight - $s2 = $v0 - goto :while3_top -while3_end: - if $s1 goto :null51 - Error("null pointer") -null51: - $t0 = [$s0+20] - $a0 = $s1 - $a1 = $t0 - call :Tree.SetRight - if $s1 goto :null52 - Error("null pointer") -null52: - $a0 = $s1 - $a1 = 0 - call :Tree.SetHas_Right - $v0 = 1 - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - ret - -func Tree.RemoveLeft [in 0, out 0, local 3] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - $s0 = $a0 - $s1 = $a1 - $s2 = $a2 -while4_top: - if $s2 goto :null53 - Error("null pointer") -null53: - $a0 = $s2 - call :Tree.GetHas_Left - $t0 = $v0 - if0 $t0 goto :while4_end - if $s2 goto :null54 - Error("null pointer") -null54: - if $s2 goto :null55 - Error("null pointer") -null55: - $a0 = $s2 - call :Tree.GetLeft - $t0 = $v0 - if $t0 goto :null56 - Error("null pointer") -null56: - $a0 = $t0 - call :Tree.GetKey - $t0 = $v0 - $a0 = $s2 - $a1 = $t0 - call :Tree.SetKey - $s1 = $s2 - if $s2 goto :null57 - Error("null pointer") -null57: - $a0 = $s2 - call :Tree.GetLeft - $s2 = $v0 - goto :while4_top -while4_end: - if $s1 goto :null58 - Error("null pointer") -null58: - $t0 = [$s0+20] - $a0 = $s1 - $a1 = $t0 - call :Tree.SetLeft - if $s1 goto :null59 - Error("null pointer") -null59: - $a0 = $s1 - $a1 = 0 - call :Tree.SetHas_Left - $v0 = 1 - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - ret - -func Tree.Search [in 0, out 0, local 4] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - local[3] = $s3 - $t0 = $a0 - $s0 = $a1 - $s1 = $t0 - $s2 = 1 - $s3 = 0 -while5_top: - if0 $s2 goto :while5_end - if $s1 goto :null60 - Error("null pointer") -null60: - $a0 = $s1 - call :Tree.GetKey - $t0 = $v0 - $t1 = LtS($s0 $t0) - if0 $t1 goto :if15_else - if $s1 goto :null61 - Error("null pointer") -null61: - $a0 = $s1 - call :Tree.GetHas_Left - $t1 = $v0 - if0 $t1 goto :if16_else - if $s1 goto :null62 - Error("null pointer") -null62: - $a0 = $s1 - call :Tree.GetLeft - $s1 = $v0 - goto :if16_end -if16_else: - $s2 = 0 -if16_end: - goto :if15_end -if15_else: - $t0 = LtS($t0 $s0) - if0 $t0 goto :if17_else - if $s1 goto :null63 - Error("null pointer") -null63: - $a0 = $s1 - call :Tree.GetHas_Right - $t0 = $v0 - if0 $t0 goto :if18_else - if $s1 goto :null64 - Error("null pointer") -null64: - $a0 = $s1 - call :Tree.GetRight - $s1 = $v0 - goto :if18_end -if18_else: - $s2 = 0 -if18_end: - goto :if17_end -if17_else: - $s3 = 1 - $s2 = 0 -if17_end: -if15_end: - goto :while5_top -while5_end: - $v0 = $s3 - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - $s3 = local[3] - ret - -func Tree.Print [in 0, out 0, local 0] - $t0 = $a0 - $t1 = $t0 - $a0 = $t0 - $a1 = $t1 - call :Tree.RecPrint - $v0 = 1 - ret - -func Tree.RecPrint [in 0, out 0, local 2] - local[0] = $s0 - local[1] = $s1 - $s0 = $a0 - $s1 = $a1 - if $s1 goto :null65 - Error("null pointer") -null65: - $a0 = $s1 - call :Tree.GetHas_Left - $t0 = $v0 - if0 $t0 goto :if19_else - if $s1 goto :null66 - Error("null pointer") -null66: - $a0 = $s1 - call :Tree.GetLeft - $t0 = $v0 - $a0 = $s0 - $a1 = $t0 - call :Tree.RecPrint - goto :if19_end -if19_else: -if19_end: - if $s1 goto :null67 - Error("null pointer") -null67: - $a0 = $s1 - call :Tree.GetKey - $t0 = $v0 - PrintIntS($t0) - if $s1 goto :null68 - Error("null pointer") -null68: - $a0 = $s1 - call :Tree.GetHas_Right - $t0 = $v0 - if0 $t0 goto :if20_else - if $s1 goto :null69 - Error("null pointer") -null69: - $a0 = $s1 - call :Tree.GetRight - $t0 = $v0 - $a0 = $s0 - $a1 = $t0 - call :Tree.RecPrint - goto :if20_end -if20_else: -if20_end: - $v0 = 1 - $s0 = local[0] - $s1 = local[1] - ret - diff --git a/vaporize/tests/BinaryTree.regalloc b/vaporize/tests/BinaryTree.regalloc deleted file mode 100644 index 68a8265..0000000 --- a/vaporize/tests/BinaryTree.regalloc +++ /dev/null @@ -1,703 +0,0 @@ -func Main - in 0, out 0, callee-saves 0, spills 0 -Live In: - t.0: 30-31 34-36 - t.1: 35-36 - t.2: 37 -Linear Range: - t.0: 29-36 - t.1: 34-36 - t.2: 36-37 -Allocation: - t.0: t0 - t.1: t1 - t.2: t1 - -func BT.Start - in 0, out 0, callee-saves 1, spills 0 -Live In: - this: - t.0: 42-43 - root: 44 47-50 53-57 60-63 66-69 72-75 78-81 84-87 90-93 96-99 102-105 108-111 114-118 121-125 128-132 135-139 142-146 149-152 155-158 161-163 - t.1: 48-49 - ntb: - t.2: 54-55 - t.3: 61-62 - t.4: 67-68 - t.5: 73-74 - t.6: 79-80 - t.7: 85-86 - t.8: 91-92 - t.9: 97-98 - t.10: 103-104 - t.11: 109-110 - t.12: 115-116 - t.13: 117 - t.14: 122-123 - t.15: 124 - t.16: 129-130 - t.17: 131 - t.18: 136-137 - t.19: 138 - t.20: 143-144 - t.21: 145 - t.22: 150-151 - t.23: 156-157 - t.24: 162-163 - t.25: 164 -Linear Range: - t.0: 41-43 - root: 43-163 (cross call) - t.1: 47-49 - t.2: 53-55 - t.3: 60-62 - t.4: 66-68 - t.5: 72-74 - t.6: 78-80 - t.7: 84-86 - t.8: 90-92 - t.9: 96-98 - t.10: 102-104 - t.11: 108-110 - t.12: 114-116 - t.13: 116-117 - t.14: 121-123 - t.15: 123-124 - t.16: 128-130 - t.17: 130-131 - t.18: 135-137 - t.19: 137-138 - t.20: 142-144 - t.21: 144-145 - t.22: 149-151 - t.23: 155-157 - t.24: 161-163 - t.25: 163-164 -Allocation: - t.0: t0 - root: s0 - t.1: t0 - t.2: t0 - t.3: t0 - t.4: t0 - t.5: t0 - t.6: t0 - t.7: t0 - t.8: t0 - t.9: t0 - t.10: t0 - t.11: t0 - t.12: t0 - t.13: t0 - t.14: t0 - t.15: t0 - t.16: t0 - t.17: t0 - t.18: t0 - t.19: t0 - t.20: t0 - t.21: t0 - t.22: t0 - t.23: t0 - t.24: t0 - t.25: t0 - -func Tree.Init - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 168-170 - v_key: 168 -Linear Range: - this: 167-170 - v_key: 167-168 -Allocation: - this: t0 - v_key: t1 - -func Tree.SetRight - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 174 - rn: 174 -Linear Range: - this: 173-174 - rn: 173-174 -Allocation: - this: t0 - rn: t1 - -func Tree.SetLeft - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 178 - ln: 178 -Linear Range: - this: 177-178 - ln: 177-178 -Allocation: - this: t0 - ln: t1 - -func Tree.GetRight - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 182 - t.0: 183 -Linear Range: - this: 181-182 - t.0: 182-183 -Allocation: - this: t0 - t.0: t0 - -func Tree.GetLeft - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 186 - t.0: 187 -Linear Range: - this: 185-186 - t.0: 186-187 -Allocation: - this: t0 - t.0: t0 - -func Tree.GetKey - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 190 - t.0: 191 -Linear Range: - this: 189-190 - t.0: 190-191 -Allocation: - this: t0 - t.0: t0 - -func Tree.SetKey - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 194 - v_key: 194 -Linear Range: - this: 193-194 - v_key: 193-194 -Allocation: - this: t0 - v_key: t1 - -func Tree.GetHas_Right - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 198 - t.0: 199 -Linear Range: - this: 197-198 - t.0: 198-199 -Allocation: - this: t0 - t.0: t0 - -func Tree.GetHas_Left - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 202 - t.0: 203 -Linear Range: - this: 201-202 - t.0: 202-203 -Allocation: - this: t0 - t.0: t0 - -func Tree.SetHas_Left - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 206 - val: 206 -Linear Range: - this: 205-206 - val: 205-206 -Allocation: - this: t0 - val: t1 - -func Tree.SetHas_Right - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 210 - val: 210 -Linear Range: - this: 209-210 - val: 209-210 -Allocation: - this: t0 - val: t1 - -func Tree.Compare - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: - num1: 214-217 221 - num2: 214-216 - ntb: 219 225 230 - nti: 216-217 221 - t.0: 217 - t.1: 222 - t.2: 223 -Linear Range: - num1: 213-221 - num2: 213-216 - ntb: 218-230 - nti: 215-221 - t.0: 216-217 - t.1: 221-222 - t.2: 222-223 -Allocation: - num1: t0 - num2: t1 - ntb: t1 - nti: t2 - t.0: t1 - t.1: t2 - t.2: t2 - -func Tree.Insert - in 0, out 0, callee-saves 4, spills 0 -Live In: - this: 233-236 239-242 - v_key: 233-236 239-246 249-254 257-261 264-270 273-276 279-285 288-292 295-301 304-307 310-315 - t.0: 234-235 - new_node: 236 239-246 249-254 257-261 264-270 273-276 279-285 288-292 295-301 304-307 310-315 - t.1: 240-241 - ntb: - current_node: 243-246 249-254 257-261 264-270 273-276 279-285 288-292 295-301 304-307 310-315 - cont: 245-246 249-254 257-261 264-267 270 273-276 279-285 288-292 295-298 301 304-307 310-315 - t.2: 250-251 - key_aux: 252 - t.3: 253 - t.4: 258-259 - t.5: 260 - t.6: 265-266 - t.7: 274-275 - t.8: 280-281 - t.9: 289-290 - t.10: 291 - t.11: 296-297 - t.12: 305-306 - t.13: 311-312 -Linear Range: - this: 232-242 (cross call) - v_key: 232-315 (cross call) - t.0: 233-235 - new_node: 235-315 (cross call) - t.1: 239-241 - current_node: 242-315 (cross call) - cont: 243-315 (cross call) - t.2: 249-251 - key_aux: 251-252 - t.3: 252-253 - t.4: 257-259 - t.5: 259-260 - t.6: 264-266 - t.7: 273-275 - t.8: 279-281 - t.9: 288-290 - t.10: 290-291 - t.11: 295-297 - t.12: 304-306 - t.13: 310-312 -Allocation: - this: s0 - v_key: s1 - t.0: t0 - new_node: s2 - t.1: t0 - current_node: s0 - cont: s3 - t.2: t0 - key_aux: t0 - t.3: t0 - t.4: t0 - t.5: t0 - t.6: t0 - t.7: t0 - t.8: t0 - t.9: t0 - t.10: t0 - t.11: t0 - t.12: t0 - t.13: t0 - -func Tree.Delete - in 0, out 0, callee-saves 7, spills 0 -Live In: - this: 320-327 330-335 338-343 346-357 360-365 368-378 381-386 389-416 - v_key: 320-327 330-335 338-343 346-357 360-365 368-378 381-386 389-416 - current_node: 321-327 330-335 338-343 346-357 360-365 368-378 381-386 389-416 - parent_node: 322-327 330-335 338-341 343 346-357 360-363 365 368-378 381-386 389-416 - cont: 323-327 330-335 338-343 346-349 353-357 360-365 368-371 375 415-416 - found: 324-327 330-335 338-343 346-357 360-365 368-375 412-418 - is_root: 326-327 330-334 355-356 377 416 - t.0: 331-332 - key_aux: 333-334 355 - t.1: 334 - t.2: 339-340 - t.3: 341 - t.4: 347-348 - t.5: 356 - t.6: 361-362 - t.7: 363 - t.8: 369-370 - t.10: 382-383 - t.11: 384 - t.12: 385 - t.13: 390-391 - t.14: 392 - t.9: 393 397 - ntb: - t.15: 402-403 - t.16: 408-409 -Linear Range: - this: 319-416 (cross call) - v_key: 319-416 (cross call) - current_node: 320-416 (cross call) - parent_node: 321-416 (cross call) - cont: 322-416 (cross call) - found: 323-418 (cross call) - is_root: 324-416 (cross call) - t.0: 330-332 - key_aux: 332-355 - t.1: 333-334 - t.2: 338-340 - t.3: 340-341 - t.4: 346-348 - t.5: 355-356 - t.6: 360-362 - t.7: 362-363 - t.8: 368-370 - t.10: 381-383 - t.11: 383-384 - t.12: 384-385 - t.13: 389-391 - t.14: 391-392 - t.9: 392-397 - t.15: 401-403 - t.16: 407-409 -Allocation: - this: s0 - v_key: s1 - current_node: s2 - parent_node: s3 - cont: s4 - found: s5 - is_root: s6 - t.0: t0 - key_aux: t0 - t.1: t1 - t.2: t1 - t.3: t1 - t.4: t1 - t.5: t0 - t.6: t0 - t.7: t0 - t.8: t0 - t.10: t0 - t.11: t0 - t.12: t0 - t.13: t0 - t.14: t0 - t.9: t0 - t.15: t0 - t.16: t0 - -func Tree.Remove - in 0, out 0, callee-saves 3, spills 0 -Live In: - this: 421 424-430 433 436-442 445 448-451 454-457 460-467 470-472 482 485-487 - p_node: 421 424-430 433 436-442 445 448-451 454-457 460-467 470-474 477-479 482 485-489 492-494 - c_node: 421 424-430 433 436-442 445 448-450 - t.0: 425-426 - t.1: 427 - t.2: 429-430 - ntb: - t.3: 437-438 - t.4: 439 - t.5: 441-442 - t.6: 449-450 - auxkey1: 451 454-457 460-465 - t.7: 455-456 - t.8: 457 460-462 - t.9: 461-462 - auxkey2: 463-465 - t.10: 464-465 - t.11: 466 - t.12: 471-473 - t.13: 473 - t.14: 478-479 - t.15: 486-488 - t.16: 488 - t.17: 493-494 -Linear Range: - this: 420-487 (cross call) - p_node: 420-494 (cross call) - c_node: 420-450 (cross call) - t.0: 424-426 - t.1: 426-427 - t.2: 428-430 - t.3: 436-438 - t.4: 438-439 - t.5: 440-442 - t.6: 448-450 - auxkey1: 450-465 (cross call) - t.7: 454-456 - t.8: 456-462 - t.9: 460-462 - auxkey2: 462-465 - t.10: 463-465 - t.11: 465-466 - t.12: 470-473 - t.13: 472-473 - t.14: 477-479 - t.15: 485-488 - t.16: 487-488 - t.17: 492-494 -Allocation: - this: s0 - p_node: s1 - c_node: s2 - t.0: t0 - t.1: t0 - t.2: t0 - t.3: t0 - t.4: t0 - t.5: t0 - t.6: t0 - auxkey1: s2 - t.7: t0 - t.8: t0 - t.9: t1 - auxkey2: t1 - t.10: t0 - t.11: t0 - t.12: t0 - t.13: t1 - t.14: t1 - t.15: t1 - t.16: t0 - t.17: t0 - -func Tree.RemoveRight - in 0, out 0, callee-saves 4, spills 0 -Live In: - this: 502 505-509 512-514 517-520 523-528 531-536 539-541 - p_node: 502 505-508 528 531-536 539-543 546-548 - c_node: 502 505-509 512-514 517-520 523-528 531-534 - t.0: 506-507 - t.1: 508 - t.2: 513-514 517-520 523-526 - t.3: 518-519 - t.4: 520 523-525 - t.5: 524-525 - t.6: 526 - ntb: - t.7: 532-533 - t.8: 540-542 - t.9: 542 - t.10: 547-548 -Linear Range: - this: 500-541 (cross call) - p_node: 500-548 (cross call) - c_node: 500-534 (cross call) - t.0: 505-507 - t.1: 507-508 - t.2: 512-526 (cross call) - t.3: 517-519 - t.4: 519-525 - t.5: 523-525 - t.6: 525-526 - t.7: 531-533 - t.8: 539-542 - t.9: 541-542 - t.10: 546-548 -Allocation: - this: s0 - p_node: s1 - c_node: s2 - t.0: t0 - t.1: t0 - t.2: s3 - t.3: t0 - t.4: t0 - t.5: t1 - t.6: t1 - t.7: t1 - t.8: t1 - t.9: t0 - t.10: t0 - -func Tree.RemoveLeft - in 0, out 0, callee-saves 4, spills 0 -Live In: - this: 553 556-560 563-565 568-571 574-579 582-587 590-592 - p_node: 553 556-559 579 582-587 590-594 597-599 - c_node: 553 556-560 563-565 568-571 574-579 582-585 - t.0: 557-558 - t.1: 559 - t.2: 564-565 568-571 574-577 - t.3: 569-570 - t.4: 571 574-576 - t.5: 575-576 - t.6: 577 - ntb: - t.7: 583-584 - t.8: 591-593 - t.9: 593 - t.10: 598-599 -Linear Range: - this: 551-592 (cross call) - p_node: 551-599 (cross call) - c_node: 551-585 (cross call) - t.0: 556-558 - t.1: 558-559 - t.2: 563-577 (cross call) - t.3: 568-570 - t.4: 570-576 - t.5: 574-576 - t.6: 576-577 - t.7: 582-584 - t.8: 590-593 - t.9: 592-593 - t.10: 597-599 -Allocation: - this: s0 - p_node: s1 - c_node: s2 - t.0: t0 - t.1: t0 - t.2: s3 - t.3: t0 - t.4: t0 - t.5: t1 - t.6: t1 - t.7: t1 - t.8: t1 - t.9: t0 - t.10: t0 - -func Tree.Search - in 0, out 0, callee-saves 4, spills 0 -Live In: - this: 603 - v_key: 603-608 611-616 619-623 626-637 640-644 647-660 - current_node: 604-608 611-616 619-623 626-637 640-644 647-660 - cont: 605-608 611-616 619-623 626-629 633-637 640-644 647-650 654 660 - ifound: 607-608 611-616 619-623 626-637 640-644 647-654 657-662 - t.0: 612-613 - key_aux: 614-615 635 - t.1: 615 - t.2: 620-621 - t.3: 622 - t.4: 627-628 - t.5: 636 - t.6: 641-642 - t.7: 643 - t.8: 648-649 -Linear Range: - this: 602-603 - v_key: 602-660 (cross call) - current_node: 603-660 (cross call) - cont: 604-660 (cross call) - ifound: 605-662 (cross call) - t.0: 611-613 - key_aux: 613-635 - t.1: 614-615 - t.2: 619-621 - t.3: 621-622 - t.4: 626-628 - t.5: 635-636 - t.6: 640-642 - t.7: 642-643 - t.8: 647-649 -Allocation: - this: t0 - v_key: s0 - current_node: s1 - cont: s2 - ifound: s3 - t.0: t0 - key_aux: t0 - t.1: t1 - t.2: t1 - t.3: t1 - t.4: t1 - t.5: t0 - t.6: t0 - t.7: t0 - t.8: t0 - -func Tree.Print - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 665-668 - current_node: 666-668 - t.0: 667-668 - ntb: -Linear Range: - this: 664-668 - current_node: 665-668 - t.0: 666-668 -Allocation: - this: t0 - current_node: t1 - t.0: t2 - -func Tree.RecPrint - in 0, out 0, callee-saves 3, spills 0 -Live In: - this: 672 675-681 684-692 695-699 702-708 711-714 - node: 672 675-681 684-692 695-699 702-708 711-713 - t.0: 676-677 - t.1: 678 - t.2: 680-681 684-687 - t.3: 685-686 - t.4: 687 - ntb: - t.5: 696-697 - t.6: 698 - t.7: 703-704 - t.8: 705 - t.9: 707-708 711-714 - t.10: 712-713 - t.11: 714 -Linear Range: - this: 671-714 (cross call) - node: 671-713 (cross call) - t.0: 675-677 - t.1: 677-678 - t.2: 679-687 (cross call) - t.3: 684-686 - t.4: 686-687 - t.5: 695-697 - t.6: 697-698 - t.7: 702-704 - t.8: 704-705 - t.9: 706-714 (cross call) - t.10: 711-713 - t.11: 713-714 -Allocation: - this: s0 - node: s1 - t.0: t0 - t.1: t0 - t.2: s2 - t.3: t0 - t.4: t0 - t.5: t0 - t.6: t0 - t.7: t0 - t.8: t0 - t.9: s2 - t.10: t0 - t.11: t0 - diff --git a/vaporize/tests/BinaryTree.vapor b/vaporize/tests/BinaryTree.vapor deleted file mode 100644 index 275cfe3..0000000 --- a/vaporize/tests/BinaryTree.vapor +++ /dev/null @@ -1,719 +0,0 @@ - -const vmt_BT - :BT.Start - -const vmt_Tree - :Tree.Init - :Tree.SetRight - :Tree.SetLeft - :Tree.GetRight - :Tree.GetLeft - :Tree.GetKey - :Tree.SetKey - :Tree.GetHas_Right - :Tree.GetHas_Left - :Tree.SetHas_Left - :Tree.SetHas_Right - :Tree.Compare - :Tree.Insert - :Tree.Delete - :Tree.Remove - :Tree.RemoveRight - :Tree.RemoveLeft - :Tree.Search - :Tree.Print - :Tree.RecPrint - - -func Main() - t.0 = HeapAllocZ(4) - [t.0] = :vmt_BT - if t.0 goto :null1 - Error("null pointer") - null1: - t.1 = [t.0] - t.1 = [t.1+0] - t.2 = call t.1(t.0) - PrintIntS(t.2) - ret - -func BT.Start(this) - t.0 = HeapAllocZ(28) - [t.0] = :vmt_Tree - root = t.0 - if root goto :null2 - Error("null pointer") - null2: - t.1 = [root] - t.1 = [t.1+0] - ntb = call t.1(root 16) - if root goto :null3 - Error("null pointer") - null3: - t.2 = [root] - t.2 = [t.2+72] - ntb = call t.2(root) - PrintIntS(100000000) - if root goto :null4 - Error("null pointer") - null4: - t.3 = [root] - t.3 = [t.3+48] - ntb = call t.3(root 8) - if root goto :null5 - Error("null pointer") - null5: - t.4 = [root] - t.4 = [t.4+72] - ntb = call t.4(root) - if root goto :null6 - Error("null pointer") - null6: - t.5 = [root] - t.5 = [t.5+48] - ntb = call t.5(root 24) - if root goto :null7 - Error("null pointer") - null7: - t.6 = [root] - t.6 = [t.6+48] - ntb = call t.6(root 4) - if root goto :null8 - Error("null pointer") - null8: - t.7 = [root] - t.7 = [t.7+48] - ntb = call t.7(root 12) - if root goto :null9 - Error("null pointer") - null9: - t.8 = [root] - t.8 = [t.8+48] - ntb = call t.8(root 20) - if root goto :null10 - Error("null pointer") - null10: - t.9 = [root] - t.9 = [t.9+48] - ntb = call t.9(root 28) - if root goto :null11 - Error("null pointer") - null11: - t.10 = [root] - t.10 = [t.10+48] - ntb = call t.10(root 14) - if root goto :null12 - Error("null pointer") - null12: - t.11 = [root] - t.11 = [t.11+72] - ntb = call t.11(root) - if root goto :null13 - Error("null pointer") - null13: - t.12 = [root] - t.12 = [t.12+68] - t.13 = call t.12(root 24) - PrintIntS(t.13) - if root goto :null14 - Error("null pointer") - null14: - t.14 = [root] - t.14 = [t.14+68] - t.15 = call t.14(root 12) - PrintIntS(t.15) - if root goto :null15 - Error("null pointer") - null15: - t.16 = [root] - t.16 = [t.16+68] - t.17 = call t.16(root 16) - PrintIntS(t.17) - if root goto :null16 - Error("null pointer") - null16: - t.18 = [root] - t.18 = [t.18+68] - t.19 = call t.18(root 50) - PrintIntS(t.19) - if root goto :null17 - Error("null pointer") - null17: - t.20 = [root] - t.20 = [t.20+68] - t.21 = call t.20(root 12) - PrintIntS(t.21) - if root goto :null18 - Error("null pointer") - null18: - t.22 = [root] - t.22 = [t.22+52] - ntb = call t.22(root 12) - if root goto :null19 - Error("null pointer") - null19: - t.23 = [root] - t.23 = [t.23+72] - ntb = call t.23(root) - if root goto :null20 - Error("null pointer") - null20: - t.24 = [root] - t.24 = [t.24+68] - t.25 = call t.24(root 12) - PrintIntS(t.25) - ret 0 - -func Tree.Init(this v_key) - [this+12] = v_key - [this+16] = 0 - [this+20] = 0 - ret 1 - -func Tree.SetRight(this rn) - [this+8] = rn - ret 1 - -func Tree.SetLeft(this ln) - [this+4] = ln - ret 1 - -func Tree.GetRight(this) - t.0 = [this+8] - ret t.0 - -func Tree.GetLeft(this) - t.0 = [this+4] - ret t.0 - -func Tree.GetKey(this) - t.0 = [this+12] - ret t.0 - -func Tree.SetKey(this v_key) - [this+12] = v_key - ret 1 - -func Tree.GetHas_Right(this) - t.0 = [this+20] - ret t.0 - -func Tree.GetHas_Left(this) - t.0 = [this+16] - ret t.0 - -func Tree.SetHas_Left(this val) - [this+16] = val - ret 1 - -func Tree.SetHas_Right(this val) - [this+20] = val - ret 1 - -func Tree.Compare(this num1 num2) - ntb = 0 - nti = Add(num2 1) - t.0 = LtS(num1 num2) - if0 t.0 goto :if1_else - ntb = 0 - goto :if1_end - if1_else: - t.1 = LtS(num1 nti) - t.2 = Sub(1 t.1) - if0 t.2 goto :if2_else - ntb = 0 - goto :if2_end - if2_else: - ntb = 1 - if2_end: - if1_end: - ret ntb - -func Tree.Insert(this v_key) - t.0 = HeapAllocZ(28) - [t.0] = :vmt_Tree - new_node = t.0 - if new_node goto :null21 - Error("null pointer") - null21: - t.1 = [new_node] - t.1 = [t.1+0] - ntb = call t.1(new_node v_key) - current_node = this - cont = 1 - while1_top: - if0 cont goto :while1_end - if current_node goto :null22 - Error("null pointer") - null22: - t.2 = [current_node] - t.2 = [t.2+20] - key_aux = call t.2(current_node) - t.3 = LtS(v_key key_aux) - if0 t.3 goto :if3_else - if current_node goto :null23 - Error("null pointer") - null23: - t.4 = [current_node] - t.4 = [t.4+32] - t.5 = call t.4(current_node) - if0 t.5 goto :if4_else - if current_node goto :null24 - Error("null pointer") - null24: - t.6 = [current_node] - t.6 = [t.6+16] - current_node = call t.6(current_node) - goto :if4_end - if4_else: - cont = 0 - if current_node goto :null25 - Error("null pointer") - null25: - t.7 = [current_node] - t.7 = [t.7+36] - ntb = call t.7(current_node 1) - if current_node goto :null26 - Error("null pointer") - null26: - t.8 = [current_node] - t.8 = [t.8+8] - ntb = call t.8(current_node new_node) - if4_end: - goto :if3_end - if3_else: - if current_node goto :null27 - Error("null pointer") - null27: - t.9 = [current_node] - t.9 = [t.9+28] - t.10 = call t.9(current_node) - if0 t.10 goto :if5_else - if current_node goto :null28 - Error("null pointer") - null28: - t.11 = [current_node] - t.11 = [t.11+12] - current_node = call t.11(current_node) - goto :if5_end - if5_else: - cont = 0 - if current_node goto :null29 - Error("null pointer") - null29: - t.12 = [current_node] - t.12 = [t.12+40] - ntb = call t.12(current_node 1) - if current_node goto :null30 - Error("null pointer") - null30: - t.13 = [current_node] - t.13 = [t.13+4] - ntb = call t.13(current_node new_node) - if5_end: - if3_end: - goto :while1_top - while1_end: - ret 1 - -func Tree.Delete(this v_key) - current_node = this - parent_node = this - cont = 1 - found = 0 - is_root = 1 - while2_top: - if0 cont goto :while2_end - if current_node goto :null31 - Error("null pointer") - null31: - t.0 = [current_node] - t.0 = [t.0+20] - key_aux = call t.0(current_node) - t.1 = LtS(v_key key_aux) - if0 t.1 goto :if6_else - if current_node goto :null32 - Error("null pointer") - null32: - t.2 = [current_node] - t.2 = [t.2+32] - t.3 = call t.2(current_node) - if0 t.3 goto :if7_else - parent_node = current_node - if current_node goto :null33 - Error("null pointer") - null33: - t.4 = [current_node] - t.4 = [t.4+16] - current_node = call t.4(current_node) - goto :if7_end - if7_else: - cont = 0 - if7_end: - goto :if6_end - if6_else: - t.5 = LtS(key_aux v_key) - if0 t.5 goto :if8_else - if current_node goto :null34 - Error("null pointer") - null34: - t.6 = [current_node] - t.6 = [t.6+28] - t.7 = call t.6(current_node) - if0 t.7 goto :if9_else - parent_node = current_node - if current_node goto :null35 - Error("null pointer") - null35: - t.8 = [current_node] - t.8 = [t.8+12] - current_node = call t.8(current_node) - goto :if9_end - if9_else: - cont = 0 - if9_end: - goto :if8_end - if8_else: - if0 is_root goto :if10_else - if current_node goto :null36 - Error("null pointer") - null36: - t.10 = [current_node] - t.10 = [t.10+28] - t.11 = call t.10(current_node) - t.12 = Sub(1 t.11) - if0 t.12 goto :ss1_else - if current_node goto :null37 - Error("null pointer") - null37: - t.13 = [current_node] - t.13 = [t.13+32] - t.14 = call t.13(current_node) - t.9 = Sub(1 t.14) - goto :ss1_end - ss1_else: - t.9 = 0 - ss1_end: - if0 t.9 goto :if11_else - ntb = 1 - goto :if11_end - if11_else: - t.15 = [this] - t.15 = [t.15+56] - ntb = call t.15(this parent_node current_node) - if11_end: - goto :if10_end - if10_else: - t.16 = [this] - t.16 = [t.16+56] - ntb = call t.16(this parent_node current_node) - if10_end: - found = 1 - cont = 0 - if8_end: - if6_end: - is_root = 0 - goto :while2_top - while2_end: - ret found - -func Tree.Remove(this p_node c_node) - if c_node goto :null38 - Error("null pointer") - null38: - t.0 = [c_node] - t.0 = [t.0+32] - t.1 = call t.0(c_node) - if0 t.1 goto :if12_else - t.2 = [this] - t.2 = [t.2+64] - ntb = call t.2(this p_node c_node) - goto :if12_end - if12_else: - if c_node goto :null39 - Error("null pointer") - null39: - t.3 = [c_node] - t.3 = [t.3+28] - t.4 = call t.3(c_node) - if0 t.4 goto :if13_else - t.5 = [this] - t.5 = [t.5+60] - ntb = call t.5(this p_node c_node) - goto :if13_end - if13_else: - if c_node goto :null40 - Error("null pointer") - null40: - t.6 = [c_node] - t.6 = [t.6+20] - auxkey1 = call t.6(c_node) - if p_node goto :null41 - Error("null pointer") - null41: - t.7 = [p_node] - t.7 = [t.7+16] - t.8 = call t.7(p_node) - if t.8 goto :null42 - Error("null pointer") - null42: - t.9 = [t.8] - t.9 = [t.9+20] - auxkey2 = call t.9(t.8) - t.10 = [this] - t.10 = [t.10+44] - t.11 = call t.10(this auxkey1 auxkey2) - if0 t.11 goto :if14_else - if p_node goto :null43 - Error("null pointer") - null43: - t.12 = [p_node] - t.12 = [t.12+8] - t.13 = [this+24] - ntb = call t.12(p_node t.13) - if p_node goto :null44 - Error("null pointer") - null44: - t.14 = [p_node] - t.14 = [t.14+36] - ntb = call t.14(p_node 0) - goto :if14_end - if14_else: - if p_node goto :null45 - Error("null pointer") - null45: - t.15 = [p_node] - t.15 = [t.15+4] - t.16 = [this+24] - ntb = call t.15(p_node t.16) - if p_node goto :null46 - Error("null pointer") - null46: - t.17 = [p_node] - t.17 = [t.17+40] - ntb = call t.17(p_node 0) - if14_end: - if13_end: - if12_end: - ret 1 - -func Tree.RemoveRight(this p_node c_node) - while3_top: - if c_node goto :null47 - Error("null pointer") - null47: - t.0 = [c_node] - t.0 = [t.0+28] - t.1 = call t.0(c_node) - if0 t.1 goto :while3_end - if c_node goto :null48 - Error("null pointer") - null48: - t.2 = [c_node] - t.2 = [t.2+24] - if c_node goto :null49 - Error("null pointer") - null49: - t.3 = [c_node] - t.3 = [t.3+12] - t.4 = call t.3(c_node) - if t.4 goto :null50 - Error("null pointer") - null50: - t.5 = [t.4] - t.5 = [t.5+20] - t.6 = call t.5(t.4) - ntb = call t.2(c_node t.6) - p_node = c_node - if c_node goto :null51 - Error("null pointer") - null51: - t.7 = [c_node] - t.7 = [t.7+12] - c_node = call t.7(c_node) - goto :while3_top - while3_end: - if p_node goto :null52 - Error("null pointer") - null52: - t.8 = [p_node] - t.8 = [t.8+4] - t.9 = [this+24] - ntb = call t.8(p_node t.9) - if p_node goto :null53 - Error("null pointer") - null53: - t.10 = [p_node] - t.10 = [t.10+40] - ntb = call t.10(p_node 0) - ret 1 - -func Tree.RemoveLeft(this p_node c_node) - while4_top: - if c_node goto :null54 - Error("null pointer") - null54: - t.0 = [c_node] - t.0 = [t.0+32] - t.1 = call t.0(c_node) - if0 t.1 goto :while4_end - if c_node goto :null55 - Error("null pointer") - null55: - t.2 = [c_node] - t.2 = [t.2+24] - if c_node goto :null56 - Error("null pointer") - null56: - t.3 = [c_node] - t.3 = [t.3+16] - t.4 = call t.3(c_node) - if t.4 goto :null57 - Error("null pointer") - null57: - t.5 = [t.4] - t.5 = [t.5+20] - t.6 = call t.5(t.4) - ntb = call t.2(c_node t.6) - p_node = c_node - if c_node goto :null58 - Error("null pointer") - null58: - t.7 = [c_node] - t.7 = [t.7+16] - c_node = call t.7(c_node) - goto :while4_top - while4_end: - if p_node goto :null59 - Error("null pointer") - null59: - t.8 = [p_node] - t.8 = [t.8+8] - t.9 = [this+24] - ntb = call t.8(p_node t.9) - if p_node goto :null60 - Error("null pointer") - null60: - t.10 = [p_node] - t.10 = [t.10+36] - ntb = call t.10(p_node 0) - ret 1 - -func Tree.Search(this v_key) - current_node = this - cont = 1 - ifound = 0 - while5_top: - if0 cont goto :while5_end - if current_node goto :null61 - Error("null pointer") - null61: - t.0 = [current_node] - t.0 = [t.0+20] - key_aux = call t.0(current_node) - t.1 = LtS(v_key key_aux) - if0 t.1 goto :if15_else - if current_node goto :null62 - Error("null pointer") - null62: - t.2 = [current_node] - t.2 = [t.2+32] - t.3 = call t.2(current_node) - if0 t.3 goto :if16_else - if current_node goto :null63 - Error("null pointer") - null63: - t.4 = [current_node] - t.4 = [t.4+16] - current_node = call t.4(current_node) - goto :if16_end - if16_else: - cont = 0 - if16_end: - goto :if15_end - if15_else: - t.5 = LtS(key_aux v_key) - if0 t.5 goto :if17_else - if current_node goto :null64 - Error("null pointer") - null64: - t.6 = [current_node] - t.6 = [t.6+28] - t.7 = call t.6(current_node) - if0 t.7 goto :if18_else - if current_node goto :null65 - Error("null pointer") - null65: - t.8 = [current_node] - t.8 = [t.8+12] - current_node = call t.8(current_node) - goto :if18_end - if18_else: - cont = 0 - if18_end: - goto :if17_end - if17_else: - ifound = 1 - cont = 0 - if17_end: - if15_end: - goto :while5_top - while5_end: - ret ifound - -func Tree.Print(this) - current_node = this - t.0 = [this] - t.0 = [t.0+76] - ntb = call t.0(this current_node) - ret 1 - -func Tree.RecPrint(this node) - if node goto :null66 - Error("null pointer") - null66: - t.0 = [node] - t.0 = [t.0+32] - t.1 = call t.0(node) - if0 t.1 goto :if19_else - t.2 = [this] - t.2 = [t.2+76] - if node goto :null67 - Error("null pointer") - null67: - t.3 = [node] - t.3 = [t.3+16] - t.4 = call t.3(node) - ntb = call t.2(this t.4) - goto :if19_end - if19_else: - ntb = 1 - if19_end: - if node goto :null68 - Error("null pointer") - null68: - t.5 = [node] - t.5 = [t.5+20] - t.6 = call t.5(node) - PrintIntS(t.6) - if node goto :null69 - Error("null pointer") - null69: - t.7 = [node] - t.7 = [t.7+28] - t.8 = call t.7(node) - if0 t.8 goto :if20_else - t.9 = [this] - t.9 = [t.9+76] - if node goto :null70 - Error("null pointer") - null70: - t.10 = [node] - t.10 = [t.10+12] - t.11 = call t.10(node) - ntb = call t.9(this t.11) - goto :if20_end - if20_else: - ntb = 1 - if20_end: - ret 1 diff --git a/vaporize/tests/BinaryTree.vaporm b/vaporize/tests/BinaryTree.vaporm deleted file mode 100644 index ad25de5..0000000 --- a/vaporize/tests/BinaryTree.vaporm +++ /dev/null @@ -1,996 +0,0 @@ -const vmt_BT - :BT.Start - -const vmt_Tree - :Tree.Init - :Tree.SetRight - :Tree.SetLeft - :Tree.GetRight - :Tree.GetLeft - :Tree.GetKey - :Tree.SetKey - :Tree.GetHas_Right - :Tree.GetHas_Left - :Tree.SetHas_Left - :Tree.SetHas_Right - :Tree.Compare - :Tree.Insert - :Tree.Delete - :Tree.Remove - :Tree.RemoveRight - :Tree.RemoveLeft - :Tree.Search - :Tree.Print - :Tree.RecPrint - -func Main [in 0, out 0, local 0] - $t0 = HeapAllocZ(4) - [$t0] = :vmt_BT - if $t0 goto :null1 - Error("null pointer") -null1: - $t1 = [$t0] - $t1 = [$t1] - $a0 = $t0 - call $t1 - $t1 = $v0 - PrintIntS($t1) - ret - -func BT.Start [in 0, out 0, local 1] - local[0] = $s0 - $t0 = HeapAllocZ(28) - [$t0] = :vmt_Tree - $s0 = $t0 - if $s0 goto :null2 - Error("null pointer") -null2: - $t0 = [$s0] - $t0 = [$t0] - $a0 = $s0 - $a1 = 16 - call $t0 - if $s0 goto :null3 - Error("null pointer") -null3: - $t0 = [$s0] - $t0 = [$t0+72] - $a0 = $s0 - call $t0 - PrintIntS(100000000) - if $s0 goto :null4 - Error("null pointer") -null4: - $t0 = [$s0] - $t0 = [$t0+48] - $a0 = $s0 - $a1 = 8 - call $t0 - if $s0 goto :null5 - Error("null pointer") -null5: - $t0 = [$s0] - $t0 = [$t0+72] - $a0 = $s0 - call $t0 - if $s0 goto :null6 - Error("null pointer") -null6: - $t0 = [$s0] - $t0 = [$t0+48] - $a0 = $s0 - $a1 = 24 - call $t0 - if $s0 goto :null7 - Error("null pointer") -null7: - $t0 = [$s0] - $t0 = [$t0+48] - $a0 = $s0 - $a1 = 4 - call $t0 - if $s0 goto :null8 - Error("null pointer") -null8: - $t0 = [$s0] - $t0 = [$t0+48] - $a0 = $s0 - $a1 = 12 - call $t0 - if $s0 goto :null9 - Error("null pointer") -null9: - $t0 = [$s0] - $t0 = [$t0+48] - $a0 = $s0 - $a1 = 20 - call $t0 - if $s0 goto :null10 - Error("null pointer") -null10: - $t0 = [$s0] - $t0 = [$t0+48] - $a0 = $s0 - $a1 = 28 - call $t0 - if $s0 goto :null11 - Error("null pointer") -null11: - $t0 = [$s0] - $t0 = [$t0+48] - $a0 = $s0 - $a1 = 14 - call $t0 - if $s0 goto :null12 - Error("null pointer") -null12: - $t0 = [$s0] - $t0 = [$t0+72] - $a0 = $s0 - call $t0 - if $s0 goto :null13 - Error("null pointer") -null13: - $t0 = [$s0] - $t0 = [$t0+68] - $a0 = $s0 - $a1 = 24 - call $t0 - $t0 = $v0 - PrintIntS($t0) - if $s0 goto :null14 - Error("null pointer") -null14: - $t0 = [$s0] - $t0 = [$t0+68] - $a0 = $s0 - $a1 = 12 - call $t0 - $t0 = $v0 - PrintIntS($t0) - if $s0 goto :null15 - Error("null pointer") -null15: - $t0 = [$s0] - $t0 = [$t0+68] - $a0 = $s0 - $a1 = 16 - call $t0 - $t0 = $v0 - PrintIntS($t0) - if $s0 goto :null16 - Error("null pointer") -null16: - $t0 = [$s0] - $t0 = [$t0+68] - $a0 = $s0 - $a1 = 50 - call $t0 - $t0 = $v0 - PrintIntS($t0) - if $s0 goto :null17 - Error("null pointer") -null17: - $t0 = [$s0] - $t0 = [$t0+68] - $a0 = $s0 - $a1 = 12 - call $t0 - $t0 = $v0 - PrintIntS($t0) - if $s0 goto :null18 - Error("null pointer") -null18: - $t0 = [$s0] - $t0 = [$t0+52] - $a0 = $s0 - $a1 = 12 - call $t0 - if $s0 goto :null19 - Error("null pointer") -null19: - $t0 = [$s0] - $t0 = [$t0+72] - $a0 = $s0 - call $t0 - if $s0 goto :null20 - Error("null pointer") -null20: - $t0 = [$s0] - $t0 = [$t0+68] - $a0 = $s0 - $a1 = 12 - call $t0 - $t0 = $v0 - PrintIntS($t0) - $v0 = 0 - $s0 = local[0] - ret - -func Tree.Init [in 0, out 0, local 0] - $t0 = $a0 - $t1 = $a1 - [$t0+12] = $t1 - [$t0+16] = 0 - [$t0+20] = 0 - $v0 = 1 - ret - -func Tree.SetRight [in 0, out 0, local 0] - $t0 = $a0 - $t1 = $a1 - [$t0+8] = $t1 - $v0 = 1 - ret - -func Tree.SetLeft [in 0, out 0, local 0] - $t0 = $a0 - $t1 = $a1 - [$t0+4] = $t1 - $v0 = 1 - ret - -func Tree.GetRight [in 0, out 0, local 0] - $t0 = $a0 - $t0 = [$t0+8] - $v0 = $t0 - ret - -func Tree.GetLeft [in 0, out 0, local 0] - $t0 = $a0 - $t0 = [$t0+4] - $v0 = $t0 - ret - -func Tree.GetKey [in 0, out 0, local 0] - $t0 = $a0 - $t0 = [$t0+12] - $v0 = $t0 - ret - -func Tree.SetKey [in 0, out 0, local 0] - $t0 = $a0 - $t1 = $a1 - [$t0+12] = $t1 - $v0 = 1 - ret - -func Tree.GetHas_Right [in 0, out 0, local 0] - $t0 = $a0 - $t0 = [$t0+20] - $v0 = $t0 - ret - -func Tree.GetHas_Left [in 0, out 0, local 0] - $t0 = $a0 - $t0 = [$t0+16] - $v0 = $t0 - ret - -func Tree.SetHas_Left [in 0, out 0, local 0] - $t0 = $a0 - $t1 = $a1 - [$t0+16] = $t1 - $v0 = 1 - ret - -func Tree.SetHas_Right [in 0, out 0, local 0] - $t0 = $a0 - $t1 = $a1 - [$t0+20] = $t1 - $v0 = 1 - ret - -func Tree.Compare [in 0, out 0, local 0] - $t0 = $a1 - $t1 = $a2 - $t2 = Add($t1 1) - $t1 = LtS($t0 $t1) - if0 $t1 goto :if1_else - $t1 = 0 - goto :if1_end -if1_else: - $t2 = LtS($t0 $t2) - $t2 = Sub(1 $t2) - if0 $t2 goto :if2_else - $t1 = 0 - goto :if2_end -if2_else: - $t1 = 1 -if2_end: -if1_end: - $v0 = $t1 - ret - -func Tree.Insert [in 0, out 0, local 4] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - local[3] = $s3 - $s0 = $a0 - $s1 = $a1 - $t0 = HeapAllocZ(28) - [$t0] = :vmt_Tree - $s2 = $t0 - if $s2 goto :null21 - Error("null pointer") -null21: - $t0 = [$s2] - $t0 = [$t0] - $a0 = $s2 - $a1 = $s1 - call $t0 - $s0 = $s0 - $s3 = 1 -while1_top: - if0 $s3 goto :while1_end - if $s0 goto :null22 - Error("null pointer") -null22: - $t0 = [$s0] - $t0 = [$t0+20] - $a0 = $s0 - call $t0 - $t0 = $v0 - $t0 = LtS($s1 $t0) - if0 $t0 goto :if3_else - if $s0 goto :null23 - Error("null pointer") -null23: - $t0 = [$s0] - $t0 = [$t0+32] - $a0 = $s0 - call $t0 - $t0 = $v0 - if0 $t0 goto :if4_else - if $s0 goto :null24 - Error("null pointer") -null24: - $t0 = [$s0] - $t0 = [$t0+16] - $a0 = $s0 - call $t0 - $s0 = $v0 - goto :if4_end -if4_else: - $s3 = 0 - if $s0 goto :null25 - Error("null pointer") -null25: - $t0 = [$s0] - $t0 = [$t0+36] - $a0 = $s0 - $a1 = 1 - call $t0 - if $s0 goto :null26 - Error("null pointer") -null26: - $t0 = [$s0] - $t0 = [$t0+8] - $a0 = $s0 - $a1 = $s2 - call $t0 -if4_end: - goto :if3_end -if3_else: - if $s0 goto :null27 - Error("null pointer") -null27: - $t0 = [$s0] - $t0 = [$t0+28] - $a0 = $s0 - call $t0 - $t0 = $v0 - if0 $t0 goto :if5_else - if $s0 goto :null28 - Error("null pointer") -null28: - $t0 = [$s0] - $t0 = [$t0+12] - $a0 = $s0 - call $t0 - $s0 = $v0 - goto :if5_end -if5_else: - $s3 = 0 - if $s0 goto :null29 - Error("null pointer") -null29: - $t0 = [$s0] - $t0 = [$t0+40] - $a0 = $s0 - $a1 = 1 - call $t0 - if $s0 goto :null30 - Error("null pointer") -null30: - $t0 = [$s0] - $t0 = [$t0+4] - $a0 = $s0 - $a1 = $s2 - call $t0 -if5_end: -if3_end: - goto :while1_top -while1_end: - $v0 = 1 - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - $s3 = local[3] - ret - -func Tree.Delete [in 0, out 0, local 7] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - local[3] = $s3 - local[4] = $s4 - local[5] = $s5 - local[6] = $s6 - $s0 = $a0 - $s1 = $a1 - $s2 = $s0 - $s3 = $s0 - $s4 = 1 - $s5 = 0 - $s6 = 1 -while2_top: - if0 $s4 goto :while2_end - if $s2 goto :null31 - Error("null pointer") -null31: - $t0 = [$s2] - $t0 = [$t0+20] - $a0 = $s2 - call $t0 - $t0 = $v0 - $t1 = LtS($s1 $t0) - if0 $t1 goto :if6_else - if $s2 goto :null32 - Error("null pointer") -null32: - $t1 = [$s2] - $t1 = [$t1+32] - $a0 = $s2 - call $t1 - $t1 = $v0 - if0 $t1 goto :if7_else - $s3 = $s2 - if $s2 goto :null33 - Error("null pointer") -null33: - $t1 = [$s2] - $t1 = [$t1+16] - $a0 = $s2 - call $t1 - $s2 = $v0 - goto :if7_end -if7_else: - $s4 = 0 -if7_end: - goto :if6_end -if6_else: - $t0 = LtS($t0 $s1) - if0 $t0 goto :if8_else - if $s2 goto :null34 - Error("null pointer") -null34: - $t0 = [$s2] - $t0 = [$t0+28] - $a0 = $s2 - call $t0 - $t0 = $v0 - if0 $t0 goto :if9_else - $s3 = $s2 - if $s2 goto :null35 - Error("null pointer") -null35: - $t0 = [$s2] - $t0 = [$t0+12] - $a0 = $s2 - call $t0 - $s2 = $v0 - goto :if9_end -if9_else: - $s4 = 0 -if9_end: - goto :if8_end -if8_else: - if0 $s6 goto :if10_else - if $s2 goto :null36 - Error("null pointer") -null36: - $t0 = [$s2] - $t0 = [$t0+28] - $a0 = $s2 - call $t0 - $t0 = $v0 - $t0 = Sub(1 $t0) - if0 $t0 goto :ss1_else - if $s2 goto :null37 - Error("null pointer") -null37: - $t0 = [$s2] - $t0 = [$t0+32] - $a0 = $s2 - call $t0 - $t0 = $v0 - $t0 = Sub(1 $t0) - goto :ss1_end -ss1_else: - $t0 = 0 -ss1_end: - if0 $t0 goto :if11_else - goto :if11_end -if11_else: - $t0 = [$s0] - $t0 = [$t0+56] - $a0 = $s0 - $a1 = $s3 - $a2 = $s2 - call $t0 -if11_end: - goto :if10_end -if10_else: - $t0 = [$s0] - $t0 = [$t0+56] - $a0 = $s0 - $a1 = $s3 - $a2 = $s2 - call $t0 -if10_end: - $s5 = 1 - $s4 = 0 -if8_end: -if6_end: - $s6 = 0 - goto :while2_top -while2_end: - $v0 = $s5 - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - $s3 = local[3] - $s4 = local[4] - $s5 = local[5] - $s6 = local[6] - ret - -func Tree.Remove [in 0, out 0, local 3] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - $s0 = $a0 - $s1 = $a1 - $s2 = $a2 - if $s2 goto :null38 - Error("null pointer") -null38: - $t0 = [$s2] - $t0 = [$t0+32] - $a0 = $s2 - call $t0 - $t0 = $v0 - if0 $t0 goto :if12_else - $t0 = [$s0] - $t0 = [$t0+64] - $a0 = $s0 - $a1 = $s1 - $a2 = $s2 - call $t0 - goto :if12_end -if12_else: - if $s2 goto :null39 - Error("null pointer") -null39: - $t0 = [$s2] - $t0 = [$t0+28] - $a0 = $s2 - call $t0 - $t0 = $v0 - if0 $t0 goto :if13_else - $t0 = [$s0] - $t0 = [$t0+60] - $a0 = $s0 - $a1 = $s1 - $a2 = $s2 - call $t0 - goto :if13_end -if13_else: - if $s2 goto :null40 - Error("null pointer") -null40: - $t0 = [$s2] - $t0 = [$t0+20] - $a0 = $s2 - call $t0 - $s2 = $v0 - if $s1 goto :null41 - Error("null pointer") -null41: - $t0 = [$s1] - $t0 = [$t0+16] - $a0 = $s1 - call $t0 - $t0 = $v0 - if $t0 goto :null42 - Error("null pointer") -null42: - $t1 = [$t0] - $t1 = [$t1+20] - $a0 = $t0 - call $t1 - $t1 = $v0 - $t0 = [$s0] - $t0 = [$t0+44] - $a0 = $s0 - $a1 = $s2 - $a2 = $t1 - call $t0 - $t0 = $v0 - if0 $t0 goto :if14_else - if $s1 goto :null43 - Error("null pointer") -null43: - $t0 = [$s1] - $t0 = [$t0+8] - $t1 = [$s0+24] - $a0 = $s1 - $a1 = $t1 - call $t0 - if $s1 goto :null44 - Error("null pointer") -null44: - $t1 = [$s1] - $t1 = [$t1+36] - $a0 = $s1 - $a1 = 0 - call $t1 - goto :if14_end -if14_else: - if $s1 goto :null45 - Error("null pointer") -null45: - $t1 = [$s1] - $t1 = [$t1+4] - $t0 = [$s0+24] - $a0 = $s1 - $a1 = $t0 - call $t1 - if $s1 goto :null46 - Error("null pointer") -null46: - $t0 = [$s1] - $t0 = [$t0+40] - $a0 = $s1 - $a1 = 0 - call $t0 -if14_end: -if13_end: -if12_end: - $v0 = 1 - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - ret - -func Tree.RemoveRight [in 0, out 0, local 4] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - local[3] = $s3 - $s0 = $a0 - $s1 = $a1 - $s2 = $a2 -while3_top: - if $s2 goto :null47 - Error("null pointer") -null47: - $t0 = [$s2] - $t0 = [$t0+28] - $a0 = $s2 - call $t0 - $t0 = $v0 - if0 $t0 goto :while3_end - if $s2 goto :null48 - Error("null pointer") -null48: - $s3 = [$s2] - $s3 = [$s3+24] - if $s2 goto :null49 - Error("null pointer") -null49: - $t0 = [$s2] - $t0 = [$t0+12] - $a0 = $s2 - call $t0 - $t0 = $v0 - if $t0 goto :null50 - Error("null pointer") -null50: - $t1 = [$t0] - $t1 = [$t1+20] - $a0 = $t0 - call $t1 - $t1 = $v0 - $a0 = $s2 - $a1 = $t1 - call $s3 - $s1 = $s2 - if $s2 goto :null51 - Error("null pointer") -null51: - $t1 = [$s2] - $t1 = [$t1+12] - $a0 = $s2 - call $t1 - $s2 = $v0 - goto :while3_top -while3_end: - if $s1 goto :null52 - Error("null pointer") -null52: - $t1 = [$s1] - $t1 = [$t1+4] - $t0 = [$s0+24] - $a0 = $s1 - $a1 = $t0 - call $t1 - if $s1 goto :null53 - Error("null pointer") -null53: - $t0 = [$s1] - $t0 = [$t0+40] - $a0 = $s1 - $a1 = 0 - call $t0 - $v0 = 1 - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - $s3 = local[3] - ret - -func Tree.RemoveLeft [in 0, out 0, local 4] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - local[3] = $s3 - $s0 = $a0 - $s1 = $a1 - $s2 = $a2 -while4_top: - if $s2 goto :null54 - Error("null pointer") -null54: - $t0 = [$s2] - $t0 = [$t0+32] - $a0 = $s2 - call $t0 - $t0 = $v0 - if0 $t0 goto :while4_end - if $s2 goto :null55 - Error("null pointer") -null55: - $s3 = [$s2] - $s3 = [$s3+24] - if $s2 goto :null56 - Error("null pointer") -null56: - $t0 = [$s2] - $t0 = [$t0+16] - $a0 = $s2 - call $t0 - $t0 = $v0 - if $t0 goto :null57 - Error("null pointer") -null57: - $t1 = [$t0] - $t1 = [$t1+20] - $a0 = $t0 - call $t1 - $t1 = $v0 - $a0 = $s2 - $a1 = $t1 - call $s3 - $s1 = $s2 - if $s2 goto :null58 - Error("null pointer") -null58: - $t1 = [$s2] - $t1 = [$t1+16] - $a0 = $s2 - call $t1 - $s2 = $v0 - goto :while4_top -while4_end: - if $s1 goto :null59 - Error("null pointer") -null59: - $t1 = [$s1] - $t1 = [$t1+8] - $t0 = [$s0+24] - $a0 = $s1 - $a1 = $t0 - call $t1 - if $s1 goto :null60 - Error("null pointer") -null60: - $t0 = [$s1] - $t0 = [$t0+36] - $a0 = $s1 - $a1 = 0 - call $t0 - $v0 = 1 - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - $s3 = local[3] - ret - -func Tree.Search [in 0, out 0, local 4] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - local[3] = $s3 - $t0 = $a0 - $s0 = $a1 - $s1 = $t0 - $s2 = 1 - $s3 = 0 -while5_top: - if0 $s2 goto :while5_end - if $s1 goto :null61 - Error("null pointer") -null61: - $t0 = [$s1] - $t0 = [$t0+20] - $a0 = $s1 - call $t0 - $t0 = $v0 - $t1 = LtS($s0 $t0) - if0 $t1 goto :if15_else - if $s1 goto :null62 - Error("null pointer") -null62: - $t1 = [$s1] - $t1 = [$t1+32] - $a0 = $s1 - call $t1 - $t1 = $v0 - if0 $t1 goto :if16_else - if $s1 goto :null63 - Error("null pointer") -null63: - $t1 = [$s1] - $t1 = [$t1+16] - $a0 = $s1 - call $t1 - $s1 = $v0 - goto :if16_end -if16_else: - $s2 = 0 -if16_end: - goto :if15_end -if15_else: - $t0 = LtS($t0 $s0) - if0 $t0 goto :if17_else - if $s1 goto :null64 - Error("null pointer") -null64: - $t0 = [$s1] - $t0 = [$t0+28] - $a0 = $s1 - call $t0 - $t0 = $v0 - if0 $t0 goto :if18_else - if $s1 goto :null65 - Error("null pointer") -null65: - $t0 = [$s1] - $t0 = [$t0+12] - $a0 = $s1 - call $t0 - $s1 = $v0 - goto :if18_end -if18_else: - $s2 = 0 -if18_end: - goto :if17_end -if17_else: - $s3 = 1 - $s2 = 0 -if17_end: -if15_end: - goto :while5_top -while5_end: - $v0 = $s3 - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - $s3 = local[3] - ret - -func Tree.Print [in 0, out 0, local 0] - $t0 = $a0 - $t1 = $t0 - $t2 = [$t0] - $t2 = [$t2+76] - $a0 = $t0 - $a1 = $t1 - call $t2 - $v0 = 1 - ret - -func Tree.RecPrint [in 0, out 0, local 3] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - $s0 = $a0 - $s1 = $a1 - if $s1 goto :null66 - Error("null pointer") -null66: - $t0 = [$s1] - $t0 = [$t0+32] - $a0 = $s1 - call $t0 - $t0 = $v0 - if0 $t0 goto :if19_else - $s2 = [$s0] - $s2 = [$s2+76] - if $s1 goto :null67 - Error("null pointer") -null67: - $t0 = [$s1] - $t0 = [$t0+16] - $a0 = $s1 - call $t0 - $t0 = $v0 - $a0 = $s0 - $a1 = $t0 - call $s2 - goto :if19_end -if19_else: -if19_end: - if $s1 goto :null68 - Error("null pointer") -null68: - $t0 = [$s1] - $t0 = [$t0+20] - $a0 = $s1 - call $t0 - $t0 = $v0 - PrintIntS($t0) - if $s1 goto :null69 - Error("null pointer") -null69: - $t0 = [$s1] - $t0 = [$t0+28] - $a0 = $s1 - call $t0 - $t0 = $v0 - if0 $t0 goto :if20_else - $s2 = [$s0] - $s2 = [$s2+76] - if $s1 goto :null70 - Error("null pointer") -null70: - $t0 = [$s1] - $t0 = [$t0+12] - $a0 = $s1 - call $t0 - $t0 = $v0 - $a0 = $s0 - $a1 = $t0 - call $s2 - goto :if20_end -if20_else: -if20_end: - $v0 = 1 - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - ret - diff --git a/vaporize/tests/BubbleSort.names.vaporm b/vaporize/tests/BubbleSort.names.vaporm deleted file mode 100644 index 9984ffe..0000000 --- a/vaporize/tests/BubbleSort.names.vaporm +++ /dev/null @@ -1,316 +0,0 @@ -const vmt_BBS - :BBS.Start - :BBS.Sort - :BBS.Print - :BBS.Init - -func Main [in 0, out 0, local 0] - $t0{t.0} = HeapAllocZ(12) - [$t0{t.0}] = :vmt_BBS - if $t0{t.0} goto :null1 - Error("null pointer") -null1: - $t1{t.1} = [$t0{t.0}] - $t1{t.1} = [$t1{t.1}] - $a0 = $t0{t.0} - $a1 = 10 - call $t1{t.1} - $t1{t.2} = $v0 - PrintIntS($t1{t.2}) - ret - -func BBS.Start [in 0, out 0, local 1] - local[0] = $s0 - $s0{this} = $a0 - $t0{sz} = $a1 - $t1{t.0} = [$s0{this}] - $t1{t.0} = [$t1{t.0}+12] - $a0 = $s0{this} - $a1 = $t0{sz} - call $t1{t.0} - $t1{t.1} = [$s0{this}] - $t1{t.1} = [$t1{t.1}+8] - $a0 = $s0{this} - call $t1{t.1} - PrintIntS(99999) - $t1{t.2} = [$s0{this}] - $t1{t.2} = [$t1{t.2}+4] - $a0 = $s0{this} - call $t1{t.2} - $t1{t.3} = [$s0{this}] - $t1{t.3} = [$t1{t.3}+8] - $a0 = $s0{this} - call $t1{t.3} - $v0 = 0 - $s0 = local[0] - ret - -func BBS.Sort [in 0, out 0, local 0] - $t0{this} = $a0 - $t1{t.0} = [$t0{this}+8] - $t1{i} = Sub($t1{t.0} 1) - $t2{aux02} = Sub(0 1) -while1_top: - $t3{t.1} = LtS($t2{aux02} $t1{i}) - if0 $t3{t.1} goto :while1_end - $t3{j} = 1 -while2_top: - $t4{t.2} = Add($t1{i} 1) - $t4{t.3} = LtS($t3{j} $t4{t.2}) - if0 $t4{t.3} goto :while2_end - $t4{aux07} = Sub($t3{j} 1) - $t5{t.4} = [$t0{this}+4] - if $t5{t.4} goto :null2 - Error("null pointer") -null2: - $t6{t.5} = [$t5{t.4}] - $t6{t.5} = Lt($t4{aux07} $t6{t.5}) - if $t6{t.5} goto :bounds1 - Error("array index out of bounds") -bounds1: - $t6{t.5} = MulS($t4{aux07} 4) - $t6{t.5} = Add($t6{t.5} $t5{t.4}) - $t6{aux04} = [$t6{t.5}+4] - $t5{t.6} = [$t0{this}+4] - if $t5{t.6} goto :null3 - Error("null pointer") -null3: - $t4{t.7} = [$t5{t.6}] - $t4{t.7} = Lt($t3{j} $t4{t.7}) - if $t4{t.7} goto :bounds2 - Error("array index out of bounds") -bounds2: - $t4{t.7} = MulS($t3{j} 4) - $t4{t.7} = Add($t4{t.7} $t5{t.6}) - $t4{aux05} = [$t4{t.7}+4] - $t4{t.8} = LtS($t4{aux05} $t6{aux04}) - if0 $t4{t.8} goto :if1_else - $t4{aux06} = Sub($t3{j} 1) - $t6{t.9} = [$t0{this}+4] - if $t6{t.9} goto :null4 - Error("null pointer") -null4: - $t5{t.10} = [$t6{t.9}] - $t5{t.10} = Lt($t4{aux06} $t5{t.10}) - if $t5{t.10} goto :bounds3 - Error("array index out of bounds") -bounds3: - $t5{t.10} = MulS($t4{aux06} 4) - $t5{t.10} = Add($t5{t.10} $t6{t.9}) - $t5{t} = [$t5{t.10}+4] - $t6{t.11} = [$t0{this}+4] - if $t6{t.11} goto :null5 - Error("null pointer") -null5: - $t7{t.12} = [$t6{t.11}] - $t7{t.12} = Lt($t4{aux06} $t7{t.12}) - if $t7{t.12} goto :bounds4 - Error("array index out of bounds") -bounds4: - $t7{t.12} = MulS($t4{aux06} 4) - $t7{t.12} = Add($t7{t.12} $t6{t.11}) - $t6{t.13} = [$t0{this}+4] - if $t6{t.13} goto :null6 - Error("null pointer") -null6: - $t4{t.14} = [$t6{t.13}] - $t4{t.14} = Lt($t3{j} $t4{t.14}) - if $t4{t.14} goto :bounds5 - Error("array index out of bounds") -bounds5: - $t4{t.14} = MulS($t3{j} 4) - $t4{t.14} = Add($t4{t.14} $t6{t.13}) - $t4{t.15} = [$t4{t.14}+4] - [$t7{t.12}+4] = $t4{t.15} - $t4{t.16} = [$t0{this}+4] - if $t4{t.16} goto :null7 - Error("null pointer") -null7: - $t7{t.17} = [$t4{t.16}] - $t7{t.17} = Lt($t3{j} $t7{t.17}) - if $t7{t.17} goto :bounds6 - Error("array index out of bounds") -bounds6: - $t7{t.17} = MulS($t3{j} 4) - $t7{t.17} = Add($t7{t.17} $t4{t.16}) - [$t7{t.17}+4] = $t5{t} - goto :if1_end -if1_else: -if1_end: - $t3{j} = Add($t3{j} 1) - goto :while2_top -while2_end: - $t1{i} = Sub($t1{i} 1) - goto :while1_top -while1_end: - $v0 = 0 - ret - -func BBS.Print [in 0, out 0, local 0] - $t0{this} = $a0 - $t1{j} = 0 -while3_top: - $t2{t.0} = [$t0{this}+8] - $t2{t.1} = LtS($t1{j} $t2{t.0}) - if0 $t2{t.1} goto :while3_end - $t2{t.2} = [$t0{this}+4] - if $t2{t.2} goto :null8 - Error("null pointer") -null8: - $t3{t.3} = [$t2{t.2}] - $t3{t.3} = Lt($t1{j} $t3{t.3}) - if $t3{t.3} goto :bounds7 - Error("array index out of bounds") -bounds7: - $t3{t.3} = MulS($t1{j} 4) - $t3{t.3} = Add($t3{t.3} $t2{t.2}) - $t3{t.4} = [$t3{t.3}+4] - PrintIntS($t3{t.4}) - $t1{j} = Add($t1{j} 1) - goto :while3_top -while3_end: - $v0 = 0 - ret - -func BBS.Init [in 0, out 0, local 1] - local[0] = $s0 - $s0{this} = $a0 - $t0{sz} = $a1 - [$s0{this}+8] = $t0{sz} - $a0 = $t0{sz} - call :AllocArray - $t0{t.0} = $v0 - [$s0{this}+4] = $t0{t.0} - $t0{t.1} = [$s0{this}+4] - if $t0{t.1} goto :null9 - Error("null pointer") -null9: - $t1{t.2} = [$t0{t.1}] - $t1{t.2} = Lt(0 $t1{t.2}) - if $t1{t.2} goto :bounds8 - Error("array index out of bounds") -bounds8: - $t1{t.2} = MulS(0 4) - $t1{t.2} = Add($t1{t.2} $t0{t.1}) - [$t1{t.2}+4] = 20 - $t1{t.3} = [$s0{this}+4] - if $t1{t.3} goto :null10 - Error("null pointer") -null10: - $t0{t.4} = [$t1{t.3}] - $t0{t.4} = Lt(1 $t0{t.4}) - if $t0{t.4} goto :bounds9 - Error("array index out of bounds") -bounds9: - $t0{t.4} = MulS(1 4) - $t0{t.4} = Add($t0{t.4} $t1{t.3}) - [$t0{t.4}+4] = 7 - $t0{t.5} = [$s0{this}+4] - if $t0{t.5} goto :null11 - Error("null pointer") -null11: - $t1{t.6} = [$t0{t.5}] - $t1{t.6} = Lt(2 $t1{t.6}) - if $t1{t.6} goto :bounds10 - Error("array index out of bounds") -bounds10: - $t1{t.6} = MulS(2 4) - $t1{t.6} = Add($t1{t.6} $t0{t.5}) - [$t1{t.6}+4] = 12 - $t1{t.7} = [$s0{this}+4] - if $t1{t.7} goto :null12 - Error("null pointer") -null12: - $t0{t.8} = [$t1{t.7}] - $t0{t.8} = Lt(3 $t0{t.8}) - if $t0{t.8} goto :bounds11 - Error("array index out of bounds") -bounds11: - $t0{t.8} = MulS(3 4) - $t0{t.8} = Add($t0{t.8} $t1{t.7}) - [$t0{t.8}+4] = 18 - $t0{t.9} = [$s0{this}+4] - if $t0{t.9} goto :null13 - Error("null pointer") -null13: - $t1{t.10} = [$t0{t.9}] - $t1{t.10} = Lt(4 $t1{t.10}) - if $t1{t.10} goto :bounds12 - Error("array index out of bounds") -bounds12: - $t1{t.10} = MulS(4 4) - $t1{t.10} = Add($t1{t.10} $t0{t.9}) - [$t1{t.10}+4] = 2 - $t1{t.11} = [$s0{this}+4] - if $t1{t.11} goto :null14 - Error("null pointer") -null14: - $t0{t.12} = [$t1{t.11}] - $t0{t.12} = Lt(5 $t0{t.12}) - if $t0{t.12} goto :bounds13 - Error("array index out of bounds") -bounds13: - $t0{t.12} = MulS(5 4) - $t0{t.12} = Add($t0{t.12} $t1{t.11}) - [$t0{t.12}+4] = 11 - $t0{t.13} = [$s0{this}+4] - if $t0{t.13} goto :null15 - Error("null pointer") -null15: - $t1{t.14} = [$t0{t.13}] - $t1{t.14} = Lt(6 $t1{t.14}) - if $t1{t.14} goto :bounds14 - Error("array index out of bounds") -bounds14: - $t1{t.14} = MulS(6 4) - $t1{t.14} = Add($t1{t.14} $t0{t.13}) - [$t1{t.14}+4] = 6 - $t1{t.15} = [$s0{this}+4] - if $t1{t.15} goto :null16 - Error("null pointer") -null16: - $t0{t.16} = [$t1{t.15}] - $t0{t.16} = Lt(7 $t0{t.16}) - if $t0{t.16} goto :bounds15 - Error("array index out of bounds") -bounds15: - $t0{t.16} = MulS(7 4) - $t0{t.16} = Add($t0{t.16} $t1{t.15}) - [$t0{t.16}+4] = 9 - $t0{t.17} = [$s0{this}+4] - if $t0{t.17} goto :null17 - Error("null pointer") -null17: - $t1{t.18} = [$t0{t.17}] - $t1{t.18} = Lt(8 $t1{t.18}) - if $t1{t.18} goto :bounds16 - Error("array index out of bounds") -bounds16: - $t1{t.18} = MulS(8 4) - $t1{t.18} = Add($t1{t.18} $t0{t.17}) - [$t1{t.18}+4] = 19 - $t1{t.19} = [$s0{this}+4] - if $t1{t.19} goto :null18 - Error("null pointer") -null18: - $t0{t.20} = [$t1{t.19}] - $t0{t.20} = Lt(9 $t0{t.20}) - if $t0{t.20} goto :bounds17 - Error("array index out of bounds") -bounds17: - $t0{t.20} = MulS(9 4) - $t0{t.20} = Add($t0{t.20} $t1{t.19}) - [$t0{t.20}+4] = 5 - $v0 = 0 - $s0 = local[0] - ret - -func AllocArray [in 0, out 0, local 0] - $t0{size} = $a0 - $t1{bytes} = MulS($t0{size} 4) - $t1{bytes} = Add($t1{bytes} 4) - $t1{v} = HeapAllocZ($t1{bytes}) - [$t1{v}] = $t0{size} - $v0 = $t1{v} - ret - diff --git a/vaporize/tests/BubbleSort.opt.names.vaporm b/vaporize/tests/BubbleSort.opt.names.vaporm deleted file mode 100644 index 943b295..0000000 --- a/vaporize/tests/BubbleSort.opt.names.vaporm +++ /dev/null @@ -1,301 +0,0 @@ -const empty_BBS - -func Main [in 0, out 0, local 0] - $t0{t.0} = HeapAllocZ(8) - if $t0{t.0} goto :null1 - Error("null pointer") -null1: - $a0 = $t0{t.0} - $a1 = 10 - call :BBS.Start - $t0{t.1} = $v0 - PrintIntS($t0{t.1}) - ret - -func BBS.Start [in 0, out 0, local 1] - local[0] = $s0 - $s0{this} = $a0 - $t0{sz} = $a1 - $a0 = $s0{this} - $a1 = $t0{sz} - call :BBS.Init - $a0 = $s0{this} - call :BBS.Print - PrintIntS(99999) - $a0 = $s0{this} - call :BBS.Sort - $a0 = $s0{this} - call :BBS.Print - $v0 = 0 - $s0 = local[0] - ret - -func BBS.Sort [in 0, out 0, local 0] - $t0{this} = $a0 - $t1{t.0} = [$t0{this}+4] - $t1{i} = Sub($t1{t.0} 1) - $t2{aux02} = Sub(0 1) -while1_top: - $t3{t.1} = LtS($t2{aux02} $t1{i}) - if0 $t3{t.1} goto :while1_end - $t3{j} = 1 -while2_top: - $t4{t.2} = Add($t1{i} 1) - $t4{t.3} = LtS($t3{j} $t4{t.2}) - if0 $t4{t.3} goto :while2_end - $t4{aux07} = Sub($t3{j} 1) - $t5{t.4} = [$t0{this}] - if $t5{t.4} goto :null2 - Error("null pointer") -null2: - $t6{t.5} = [$t5{t.4}] - $t6{t.5} = Lt($t4{aux07} $t6{t.5}) - if $t6{t.5} goto :bounds1 - Error("array index out of bounds") -bounds1: - $t6{t.5} = MulS($t4{aux07} 4) - $t6{t.5} = Add($t6{t.5} $t5{t.4}) - $t6{aux04} = [$t6{t.5}+4] - $t5{t.6} = [$t0{this}] - if $t5{t.6} goto :null3 - Error("null pointer") -null3: - $t4{t.7} = [$t5{t.6}] - $t4{t.7} = Lt($t3{j} $t4{t.7}) - if $t4{t.7} goto :bounds2 - Error("array index out of bounds") -bounds2: - $t4{t.7} = MulS($t3{j} 4) - $t4{t.7} = Add($t4{t.7} $t5{t.6}) - $t4{aux05} = [$t4{t.7}+4] - $t4{t.8} = LtS($t4{aux05} $t6{aux04}) - if0 $t4{t.8} goto :if1_else - $t4{aux06} = Sub($t3{j} 1) - $t6{t.9} = [$t0{this}] - if $t6{t.9} goto :null4 - Error("null pointer") -null4: - $t5{t.10} = [$t6{t.9}] - $t5{t.10} = Lt($t4{aux06} $t5{t.10}) - if $t5{t.10} goto :bounds3 - Error("array index out of bounds") -bounds3: - $t5{t.10} = MulS($t4{aux06} 4) - $t5{t.10} = Add($t5{t.10} $t6{t.9}) - $t5{t} = [$t5{t.10}+4] - $t6{t.11} = [$t0{this}] - if $t6{t.11} goto :null5 - Error("null pointer") -null5: - $t7{t.12} = [$t6{t.11}] - $t7{t.12} = Lt($t4{aux06} $t7{t.12}) - if $t7{t.12} goto :bounds4 - Error("array index out of bounds") -bounds4: - $t7{t.12} = MulS($t4{aux06} 4) - $t7{t.12} = Add($t7{t.12} $t6{t.11}) - $t6{t.13} = [$t0{this}] - if $t6{t.13} goto :null6 - Error("null pointer") -null6: - $t4{t.14} = [$t6{t.13}] - $t4{t.14} = Lt($t3{j} $t4{t.14}) - if $t4{t.14} goto :bounds5 - Error("array index out of bounds") -bounds5: - $t4{t.14} = MulS($t3{j} 4) - $t4{t.14} = Add($t4{t.14} $t6{t.13}) - $t4{t.15} = [$t4{t.14}+4] - [$t7{t.12}+4] = $t4{t.15} - $t4{t.16} = [$t0{this}] - if $t4{t.16} goto :null7 - Error("null pointer") -null7: - $t7{t.17} = [$t4{t.16}] - $t7{t.17} = Lt($t3{j} $t7{t.17}) - if $t7{t.17} goto :bounds6 - Error("array index out of bounds") -bounds6: - $t7{t.17} = MulS($t3{j} 4) - $t7{t.17} = Add($t7{t.17} $t4{t.16}) - [$t7{t.17}+4] = $t5{t} - goto :if1_end -if1_else: -if1_end: - $t3{j} = Add($t3{j} 1) - goto :while2_top -while2_end: - $t1{i} = Sub($t1{i} 1) - goto :while1_top -while1_end: - $v0 = 0 - ret - -func BBS.Print [in 0, out 0, local 0] - $t0{this} = $a0 - $t1{j} = 0 -while3_top: - $t2{t.0} = [$t0{this}+4] - $t2{t.1} = LtS($t1{j} $t2{t.0}) - if0 $t2{t.1} goto :while3_end - $t2{t.2} = [$t0{this}] - if $t2{t.2} goto :null8 - Error("null pointer") -null8: - $t3{t.3} = [$t2{t.2}] - $t3{t.3} = Lt($t1{j} $t3{t.3}) - if $t3{t.3} goto :bounds7 - Error("array index out of bounds") -bounds7: - $t3{t.3} = MulS($t1{j} 4) - $t3{t.3} = Add($t3{t.3} $t2{t.2}) - $t3{t.4} = [$t3{t.3}+4] - PrintIntS($t3{t.4}) - $t1{j} = Add($t1{j} 1) - goto :while3_top -while3_end: - $v0 = 0 - ret - -func BBS.Init [in 0, out 0, local 1] - local[0] = $s0 - $s0{this} = $a0 - $t0{sz} = $a1 - [$s0{this}+4] = $t0{sz} - $a0 = $t0{sz} - call :AllocArray - $t0{t.0} = $v0 - [$s0{this}] = $t0{t.0} - $t0{t.1} = [$s0{this}] - if $t0{t.1} goto :null9 - Error("null pointer") -null9: - $t1{t.2} = [$t0{t.1}] - $t1{t.2} = Lt(0 $t1{t.2}) - if $t1{t.2} goto :bounds8 - Error("array index out of bounds") -bounds8: - $t1{t.2} = MulS(0 4) - $t1{t.2} = Add($t1{t.2} $t0{t.1}) - [$t1{t.2}+4] = 20 - $t1{t.3} = [$s0{this}] - if $t1{t.3} goto :null10 - Error("null pointer") -null10: - $t0{t.4} = [$t1{t.3}] - $t0{t.4} = Lt(1 $t0{t.4}) - if $t0{t.4} goto :bounds9 - Error("array index out of bounds") -bounds9: - $t0{t.4} = MulS(1 4) - $t0{t.4} = Add($t0{t.4} $t1{t.3}) - [$t0{t.4}+4] = 7 - $t0{t.5} = [$s0{this}] - if $t0{t.5} goto :null11 - Error("null pointer") -null11: - $t1{t.6} = [$t0{t.5}] - $t1{t.6} = Lt(2 $t1{t.6}) - if $t1{t.6} goto :bounds10 - Error("array index out of bounds") -bounds10: - $t1{t.6} = MulS(2 4) - $t1{t.6} = Add($t1{t.6} $t0{t.5}) - [$t1{t.6}+4] = 12 - $t1{t.7} = [$s0{this}] - if $t1{t.7} goto :null12 - Error("null pointer") -null12: - $t0{t.8} = [$t1{t.7}] - $t0{t.8} = Lt(3 $t0{t.8}) - if $t0{t.8} goto :bounds11 - Error("array index out of bounds") -bounds11: - $t0{t.8} = MulS(3 4) - $t0{t.8} = Add($t0{t.8} $t1{t.7}) - [$t0{t.8}+4] = 18 - $t0{t.9} = [$s0{this}] - if $t0{t.9} goto :null13 - Error("null pointer") -null13: - $t1{t.10} = [$t0{t.9}] - $t1{t.10} = Lt(4 $t1{t.10}) - if $t1{t.10} goto :bounds12 - Error("array index out of bounds") -bounds12: - $t1{t.10} = MulS(4 4) - $t1{t.10} = Add($t1{t.10} $t0{t.9}) - [$t1{t.10}+4] = 2 - $t1{t.11} = [$s0{this}] - if $t1{t.11} goto :null14 - Error("null pointer") -null14: - $t0{t.12} = [$t1{t.11}] - $t0{t.12} = Lt(5 $t0{t.12}) - if $t0{t.12} goto :bounds13 - Error("array index out of bounds") -bounds13: - $t0{t.12} = MulS(5 4) - $t0{t.12} = Add($t0{t.12} $t1{t.11}) - [$t0{t.12}+4] = 11 - $t0{t.13} = [$s0{this}] - if $t0{t.13} goto :null15 - Error("null pointer") -null15: - $t1{t.14} = [$t0{t.13}] - $t1{t.14} = Lt(6 $t1{t.14}) - if $t1{t.14} goto :bounds14 - Error("array index out of bounds") -bounds14: - $t1{t.14} = MulS(6 4) - $t1{t.14} = Add($t1{t.14} $t0{t.13}) - [$t1{t.14}+4] = 6 - $t1{t.15} = [$s0{this}] - if $t1{t.15} goto :null16 - Error("null pointer") -null16: - $t0{t.16} = [$t1{t.15}] - $t0{t.16} = Lt(7 $t0{t.16}) - if $t0{t.16} goto :bounds15 - Error("array index out of bounds") -bounds15: - $t0{t.16} = MulS(7 4) - $t0{t.16} = Add($t0{t.16} $t1{t.15}) - [$t0{t.16}+4] = 9 - $t0{t.17} = [$s0{this}] - if $t0{t.17} goto :null17 - Error("null pointer") -null17: - $t1{t.18} = [$t0{t.17}] - $t1{t.18} = Lt(8 $t1{t.18}) - if $t1{t.18} goto :bounds16 - Error("array index out of bounds") -bounds16: - $t1{t.18} = MulS(8 4) - $t1{t.18} = Add($t1{t.18} $t0{t.17}) - [$t1{t.18}+4] = 19 - $t1{t.19} = [$s0{this}] - if $t1{t.19} goto :null18 - Error("null pointer") -null18: - $t0{t.20} = [$t1{t.19}] - $t0{t.20} = Lt(9 $t0{t.20}) - if $t0{t.20} goto :bounds17 - Error("array index out of bounds") -bounds17: - $t0{t.20} = MulS(9 4) - $t0{t.20} = Add($t0{t.20} $t1{t.19}) - [$t0{t.20}+4] = 5 - $v0 = 0 - $s0 = local[0] - ret - -func AllocArray [in 0, out 0, local 0] - $t0{size} = $a0 - $t1{bytes} = MulS($t0{size} 4) - $t1{bytes} = Add($t1{bytes} 4) - $t1{v} = HeapAllocZ($t1{bytes}) - [$t1{v}] = $t0{size} - $v0 = $t1{v} - ret - diff --git a/vaporize/tests/BubbleSort.opt.regalloc b/vaporize/tests/BubbleSort.opt.regalloc deleted file mode 100644 index 5696e19..0000000 --- a/vaporize/tests/BubbleSort.opt.regalloc +++ /dev/null @@ -1,230 +0,0 @@ -func Main - in 0, out 0, callee-saves 0, spills 0 -Live In: - t.0: 7 10 - t.1: 11 -Linear Range: - t.0: 6-10 - t.1: 10-11 -Allocation: - t.0: t0 - t.1: t0 - -func BBS.Start - in 0, out 0, callee-saves 1, spills 0 -Live In: - this: 15-19 - sz: 15 - aux01: -Linear Range: - this: 14-19 (cross call) - sz: 14-15 -Allocation: - this: s0 - sz: t0 - -func BBS.Sort - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 23-36 39-41 44-48 51-53 56-63 66-68 71-75 78-80 83-86 89-91 94-99 102-104 107-118 - t.0: 24 - i: 25-36 39-41 44-48 51-53 56-63 66-68 71-75 78-80 83-86 89-91 94-99 102-104 107-118 - aux02: 27-36 39-41 44-48 51-53 56-63 66-68 71-75 78-80 83-86 89-91 94-99 102-104 107-118 - t.1: 28 - j: 31-36 39-41 44-48 51-53 56-63 66-68 71-75 78-80 83-86 89-91 94-99 102-104 107-115 - t.2: 32 - t.3: 33 - aux07: 35-36 39-41 44 - t.4: 36 39-41 44-45 - t.5: 40-41 45-46 - aux04: 47-48 51-53 56-59 - t.6: 48 51-53 56-57 - t.7: 52-53 57-58 - aux05: 59 - t.8: 60 - aux06: 62-63 66-68 71-75 78-80 83 - t.9: 63 66-68 71-72 - t.10: 67-68 72-73 - t: 74-75 78-80 83-86 89-91 94-99 102-104 107-109 - t.11: 75 78-80 83-84 - t.12: 79-80 84-86 89-91 94-97 - t.13: 86 89-91 94-95 - t.14: 90-91 95-96 - t.15: 97 - t.16: 99 102-104 107-108 - t.17: 103-104 108-109 - nt: -Linear Range: - this: 22-118 - t.0: 23-24 - i: 24-118 - aux02: 25-118 - t.1: 27-28 - j: 29-115 - t.2: 31-32 - t.3: 32-33 - aux07: 34-44 - t.4: 35-45 - t.5: 39-46 - aux04: 46-59 - t.6: 47-57 - t.7: 51-58 - aux05: 58-59 - t.8: 59-60 - aux06: 61-83 - t.9: 62-72 - t.10: 66-73 - t: 73-109 - t.11: 74-84 - t.12: 78-97 - t.13: 85-95 - t.14: 89-96 - t.15: 96-97 - t.16: 98-108 - t.17: 102-109 -Allocation: - this: t0 - t.0: t1 - i: t1 - aux02: t2 - t.1: t3 - j: t3 - t.2: t4 - t.3: t4 - aux07: t4 - t.4: t5 - t.5: t6 - aux04: t6 - t.6: t5 - t.7: t4 - aux05: t4 - t.8: t4 - aux06: t4 - t.9: t6 - t.10: t5 - t: t5 - t.11: t6 - t.12: t7 - t.13: t6 - t.14: t4 - t.15: t4 - t.16: t4 - t.17: t7 - -func BBS.Print - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 123-129 132-134 137-142 - j: 125-129 132-134 137-142 - t.0: 126 - t.1: 127 - t.2: 129 132-134 137-138 - t.3: 133-134 138-139 - t.4: 140 -Linear Range: - this: 122-142 - j: 123-142 - t.0: 125-126 - t.1: 126-127 - t.2: 128-138 - t.3: 132-139 - t.4: 139-140 -Allocation: - this: t0 - j: t1 - t.0: t2 - t.1: t2 - t.2: t2 - t.3: t3 - t.4: t3 - -func BBS.Init - in 0, out 0, callee-saves 1, spills 0 -Live In: - this: 147-151 154-156 159-163 166-168 171-175 178-180 183-187 190-192 195-199 202-204 207-211 214-216 219-223 226-228 231-235 238-240 243-247 250-252 255-258 - sz: 147-148 - t.0: 149 - t.1: 151 154-156 159-160 - t.2: 155-156 160-161 - t.3: 163 166-168 171-172 - t.4: 167-168 172-173 - t.5: 175 178-180 183-184 - t.6: 179-180 184-185 - t.7: 187 190-192 195-196 - t.8: 191-192 196-197 - t.9: 199 202-204 207-208 - t.10: 203-204 208-209 - t.11: 211 214-216 219-220 - t.12: 215-216 220-221 - t.13: 223 226-228 231-232 - t.14: 227-228 232-233 - t.15: 235 238-240 243-244 - t.16: 239-240 244-245 - t.17: 247 250-252 255-256 - t.18: 251-252 256-257 - t.19: 259 262-264 267-268 - t.20: 263-264 268-269 -Linear Range: - this: 146-258 (cross call) - sz: 146-148 - t.0: 148-149 - t.1: 150-160 - t.2: 154-161 - t.3: 162-172 - t.4: 166-173 - t.5: 174-184 - t.6: 178-185 - t.7: 186-196 - t.8: 190-197 - t.9: 198-208 - t.10: 202-209 - t.11: 210-220 - t.12: 214-221 - t.13: 222-232 - t.14: 226-233 - t.15: 234-244 - t.16: 238-245 - t.17: 246-256 - t.18: 250-257 - t.19: 258-268 - t.20: 262-269 -Allocation: - this: s0 - sz: t0 - t.0: t0 - t.1: t0 - t.2: t1 - t.3: t1 - t.4: t0 - t.5: t0 - t.6: t1 - t.7: t1 - t.8: t0 - t.9: t0 - t.10: t1 - t.11: t1 - t.12: t0 - t.13: t0 - t.14: t1 - t.15: t1 - t.16: t0 - t.17: t0 - t.18: t1 - t.19: t1 - t.20: t0 - -func AllocArray - in 0, out 0, callee-saves 0, spills 0 -Live In: - size: 273-276 - bytes: 274-275 - v: 276-277 -Linear Range: - size: 272-276 - bytes: 273-275 - v: 275-277 -Allocation: - size: t0 - bytes: t1 - v: t1 - diff --git a/vaporize/tests/BubbleSort.opt.vapor b/vaporize/tests/BubbleSort.opt.vapor deleted file mode 100644 index a118894..0000000 --- a/vaporize/tests/BubbleSort.opt.vapor +++ /dev/null @@ -1,277 +0,0 @@ - -const empty_BBS - - -func Main() - t.0 = HeapAllocZ(8) - if t.0 goto :null1 - Error("null pointer") - null1: - t.1 = call :BBS.Start(t.0 10) - PrintIntS(t.1) - ret - -func BBS.Start(this sz) - aux01 = call :BBS.Init(this sz) - aux01 = call :BBS.Print(this) - PrintIntS(99999) - aux01 = call :BBS.Sort(this) - aux01 = call :BBS.Print(this) - ret 0 - -func BBS.Sort(this) - t.0 = [this+4] - i = Sub(t.0 1) - aux02 = Sub(0 1) - while1_top: - t.1 = LtS(aux02 i) - if0 t.1 goto :while1_end - j = 1 - while2_top: - t.2 = Add(i 1) - t.3 = LtS(j t.2) - if0 t.3 goto :while2_end - aux07 = Sub(j 1) - t.4 = [this+0] - if t.4 goto :null2 - Error("null pointer") - null2: - t.5 = [t.4] - t.5 = Lt(aux07 t.5) - if t.5 goto :bounds1 - Error("array index out of bounds") - bounds1: - t.5 = MulS(aux07 4) - t.5 = Add(t.5 t.4) - aux04 = [t.5+4] - t.6 = [this+0] - if t.6 goto :null3 - Error("null pointer") - null3: - t.7 = [t.6] - t.7 = Lt(j t.7) - if t.7 goto :bounds2 - Error("array index out of bounds") - bounds2: - t.7 = MulS(j 4) - t.7 = Add(t.7 t.6) - aux05 = [t.7+4] - t.8 = LtS(aux05 aux04) - if0 t.8 goto :if1_else - aux06 = Sub(j 1) - t.9 = [this+0] - if t.9 goto :null4 - Error("null pointer") - null4: - t.10 = [t.9] - t.10 = Lt(aux06 t.10) - if t.10 goto :bounds3 - Error("array index out of bounds") - bounds3: - t.10 = MulS(aux06 4) - t.10 = Add(t.10 t.9) - t = [t.10+4] - t.11 = [this+0] - if t.11 goto :null5 - Error("null pointer") - null5: - t.12 = [t.11] - t.12 = Lt(aux06 t.12) - if t.12 goto :bounds4 - Error("array index out of bounds") - bounds4: - t.12 = MulS(aux06 4) - t.12 = Add(t.12 t.11) - t.13 = [this+0] - if t.13 goto :null6 - Error("null pointer") - null6: - t.14 = [t.13] - t.14 = Lt(j t.14) - if t.14 goto :bounds5 - Error("array index out of bounds") - bounds5: - t.14 = MulS(j 4) - t.14 = Add(t.14 t.13) - t.15 = [t.14+4] - [t.12+4] = t.15 - t.16 = [this+0] - if t.16 goto :null7 - Error("null pointer") - null7: - t.17 = [t.16] - t.17 = Lt(j t.17) - if t.17 goto :bounds6 - Error("array index out of bounds") - bounds6: - t.17 = MulS(j 4) - t.17 = Add(t.17 t.16) - [t.17+4] = t - goto :if1_end - if1_else: - nt = 0 - if1_end: - j = Add(j 1) - goto :while2_top - while2_end: - i = Sub(i 1) - goto :while1_top - while1_end: - ret 0 - -func BBS.Print(this) - j = 0 - while3_top: - t.0 = [this+4] - t.1 = LtS(j t.0) - if0 t.1 goto :while3_end - t.2 = [this+0] - if t.2 goto :null8 - Error("null pointer") - null8: - t.3 = [t.2] - t.3 = Lt(j t.3) - if t.3 goto :bounds7 - Error("array index out of bounds") - bounds7: - t.3 = MulS(j 4) - t.3 = Add(t.3 t.2) - t.4 = [t.3+4] - PrintIntS(t.4) - j = Add(j 1) - goto :while3_top - while3_end: - ret 0 - -func BBS.Init(this sz) - [this+4] = sz - t.0 = call :AllocArray(sz) - [this+0] = t.0 - t.1 = [this+0] - if t.1 goto :null9 - Error("null pointer") - null9: - t.2 = [t.1] - t.2 = Lt(0 t.2) - if t.2 goto :bounds8 - Error("array index out of bounds") - bounds8: - t.2 = MulS(0 4) - t.2 = Add(t.2 t.1) - [t.2+4] = 20 - t.3 = [this+0] - if t.3 goto :null10 - Error("null pointer") - null10: - t.4 = [t.3] - t.4 = Lt(1 t.4) - if t.4 goto :bounds9 - Error("array index out of bounds") - bounds9: - t.4 = MulS(1 4) - t.4 = Add(t.4 t.3) - [t.4+4] = 7 - t.5 = [this+0] - if t.5 goto :null11 - Error("null pointer") - null11: - t.6 = [t.5] - t.6 = Lt(2 t.6) - if t.6 goto :bounds10 - Error("array index out of bounds") - bounds10: - t.6 = MulS(2 4) - t.6 = Add(t.6 t.5) - [t.6+4] = 12 - t.7 = [this+0] - if t.7 goto :null12 - Error("null pointer") - null12: - t.8 = [t.7] - t.8 = Lt(3 t.8) - if t.8 goto :bounds11 - Error("array index out of bounds") - bounds11: - t.8 = MulS(3 4) - t.8 = Add(t.8 t.7) - [t.8+4] = 18 - t.9 = [this+0] - if t.9 goto :null13 - Error("null pointer") - null13: - t.10 = [t.9] - t.10 = Lt(4 t.10) - if t.10 goto :bounds12 - Error("array index out of bounds") - bounds12: - t.10 = MulS(4 4) - t.10 = Add(t.10 t.9) - [t.10+4] = 2 - t.11 = [this+0] - if t.11 goto :null14 - Error("null pointer") - null14: - t.12 = [t.11] - t.12 = Lt(5 t.12) - if t.12 goto :bounds13 - Error("array index out of bounds") - bounds13: - t.12 = MulS(5 4) - t.12 = Add(t.12 t.11) - [t.12+4] = 11 - t.13 = [this+0] - if t.13 goto :null15 - Error("null pointer") - null15: - t.14 = [t.13] - t.14 = Lt(6 t.14) - if t.14 goto :bounds14 - Error("array index out of bounds") - bounds14: - t.14 = MulS(6 4) - t.14 = Add(t.14 t.13) - [t.14+4] = 6 - t.15 = [this+0] - if t.15 goto :null16 - Error("null pointer") - null16: - t.16 = [t.15] - t.16 = Lt(7 t.16) - if t.16 goto :bounds15 - Error("array index out of bounds") - bounds15: - t.16 = MulS(7 4) - t.16 = Add(t.16 t.15) - [t.16+4] = 9 - t.17 = [this+0] - if t.17 goto :null17 - Error("null pointer") - null17: - t.18 = [t.17] - t.18 = Lt(8 t.18) - if t.18 goto :bounds16 - Error("array index out of bounds") - bounds16: - t.18 = MulS(8 4) - t.18 = Add(t.18 t.17) - [t.18+4] = 19 - t.19 = [this+0] - if t.19 goto :null18 - Error("null pointer") - null18: - t.20 = [t.19] - t.20 = Lt(9 t.20) - if t.20 goto :bounds17 - Error("array index out of bounds") - bounds17: - t.20 = MulS(9 4) - t.20 = Add(t.20 t.19) - [t.20+4] = 5 - ret 0 - -func AllocArray(size) - bytes = MulS(size 4) - bytes = Add(bytes 4) - v = HeapAllocZ(bytes) - [v] = size - ret v diff --git a/vaporize/tests/BubbleSort.opt.vaporm b/vaporize/tests/BubbleSort.opt.vaporm deleted file mode 100644 index 41c6ac4..0000000 --- a/vaporize/tests/BubbleSort.opt.vaporm +++ /dev/null @@ -1,301 +0,0 @@ -const empty_BBS - -func Main [in 0, out 0, local 0] - $t0 = HeapAllocZ(8) - if $t0 goto :null1 - Error("null pointer") -null1: - $a0 = $t0 - $a1 = 10 - call :BBS.Start - $t0 = $v0 - PrintIntS($t0) - ret - -func BBS.Start [in 0, out 0, local 1] - local[0] = $s0 - $s0 = $a0 - $t0 = $a1 - $a0 = $s0 - $a1 = $t0 - call :BBS.Init - $a0 = $s0 - call :BBS.Print - PrintIntS(99999) - $a0 = $s0 - call :BBS.Sort - $a0 = $s0 - call :BBS.Print - $v0 = 0 - $s0 = local[0] - ret - -func BBS.Sort [in 0, out 0, local 0] - $t0 = $a0 - $t1 = [$t0+4] - $t1 = Sub($t1 1) - $t2 = Sub(0 1) -while1_top: - $t3 = LtS($t2 $t1) - if0 $t3 goto :while1_end - $t3 = 1 -while2_top: - $t4 = Add($t1 1) - $t4 = LtS($t3 $t4) - if0 $t4 goto :while2_end - $t4 = Sub($t3 1) - $t5 = [$t0] - if $t5 goto :null2 - Error("null pointer") -null2: - $t6 = [$t5] - $t6 = Lt($t4 $t6) - if $t6 goto :bounds1 - Error("array index out of bounds") -bounds1: - $t6 = MulS($t4 4) - $t6 = Add($t6 $t5) - $t6 = [$t6+4] - $t5 = [$t0] - if $t5 goto :null3 - Error("null pointer") -null3: - $t4 = [$t5] - $t4 = Lt($t3 $t4) - if $t4 goto :bounds2 - Error("array index out of bounds") -bounds2: - $t4 = MulS($t3 4) - $t4 = Add($t4 $t5) - $t4 = [$t4+4] - $t4 = LtS($t4 $t6) - if0 $t4 goto :if1_else - $t4 = Sub($t3 1) - $t6 = [$t0] - if $t6 goto :null4 - Error("null pointer") -null4: - $t5 = [$t6] - $t5 = Lt($t4 $t5) - if $t5 goto :bounds3 - Error("array index out of bounds") -bounds3: - $t5 = MulS($t4 4) - $t5 = Add($t5 $t6) - $t5 = [$t5+4] - $t6 = [$t0] - if $t6 goto :null5 - Error("null pointer") -null5: - $t7 = [$t6] - $t7 = Lt($t4 $t7) - if $t7 goto :bounds4 - Error("array index out of bounds") -bounds4: - $t7 = MulS($t4 4) - $t7 = Add($t7 $t6) - $t6 = [$t0] - if $t6 goto :null6 - Error("null pointer") -null6: - $t4 = [$t6] - $t4 = Lt($t3 $t4) - if $t4 goto :bounds5 - Error("array index out of bounds") -bounds5: - $t4 = MulS($t3 4) - $t4 = Add($t4 $t6) - $t4 = [$t4+4] - [$t7+4] = $t4 - $t4 = [$t0] - if $t4 goto :null7 - Error("null pointer") -null7: - $t7 = [$t4] - $t7 = Lt($t3 $t7) - if $t7 goto :bounds6 - Error("array index out of bounds") -bounds6: - $t7 = MulS($t3 4) - $t7 = Add($t7 $t4) - [$t7+4] = $t5 - goto :if1_end -if1_else: -if1_end: - $t3 = Add($t3 1) - goto :while2_top -while2_end: - $t1 = Sub($t1 1) - goto :while1_top -while1_end: - $v0 = 0 - ret - -func BBS.Print [in 0, out 0, local 0] - $t0 = $a0 - $t1 = 0 -while3_top: - $t2 = [$t0+4] - $t2 = LtS($t1 $t2) - if0 $t2 goto :while3_end - $t2 = [$t0] - if $t2 goto :null8 - Error("null pointer") -null8: - $t3 = [$t2] - $t3 = Lt($t1 $t3) - if $t3 goto :bounds7 - Error("array index out of bounds") -bounds7: - $t3 = MulS($t1 4) - $t3 = Add($t3 $t2) - $t3 = [$t3+4] - PrintIntS($t3) - $t1 = Add($t1 1) - goto :while3_top -while3_end: - $v0 = 0 - ret - -func BBS.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 = [$s0] - if $t0 goto :null9 - Error("null pointer") -null9: - $t1 = [$t0] - $t1 = Lt(0 $t1) - if $t1 goto :bounds8 - Error("array index out of bounds") -bounds8: - $t1 = MulS(0 4) - $t1 = Add($t1 $t0) - [$t1+4] = 20 - $t1 = [$s0] - if $t1 goto :null10 - Error("null pointer") -null10: - $t0 = [$t1] - $t0 = Lt(1 $t0) - if $t0 goto :bounds9 - Error("array index out of bounds") -bounds9: - $t0 = MulS(1 4) - $t0 = Add($t0 $t1) - [$t0+4] = 7 - $t0 = [$s0] - if $t0 goto :null11 - Error("null pointer") -null11: - $t1 = [$t0] - $t1 = Lt(2 $t1) - if $t1 goto :bounds10 - Error("array index out of bounds") -bounds10: - $t1 = MulS(2 4) - $t1 = Add($t1 $t0) - [$t1+4] = 12 - $t1 = [$s0] - if $t1 goto :null12 - Error("null pointer") -null12: - $t0 = [$t1] - $t0 = Lt(3 $t0) - if $t0 goto :bounds11 - Error("array index out of bounds") -bounds11: - $t0 = MulS(3 4) - $t0 = Add($t0 $t1) - [$t0+4] = 18 - $t0 = [$s0] - if $t0 goto :null13 - Error("null pointer") -null13: - $t1 = [$t0] - $t1 = Lt(4 $t1) - if $t1 goto :bounds12 - Error("array index out of bounds") -bounds12: - $t1 = MulS(4 4) - $t1 = Add($t1 $t0) - [$t1+4] = 2 - $t1 = [$s0] - if $t1 goto :null14 - Error("null pointer") -null14: - $t0 = [$t1] - $t0 = Lt(5 $t0) - if $t0 goto :bounds13 - Error("array index out of bounds") -bounds13: - $t0 = MulS(5 4) - $t0 = Add($t0 $t1) - [$t0+4] = 11 - $t0 = [$s0] - if $t0 goto :null15 - Error("null pointer") -null15: - $t1 = [$t0] - $t1 = Lt(6 $t1) - if $t1 goto :bounds14 - Error("array index out of bounds") -bounds14: - $t1 = MulS(6 4) - $t1 = Add($t1 $t0) - [$t1+4] = 6 - $t1 = [$s0] - if $t1 goto :null16 - Error("null pointer") -null16: - $t0 = [$t1] - $t0 = Lt(7 $t0) - if $t0 goto :bounds15 - Error("array index out of bounds") -bounds15: - $t0 = MulS(7 4) - $t0 = Add($t0 $t1) - [$t0+4] = 9 - $t0 = [$s0] - if $t0 goto :null17 - Error("null pointer") -null17: - $t1 = [$t0] - $t1 = Lt(8 $t1) - if $t1 goto :bounds16 - Error("array index out of bounds") -bounds16: - $t1 = MulS(8 4) - $t1 = Add($t1 $t0) - [$t1+4] = 19 - $t1 = [$s0] - if $t1 goto :null18 - Error("null pointer") -null18: - $t0 = [$t1] - $t0 = Lt(9 $t0) - if $t0 goto :bounds17 - Error("array index out of bounds") -bounds17: - $t0 = MulS(9 4) - $t0 = Add($t0 $t1) - [$t0+4] = 5 - $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 - diff --git a/vaporize/tests/BubbleSort.regalloc b/vaporize/tests/BubbleSort.regalloc deleted file mode 100644 index bd27d17..0000000 --- a/vaporize/tests/BubbleSort.regalloc +++ /dev/null @@ -1,245 +0,0 @@ -func Main - in 0, out 0, callee-saves 0, spills 0 -Live In: - t.0: 11-12 15-17 - t.1: 16-17 - t.2: 18 -Linear Range: - t.0: 10-17 - t.1: 15-17 - t.2: 17-18 -Allocation: - t.0: t0 - t.1: t1 - t.2: t1 - -func BBS.Start - in 0, out 0, callee-saves 1, spills 0 -Live In: - this: 22-34 - sz: 22-24 - t.0: 23-24 - aux01: - t.1: 26-27 - t.2: 30-31 - t.3: 33-34 -Linear Range: - this: 21-34 (cross call) - sz: 21-24 - t.0: 22-24 - t.1: 25-27 - t.2: 29-31 - t.3: 32-34 -Allocation: - this: s0 - sz: t0 - t.0: t1 - t.1: t1 - t.2: t1 - t.3: t1 - -func BBS.Sort - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 38-51 54-56 59-63 66-68 71-78 81-83 86-90 93-95 98-101 104-106 109-114 117-119 122-133 - t.0: 39 - i: 40-51 54-56 59-63 66-68 71-78 81-83 86-90 93-95 98-101 104-106 109-114 117-119 122-133 - aux02: 42-51 54-56 59-63 66-68 71-78 81-83 86-90 93-95 98-101 104-106 109-114 117-119 122-133 - t.1: 43 - j: 46-51 54-56 59-63 66-68 71-78 81-83 86-90 93-95 98-101 104-106 109-114 117-119 122-130 - t.2: 47 - t.3: 48 - aux07: 50-51 54-56 59 - t.4: 51 54-56 59-60 - t.5: 55-56 60-61 - aux04: 62-63 66-68 71-74 - t.6: 63 66-68 71-72 - t.7: 67-68 72-73 - aux05: 74 - t.8: 75 - aux06: 77-78 81-83 86-90 93-95 98 - t.9: 78 81-83 86-87 - t.10: 82-83 87-88 - t: 89-90 93-95 98-101 104-106 109-114 117-119 122-124 - t.11: 90 93-95 98-99 - t.12: 94-95 99-101 104-106 109-112 - t.13: 101 104-106 109-110 - t.14: 105-106 110-111 - t.15: 112 - t.16: 114 117-119 122-123 - t.17: 118-119 123-124 - nt: -Linear Range: - this: 37-133 - t.0: 38-39 - i: 39-133 - aux02: 40-133 - t.1: 42-43 - j: 44-130 - t.2: 46-47 - t.3: 47-48 - aux07: 49-59 - t.4: 50-60 - t.5: 54-61 - aux04: 61-74 - t.6: 62-72 - t.7: 66-73 - aux05: 73-74 - t.8: 74-75 - aux06: 76-98 - t.9: 77-87 - t.10: 81-88 - t: 88-124 - t.11: 89-99 - t.12: 93-112 - t.13: 100-110 - t.14: 104-111 - t.15: 111-112 - t.16: 113-123 - t.17: 117-124 -Allocation: - this: t0 - t.0: t1 - i: t1 - aux02: t2 - t.1: t3 - j: t3 - t.2: t4 - t.3: t4 - aux07: t4 - t.4: t5 - t.5: t6 - aux04: t6 - t.6: t5 - t.7: t4 - aux05: t4 - t.8: t4 - aux06: t4 - t.9: t6 - t.10: t5 - t: t5 - t.11: t6 - t.12: t7 - t.13: t6 - t.14: t4 - t.15: t4 - t.16: t4 - t.17: t7 - -func BBS.Print - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 138-144 147-149 152-157 - j: 140-144 147-149 152-157 - t.0: 141 - t.1: 142 - t.2: 144 147-149 152-153 - t.3: 148-149 153-154 - t.4: 155 -Linear Range: - this: 137-157 - j: 138-157 - t.0: 140-141 - t.1: 141-142 - t.2: 143-153 - t.3: 147-154 - t.4: 154-155 -Allocation: - this: t0 - j: t1 - t.0: t2 - t.1: t2 - t.2: t2 - t.3: t3 - t.4: t3 - -func BBS.Init - in 0, out 0, callee-saves 1, spills 0 -Live In: - this: 162-166 169-171 174-178 181-183 186-190 193-195 198-202 205-207 210-214 217-219 222-226 229-231 234-238 241-243 246-250 253-255 258-262 265-267 270-273 - sz: 162-163 - t.0: 164 - t.1: 166 169-171 174-175 - t.2: 170-171 175-176 - t.3: 178 181-183 186-187 - t.4: 182-183 187-188 - t.5: 190 193-195 198-199 - t.6: 194-195 199-200 - t.7: 202 205-207 210-211 - t.8: 206-207 211-212 - t.9: 214 217-219 222-223 - t.10: 218-219 223-224 - t.11: 226 229-231 234-235 - t.12: 230-231 235-236 - t.13: 238 241-243 246-247 - t.14: 242-243 247-248 - t.15: 250 253-255 258-259 - t.16: 254-255 259-260 - t.17: 262 265-267 270-271 - t.18: 266-267 271-272 - t.19: 274 277-279 282-283 - t.20: 278-279 283-284 -Linear Range: - this: 161-273 (cross call) - sz: 161-163 - t.0: 163-164 - t.1: 165-175 - t.2: 169-176 - t.3: 177-187 - t.4: 181-188 - t.5: 189-199 - t.6: 193-200 - t.7: 201-211 - t.8: 205-212 - t.9: 213-223 - t.10: 217-224 - t.11: 225-235 - t.12: 229-236 - t.13: 237-247 - t.14: 241-248 - t.15: 249-259 - t.16: 253-260 - t.17: 261-271 - t.18: 265-272 - t.19: 273-283 - t.20: 277-284 -Allocation: - this: s0 - sz: t0 - t.0: t0 - t.1: t0 - t.2: t1 - t.3: t1 - t.4: t0 - t.5: t0 - t.6: t1 - t.7: t1 - t.8: t0 - t.9: t0 - t.10: t1 - t.11: t1 - t.12: t0 - t.13: t0 - t.14: t1 - t.15: t1 - t.16: t0 - t.17: t0 - t.18: t1 - t.19: t1 - t.20: t0 - -func AllocArray - in 0, out 0, callee-saves 0, spills 0 -Live In: - size: 288-291 - bytes: 289-290 - v: 291-292 -Linear Range: - size: 287-291 - bytes: 288-290 - v: 290-292 -Allocation: - size: t0 - bytes: t1 - v: t1 - diff --git a/vaporize/tests/BubbleSort.vapor b/vaporize/tests/BubbleSort.vapor deleted file mode 100644 index cedba69..0000000 --- a/vaporize/tests/BubbleSort.vapor +++ /dev/null @@ -1,292 +0,0 @@ - -const vmt_BBS - :BBS.Start - :BBS.Sort - :BBS.Print - :BBS.Init - - -func Main() - t.0 = HeapAllocZ(12) - [t.0] = :vmt_BBS - if t.0 goto :null1 - Error("null pointer") - null1: - t.1 = [t.0] - t.1 = [t.1+0] - t.2 = call t.1(t.0 10) - PrintIntS(t.2) - ret - -func BBS.Start(this sz) - t.0 = [this] - t.0 = [t.0+12] - aux01 = call t.0(this sz) - t.1 = [this] - t.1 = [t.1+8] - aux01 = call t.1(this) - PrintIntS(99999) - t.2 = [this] - t.2 = [t.2+4] - aux01 = call t.2(this) - t.3 = [this] - t.3 = [t.3+8] - aux01 = call t.3(this) - ret 0 - -func BBS.Sort(this) - t.0 = [this+8] - i = Sub(t.0 1) - aux02 = Sub(0 1) - while1_top: - t.1 = LtS(aux02 i) - if0 t.1 goto :while1_end - j = 1 - while2_top: - t.2 = Add(i 1) - t.3 = LtS(j t.2) - if0 t.3 goto :while2_end - aux07 = Sub(j 1) - t.4 = [this+4] - if t.4 goto :null2 - Error("null pointer") - null2: - t.5 = [t.4] - t.5 = Lt(aux07 t.5) - if t.5 goto :bounds1 - Error("array index out of bounds") - bounds1: - t.5 = MulS(aux07 4) - t.5 = Add(t.5 t.4) - aux04 = [t.5+4] - t.6 = [this+4] - if t.6 goto :null3 - Error("null pointer") - null3: - t.7 = [t.6] - t.7 = Lt(j t.7) - if t.7 goto :bounds2 - Error("array index out of bounds") - bounds2: - t.7 = MulS(j 4) - t.7 = Add(t.7 t.6) - aux05 = [t.7+4] - t.8 = LtS(aux05 aux04) - if0 t.8 goto :if1_else - aux06 = Sub(j 1) - t.9 = [this+4] - if t.9 goto :null4 - Error("null pointer") - null4: - t.10 = [t.9] - t.10 = Lt(aux06 t.10) - if t.10 goto :bounds3 - Error("array index out of bounds") - bounds3: - t.10 = MulS(aux06 4) - t.10 = Add(t.10 t.9) - t = [t.10+4] - t.11 = [this+4] - if t.11 goto :null5 - Error("null pointer") - null5: - t.12 = [t.11] - t.12 = Lt(aux06 t.12) - if t.12 goto :bounds4 - Error("array index out of bounds") - bounds4: - t.12 = MulS(aux06 4) - t.12 = Add(t.12 t.11) - t.13 = [this+4] - if t.13 goto :null6 - Error("null pointer") - null6: - t.14 = [t.13] - t.14 = Lt(j t.14) - if t.14 goto :bounds5 - Error("array index out of bounds") - bounds5: - t.14 = MulS(j 4) - t.14 = Add(t.14 t.13) - t.15 = [t.14+4] - [t.12+4] = t.15 - t.16 = [this+4] - if t.16 goto :null7 - Error("null pointer") - null7: - t.17 = [t.16] - t.17 = Lt(j t.17) - if t.17 goto :bounds6 - Error("array index out of bounds") - bounds6: - t.17 = MulS(j 4) - t.17 = Add(t.17 t.16) - [t.17+4] = t - goto :if1_end - if1_else: - nt = 0 - if1_end: - j = Add(j 1) - goto :while2_top - while2_end: - i = Sub(i 1) - goto :while1_top - while1_end: - ret 0 - -func BBS.Print(this) - j = 0 - while3_top: - t.0 = [this+8] - t.1 = LtS(j t.0) - if0 t.1 goto :while3_end - t.2 = [this+4] - if t.2 goto :null8 - Error("null pointer") - null8: - t.3 = [t.2] - t.3 = Lt(j t.3) - if t.3 goto :bounds7 - Error("array index out of bounds") - bounds7: - t.3 = MulS(j 4) - t.3 = Add(t.3 t.2) - t.4 = [t.3+4] - PrintIntS(t.4) - j = Add(j 1) - goto :while3_top - while3_end: - ret 0 - -func BBS.Init(this sz) - [this+8] = sz - t.0 = call :AllocArray(sz) - [this+4] = t.0 - t.1 = [this+4] - if t.1 goto :null9 - Error("null pointer") - null9: - t.2 = [t.1] - t.2 = Lt(0 t.2) - if t.2 goto :bounds8 - Error("array index out of bounds") - bounds8: - t.2 = MulS(0 4) - t.2 = Add(t.2 t.1) - [t.2+4] = 20 - t.3 = [this+4] - if t.3 goto :null10 - Error("null pointer") - null10: - t.4 = [t.3] - t.4 = Lt(1 t.4) - if t.4 goto :bounds9 - Error("array index out of bounds") - bounds9: - t.4 = MulS(1 4) - t.4 = Add(t.4 t.3) - [t.4+4] = 7 - t.5 = [this+4] - if t.5 goto :null11 - Error("null pointer") - null11: - t.6 = [t.5] - t.6 = Lt(2 t.6) - if t.6 goto :bounds10 - Error("array index out of bounds") - bounds10: - t.6 = MulS(2 4) - t.6 = Add(t.6 t.5) - [t.6+4] = 12 - t.7 = [this+4] - if t.7 goto :null12 - Error("null pointer") - null12: - t.8 = [t.7] - t.8 = Lt(3 t.8) - if t.8 goto :bounds11 - Error("array index out of bounds") - bounds11: - t.8 = MulS(3 4) - t.8 = Add(t.8 t.7) - [t.8+4] = 18 - t.9 = [this+4] - if t.9 goto :null13 - Error("null pointer") - null13: - t.10 = [t.9] - t.10 = Lt(4 t.10) - if t.10 goto :bounds12 - Error("array index out of bounds") - bounds12: - t.10 = MulS(4 4) - t.10 = Add(t.10 t.9) - [t.10+4] = 2 - t.11 = [this+4] - if t.11 goto :null14 - Error("null pointer") - null14: - t.12 = [t.11] - t.12 = Lt(5 t.12) - if t.12 goto :bounds13 - Error("array index out of bounds") - bounds13: - t.12 = MulS(5 4) - t.12 = Add(t.12 t.11) - [t.12+4] = 11 - t.13 = [this+4] - if t.13 goto :null15 - Error("null pointer") - null15: - t.14 = [t.13] - t.14 = Lt(6 t.14) - if t.14 goto :bounds14 - Error("array index out of bounds") - bounds14: - t.14 = MulS(6 4) - t.14 = Add(t.14 t.13) - [t.14+4] = 6 - t.15 = [this+4] - if t.15 goto :null16 - Error("null pointer") - null16: - t.16 = [t.15] - t.16 = Lt(7 t.16) - if t.16 goto :bounds15 - Error("array index out of bounds") - bounds15: - t.16 = MulS(7 4) - t.16 = Add(t.16 t.15) - [t.16+4] = 9 - t.17 = [this+4] - if t.17 goto :null17 - Error("null pointer") - null17: - t.18 = [t.17] - t.18 = Lt(8 t.18) - if t.18 goto :bounds16 - Error("array index out of bounds") - bounds16: - t.18 = MulS(8 4) - t.18 = Add(t.18 t.17) - [t.18+4] = 19 - t.19 = [this+4] - if t.19 goto :null18 - Error("null pointer") - null18: - t.20 = [t.19] - t.20 = Lt(9 t.20) - if t.20 goto :bounds17 - Error("array index out of bounds") - bounds17: - t.20 = MulS(9 4) - t.20 = Add(t.20 t.19) - [t.20+4] = 5 - ret 0 - -func AllocArray(size) - bytes = MulS(size 4) - bytes = Add(bytes 4) - v = HeapAllocZ(bytes) - [v] = size - ret v diff --git a/vaporize/tests/BubbleSort.vaporm b/vaporize/tests/BubbleSort.vaporm deleted file mode 100644 index f64e2b3..0000000 --- a/vaporize/tests/BubbleSort.vaporm +++ /dev/null @@ -1,316 +0,0 @@ -const vmt_BBS - :BBS.Start - :BBS.Sort - :BBS.Print - :BBS.Init - -func Main [in 0, out 0, local 0] - $t0 = HeapAllocZ(12) - [$t0] = :vmt_BBS - if $t0 goto :null1 - Error("null pointer") -null1: - $t1 = [$t0] - $t1 = [$t1] - $a0 = $t0 - $a1 = 10 - call $t1 - $t1 = $v0 - PrintIntS($t1) - ret - -func BBS.Start [in 0, out 0, local 1] - local[0] = $s0 - $s0 = $a0 - $t0 = $a1 - $t1 = [$s0] - $t1 = [$t1+12] - $a0 = $s0 - $a1 = $t0 - call $t1 - $t1 = [$s0] - $t1 = [$t1+8] - $a0 = $s0 - call $t1 - PrintIntS(99999) - $t1 = [$s0] - $t1 = [$t1+4] - $a0 = $s0 - call $t1 - $t1 = [$s0] - $t1 = [$t1+8] - $a0 = $s0 - call $t1 - $v0 = 0 - $s0 = local[0] - ret - -func BBS.Sort [in 0, out 0, local 0] - $t0 = $a0 - $t1 = [$t0+8] - $t1 = Sub($t1 1) - $t2 = Sub(0 1) -while1_top: - $t3 = LtS($t2 $t1) - if0 $t3 goto :while1_end - $t3 = 1 -while2_top: - $t4 = Add($t1 1) - $t4 = LtS($t3 $t4) - if0 $t4 goto :while2_end - $t4 = Sub($t3 1) - $t5 = [$t0+4] - if $t5 goto :null2 - Error("null pointer") -null2: - $t6 = [$t5] - $t6 = Lt($t4 $t6) - if $t6 goto :bounds1 - Error("array index out of bounds") -bounds1: - $t6 = MulS($t4 4) - $t6 = Add($t6 $t5) - $t6 = [$t6+4] - $t5 = [$t0+4] - if $t5 goto :null3 - Error("null pointer") -null3: - $t4 = [$t5] - $t4 = Lt($t3 $t4) - if $t4 goto :bounds2 - Error("array index out of bounds") -bounds2: - $t4 = MulS($t3 4) - $t4 = Add($t4 $t5) - $t4 = [$t4+4] - $t4 = LtS($t4 $t6) - if0 $t4 goto :if1_else - $t4 = Sub($t3 1) - $t6 = [$t0+4] - if $t6 goto :null4 - Error("null pointer") -null4: - $t5 = [$t6] - $t5 = Lt($t4 $t5) - if $t5 goto :bounds3 - Error("array index out of bounds") -bounds3: - $t5 = MulS($t4 4) - $t5 = Add($t5 $t6) - $t5 = [$t5+4] - $t6 = [$t0+4] - if $t6 goto :null5 - Error("null pointer") -null5: - $t7 = [$t6] - $t7 = Lt($t4 $t7) - if $t7 goto :bounds4 - Error("array index out of bounds") -bounds4: - $t7 = MulS($t4 4) - $t7 = Add($t7 $t6) - $t6 = [$t0+4] - if $t6 goto :null6 - Error("null pointer") -null6: - $t4 = [$t6] - $t4 = Lt($t3 $t4) - if $t4 goto :bounds5 - Error("array index out of bounds") -bounds5: - $t4 = MulS($t3 4) - $t4 = Add($t4 $t6) - $t4 = [$t4+4] - [$t7+4] = $t4 - $t4 = [$t0+4] - if $t4 goto :null7 - Error("null pointer") -null7: - $t7 = [$t4] - $t7 = Lt($t3 $t7) - if $t7 goto :bounds6 - Error("array index out of bounds") -bounds6: - $t7 = MulS($t3 4) - $t7 = Add($t7 $t4) - [$t7+4] = $t5 - goto :if1_end -if1_else: -if1_end: - $t3 = Add($t3 1) - goto :while2_top -while2_end: - $t1 = Sub($t1 1) - goto :while1_top -while1_end: - $v0 = 0 - ret - -func BBS.Print [in 0, out 0, local 0] - $t0 = $a0 - $t1 = 0 -while3_top: - $t2 = [$t0+8] - $t2 = LtS($t1 $t2) - if0 $t2 goto :while3_end - $t2 = [$t0+4] - if $t2 goto :null8 - Error("null pointer") -null8: - $t3 = [$t2] - $t3 = Lt($t1 $t3) - if $t3 goto :bounds7 - Error("array index out of bounds") -bounds7: - $t3 = MulS($t1 4) - $t3 = Add($t3 $t2) - $t3 = [$t3+4] - PrintIntS($t3) - $t1 = Add($t1 1) - goto :while3_top -while3_end: - $v0 = 0 - ret - -func BBS.Init [in 0, out 0, local 1] - local[0] = $s0 - $s0 = $a0 - $t0 = $a1 - [$s0+8] = $t0 - $a0 = $t0 - call :AllocArray - $t0 = $v0 - [$s0+4] = $t0 - $t0 = [$s0+4] - if $t0 goto :null9 - Error("null pointer") -null9: - $t1 = [$t0] - $t1 = Lt(0 $t1) - if $t1 goto :bounds8 - Error("array index out of bounds") -bounds8: - $t1 = MulS(0 4) - $t1 = Add($t1 $t0) - [$t1+4] = 20 - $t1 = [$s0+4] - if $t1 goto :null10 - Error("null pointer") -null10: - $t0 = [$t1] - $t0 = Lt(1 $t0) - if $t0 goto :bounds9 - Error("array index out of bounds") -bounds9: - $t0 = MulS(1 4) - $t0 = Add($t0 $t1) - [$t0+4] = 7 - $t0 = [$s0+4] - if $t0 goto :null11 - Error("null pointer") -null11: - $t1 = [$t0] - $t1 = Lt(2 $t1) - if $t1 goto :bounds10 - Error("array index out of bounds") -bounds10: - $t1 = MulS(2 4) - $t1 = Add($t1 $t0) - [$t1+4] = 12 - $t1 = [$s0+4] - if $t1 goto :null12 - Error("null pointer") -null12: - $t0 = [$t1] - $t0 = Lt(3 $t0) - if $t0 goto :bounds11 - Error("array index out of bounds") -bounds11: - $t0 = MulS(3 4) - $t0 = Add($t0 $t1) - [$t0+4] = 18 - $t0 = [$s0+4] - if $t0 goto :null13 - Error("null pointer") -null13: - $t1 = [$t0] - $t1 = Lt(4 $t1) - if $t1 goto :bounds12 - Error("array index out of bounds") -bounds12: - $t1 = MulS(4 4) - $t1 = Add($t1 $t0) - [$t1+4] = 2 - $t1 = [$s0+4] - if $t1 goto :null14 - Error("null pointer") -null14: - $t0 = [$t1] - $t0 = Lt(5 $t0) - if $t0 goto :bounds13 - Error("array index out of bounds") -bounds13: - $t0 = MulS(5 4) - $t0 = Add($t0 $t1) - [$t0+4] = 11 - $t0 = [$s0+4] - if $t0 goto :null15 - Error("null pointer") -null15: - $t1 = [$t0] - $t1 = Lt(6 $t1) - if $t1 goto :bounds14 - Error("array index out of bounds") -bounds14: - $t1 = MulS(6 4) - $t1 = Add($t1 $t0) - [$t1+4] = 6 - $t1 = [$s0+4] - if $t1 goto :null16 - Error("null pointer") -null16: - $t0 = [$t1] - $t0 = Lt(7 $t0) - if $t0 goto :bounds15 - Error("array index out of bounds") -bounds15: - $t0 = MulS(7 4) - $t0 = Add($t0 $t1) - [$t0+4] = 9 - $t0 = [$s0+4] - if $t0 goto :null17 - Error("null pointer") -null17: - $t1 = [$t0] - $t1 = Lt(8 $t1) - if $t1 goto :bounds16 - Error("array index out of bounds") -bounds16: - $t1 = MulS(8 4) - $t1 = Add($t1 $t0) - [$t1+4] = 19 - $t1 = [$s0+4] - if $t1 goto :null18 - Error("null pointer") -null18: - $t0 = [$t1] - $t0 = Lt(9 $t0) - if $t0 goto :bounds17 - Error("array index out of bounds") -bounds17: - $t0 = MulS(9 4) - $t0 = Add($t0 $t1) - [$t0+4] = 5 - $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 - diff --git a/vaporize/tests/Factorial.names.vaporm b/vaporize/tests/Factorial.names.vaporm deleted file mode 100644 index 7c2c2d7..0000000 --- a/vaporize/tests/Factorial.names.vaporm +++ /dev/null @@ -1,40 +0,0 @@ -const vmt_Fac - :Fac.ComputeFac - -func Main [in 0, out 0, local 0] - $t0{t.0} = HeapAllocZ(4) - [$t0{t.0}] = :vmt_Fac - if $t0{t.0} goto :null1 - Error("null pointer") -null1: - $t1{t.1} = [$t0{t.0}] - $t1{t.1} = [$t1{t.1}] - $a0 = $t0{t.0} - $a1 = 10 - call $t1{t.1} - $t1{t.2} = $v0 - PrintIntS($t1{t.2}) - ret - -func Fac.ComputeFac [in 0, out 0, local 1] - local[0] = $s0 - $t0{this} = $a0 - $s0{num} = $a1 - $t1{t.0} = LtS($s0{num} 1) - if0 $t1{t.0} goto :if1_else - $t1{num_aux} = 1 - goto :if1_end -if1_else: - $t2{t.1} = [$t0{this}] - $t2{t.1} = [$t2{t.1}] - $t3{t.2} = Sub($s0{num} 1) - $a0 = $t0{this} - $a1 = $t3{t.2} - call $t2{t.1} - $t3{t.3} = $v0 - $t1{num_aux} = MulS($s0{num} $t3{t.3}) -if1_end: - $v0 = $t1{num_aux} - $s0 = local[0] - ret - diff --git a/vaporize/tests/Factorial.opt.names.vaporm b/vaporize/tests/Factorial.opt.names.vaporm deleted file mode 100644 index bbc6604..0000000 --- a/vaporize/tests/Factorial.opt.names.vaporm +++ /dev/null @@ -1,30 +0,0 @@ -const empty_Fac - -func Main [in 0, out 0, local 0] - $a0 = :empty_Fac - $a1 = 10 - call :Fac.ComputeFac - $t0{t.0} = $v0 - PrintIntS($t0{t.0}) - ret - -func Fac.ComputeFac [in 0, out 0, local 1] - local[0] = $s0 - $t0{this} = $a0 - $s0{num} = $a1 - $t1{t.0} = LtS($s0{num} 1) - if0 $t1{t.0} goto :if1_else - $t1{num_aux} = 1 - goto :if1_end -if1_else: - $t2{t.1} = Sub($s0{num} 1) - $a0 = $t0{this} - $a1 = $t2{t.1} - call :Fac.ComputeFac - $t2{t.2} = $v0 - $t1{num_aux} = MulS($s0{num} $t2{t.2}) -if1_end: - $v0 = $t1{num_aux} - $s0 = local[0] - ret - diff --git a/vaporize/tests/Factorial.opt.regalloc b/vaporize/tests/Factorial.opt.regalloc deleted file mode 100644 index 21e46f5..0000000 --- a/vaporize/tests/Factorial.opt.regalloc +++ /dev/null @@ -1,33 +0,0 @@ -func Main - in 0, out 0, callee-saves 0, spills 0 -Live In: - t.0: 7 -Linear Range: - t.0: 6-7 -Allocation: - t.0: t0 - -func Fac.ComputeFac - in 0, out 0, callee-saves 1, spills 0 -Live In: - this: 11-12 16-17 - num: 11-12 16-18 - t.0: 12 - num_aux: 14 20 - t.1: 17 - t.2: 18 -Linear Range: - this: 10-17 - num: 10-18 (cross call) - t.0: 11-12 - num_aux: 13-20 - t.1: 16-17 - t.2: 17-18 -Allocation: - this: t0 - num: s0 - t.0: t1 - num_aux: t1 - t.1: t2 - t.2: t2 - diff --git a/vaporize/tests/Factorial.opt.vapor b/vaporize/tests/Factorial.opt.vapor deleted file mode 100644 index aca17fe..0000000 --- a/vaporize/tests/Factorial.opt.vapor +++ /dev/null @@ -1,20 +0,0 @@ - -const empty_Fac - - -func Main() - t.0 = call :Fac.ComputeFac(:empty_Fac 10) - PrintIntS(t.0) - ret - -func Fac.ComputeFac(this num) - t.0 = LtS(num 1) - if0 t.0 goto :if1_else - num_aux = 1 - goto :if1_end - if1_else: - t.1 = Sub(num 1) - t.2 = call :Fac.ComputeFac(this t.1) - num_aux = MulS(num t.2) - if1_end: - ret num_aux diff --git a/vaporize/tests/Factorial.opt.vaporm b/vaporize/tests/Factorial.opt.vaporm deleted file mode 100644 index fb5f8e6..0000000 --- a/vaporize/tests/Factorial.opt.vaporm +++ /dev/null @@ -1,30 +0,0 @@ -const empty_Fac - -func Main [in 0, out 0, local 0] - $a0 = :empty_Fac - $a1 = 10 - call :Fac.ComputeFac - $t0 = $v0 - PrintIntS($t0) - ret - -func Fac.ComputeFac [in 0, out 0, local 1] - local[0] = $s0 - $t0 = $a0 - $s0 = $a1 - $t1 = LtS($s0 1) - if0 $t1 goto :if1_else - $t1 = 1 - goto :if1_end -if1_else: - $t2 = Sub($s0 1) - $a0 = $t0 - $a1 = $t2 - call :Fac.ComputeFac - $t2 = $v0 - $t1 = MulS($s0 $t2) -if1_end: - $v0 = $t1 - $s0 = local[0] - ret - diff --git a/vaporize/tests/Factorial.regalloc b/vaporize/tests/Factorial.regalloc deleted file mode 100644 index e07e8d1..0000000 --- a/vaporize/tests/Factorial.regalloc +++ /dev/null @@ -1,42 +0,0 @@ -func Main - in 0, out 0, callee-saves 0, spills 0 -Live In: - t.0: 8-9 12-14 - t.1: 13-14 - t.2: 15 -Linear Range: - t.0: 7-14 - t.1: 12-14 - t.2: 14-15 -Allocation: - t.0: t0 - t.1: t1 - t.2: t1 - -func Fac.ComputeFac - in 0, out 0, callee-saves 1, spills 0 -Live In: - this: 19-20 24-27 - num: 19-20 24-28 - t.0: 20 - num_aux: 22 30 - t.1: 25-27 - t.2: 27 - t.3: 28 -Linear Range: - this: 18-27 - num: 18-28 (cross call) - t.0: 19-20 - num_aux: 21-30 - t.1: 24-27 - t.2: 26-27 - t.3: 27-28 -Allocation: - this: t0 - num: s0 - t.0: t1 - num_aux: t1 - t.1: t2 - t.2: t3 - t.3: t3 - diff --git a/vaporize/tests/Factorial.vapor b/vaporize/tests/Factorial.vapor deleted file mode 100644 index 28e1126..0000000 --- a/vaporize/tests/Factorial.vapor +++ /dev/null @@ -1,30 +0,0 @@ - -const vmt_Fac - :Fac.ComputeFac - - -func Main() - t.0 = HeapAllocZ(4) - [t.0] = :vmt_Fac - if t.0 goto :null1 - Error("null pointer") - null1: - t.1 = [t.0] - t.1 = [t.1+0] - t.2 = call t.1(t.0 10) - PrintIntS(t.2) - ret - -func Fac.ComputeFac(this num) - t.0 = LtS(num 1) - if0 t.0 goto :if1_else - num_aux = 1 - goto :if1_end - if1_else: - t.1 = [this] - t.1 = [t.1+0] - t.2 = Sub(num 1) - t.3 = call t.1(this t.2) - num_aux = MulS(num t.3) - if1_end: - ret num_aux diff --git a/vaporize/tests/Factorial.vaporm b/vaporize/tests/Factorial.vaporm deleted file mode 100644 index a7e981c..0000000 --- a/vaporize/tests/Factorial.vaporm +++ /dev/null @@ -1,40 +0,0 @@ -const vmt_Fac - :Fac.ComputeFac - -func Main [in 0, out 0, local 0] - $t0 = HeapAllocZ(4) - [$t0] = :vmt_Fac - if $t0 goto :null1 - Error("null pointer") -null1: - $t1 = [$t0] - $t1 = [$t1] - $a0 = $t0 - $a1 = 10 - call $t1 - $t1 = $v0 - PrintIntS($t1) - ret - -func Fac.ComputeFac [in 0, out 0, local 1] - local[0] = $s0 - $t0 = $a0 - $s0 = $a1 - $t1 = LtS($s0 1) - if0 $t1 goto :if1_else - $t1 = 1 - goto :if1_end -if1_else: - $t2 = [$t0] - $t2 = [$t2] - $t3 = Sub($s0 1) - $a0 = $t0 - $a1 = $t3 - call $t2 - $t3 = $v0 - $t1 = MulS($s0 $t3) -if1_end: - $v0 = $t1 - $s0 = local[0] - ret - diff --git a/vaporize/tests/LinearSearch.names.vaporm b/vaporize/tests/LinearSearch.names.vaporm deleted file mode 100644 index 7dbe0c8..0000000 --- a/vaporize/tests/LinearSearch.names.vaporm +++ /dev/null @@ -1,182 +0,0 @@ -const vmt_LS - :LS.Start - :LS.Print - :LS.Search - :LS.Init - -func Main [in 0, out 0, local 0] - $t0{t.0} = HeapAllocZ(12) - [$t0{t.0}] = :vmt_LS - if $t0{t.0} goto :null1 - Error("null pointer") -null1: - $t1{t.1} = [$t0{t.0}] - $t1{t.1} = [$t1{t.1}] - $a0 = $t0{t.0} - $a1 = 10 - call $t1{t.1} - $t1{t.2} = $v0 - PrintIntS($t1{t.2}) - ret - -func LS.Start [in 0, out 0, local 1] - local[0] = $s0 - $s0{this} = $a0 - $t0{sz} = $a1 - $t1{t.0} = [$s0{this}] - $t1{t.0} = [$t1{t.0}+12] - $a0 = $s0{this} - $a1 = $t0{sz} - call $t1{t.0} - $t1{t.1} = [$s0{this}] - $t1{t.1} = [$t1{t.1}+4] - $a0 = $s0{this} - call $t1{t.1} - PrintIntS(9999) - $t1{t.2} = [$s0{this}] - $t1{t.2} = [$t1{t.2}+8] - $a0 = $s0{this} - $a1 = 8 - call $t1{t.2} - $t1{t.3} = $v0 - PrintIntS($t1{t.3}) - $t1{t.4} = [$s0{this}] - $t1{t.4} = [$t1{t.4}+8] - $a0 = $s0{this} - $a1 = 12 - call $t1{t.4} - $t1{t.5} = $v0 - PrintIntS($t1{t.5}) - $t1{t.6} = [$s0{this}] - $t1{t.6} = [$t1{t.6}+8] - $a0 = $s0{this} - $a1 = 17 - call $t1{t.6} - $t1{t.7} = $v0 - PrintIntS($t1{t.7}) - $t1{t.8} = [$s0{this}] - $t1{t.8} = [$t1{t.8}+8] - $a0 = $s0{this} - $a1 = 50 - call $t1{t.8} - $t1{t.9} = $v0 - PrintIntS($t1{t.9}) - $v0 = 55 - $s0 = local[0] - ret - -func LS.Print [in 0, out 0, local 0] - $t0{this} = $a0 - $t1{j} = 1 -while1_top: - $t2{t.0} = [$t0{this}+8] - $t2{t.1} = LtS($t1{j} $t2{t.0}) - if0 $t2{t.1} goto :while1_end - $t2{t.2} = [$t0{this}+4] - if $t2{t.2} goto :null2 - Error("null pointer") -null2: - $t3{t.3} = [$t2{t.2}] - $t3{t.3} = Lt($t1{j} $t3{t.3}) - if $t3{t.3} goto :bounds1 - Error("array index out of bounds") -bounds1: - $t3{t.3} = MulS($t1{j} 4) - $t3{t.3} = Add($t3{t.3} $t2{t.2}) - $t3{t.4} = [$t3{t.3}+4] - PrintIntS($t3{t.4}) - $t1{j} = Add($t1{j} 1) - goto :while1_top -while1_end: - $v0 = 0 - ret - -func LS.Search [in 0, out 0, local 0] - $t0{this} = $a0 - $t1{num} = $a1 - $t2{j} = 1 - $t3{ifound} = 0 -while2_top: - $t4{t.0} = [$t0{this}+8] - $t4{t.1} = LtS($t2{j} $t4{t.0}) - if0 $t4{t.1} goto :while2_end - $t4{t.2} = [$t0{this}+4] - if $t4{t.2} goto :null3 - Error("null pointer") -null3: - $t5{t.3} = [$t4{t.2}] - $t5{t.3} = Lt($t2{j} $t5{t.3}) - if $t5{t.3} goto :bounds2 - Error("array index out of bounds") -bounds2: - $t5{t.3} = MulS($t2{j} 4) - $t5{t.3} = Add($t5{t.3} $t4{t.2}) - $t5{aux01} = [$t5{t.3}+4] - $t4{aux02} = Add($t1{num} 1) - $t6{t.4} = LtS($t5{aux01} $t1{num}) - if0 $t6{t.4} goto :if1_else - goto :if1_end -if1_else: - $t4{t.5} = LtS($t5{aux01} $t4{aux02}) - $t4{t.6} = Sub(1 $t4{t.5}) - if0 $t4{t.6} goto :if2_else - goto :if2_end -if2_else: - $t3{ifound} = 1 - $t2{j} = [$t0{this}+8] -if2_end: -if1_end: - $t2{j} = Add($t2{j} 1) - goto :while2_top -while2_end: - $v0 = $t3{ifound} - ret - -func LS.Init [in 0, out 0, local 1] - local[0] = $s0 - $s0{this} = $a0 - $t0{sz} = $a1 - [$s0{this}+8] = $t0{sz} - $a0 = $t0{sz} - call :AllocArray - $t0{t.0} = $v0 - [$s0{this}+4] = $t0{t.0} - $t0{j} = 1 - $t1{t.1} = [$s0{this}+8] - $t1{k} = Add($t1{t.1} 1) -while3_top: - $t2{t.2} = [$s0{this}+8] - $t2{t.3} = LtS($t0{j} $t2{t.2}) - if0 $t2{t.3} goto :while3_end - $t2{aux01} = MulS(2 $t0{j}) - $t3{aux02} = Sub($t1{k} 3) - $t4{t.4} = [$s0{this}+4] - if $t4{t.4} goto :null4 - Error("null pointer") -null4: - $t5{t.5} = [$t4{t.4}] - $t5{t.5} = Lt($t0{j} $t5{t.5}) - if $t5{t.5} goto :bounds3 - Error("array index out of bounds") -bounds3: - $t5{t.5} = MulS($t0{j} 4) - $t5{t.5} = Add($t5{t.5} $t4{t.4}) - $t3{t.6} = Add($t2{aux01} $t3{aux02}) - [$t5{t.5}+4] = $t3{t.6} - $t0{j} = Add($t0{j} 1) - $t1{k} = Sub($t1{k} 1) - goto :while3_top -while3_end: - $v0 = 0 - $s0 = local[0] - ret - -func AllocArray [in 0, out 0, local 0] - $t0{size} = $a0 - $t1{bytes} = MulS($t0{size} 4) - $t1{bytes} = Add($t1{bytes} 4) - $t1{v} = HeapAllocZ($t1{bytes}) - [$t1{v}] = $t0{size} - $v0 = $t1{v} - ret - diff --git a/vaporize/tests/LinearSearch.opt.names.vaporm b/vaporize/tests/LinearSearch.opt.names.vaporm deleted file mode 100644 index de6b96a..0000000 --- a/vaporize/tests/LinearSearch.opt.names.vaporm +++ /dev/null @@ -1,162 +0,0 @@ -const empty_LS - -func Main [in 0, out 0, local 0] - $t0{t.0} = HeapAllocZ(8) - if $t0{t.0} goto :null1 - Error("null pointer") -null1: - $a0 = $t0{t.0} - $a1 = 10 - call :LS.Start - $t0{t.1} = $v0 - PrintIntS($t0{t.1}) - ret - -func LS.Start [in 0, out 0, local 1] - local[0] = $s0 - $s0{this} = $a0 - $t0{sz} = $a1 - $a0 = $s0{this} - $a1 = $t0{sz} - call :LS.Init - $a0 = $s0{this} - call :LS.Print - PrintIntS(9999) - $a0 = $s0{this} - $a1 = 8 - call :LS.Search - $t0{t.0} = $v0 - PrintIntS($t0{t.0}) - $a0 = $s0{this} - $a1 = 12 - call :LS.Search - $t0{t.1} = $v0 - PrintIntS($t0{t.1}) - $a0 = $s0{this} - $a1 = 17 - call :LS.Search - $t0{t.2} = $v0 - PrintIntS($t0{t.2}) - $a0 = $s0{this} - $a1 = 50 - call :LS.Search - $t0{t.3} = $v0 - PrintIntS($t0{t.3}) - $v0 = 55 - $s0 = local[0] - ret - -func LS.Print [in 0, out 0, local 0] - $t0{this} = $a0 - $t1{j} = 1 -while1_top: - $t2{t.0} = [$t0{this}+4] - $t2{t.1} = LtS($t1{j} $t2{t.0}) - if0 $t2{t.1} goto :while1_end - $t2{t.2} = [$t0{this}] - if $t2{t.2} goto :null2 - Error("null pointer") -null2: - $t3{t.3} = [$t2{t.2}] - $t3{t.3} = Lt($t1{j} $t3{t.3}) - if $t3{t.3} goto :bounds1 - Error("array index out of bounds") -bounds1: - $t3{t.3} = MulS($t1{j} 4) - $t3{t.3} = Add($t3{t.3} $t2{t.2}) - $t3{t.4} = [$t3{t.3}+4] - PrintIntS($t3{t.4}) - $t1{j} = Add($t1{j} 1) - goto :while1_top -while1_end: - $v0 = 0 - ret - -func LS.Search [in 0, out 0, local 0] - $t0{this} = $a0 - $t1{num} = $a1 - $t2{j} = 1 - $t3{ifound} = 0 -while2_top: - $t4{t.0} = [$t0{this}+4] - $t4{t.1} = LtS($t2{j} $t4{t.0}) - if0 $t4{t.1} goto :while2_end - $t4{t.2} = [$t0{this}] - if $t4{t.2} goto :null3 - Error("null pointer") -null3: - $t5{t.3} = [$t4{t.2}] - $t5{t.3} = Lt($t2{j} $t5{t.3}) - if $t5{t.3} goto :bounds2 - Error("array index out of bounds") -bounds2: - $t5{t.3} = MulS($t2{j} 4) - $t5{t.3} = Add($t5{t.3} $t4{t.2}) - $t5{aux01} = [$t5{t.3}+4] - $t4{aux02} = Add($t1{num} 1) - $t6{t.4} = LtS($t5{aux01} $t1{num}) - if0 $t6{t.4} goto :if1_else - goto :if1_end -if1_else: - $t4{t.5} = LtS($t5{aux01} $t4{aux02}) - if $t4{t.5} goto :if2_else - goto :if2_end -if2_else: - $t3{ifound} = 1 - $t2{j} = [$t0{this}+4] -if2_end: -if1_end: - $t2{j} = Add($t2{j} 1) - goto :while2_top -while2_end: - $v0 = $t3{ifound} - ret - -func LS.Init [in 0, out 0, local 1] - local[0] = $s0 - $s0{this} = $a0 - $t0{sz} = $a1 - [$s0{this}+4] = $t0{sz} - $a0 = $t0{sz} - call :AllocArray - $t0{t.0} = $v0 - [$s0{this}] = $t0{t.0} - $t0{j} = 1 - $t1{t.1} = [$s0{this}+4] - $t1{k} = Add($t1{t.1} 1) -while3_top: - $t2{t.2} = [$s0{this}+4] - $t2{t.3} = LtS($t0{j} $t2{t.2}) - if0 $t2{t.3} goto :while3_end - $t2{aux01} = MulS(2 $t0{j}) - $t3{aux02} = Sub($t1{k} 3) - $t4{t.4} = [$s0{this}] - if $t4{t.4} goto :null4 - Error("null pointer") -null4: - $t5{t.5} = [$t4{t.4}] - $t5{t.5} = Lt($t0{j} $t5{t.5}) - if $t5{t.5} goto :bounds3 - Error("array index out of bounds") -bounds3: - $t5{t.5} = MulS($t0{j} 4) - $t5{t.5} = Add($t5{t.5} $t4{t.4}) - $t3{t.6} = Add($t2{aux01} $t3{aux02}) - [$t5{t.5}+4] = $t3{t.6} - $t0{j} = Add($t0{j} 1) - $t1{k} = Sub($t1{k} 1) - goto :while3_top -while3_end: - $v0 = 0 - $s0 = local[0] - ret - -func AllocArray [in 0, out 0, local 0] - $t0{size} = $a0 - $t1{bytes} = MulS($t0{size} 4) - $t1{bytes} = Add($t1{bytes} 4) - $t1{v} = HeapAllocZ($t1{bytes}) - [$t1{v}] = $t0{size} - $v0 = $t1{v} - ret - diff --git a/vaporize/tests/LinearSearch.opt.regalloc b/vaporize/tests/LinearSearch.opt.regalloc deleted file mode 100644 index abfdfeb..0000000 --- a/vaporize/tests/LinearSearch.opt.regalloc +++ /dev/null @@ -1,169 +0,0 @@ -func Main - in 0, out 0, callee-saves 0, spills 0 -Live In: - t.0: 7 10 - t.1: 11 -Linear Range: - t.0: 6-10 - t.1: 10-11 -Allocation: - t.0: t0 - t.1: t0 - -func LS.Start - in 0, out 0, callee-saves 1, spills 0 -Live In: - this: 15-24 - sz: 15 - aux01: - aux02: - t.0: 19 - t.1: 21 - t.2: 23 - t.3: 25 -Linear Range: - this: 14-24 (cross call) - sz: 14-15 - t.0: 18-19 - t.1: 20-21 - t.2: 22-23 - t.3: 24-25 -Allocation: - this: s0 - sz: t0 - t.0: t0 - t.1: t0 - t.2: t0 - t.3: t0 - -func LS.Print - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 29-35 38-40 43-48 - j: 31-35 38-40 43-48 - t.0: 32 - t.1: 33 - t.2: 35 38-40 43-44 - t.3: 39-40 44-45 - t.4: 46 -Linear Range: - this: 28-48 - j: 29-48 - t.0: 31-32 - t.1: 32-33 - t.2: 34-44 - t.3: 38-45 - t.4: 45-46 -Allocation: - this: t0 - j: t1 - t.0: t2 - t.1: t2 - t.2: t2 - t.3: t3 - t.4: t3 - -func LS.Search - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 53-61 64-66 69-89 - num: 53-61 64-66 69-89 - j: 54-61 64-66 69-81 88-89 - ls01: - ifound: 57-61 64-66 69-81 85-91 - t.0: 58 - t.1: 59 - t.2: 61 64-66 69-70 - t.3: 65-66 70-71 - aux01: 72-74 78 - aux02: 73-74 78 - t.4: 74 - nt: - t.5: 79 -Linear Range: - this: 52-89 - num: 52-89 - j: 53-89 - ifound: 55-91 - t.0: 57-58 - t.1: 58-59 - t.2: 60-70 - t.3: 64-71 - aux01: 71-78 - aux02: 72-78 - t.4: 73-74 - t.5: 78-79 -Allocation: - this: t0 - num: t1 - j: t2 - ifound: t3 - t.0: t4 - t.1: t4 - t.2: t4 - t.3: t5 - aux01: t5 - aux02: t4 - t.4: t6 - t.5: t4 - -func LS.Init - in 0, out 0, callee-saves 1, spills 0 -Live In: - this: 94-107 110-112 115-121 - sz: 94-95 - t.0: 96 - j: 98-107 110-112 115-121 - t.1: 99 - k: 101-107 110-112 115-121 - t.2: 102 - t.3: 103 - aux01: 105-107 110-112 115-117 - aux02: 106-107 110-112 115-117 - t.4: 107 110-112 115-116 - t.5: 111-112 116-118 - t.6: 118 -Linear Range: - this: 93-121 (cross call) - sz: 93-95 - t.0: 95-96 - j: 97-121 - t.1: 98-99 - k: 99-121 - t.2: 101-102 - t.3: 102-103 - aux01: 104-117 - aux02: 105-117 - t.4: 106-116 - t.5: 110-118 - t.6: 117-118 -Allocation: - this: s0 - sz: t0 - t.0: t0 - j: t0 - t.1: t1 - k: t1 - t.2: t2 - t.3: t2 - aux01: t2 - aux02: t3 - t.4: t4 - t.5: t5 - t.6: t3 - -func AllocArray - in 0, out 0, callee-saves 0, spills 0 -Live In: - size: 126-129 - bytes: 127-128 - v: 129-130 -Linear Range: - size: 125-129 - bytes: 126-128 - v: 128-130 -Allocation: - size: t0 - bytes: t1 - v: t1 - diff --git a/vaporize/tests/LinearSearch.opt.vapor b/vaporize/tests/LinearSearch.opt.vapor deleted file mode 100644 index 302de05..0000000 --- a/vaporize/tests/LinearSearch.opt.vapor +++ /dev/null @@ -1,130 +0,0 @@ - -const empty_LS - - -func Main() - t.0 = HeapAllocZ(8) - if t.0 goto :null1 - Error("null pointer") - null1: - t.1 = call :LS.Start(t.0 10) - PrintIntS(t.1) - ret - -func LS.Start(this sz) - aux01 = call :LS.Init(this sz) - aux02 = call :LS.Print(this) - PrintIntS(9999) - t.0 = call :LS.Search(this 8) - PrintIntS(t.0) - t.1 = call :LS.Search(this 12) - PrintIntS(t.1) - t.2 = call :LS.Search(this 17) - PrintIntS(t.2) - t.3 = call :LS.Search(this 50) - PrintIntS(t.3) - ret 55 - -func LS.Print(this) - j = 1 - while1_top: - t.0 = [this+4] - t.1 = LtS(j t.0) - if0 t.1 goto :while1_end - t.2 = [this+0] - if t.2 goto :null2 - Error("null pointer") - null2: - t.3 = [t.2] - t.3 = Lt(j t.3) - if t.3 goto :bounds1 - Error("array index out of bounds") - bounds1: - t.3 = MulS(j 4) - t.3 = Add(t.3 t.2) - t.4 = [t.3+4] - PrintIntS(t.4) - j = Add(j 1) - goto :while1_top - while1_end: - ret 0 - -func LS.Search(this num) - j = 1 - ls01 = 0 - ifound = 0 - while2_top: - t.0 = [this+4] - t.1 = LtS(j t.0) - if0 t.1 goto :while2_end - t.2 = [this+0] - if t.2 goto :null3 - Error("null pointer") - null3: - t.3 = [t.2] - t.3 = Lt(j t.3) - if t.3 goto :bounds2 - Error("array index out of bounds") - bounds2: - t.3 = MulS(j 4) - t.3 = Add(t.3 t.2) - aux01 = [t.3+4] - aux02 = Add(num 1) - t.4 = LtS(aux01 num) - if0 t.4 goto :if1_else - nt = 0 - goto :if1_end - if1_else: - t.5 = LtS(aux01 aux02) - if t.5 goto :if2_else - nt = 0 - goto :if2_end - if2_else: - ls01 = 1 - ifound = 1 - j = [this+4] - if2_end: - if1_end: - j = Add(j 1) - goto :while2_top - while2_end: - ret ifound - -func LS.Init(this sz) - [this+4] = sz - t.0 = call :AllocArray(sz) - [this+0] = t.0 - j = 1 - t.1 = [this+4] - k = Add(t.1 1) - while3_top: - t.2 = [this+4] - t.3 = LtS(j t.2) - if0 t.3 goto :while3_end - aux01 = MulS(2 j) - aux02 = Sub(k 3) - t.4 = [this+0] - if t.4 goto :null4 - Error("null pointer") - null4: - t.5 = [t.4] - t.5 = Lt(j t.5) - if t.5 goto :bounds3 - Error("array index out of bounds") - bounds3: - t.5 = MulS(j 4) - t.5 = Add(t.5 t.4) - t.6 = Add(aux01 aux02) - [t.5+4] = t.6 - j = Add(j 1) - k = Sub(k 1) - goto :while3_top - while3_end: - ret 0 - -func AllocArray(size) - bytes = MulS(size 4) - bytes = Add(bytes 4) - v = HeapAllocZ(bytes) - [v] = size - ret v diff --git a/vaporize/tests/LinearSearch.opt.vaporm b/vaporize/tests/LinearSearch.opt.vaporm deleted file mode 100644 index 4fa8c5c..0000000 --- a/vaporize/tests/LinearSearch.opt.vaporm +++ /dev/null @@ -1,162 +0,0 @@ -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 - diff --git a/vaporize/tests/LinearSearch.regalloc b/vaporize/tests/LinearSearch.regalloc deleted file mode 100644 index 817df4f..0000000 --- a/vaporize/tests/LinearSearch.regalloc +++ /dev/null @@ -1,193 +0,0 @@ -func Main - in 0, out 0, callee-saves 0, spills 0 -Live In: - t.0: 11-12 15-17 - t.1: 16-17 - t.2: 18 -Linear Range: - t.0: 10-17 - t.1: 15-17 - t.2: 17-18 -Allocation: - t.0: t0 - t.1: t1 - t.2: t1 - -func LS.Start - in 0, out 0, callee-saves 1, spills 0 -Live In: - this: 22-43 - sz: 22-24 - t.0: 23-24 - aux01: - t.1: 26-27 - aux02: - t.2: 30-31 - t.3: 32 - t.4: 34-35 - t.5: 36 - t.6: 38-39 - t.7: 40 - t.8: 42-43 - t.9: 44 -Linear Range: - this: 21-43 (cross call) - sz: 21-24 - t.0: 22-24 - t.1: 25-27 - t.2: 29-31 - t.3: 31-32 - t.4: 33-35 - t.5: 35-36 - t.6: 37-39 - t.7: 39-40 - t.8: 41-43 - t.9: 43-44 -Allocation: - this: s0 - sz: t0 - t.0: t1 - t.1: t1 - t.2: t1 - t.3: t1 - t.4: t1 - t.5: t1 - t.6: t1 - t.7: t1 - t.8: t1 - t.9: t1 - -func LS.Print - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 48-54 57-59 62-67 - j: 50-54 57-59 62-67 - t.0: 51 - t.1: 52 - t.2: 54 57-59 62-63 - t.3: 58-59 63-64 - t.4: 65 -Linear Range: - this: 47-67 - j: 48-67 - t.0: 50-51 - t.1: 51-52 - t.2: 53-63 - t.3: 57-64 - t.4: 64-65 -Allocation: - this: t0 - j: t1 - t.0: t2 - t.1: t2 - t.2: t2 - t.3: t3 - t.4: t3 - -func LS.Search - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 72-80 83-85 88-109 - num: 72-80 83-85 88-109 - j: 73-80 83-85 88-101 108-109 - ls01: - ifound: 76-80 83-85 88-101 105-111 - t.0: 77 - t.1: 78 - t.2: 80 83-85 88-89 - t.3: 84-85 89-90 - aux01: 91-93 97 - aux02: 92-93 97 - t.4: 93 - nt: - t.5: 98 - t.6: 99 -Linear Range: - this: 71-109 - num: 71-109 - j: 72-109 - ifound: 74-111 - t.0: 76-77 - t.1: 77-78 - t.2: 79-89 - t.3: 83-90 - aux01: 90-97 - aux02: 91-97 - t.4: 92-93 - t.5: 97-98 - t.6: 98-99 -Allocation: - this: t0 - num: t1 - j: t2 - ifound: t3 - t.0: t4 - t.1: t4 - t.2: t4 - t.3: t5 - aux01: t5 - aux02: t4 - t.4: t6 - t.5: t4 - t.6: t4 - -func LS.Init - in 0, out 0, callee-saves 1, spills 0 -Live In: - this: 114-127 130-132 135-141 - sz: 114-115 - t.0: 116 - j: 118-127 130-132 135-141 - t.1: 119 - k: 121-127 130-132 135-141 - t.2: 122 - t.3: 123 - aux01: 125-127 130-132 135-137 - aux02: 126-127 130-132 135-137 - t.4: 127 130-132 135-136 - t.5: 131-132 136-138 - t.6: 138 -Linear Range: - this: 113-141 (cross call) - sz: 113-115 - t.0: 115-116 - j: 117-141 - t.1: 118-119 - k: 119-141 - t.2: 121-122 - t.3: 122-123 - aux01: 124-137 - aux02: 125-137 - t.4: 126-136 - t.5: 130-138 - t.6: 137-138 -Allocation: - this: s0 - sz: t0 - t.0: t0 - j: t0 - t.1: t1 - k: t1 - t.2: t2 - t.3: t2 - aux01: t2 - aux02: t3 - t.4: t4 - t.5: t5 - t.6: t3 - -func AllocArray - in 0, out 0, callee-saves 0, spills 0 -Live In: - size: 146-149 - bytes: 147-148 - v: 149-150 -Linear Range: - size: 145-149 - bytes: 146-148 - v: 148-150 -Allocation: - size: t0 - bytes: t1 - v: t1 - diff --git a/vaporize/tests/LinearSearch.vapor b/vaporize/tests/LinearSearch.vapor deleted file mode 100644 index db4884a..0000000 --- a/vaporize/tests/LinearSearch.vapor +++ /dev/null @@ -1,150 +0,0 @@ - -const vmt_LS - :LS.Start - :LS.Print - :LS.Search - :LS.Init - - -func Main() - t.0 = HeapAllocZ(12) - [t.0] = :vmt_LS - if t.0 goto :null1 - Error("null pointer") - null1: - t.1 = [t.0] - t.1 = [t.1+0] - t.2 = call t.1(t.0 10) - PrintIntS(t.2) - ret - -func LS.Start(this sz) - t.0 = [this] - t.0 = [t.0+12] - aux01 = call t.0(this sz) - t.1 = [this] - t.1 = [t.1+4] - aux02 = call t.1(this) - PrintIntS(9999) - t.2 = [this] - t.2 = [t.2+8] - t.3 = call t.2(this 8) - PrintIntS(t.3) - t.4 = [this] - t.4 = [t.4+8] - t.5 = call t.4(this 12) - PrintIntS(t.5) - t.6 = [this] - t.6 = [t.6+8] - t.7 = call t.6(this 17) - PrintIntS(t.7) - t.8 = [this] - t.8 = [t.8+8] - t.9 = call t.8(this 50) - PrintIntS(t.9) - ret 55 - -func LS.Print(this) - j = 1 - while1_top: - t.0 = [this+8] - t.1 = LtS(j t.0) - if0 t.1 goto :while1_end - t.2 = [this+4] - if t.2 goto :null2 - Error("null pointer") - null2: - t.3 = [t.2] - t.3 = Lt(j t.3) - if t.3 goto :bounds1 - Error("array index out of bounds") - bounds1: - t.3 = MulS(j 4) - t.3 = Add(t.3 t.2) - t.4 = [t.3+4] - PrintIntS(t.4) - j = Add(j 1) - goto :while1_top - while1_end: - ret 0 - -func LS.Search(this num) - j = 1 - ls01 = 0 - ifound = 0 - while2_top: - t.0 = [this+8] - t.1 = LtS(j t.0) - if0 t.1 goto :while2_end - t.2 = [this+4] - if t.2 goto :null3 - Error("null pointer") - null3: - t.3 = [t.2] - t.3 = Lt(j t.3) - if t.3 goto :bounds2 - Error("array index out of bounds") - bounds2: - t.3 = MulS(j 4) - t.3 = Add(t.3 t.2) - aux01 = [t.3+4] - aux02 = Add(num 1) - t.4 = LtS(aux01 num) - if0 t.4 goto :if1_else - nt = 0 - goto :if1_end - if1_else: - t.5 = LtS(aux01 aux02) - t.6 = Sub(1 t.5) - if0 t.6 goto :if2_else - nt = 0 - goto :if2_end - if2_else: - ls01 = 1 - ifound = 1 - j = [this+8] - if2_end: - if1_end: - j = Add(j 1) - goto :while2_top - while2_end: - ret ifound - -func LS.Init(this sz) - [this+8] = sz - t.0 = call :AllocArray(sz) - [this+4] = t.0 - j = 1 - t.1 = [this+8] - k = Add(t.1 1) - while3_top: - t.2 = [this+8] - t.3 = LtS(j t.2) - if0 t.3 goto :while3_end - aux01 = MulS(2 j) - aux02 = Sub(k 3) - t.4 = [this+4] - if t.4 goto :null4 - Error("null pointer") - null4: - t.5 = [t.4] - t.5 = Lt(j t.5) - if t.5 goto :bounds3 - Error("array index out of bounds") - bounds3: - t.5 = MulS(j 4) - t.5 = Add(t.5 t.4) - t.6 = Add(aux01 aux02) - [t.5+4] = t.6 - j = Add(j 1) - k = Sub(k 1) - goto :while3_top - while3_end: - ret 0 - -func AllocArray(size) - bytes = MulS(size 4) - bytes = Add(bytes 4) - v = HeapAllocZ(bytes) - [v] = size - ret v diff --git a/vaporize/tests/LinearSearch.vaporm b/vaporize/tests/LinearSearch.vaporm deleted file mode 100644 index 094cfe1..0000000 --- a/vaporize/tests/LinearSearch.vaporm +++ /dev/null @@ -1,182 +0,0 @@ -const vmt_LS - :LS.Start - :LS.Print - :LS.Search - :LS.Init - -func Main [in 0, out 0, local 0] - $t0 = HeapAllocZ(12) - [$t0] = :vmt_LS - if $t0 goto :null1 - Error("null pointer") -null1: - $t1 = [$t0] - $t1 = [$t1] - $a0 = $t0 - $a1 = 10 - call $t1 - $t1 = $v0 - PrintIntS($t1) - ret - -func LS.Start [in 0, out 0, local 1] - local[0] = $s0 - $s0 = $a0 - $t0 = $a1 - $t1 = [$s0] - $t1 = [$t1+12] - $a0 = $s0 - $a1 = $t0 - call $t1 - $t1 = [$s0] - $t1 = [$t1+4] - $a0 = $s0 - call $t1 - PrintIntS(9999) - $t1 = [$s0] - $t1 = [$t1+8] - $a0 = $s0 - $a1 = 8 - call $t1 - $t1 = $v0 - PrintIntS($t1) - $t1 = [$s0] - $t1 = [$t1+8] - $a0 = $s0 - $a1 = 12 - call $t1 - $t1 = $v0 - PrintIntS($t1) - $t1 = [$s0] - $t1 = [$t1+8] - $a0 = $s0 - $a1 = 17 - call $t1 - $t1 = $v0 - PrintIntS($t1) - $t1 = [$s0] - $t1 = [$t1+8] - $a0 = $s0 - $a1 = 50 - call $t1 - $t1 = $v0 - PrintIntS($t1) - $v0 = 55 - $s0 = local[0] - ret - -func LS.Print [in 0, out 0, local 0] - $t0 = $a0 - $t1 = 1 -while1_top: - $t2 = [$t0+8] - $t2 = LtS($t1 $t2) - if0 $t2 goto :while1_end - $t2 = [$t0+4] - 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+8] - $t4 = LtS($t2 $t4) - if0 $t4 goto :while2_end - $t4 = [$t0+4] - 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) - $t4 = Sub(1 $t4) - if0 $t4 goto :if2_else - goto :if2_end -if2_else: - $t3 = 1 - $t2 = [$t0+8] -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+8] = $t0 - $a0 = $t0 - call :AllocArray - $t0 = $v0 - [$s0+4] = $t0 - $t0 = 1 - $t1 = [$s0+8] - $t1 = Add($t1 1) -while3_top: - $t2 = [$s0+8] - $t2 = LtS($t0 $t2) - if0 $t2 goto :while3_end - $t2 = MulS(2 $t0) - $t3 = Sub($t1 3) - $t4 = [$s0+4] - 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 - diff --git a/vaporize/tests/LinkedList.names.vaporm b/vaporize/tests/LinkedList.names.vaporm deleted file mode 100644 index a04d039..0000000 --- a/vaporize/tests/LinkedList.names.vaporm +++ /dev/null @@ -1,698 +0,0 @@ -const vmt_Element - :Element.Init - :Element.GetAge - :Element.GetSalary - :Element.GetMarried - :Element.Equal - :Element.Compare - -const vmt_List - :List.Init - :List.InitNew - :List.Insert - :List.SetNext - :List.Delete - :List.Search - :List.GetEnd - :List.GetElem - :List.GetNext - :List.Print - -const vmt_LL - :LL.Start - -func Main [in 0, out 0, local 0] - $t0{t.0} = HeapAllocZ(4) - [$t0{t.0}] = :vmt_LL - if $t0{t.0} goto :null1 - Error("null pointer") -null1: - $t1{t.1} = [$t0{t.0}] - $t1{t.1} = [$t1{t.1}] - $a0 = $t0{t.0} - call $t1{t.1} - $t1{t.2} = $v0 - PrintIntS($t1{t.2}) - ret - -func Element.Init [in 0, out 0, local 0] - $t0{this} = $a0 - $t1{v_Age} = $a1 - $t2{v_Salary} = $a2 - $t3{v_Married} = $a3 - [$t0{this}+4] = $t1{v_Age} - [$t0{this}+8] = $t2{v_Salary} - [$t0{this}+12] = $t3{v_Married} - $v0 = 1 - ret - -func Element.GetAge [in 0, out 0, local 0] - $t0{this} = $a0 - $t0{t.0} = [$t0{this}+4] - $v0 = $t0{t.0} - ret - -func Element.GetSalary [in 0, out 0, local 0] - $t0{this} = $a0 - $t0{t.0} = [$t0{this}+8] - $v0 = $t0{t.0} - ret - -func Element.GetMarried [in 0, out 0, local 0] - $t0{this} = $a0 - $t0{t.0} = [$t0{this}+12] - $v0 = $t0{t.0} - ret - -func Element.Equal [in 0, out 0, local 3] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - $s0{this} = $a0 - $s1{other} = $a1 - $s2{ret_val} = 1 - if $s1{other} goto :null2 - Error("null pointer") -null2: - $t0{t.0} = [$s1{other}] - $t0{t.0} = [$t0{t.0}+4] - $a0 = $s1{other} - call $t0{t.0} - $t0{aux01} = $v0 - $t1{t.1} = [$s0{this}] - $t1{t.1} = [$t1{t.1}+20] - $t2{t.2} = [$s0{this}+4] - $a0 = $s0{this} - $a1 = $t0{aux01} - $a2 = $t2{t.2} - call $t1{t.1} - $t2{t.3} = $v0 - $t2{t.4} = Sub(1 $t2{t.3}) - if0 $t2{t.4} goto :if1_else - $s2{ret_val} = 0 - goto :if1_end -if1_else: - if $s1{other} goto :null3 - Error("null pointer") -null3: - $t2{t.5} = [$s1{other}] - $t2{t.5} = [$t2{t.5}+8] - $a0 = $s1{other} - call $t2{t.5} - $t2{aux02} = $v0 - $t1{t.6} = [$s0{this}] - $t1{t.6} = [$t1{t.6}+20] - $t0{t.7} = [$s0{this}+8] - $a0 = $s0{this} - $a1 = $t2{aux02} - $a2 = $t0{t.7} - call $t1{t.6} - $t0{t.8} = $v0 - $t0{t.9} = Sub(1 $t0{t.8}) - if0 $t0{t.9} goto :if2_else - $s2{ret_val} = 0 - goto :if2_end -if2_else: - $t0{t.10} = [$s0{this}+12] - if0 $t0{t.10} goto :if3_else - if $s1{other} goto :null4 - Error("null pointer") -null4: - $t0{t.11} = [$s1{other}] - $t0{t.11} = [$t0{t.11}+12] - $a0 = $s1{other} - call $t0{t.11} - $t0{t.12} = $v0 - $t0{t.13} = Sub(1 $t0{t.12}) - if0 $t0{t.13} goto :if4_else - $s2{ret_val} = 0 - goto :if4_end -if4_else: -if4_end: - goto :if3_end -if3_else: - if $s1{other} goto :null5 - Error("null pointer") -null5: - $t0{t.14} = [$s1{other}] - $t0{t.14} = [$t0{t.14}+12] - $a0 = $s1{other} - call $t0{t.14} - $t0{t.15} = $v0 - if0 $t0{t.15} goto :if5_else - $s2{ret_val} = 0 - goto :if5_end -if5_else: -if5_end: -if3_end: -if2_end: -if1_end: - $v0 = $s2{ret_val} - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - ret - -func Element.Compare [in 0, out 0, local 0] - $t0{num1} = $a1 - $t1{num2} = $a2 - $t2{aux02} = Add($t1{num2} 1) - $t1{t.0} = LtS($t0{num1} $t1{num2}) - if0 $t1{t.0} goto :if6_else - $t1{retval} = 0 - goto :if6_end -if6_else: - $t2{t.1} = LtS($t0{num1} $t2{aux02}) - $t2{t.2} = Sub(1 $t2{t.1}) - if0 $t2{t.2} goto :if7_else - $t1{retval} = 0 - goto :if7_end -if7_else: - $t1{retval} = 1 -if7_end: -if6_end: - $v0 = $t1{retval} - ret - -func List.Init [in 0, out 0, local 0] - $t0{this} = $a0 - [$t0{this}+12] = 1 - $v0 = 1 - ret - -func List.InitNew [in 0, out 0, local 0] - $t0{this} = $a0 - $t1{v_elem} = $a1 - $t2{v_next} = $a2 - $t3{v_end} = $a3 - [$t0{this}+12] = $t3{v_end} - [$t0{this}+4] = $t1{v_elem} - [$t0{this}+8] = $t2{v_next} - $v0 = 1 - ret - -func List.Insert [in 0, out 0, local 1] - local[0] = $s0 - $t0{this} = $a0 - $t1{new_elem} = $a1 - $t0{aux03} = $t0{this} - $t2{t.0} = HeapAllocZ(16) - [$t2{t.0}] = :vmt_List - $s0{aux02} = $t2{t.0} - if $s0{aux02} goto :null6 - Error("null pointer") -null6: - $t2{t.1} = [$s0{aux02}] - $t2{t.1} = [$t2{t.1}+4] - $a0 = $s0{aux02} - $a1 = $t1{new_elem} - $a2 = $t0{aux03} - $a3 = 0 - call $t2{t.1} - $v0 = $s0{aux02} - $s0 = local[0] - ret - -func List.SetNext [in 0, out 0, local 0] - $t0{this} = $a0 - $t1{v_next} = $a1 - [$t0{this}+8] = $t1{v_next} - $v0 = 1 - ret - -func List.Delete [in 0, out 0, local 9] - local[1] = $s0 - local[2] = $s1 - local[3] = $s2 - local[4] = $s3 - local[5] = $s4 - local[6] = $s5 - local[7] = $s6 - local[8] = $s7 - $t0{this} = $a0 - $s0{e} = $a1 - $s1{my_head} = $t0{this} - $s2{ret_val} = 0 - $s3{aux04} = Sub(0 1) - $s4{aux01} = $t0{this} - $s5{prev} = $t0{this} - $s6{var_end} = [$t0{this}+12] - $s7{var_elem} = [$t0{this}+4] -while1_top: - $t0{t.1} = Sub(1 $s6{var_end}) - if0 $t0{t.1} goto :ss1_else - $t0{t.0} = Sub(1 $s2{ret_val}) - goto :ss1_end -ss1_else: - $t0{t.0} = 0 -ss1_end: - if0 $t0{t.0} goto :while1_end - if $s0{e} goto :null7 - Error("null pointer") -null7: - $t0{t.2} = [$s0{e}] - $t0{t.2} = [$t0{t.2}+16] - $a0 = $s0{e} - $a1 = $s7{var_elem} - call $t0{t.2} - $t0{t.3} = $v0 - if0 $t0{t.3} goto :if8_else - $s2{ret_val} = 1 - $t0{t.4} = LtS($s3{aux04} 0) - if0 $t0{t.4} goto :if9_else - if $s4{aux01} goto :null8 - Error("null pointer") -null8: - $t0{t.5} = [$s4{aux01}] - $t0{t.5} = [$t0{t.5}+32] - $a0 = $s4{aux01} - call $t0{t.5} - $s1{my_head} = $v0 - goto :if9_end -if9_else: - $t0{t.6} = Sub(0 555) - PrintIntS($t0{t.6}) - if $s5{prev} goto :null9 - Error("null pointer") -null9: - $v0 = [$s5{prev}] - local[0]{t.7} = $v0 - $v0 = local[0]{t.7} - $v0 = [$v0+12] - local[0]{t.7} = $v0 - if $s4{aux01} goto :null10 - Error("null pointer") -null10: - $t0{t.8} = [$s4{aux01}] - $t0{t.8} = [$t0{t.8}+32] - $a0 = $s4{aux01} - call $t0{t.8} - $t0{t.9} = $v0 - $a0 = $s5{prev} - $a1 = $t0{t.9} - $v0 = local[0]{t.7} - call $v0 - $t0{t.10} = Sub(0 555) - PrintIntS($t0{t.10}) -if9_end: - goto :if8_end -if8_else: -if8_end: - $t0{t.11} = Sub(1 $s2{ret_val}) - if0 $t0{t.11} goto :if10_else - $s5{prev} = $s4{aux01} - if $s4{aux01} goto :null11 - Error("null pointer") -null11: - $t0{t.12} = [$s4{aux01}] - $t0{t.12} = [$t0{t.12}+32] - $a0 = $s4{aux01} - call $t0{t.12} - $s4{aux01} = $v0 - if $s4{aux01} goto :null12 - Error("null pointer") -null12: - $t0{t.13} = [$s4{aux01}] - $t0{t.13} = [$t0{t.13}+24] - $a0 = $s4{aux01} - call $t0{t.13} - $s6{var_end} = $v0 - if $s4{aux01} goto :null13 - Error("null pointer") -null13: - $t0{t.14} = [$s4{aux01}] - $t0{t.14} = [$t0{t.14}+28] - $a0 = $s4{aux01} - call $t0{t.14} - $s7{var_elem} = $v0 - $s3{aux04} = 1 - goto :if10_end -if10_else: -if10_end: - goto :while1_top -while1_end: - $v0 = $s1{my_head} - $s0 = local[1] - $s1 = local[2] - $s2 = local[3] - $s3 = local[4] - $s4 = local[5] - $s5 = local[6] - $s6 = local[7] - $s7 = local[8] - ret - -func List.Search [in 0, out 0, local 4] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - local[3] = $s3 - $t0{this} = $a0 - $s0{e} = $a1 - $s1{int_ret_val} = 0 - $s2{aux01} = $t0{this} - $s3{var_end} = [$t0{this}+12] - $t0{var_elem} = [$t0{this}+4] -while2_top: - $t1{t.0} = Sub(1 $s3{var_end}) - if0 $t1{t.0} goto :while2_end - if $s0{e} goto :null14 - Error("null pointer") -null14: - $t1{t.1} = [$s0{e}] - $t1{t.1} = [$t1{t.1}+16] - $a0 = $s0{e} - $a1 = $t0{var_elem} - call $t1{t.1} - $t1{t.2} = $v0 - if0 $t1{t.2} goto :if11_else - $s1{int_ret_val} = 1 - goto :if11_end -if11_else: -if11_end: - if $s2{aux01} goto :null15 - Error("null pointer") -null15: - $t1{t.3} = [$s2{aux01}] - $t1{t.3} = [$t1{t.3}+32] - $a0 = $s2{aux01} - call $t1{t.3} - $s2{aux01} = $v0 - if $s2{aux01} goto :null16 - Error("null pointer") -null16: - $t1{t.4} = [$s2{aux01}] - $t1{t.4} = [$t1{t.4}+24] - $a0 = $s2{aux01} - call $t1{t.4} - $s3{var_end} = $v0 - if $s2{aux01} goto :null17 - Error("null pointer") -null17: - $t1{t.5} = [$s2{aux01}] - $t1{t.5} = [$t1{t.5}+28] - $a0 = $s2{aux01} - call $t1{t.5} - $t0{var_elem} = $v0 - goto :while2_top -while2_end: - $v0 = $s1{int_ret_val} - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - $s3 = local[3] - ret - -func List.GetEnd [in 0, out 0, local 0] - $t0{this} = $a0 - $t0{t.0} = [$t0{this}+12] - $v0 = $t0{t.0} - ret - -func List.GetElem [in 0, out 0, local 0] - $t0{this} = $a0 - $t0{t.0} = [$t0{this}+4] - $v0 = $t0{t.0} - ret - -func List.GetNext [in 0, out 0, local 0] - $t0{this} = $a0 - $t0{t.0} = [$t0{this}+8] - $v0 = $t0{t.0} - ret - -func List.Print [in 0, out 0, local 2] - local[0] = $s0 - local[1] = $s1 - $t0{this} = $a0 - $s0{aux01} = $t0{this} - $s1{var_end} = [$t0{this}+12] - $t0{var_elem} = [$t0{this}+4] -while3_top: - $t1{t.0} = Sub(1 $s1{var_end}) - if0 $t1{t.0} goto :while3_end - if $t0{var_elem} goto :null18 - Error("null pointer") -null18: - $t1{t.1} = [$t0{var_elem}] - $t1{t.1} = [$t1{t.1}+4] - $a0 = $t0{var_elem} - call $t1{t.1} - $t1{t.2} = $v0 - PrintIntS($t1{t.2}) - if $s0{aux01} goto :null19 - Error("null pointer") -null19: - $t1{t.3} = [$s0{aux01}] - $t1{t.3} = [$t1{t.3}+32] - $a0 = $s0{aux01} - call $t1{t.3} - $s0{aux01} = $v0 - if $s0{aux01} goto :null20 - Error("null pointer") -null20: - $t1{t.4} = [$s0{aux01}] - $t1{t.4} = [$t1{t.4}+24] - $a0 = $s0{aux01} - call $t1{t.4} - $s1{var_end} = $v0 - if $s0{aux01} goto :null21 - Error("null pointer") -null21: - $t1{t.5} = [$s0{aux01}] - $t1{t.5} = [$t1{t.5}+28] - $a0 = $s0{aux01} - call $t1{t.5} - $t0{var_elem} = $v0 - goto :while3_top -while3_end: - $v0 = 1 - $s0 = local[0] - $s1 = local[1] - ret - -func LL.Start [in 0, out 0, local 4] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - local[3] = $s3 - $t0{t.0} = HeapAllocZ(16) - [$t0{t.0}] = :vmt_List - $s0{last_elem} = $t0{t.0} - if $s0{last_elem} goto :null22 - Error("null pointer") -null22: - $t0{t.1} = [$s0{last_elem}] - $t0{t.1} = [$t0{t.1}] - $a0 = $s0{last_elem} - call $t0{t.1} - $s0{head} = $s0{last_elem} - if $s0{head} goto :null23 - Error("null pointer") -null23: - $t0{t.2} = [$s0{head}] - $t0{t.2} = [$t0{t.2}] - $a0 = $s0{head} - call $t0{t.2} - if $s0{head} goto :null24 - Error("null pointer") -null24: - $t0{t.3} = [$s0{head}] - $t0{t.3} = [$t0{t.3}+36] - $a0 = $s0{head} - call $t0{t.3} - $t0{t.4} = HeapAllocZ(16) - [$t0{t.4}] = :vmt_Element - $s1{el01} = $t0{t.4} - if $s1{el01} goto :null25 - Error("null pointer") -null25: - $t0{t.5} = [$s1{el01}] - $t0{t.5} = [$t0{t.5}] - $a0 = $s1{el01} - $a1 = 25 - $a2 = 37000 - $a3 = 0 - call $t0{t.5} - if $s0{head} goto :null26 - Error("null pointer") -null26: - $t0{t.6} = [$s0{head}] - $t0{t.6} = [$t0{t.6}+8] - $a0 = $s0{head} - $a1 = $s1{el01} - call $t0{t.6} - $s0{head} = $v0 - if $s0{head} goto :null27 - Error("null pointer") -null27: - $t0{t.7} = [$s0{head}] - $t0{t.7} = [$t0{t.7}+36] - $a0 = $s0{head} - call $t0{t.7} - PrintIntS(10000000) - $t0{t.8} = HeapAllocZ(16) - [$t0{t.8}] = :vmt_Element - $s1{el01} = $t0{t.8} - if $s1{el01} goto :null28 - Error("null pointer") -null28: - $t0{t.9} = [$s1{el01}] - $t0{t.9} = [$t0{t.9}] - $a0 = $s1{el01} - $a1 = 39 - $a2 = 42000 - $a3 = 1 - call $t0{t.9} - $s2{el02} = $s1{el01} - if $s0{head} goto :null29 - Error("null pointer") -null29: - $t0{t.10} = [$s0{head}] - $t0{t.10} = [$t0{t.10}+8] - $a0 = $s0{head} - $a1 = $s1{el01} - call $t0{t.10} - $s0{head} = $v0 - if $s0{head} goto :null30 - Error("null pointer") -null30: - $t0{t.11} = [$s0{head}] - $t0{t.11} = [$t0{t.11}+36] - $a0 = $s0{head} - call $t0{t.11} - PrintIntS(10000000) - $t0{t.12} = HeapAllocZ(16) - [$t0{t.12}] = :vmt_Element - $s1{el01} = $t0{t.12} - if $s1{el01} goto :null31 - Error("null pointer") -null31: - $t0{t.13} = [$s1{el01}] - $t0{t.13} = [$t0{t.13}] - $a0 = $s1{el01} - $a1 = 22 - $a2 = 34000 - $a3 = 0 - call $t0{t.13} - if $s0{head} goto :null32 - Error("null pointer") -null32: - $t0{t.14} = [$s0{head}] - $t0{t.14} = [$t0{t.14}+8] - $a0 = $s0{head} - $a1 = $s1{el01} - call $t0{t.14} - $s0{head} = $v0 - if $s0{head} goto :null33 - Error("null pointer") -null33: - $t0{t.15} = [$s0{head}] - $t0{t.15} = [$t0{t.15}+36] - $a0 = $s0{head} - call $t0{t.15} - $t0{t.16} = HeapAllocZ(16) - [$t0{t.16}] = :vmt_Element - $s3{el03} = $t0{t.16} - if $s3{el03} goto :null34 - Error("null pointer") -null34: - $t0{t.17} = [$s3{el03}] - $t0{t.17} = [$t0{t.17}] - $a0 = $s3{el03} - $a1 = 27 - $a2 = 34000 - $a3 = 0 - call $t0{t.17} - if $s0{head} goto :null35 - Error("null pointer") -null35: - $t0{t.18} = [$s0{head}] - $t0{t.18} = [$t0{t.18}+20] - $a0 = $s0{head} - $a1 = $s2{el02} - call $t0{t.18} - $t0{t.19} = $v0 - PrintIntS($t0{t.19}) - if $s0{head} goto :null36 - Error("null pointer") -null36: - $t0{t.20} = [$s0{head}] - $t0{t.20} = [$t0{t.20}+20] - $a0 = $s0{head} - $a1 = $s3{el03} - call $t0{t.20} - $t0{t.21} = $v0 - PrintIntS($t0{t.21}) - PrintIntS(10000000) - $t0{t.22} = HeapAllocZ(16) - [$t0{t.22}] = :vmt_Element - $s1{el01} = $t0{t.22} - if $s1{el01} goto :null37 - Error("null pointer") -null37: - $t0{t.23} = [$s1{el01}] - $t0{t.23} = [$t0{t.23}] - $a0 = $s1{el01} - $a1 = 28 - $a2 = 35000 - $a3 = 0 - call $t0{t.23} - if $s0{head} goto :null38 - Error("null pointer") -null38: - $t0{t.24} = [$s0{head}] - $t0{t.24} = [$t0{t.24}+8] - $a0 = $s0{head} - $a1 = $s1{el01} - call $t0{t.24} - $s0{head} = $v0 - if $s0{head} goto :null39 - Error("null pointer") -null39: - $t0{t.25} = [$s0{head}] - $t0{t.25} = [$t0{t.25}+36] - $a0 = $s0{head} - call $t0{t.25} - PrintIntS(2220000) - if $s0{head} goto :null40 - Error("null pointer") -null40: - $t0{t.26} = [$s0{head}] - $t0{t.26} = [$t0{t.26}+16] - $a0 = $s0{head} - $a1 = $s2{el02} - call $t0{t.26} - $s0{head} = $v0 - if $s0{head} goto :null41 - Error("null pointer") -null41: - $t0{t.27} = [$s0{head}] - $t0{t.27} = [$t0{t.27}+36] - $a0 = $s0{head} - call $t0{t.27} - PrintIntS(33300000) - if $s0{head} goto :null42 - Error("null pointer") -null42: - $t0{t.28} = [$s0{head}] - $t0{t.28} = [$t0{t.28}+16] - $a0 = $s0{head} - $a1 = $s1{el01} - call $t0{t.28} - $s0{head} = $v0 - if $s0{head} goto :null43 - Error("null pointer") -null43: - $t0{t.29} = [$s0{head}] - $t0{t.29} = [$t0{t.29}+36] - $a0 = $s0{head} - call $t0{t.29} - PrintIntS(44440000) - $v0 = 0 - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - $s3 = local[3] - ret - diff --git a/vaporize/tests/LinkedList.opt.names.vaporm b/vaporize/tests/LinkedList.opt.names.vaporm deleted file mode 100644 index e0b60f8..0000000 --- a/vaporize/tests/LinkedList.opt.names.vaporm +++ /dev/null @@ -1,562 +0,0 @@ -const empty_Element - -const empty_List - -const empty_LL - -func Main [in 0, out 0, local 0] - $a0 = :empty_LL - call :LL.Start - $t0{t.0} = $v0 - PrintIntS($t0{t.0}) - ret - -func Element.Init [in 0, out 0, local 0] - $t0{this} = $a0 - $t1{v_Age} = $a1 - $t2{v_Salary} = $a2 - $t3{v_Married} = $a3 - [$t0{this}] = $t1{v_Age} - [$t0{this}+4] = $t2{v_Salary} - [$t0{this}+8] = $t3{v_Married} - $v0 = 1 - ret - -func Element.GetAge [in 0, out 0, local 0] - $t0{this} = $a0 - $t0{t.0} = [$t0{this}] - $v0 = $t0{t.0} - ret - -func Element.GetSalary [in 0, out 0, local 0] - $t0{this} = $a0 - $t0{t.0} = [$t0{this}+4] - $v0 = $t0{t.0} - ret - -func Element.GetMarried [in 0, out 0, local 0] - $t0{this} = $a0 - $t0{t.0} = [$t0{this}+8] - $v0 = $t0{t.0} - ret - -func Element.Equal [in 0, out 0, local 3] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - $s0{this} = $a0 - $s1{other} = $a1 - $s2{ret_val} = 1 - if $s1{other} goto :null1 - Error("null pointer") -null1: - $a0 = $s1{other} - call :Element.GetAge - $t0{aux01} = $v0 - $t1{t.0} = [$s0{this}] - $a0 = $s0{this} - $a1 = $t0{aux01} - $a2 = $t1{t.0} - call :Element.Compare - $t1{t.1} = $v0 - if $t1{t.1} goto :if1_else - $s2{ret_val} = 0 - goto :if1_end -if1_else: - if $s1{other} goto :null2 - Error("null pointer") -null2: - $a0 = $s1{other} - call :Element.GetSalary - $t1{aux02} = $v0 - $t0{t.2} = [$s0{this}+4] - $a0 = $s0{this} - $a1 = $t1{aux02} - $a2 = $t0{t.2} - call :Element.Compare - $t0{t.3} = $v0 - if $t0{t.3} goto :if2_else - $s2{ret_val} = 0 - goto :if2_end -if2_else: - $t0{t.4} = [$s0{this}+8] - if0 $t0{t.4} goto :if3_else - if $s1{other} goto :null3 - Error("null pointer") -null3: - $a0 = $s1{other} - call :Element.GetMarried - $t0{t.5} = $v0 - if $t0{t.5} goto :if4_else - $s2{ret_val} = 0 - goto :if4_end -if4_else: -if4_end: - goto :if3_end -if3_else: - if $s1{other} goto :null4 - Error("null pointer") -null4: - $a0 = $s1{other} - call :Element.GetMarried - $t0{t.6} = $v0 - if0 $t0{t.6} goto :if5_else - $s2{ret_val} = 0 - goto :if5_end -if5_else: -if5_end: -if3_end: -if2_end: -if1_end: - $v0 = $s2{ret_val} - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - ret - -func Element.Compare [in 0, out 0, local 0] - $t0{num1} = $a1 - $t1{num2} = $a2 - $t2{aux02} = Add($t1{num2} 1) - $t1{t.0} = LtS($t0{num1} $t1{num2}) - if0 $t1{t.0} goto :if6_else - $t1{retval} = 0 - goto :if6_end -if6_else: - $t2{t.1} = LtS($t0{num1} $t2{aux02}) - if $t2{t.1} goto :if7_else - $t1{retval} = 0 - goto :if7_end -if7_else: - $t1{retval} = 1 -if7_end: -if6_end: - $v0 = $t1{retval} - ret - -func List.Init [in 0, out 0, local 0] - $t0{this} = $a0 - [$t0{this}+8] = 1 - $v0 = 1 - ret - -func List.InitNew [in 0, out 0, local 0] - $t0{this} = $a0 - $t1{v_elem} = $a1 - $t2{v_next} = $a2 - $t3{v_end} = $a3 - [$t0{this}+8] = $t3{v_end} - [$t0{this}] = $t1{v_elem} - [$t0{this}+4] = $t2{v_next} - $v0 = 1 - ret - -func List.Insert [in 0, out 0, local 1] - local[0] = $s0 - $t0{this} = $a0 - $t1{new_elem} = $a1 - $t0{aux03} = $t0{this} - $s0{aux02} = HeapAllocZ(12) - if $s0{aux02} goto :null5 - Error("null pointer") -null5: - $a0 = $s0{aux02} - $a1 = $t1{new_elem} - $a2 = $t0{aux03} - $a3 = 0 - call :List.InitNew - $v0 = $s0{aux02} - $s0 = local[0] - ret - -func List.SetNext [in 0, out 0, local 0] - $t0{this} = $a0 - $t1{v_next} = $a1 - [$t0{this}+4] = $t1{v_next} - $v0 = 1 - ret - -func List.Delete [in 0, out 0, local 8] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - local[3] = $s3 - local[4] = $s4 - local[5] = $s5 - local[6] = $s6 - local[7] = $s7 - $t0{this} = $a0 - $s0{e} = $a1 - $s1{my_head} = $t0{this} - $s2{ret_val} = 0 - $s3{aux04} = Sub(0 1) - $s4{aux01} = $t0{this} - $s5{prev} = $t0{this} - $s6{var_end} = [$t0{this}+8] - $s7{var_elem} = [$t0{this}] -while1_top: - if $s6{var_end} goto :ss1_else - $t0{t.0} = Sub(1 $s2{ret_val}) - goto :ss1_end -ss1_else: - $t0{t.0} = 0 -ss1_end: - if0 $t0{t.0} goto :while1_end - if $s0{e} goto :null6 - Error("null pointer") -null6: - $a0 = $s0{e} - $a1 = $s7{var_elem} - call :Element.Equal - $t0{t.1} = $v0 - if0 $t0{t.1} goto :if8_else - $s2{ret_val} = 1 - $t0{t.2} = LtS($s3{aux04} 0) - if0 $t0{t.2} goto :if9_else - if $s4{aux01} goto :null7 - Error("null pointer") -null7: - $a0 = $s4{aux01} - call :List.GetNext - $s1{my_head} = $v0 - goto :if9_end -if9_else: - $t0{t.3} = Sub(0 555) - PrintIntS($t0{t.3}) - if $s5{prev} goto :null8 - Error("null pointer") -null8: - if $s4{aux01} goto :null9 - Error("null pointer") -null9: - $a0 = $s4{aux01} - call :List.GetNext - $t0{t.4} = $v0 - $a0 = $s5{prev} - $a1 = $t0{t.4} - call :List.SetNext - $t0{t.5} = Sub(0 555) - PrintIntS($t0{t.5}) -if9_end: - goto :if8_end -if8_else: -if8_end: - if $s2{ret_val} goto :if10_else - $s5{prev} = $s4{aux01} - if $s4{aux01} goto :null10 - Error("null pointer") -null10: - $a0 = $s4{aux01} - call :List.GetNext - $s4{aux01} = $v0 - if $s4{aux01} goto :null11 - Error("null pointer") -null11: - $a0 = $s4{aux01} - call :List.GetEnd - $s6{var_end} = $v0 - if $s4{aux01} goto :null12 - Error("null pointer") -null12: - $a0 = $s4{aux01} - call :List.GetElem - $s7{var_elem} = $v0 - $s3{aux04} = 1 - goto :if10_end -if10_else: -if10_end: - goto :while1_top -while1_end: - $v0 = $s1{my_head} - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - $s3 = local[3] - $s4 = local[4] - $s5 = local[5] - $s6 = local[6] - $s7 = local[7] - ret - -func List.Search [in 0, out 0, local 4] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - local[3] = $s3 - $t0{this} = $a0 - $s0{e} = $a1 - $s1{int_ret_val} = 0 - $s2{aux01} = $t0{this} - $s3{var_end} = [$t0{this}+8] - $t0{var_elem} = [$t0{this}] -while2_top: - $t1{t.0} = Sub(1 $s3{var_end}) - if0 $t1{t.0} goto :while2_end - if $s0{e} goto :null13 - Error("null pointer") -null13: - $a0 = $s0{e} - $a1 = $t0{var_elem} - call :Element.Equal - $t1{t.1} = $v0 - if0 $t1{t.1} goto :if11_else - $s1{int_ret_val} = 1 - goto :if11_end -if11_else: -if11_end: - if $s2{aux01} goto :null14 - Error("null pointer") -null14: - $a0 = $s2{aux01} - call :List.GetNext - $s2{aux01} = $v0 - if $s2{aux01} goto :null15 - Error("null pointer") -null15: - $a0 = $s2{aux01} - call :List.GetEnd - $s3{var_end} = $v0 - if $s2{aux01} goto :null16 - Error("null pointer") -null16: - $a0 = $s2{aux01} - call :List.GetElem - $t0{var_elem} = $v0 - goto :while2_top -while2_end: - $v0 = $s1{int_ret_val} - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - $s3 = local[3] - ret - -func List.GetEnd [in 0, out 0, local 0] - $t0{this} = $a0 - $t0{t.0} = [$t0{this}+8] - $v0 = $t0{t.0} - ret - -func List.GetElem [in 0, out 0, local 0] - $t0{this} = $a0 - $t0{t.0} = [$t0{this}] - $v0 = $t0{t.0} - ret - -func List.GetNext [in 0, out 0, local 0] - $t0{this} = $a0 - $t0{t.0} = [$t0{this}+4] - $v0 = $t0{t.0} - ret - -func List.Print [in 0, out 0, local 2] - local[0] = $s0 - local[1] = $s1 - $t0{this} = $a0 - $s0{aux01} = $t0{this} - $s1{var_end} = [$t0{this}+8] - $t0{var_elem} = [$t0{this}] -while3_top: - $t1{t.0} = Sub(1 $s1{var_end}) - if0 $t1{t.0} goto :while3_end - if $t0{var_elem} goto :null17 - Error("null pointer") -null17: - $a0 = $t0{var_elem} - call :Element.GetAge - $t1{t.1} = $v0 - PrintIntS($t1{t.1}) - if $s0{aux01} goto :null18 - Error("null pointer") -null18: - $a0 = $s0{aux01} - call :List.GetNext - $s0{aux01} = $v0 - if $s0{aux01} goto :null19 - Error("null pointer") -null19: - $a0 = $s0{aux01} - call :List.GetEnd - $s1{var_end} = $v0 - if $s0{aux01} goto :null20 - Error("null pointer") -null20: - $a0 = $s0{aux01} - call :List.GetElem - $t0{var_elem} = $v0 - goto :while3_top -while3_end: - $v0 = 1 - $s0 = local[0] - $s1 = local[1] - ret - -func LL.Start [in 0, out 0, local 4] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - local[3] = $s3 - $s0{last_elem} = HeapAllocZ(12) - if $s0{last_elem} goto :null21 - Error("null pointer") -null21: - $a0 = $s0{last_elem} - call :List.Init - $s0{head} = $s0{last_elem} - if $s0{head} goto :null22 - Error("null pointer") -null22: - $a0 = $s0{head} - call :List.Init - if $s0{head} goto :null23 - Error("null pointer") -null23: - $a0 = $s0{head} - call :List.Print - $s1{el01} = HeapAllocZ(12) - if $s1{el01} goto :null24 - Error("null pointer") -null24: - $a0 = $s1{el01} - $a1 = 25 - $a2 = 37000 - $a3 = 0 - call :Element.Init - if $s0{head} goto :null25 - Error("null pointer") -null25: - $a0 = $s0{head} - $a1 = $s1{el01} - call :List.Insert - $s0{head} = $v0 - if $s0{head} goto :null26 - Error("null pointer") -null26: - $a0 = $s0{head} - call :List.Print - PrintIntS(10000000) - $s1{el01} = HeapAllocZ(12) - if $s1{el01} goto :null27 - Error("null pointer") -null27: - $a0 = $s1{el01} - $a1 = 39 - $a2 = 42000 - $a3 = 1 - call :Element.Init - $s2{el02} = $s1{el01} - if $s0{head} goto :null28 - Error("null pointer") -null28: - $a0 = $s0{head} - $a1 = $s1{el01} - call :List.Insert - $s0{head} = $v0 - if $s0{head} goto :null29 - Error("null pointer") -null29: - $a0 = $s0{head} - call :List.Print - PrintIntS(10000000) - $s1{el01} = HeapAllocZ(12) - if $s1{el01} goto :null30 - Error("null pointer") -null30: - $a0 = $s1{el01} - $a1 = 22 - $a2 = 34000 - $a3 = 0 - call :Element.Init - if $s0{head} goto :null31 - Error("null pointer") -null31: - $a0 = $s0{head} - $a1 = $s1{el01} - call :List.Insert - $s0{head} = $v0 - if $s0{head} goto :null32 - Error("null pointer") -null32: - $a0 = $s0{head} - call :List.Print - $s3{el03} = HeapAllocZ(12) - if $s3{el03} goto :null33 - Error("null pointer") -null33: - $a0 = $s3{el03} - $a1 = 27 - $a2 = 34000 - $a3 = 0 - call :Element.Init - if $s0{head} goto :null34 - Error("null pointer") -null34: - $a0 = $s0{head} - $a1 = $s2{el02} - call :List.Search - $t0{t.0} = $v0 - PrintIntS($t0{t.0}) - if $s0{head} goto :null35 - Error("null pointer") -null35: - $a0 = $s0{head} - $a1 = $s3{el03} - call :List.Search - $t0{t.1} = $v0 - PrintIntS($t0{t.1}) - PrintIntS(10000000) - $s1{el01} = HeapAllocZ(12) - if $s1{el01} goto :null36 - Error("null pointer") -null36: - $a0 = $s1{el01} - $a1 = 28 - $a2 = 35000 - $a3 = 0 - call :Element.Init - if $s0{head} goto :null37 - Error("null pointer") -null37: - $a0 = $s0{head} - $a1 = $s1{el01} - call :List.Insert - $s0{head} = $v0 - if $s0{head} goto :null38 - Error("null pointer") -null38: - $a0 = $s0{head} - call :List.Print - PrintIntS(2220000) - if $s0{head} goto :null39 - Error("null pointer") -null39: - $a0 = $s0{head} - $a1 = $s2{el02} - call :List.Delete - $s0{head} = $v0 - if $s0{head} goto :null40 - Error("null pointer") -null40: - $a0 = $s0{head} - call :List.Print - PrintIntS(33300000) - if $s0{head} goto :null41 - Error("null pointer") -null41: - $a0 = $s0{head} - $a1 = $s1{el01} - call :List.Delete - $s0{head} = $v0 - if $s0{head} goto :null42 - Error("null pointer") -null42: - $a0 = $s0{head} - call :List.Print - PrintIntS(44440000) - $v0 = 0 - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - $s3 = local[3] - ret - diff --git a/vaporize/tests/LinkedList.opt.regalloc b/vaporize/tests/LinkedList.opt.regalloc deleted file mode 100644 index 30991e8..0000000 --- a/vaporize/tests/LinkedList.opt.regalloc +++ /dev/null @@ -1,362 +0,0 @@ -func Main - in 0, out 0, callee-saves 0, spills 0 -Live In: - t.0: 11 -Linear Range: - t.0: 10-11 -Allocation: - t.0: t0 - -func Element.Init - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 15-17 - v_Age: 15 - v_Salary: 15-16 - v_Married: 15-17 -Linear Range: - this: 14-17 - v_Age: 14-15 - v_Salary: 14-16 - v_Married: 14-17 -Allocation: - this: t0 - v_Age: t1 - v_Salary: t2 - v_Married: t3 - -func Element.GetAge - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 21 - t.0: 22 -Linear Range: - this: 20-21 - t.0: 21-22 -Allocation: - this: t0 - t.0: t0 - -func Element.GetSalary - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 25 - t.0: 26 -Linear Range: - this: 24-25 - t.0: 25-26 -Allocation: - this: t0 - t.0: t0 - -func Element.GetMarried - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 29 - t.0: 30 -Linear Range: - this: 28-29 - t.0: 29-30 -Allocation: - this: t0 - t.0: t0 - -func Element.Equal - in 0, out 0, callee-saves 3, spills 0 -Live In: - this: 33-34 37-40 44 47-50 54 - other: 33-34 37-40 44 47-50 54-56 59 68 71 - ret_val: 34 37-40 42-44 47-50 52-56 59-60 62-68 71-72 74-81 - aux01: 38-39 - t.0: 39 - t.1: 40 - aux02: 48-49 - t.2: 49 - t.3: 50 - t.4: 55 - t.5: 60 - nt: - t.6: 72 -Linear Range: - this: 32-54 (cross call) - other: 32-71 (cross call) - ret_val: 33-81 (cross call) - aux01: 37-39 - t.0: 38-39 - t.1: 39-40 - aux02: 47-49 - t.2: 48-49 - t.3: 49-50 - t.4: 54-55 - t.5: 59-60 - t.6: 71-72 -Allocation: - this: s0 - other: s1 - ret_val: s2 - aux01: t0 - t.0: t1 - t.1: t1 - aux02: t1 - t.2: t0 - t.3: t0 - t.4: t0 - t.5: t0 - t.6: t0 - -func Element.Compare - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: - num1: 84-87 91 - num2: 84-86 - retval: 89 94 99 - aux02: 86-87 91 - t.0: 87 - t.1: 92 -Linear Range: - num1: 83-91 - num2: 83-86 - retval: 88-99 - aux02: 85-91 - t.0: 86-87 - t.1: 91-92 -Allocation: - num1: t0 - num2: t1 - retval: t1 - aux02: t2 - t.0: t1 - t.1: t2 - -func List.Init - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 102 -Linear Range: - this: 101-102 -Allocation: - this: t0 - -func List.InitNew - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 106-108 - v_elem: 106-107 - v_next: 106-108 - v_end: 106 -Linear Range: - this: 105-108 - v_elem: 105-107 - v_next: 105-108 - v_end: 105-106 -Allocation: - this: t0 - v_elem: t1 - v_next: t2 - v_end: t3 - -func List.Insert - in 0, out 0, callee-saves 1, spills 0 -Live In: - this: 112 - new_elem: 112-114 117 - aux03: 113-114 117 - aux02: 114 117-118 - ret_val: -Linear Range: - this: 111-112 - new_elem: 111-117 - aux03: 112-117 - aux02: 113-118 (cross call) -Allocation: - this: t0 - new_elem: t1 - aux03: t0 - aux02: s0 - -func List.SetNext - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 121 - v_next: 121 -Linear Range: - this: 120-121 - v_next: 120-121 -Allocation: - this: t0 - v_next: t1 - -func List.Delete - in 0, out 0, callee-saves 8, spills 0 -Live In: - this: 125-131 - e: 125-140 143-148 151-156 159 162-173 176-177 180-181 184-190 - my_head: 126-140 143-147 152-156 159 162-173 176-177 180-181 184-192 - ret_val: 127-140 143-144 146-148 151-156 159 162-173 176-177 180-181 184-190 - aux04: 128-140 143-148 151-156 159 162-171 186-190 - aux01: 129-140 143-148 151-156 159 162-173 176-177 180-181 184-190 - prev: 130-140 143-148 151-156 159 162-171 173 176-177 180-181 184-190 - var_end: 131-140 143-148 151-156 159 162-171 181 184-190 - var_elem: 133-140 143-148 151-156 159 162-171 185-190 - t.0: 135 139 - t.1: 144 - t.2: 147 - t.3: 155 - t.4: 163 - aux05: - t.5: 165 - nt: -Linear Range: - this: 124-131 - e: 124-190 (cross call) - my_head: 125-192 (cross call) - ret_val: 126-190 (cross call) - aux04: 127-190 (cross call) - aux01: 128-190 (cross call) - prev: 129-190 (cross call) - var_end: 130-190 (cross call) - var_elem: 131-190 (cross call) - t.0: 134-139 - t.1: 143-144 - t.2: 146-147 - t.3: 154-155 - t.4: 162-163 - t.5: 164-165 -Allocation: - this: t0 - e: s0 - my_head: s1 - ret_val: s2 - aux04: s3 - aux01: s4 - prev: s5 - var_end: s6 - var_elem: s7 - t.0: t0 - t.1: t0 - t.2: t0 - t.3: t0 - t.4: t0 - t.5: t0 - -func List.Search - in 0, out 0, callee-saves 4, spills 0 -Live In: - this: 195-198 - e: 195-202 205-212 215-216 219-220 223-224 - int_ret_val: 196-202 205-206 208-212 215-216 219-220 223-226 - aux01: 197-202 205-212 215-216 219-220 223-224 - var_end: 198-200 220 223-224 - var_elem: 200-202 205 224 - t.0: 201 - t.1: 206 - nt: -Linear Range: - this: 194-198 - e: 194-224 (cross call) - int_ret_val: 195-226 (cross call) - aux01: 196-224 (cross call) - var_end: 197-224 (cross call) - var_elem: 198-224 - t.0: 200-201 - t.1: 205-206 -Allocation: - this: t0 - e: s0 - int_ret_val: s1 - aux01: s2 - var_end: s3 - var_elem: t0 - t.0: t1 - t.1: t1 - -func List.GetEnd - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 229 - t.0: 230 -Linear Range: - this: 228-229 - t.0: 229-230 -Allocation: - this: t0 - t.0: t0 - -func List.GetElem - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 233 - t.0: 234 -Linear Range: - this: 232-233 - t.0: 233-234 -Allocation: - this: t0 - t.0: t0 - -func List.GetNext - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 237 - t.0: 238 -Linear Range: - this: 236-237 - t.0: 237-238 -Allocation: - this: t0 - t.0: t0 - -func List.Print - in 0, out 0, callee-saves 2, spills 0 -Live In: - this: 241-243 - aux01: 242-247 250-252 255-256 259-260 263-264 - var_end: 243-245 260 263-264 - var_elem: 245-247 250 264 - t.0: 246 - t.1: 251 -Linear Range: - this: 240-243 - aux01: 241-264 (cross call) - var_end: 242-264 (cross call) - var_elem: 243-264 - t.0: 245-246 - t.1: 250-251 -Allocation: - this: t0 - aux01: s0 - var_end: s1 - var_elem: t0 - t.0: t1 - t.1: t1 - -func LL.Start - in 0, out 0, callee-saves 4, spills 0 -Live In: - this: - last_elem: 270 273-274 - aux01: - head: 275 278-279 282-284 287-288 291-292 295-298 301-303 306-307 310-313 316-317 320-321 324-326 329-330 333-335 338-342 345-346 349-350 353-355 358-359 362-364 367-368 371 - el01: 284 287-288 291 298 301-303 306 313 316-317 320 342 345-346 349-350 353-355 358-359 362-364 367 - el02: 303 306-307 310-313 316-317 320-321 324-326 329-330 333-335 338-342 345-346 349-350 353-355 358 - el03: 326 329-330 333-335 338 - t.0: 334 - t.1: 339 -Linear Range: - last_elem: 269-274 (cross call) - head: 274-371 (cross call) - el01: 283-367 (cross call) - el02: 302-358 (cross call) - el03: 325-338 (cross call) - t.0: 333-334 - t.1: 338-339 -Allocation: - last_elem: s0 - head: s0 - el01: s1 - el02: s2 - el03: s3 - t.0: t0 - t.1: t0 - diff --git a/vaporize/tests/LinkedList.opt.vapor b/vaporize/tests/LinkedList.opt.vapor deleted file mode 100644 index aaca62c..0000000 --- a/vaporize/tests/LinkedList.opt.vapor +++ /dev/null @@ -1,373 +0,0 @@ - -const empty_Element - -const empty_List - -const empty_LL - - -func Main() - t.0 = call :LL.Start(:empty_LL) - PrintIntS(t.0) - ret - -func Element.Init(this v_Age v_Salary v_Married) - [this+0] = v_Age - [this+4] = v_Salary - [this+8] = v_Married - ret 1 - -func Element.GetAge(this) - t.0 = [this+0] - ret t.0 - -func Element.GetSalary(this) - t.0 = [this+4] - ret t.0 - -func Element.GetMarried(this) - t.0 = [this+8] - ret t.0 - -func Element.Equal(this other) - ret_val = 1 - if other goto :null1 - Error("null pointer") - null1: - aux01 = call :Element.GetAge(other) - t.0 = [this+0] - t.1 = call :Element.Compare(this aux01 t.0) - if t.1 goto :if1_else - ret_val = 0 - goto :if1_end - if1_else: - if other goto :null2 - Error("null pointer") - null2: - aux02 = call :Element.GetSalary(other) - t.2 = [this+4] - t.3 = call :Element.Compare(this aux02 t.2) - if t.3 goto :if2_else - ret_val = 0 - goto :if2_end - if2_else: - t.4 = [this+8] - if0 t.4 goto :if3_else - if other goto :null3 - Error("null pointer") - null3: - t.5 = call :Element.GetMarried(other) - if t.5 goto :if4_else - ret_val = 0 - goto :if4_end - if4_else: - nt = 0 - if4_end: - goto :if3_end - if3_else: - if other goto :null4 - Error("null pointer") - null4: - t.6 = call :Element.GetMarried(other) - if0 t.6 goto :if5_else - ret_val = 0 - goto :if5_end - if5_else: - nt = 0 - if5_end: - if3_end: - if2_end: - if1_end: - ret ret_val - -func Element.Compare(this num1 num2) - retval = 0 - aux02 = Add(num2 1) - t.0 = LtS(num1 num2) - if0 t.0 goto :if6_else - retval = 0 - goto :if6_end - if6_else: - t.1 = LtS(num1 aux02) - if t.1 goto :if7_else - retval = 0 - goto :if7_end - if7_else: - retval = 1 - if7_end: - if6_end: - ret retval - -func List.Init(this) - [this+8] = 1 - ret 1 - -func List.InitNew(this v_elem v_next v_end) - [this+8] = v_end - [this+0] = v_elem - [this+4] = v_next - ret 1 - -func List.Insert(this new_elem) - aux03 = this - aux02 = HeapAllocZ(12) - if aux02 goto :null5 - Error("null pointer") - null5: - ret_val = call :List.InitNew(aux02 new_elem aux03 0) - ret aux02 - -func List.SetNext(this v_next) - [this+4] = v_next - ret 1 - -func List.Delete(this e) - my_head = this - ret_val = 0 - aux04 = Sub(0 1) - aux01 = this - prev = this - var_end = [this+8] - var_elem = [this+0] - while1_top: - if var_end goto :ss1_else - t.0 = Sub(1 ret_val) - goto :ss1_end - ss1_else: - t.0 = 0 - ss1_end: - if0 t.0 goto :while1_end - if e goto :null6 - Error("null pointer") - null6: - t.1 = call :Element.Equal(e var_elem) - if0 t.1 goto :if8_else - ret_val = 1 - t.2 = LtS(aux04 0) - if0 t.2 goto :if9_else - if aux01 goto :null7 - Error("null pointer") - null7: - my_head = call :List.GetNext(aux01) - goto :if9_end - if9_else: - t.3 = Sub(0 555) - PrintIntS(t.3) - if prev goto :null8 - Error("null pointer") - null8: - if aux01 goto :null9 - Error("null pointer") - null9: - t.4 = call :List.GetNext(aux01) - aux05 = call :List.SetNext(prev t.4) - t.5 = Sub(0 555) - PrintIntS(t.5) - if9_end: - goto :if8_end - if8_else: - nt = 0 - if8_end: - if ret_val goto :if10_else - prev = aux01 - if aux01 goto :null10 - Error("null pointer") - null10: - aux01 = call :List.GetNext(aux01) - if aux01 goto :null11 - Error("null pointer") - null11: - var_end = call :List.GetEnd(aux01) - if aux01 goto :null12 - Error("null pointer") - null12: - var_elem = call :List.GetElem(aux01) - aux04 = 1 - goto :if10_end - if10_else: - nt = 0 - if10_end: - goto :while1_top - while1_end: - ret my_head - -func List.Search(this e) - int_ret_val = 0 - aux01 = this - var_end = [this+8] - var_elem = [this+0] - while2_top: - t.0 = Sub(1 var_end) - if0 t.0 goto :while2_end - if e goto :null13 - Error("null pointer") - null13: - t.1 = call :Element.Equal(e var_elem) - if0 t.1 goto :if11_else - int_ret_val = 1 - goto :if11_end - if11_else: - nt = 0 - if11_end: - if aux01 goto :null14 - Error("null pointer") - null14: - aux01 = call :List.GetNext(aux01) - if aux01 goto :null15 - Error("null pointer") - null15: - var_end = call :List.GetEnd(aux01) - if aux01 goto :null16 - Error("null pointer") - null16: - var_elem = call :List.GetElem(aux01) - goto :while2_top - while2_end: - ret int_ret_val - -func List.GetEnd(this) - t.0 = [this+8] - ret t.0 - -func List.GetElem(this) - t.0 = [this+0] - ret t.0 - -func List.GetNext(this) - t.0 = [this+4] - ret t.0 - -func List.Print(this) - aux01 = this - var_end = [this+8] - var_elem = [this+0] - while3_top: - t.0 = Sub(1 var_end) - if0 t.0 goto :while3_end - if var_elem goto :null17 - Error("null pointer") - null17: - t.1 = call :Element.GetAge(var_elem) - PrintIntS(t.1) - if aux01 goto :null18 - Error("null pointer") - null18: - aux01 = call :List.GetNext(aux01) - if aux01 goto :null19 - Error("null pointer") - null19: - var_end = call :List.GetEnd(aux01) - if aux01 goto :null20 - Error("null pointer") - null20: - var_elem = call :List.GetElem(aux01) - goto :while3_top - while3_end: - ret 1 - -func LL.Start(this) - last_elem = HeapAllocZ(12) - if last_elem goto :null21 - Error("null pointer") - null21: - aux01 = call :List.Init(last_elem) - head = last_elem - if head goto :null22 - Error("null pointer") - null22: - aux01 = call :List.Init(head) - if head goto :null23 - Error("null pointer") - null23: - aux01 = call :List.Print(head) - el01 = HeapAllocZ(12) - if el01 goto :null24 - Error("null pointer") - null24: - aux01 = call :Element.Init(el01 25 37000 0) - if head goto :null25 - Error("null pointer") - null25: - head = call :List.Insert(head el01) - if head goto :null26 - Error("null pointer") - null26: - aux01 = call :List.Print(head) - PrintIntS(10000000) - el01 = HeapAllocZ(12) - if el01 goto :null27 - Error("null pointer") - null27: - aux01 = call :Element.Init(el01 39 42000 1) - el02 = el01 - if head goto :null28 - Error("null pointer") - null28: - head = call :List.Insert(head el01) - if head goto :null29 - Error("null pointer") - null29: - aux01 = call :List.Print(head) - PrintIntS(10000000) - el01 = HeapAllocZ(12) - if el01 goto :null30 - Error("null pointer") - null30: - aux01 = call :Element.Init(el01 22 34000 0) - if head goto :null31 - Error("null pointer") - null31: - head = call :List.Insert(head el01) - if head goto :null32 - Error("null pointer") - null32: - aux01 = call :List.Print(head) - el03 = HeapAllocZ(12) - if el03 goto :null33 - Error("null pointer") - null33: - aux01 = call :Element.Init(el03 27 34000 0) - if head goto :null34 - Error("null pointer") - null34: - t.0 = call :List.Search(head el02) - PrintIntS(t.0) - if head goto :null35 - Error("null pointer") - null35: - t.1 = call :List.Search(head el03) - PrintIntS(t.1) - PrintIntS(10000000) - el01 = HeapAllocZ(12) - if el01 goto :null36 - Error("null pointer") - null36: - aux01 = call :Element.Init(el01 28 35000 0) - if head goto :null37 - Error("null pointer") - null37: - head = call :List.Insert(head el01) - if head goto :null38 - Error("null pointer") - null38: - aux01 = call :List.Print(head) - PrintIntS(2220000) - if head goto :null39 - Error("null pointer") - null39: - head = call :List.Delete(head el02) - if head goto :null40 - Error("null pointer") - null40: - aux01 = call :List.Print(head) - PrintIntS(33300000) - if head goto :null41 - Error("null pointer") - null41: - head = call :List.Delete(head el01) - if head goto :null42 - Error("null pointer") - null42: - aux01 = call :List.Print(head) - PrintIntS(44440000) - ret 0 diff --git a/vaporize/tests/LinkedList.opt.vaporm b/vaporize/tests/LinkedList.opt.vaporm deleted file mode 100644 index b9bef66..0000000 --- a/vaporize/tests/LinkedList.opt.vaporm +++ /dev/null @@ -1,562 +0,0 @@ -const empty_Element - -const empty_List - -const empty_LL - -func Main [in 0, out 0, local 0] - $a0 = :empty_LL - call :LL.Start - $t0 = $v0 - PrintIntS($t0) - ret - -func Element.Init [in 0, out 0, local 0] - $t0 = $a0 - $t1 = $a1 - $t2 = $a2 - $t3 = $a3 - [$t0] = $t1 - [$t0+4] = $t2 - [$t0+8] = $t3 - $v0 = 1 - ret - -func Element.GetAge [in 0, out 0, local 0] - $t0 = $a0 - $t0 = [$t0] - $v0 = $t0 - ret - -func Element.GetSalary [in 0, out 0, local 0] - $t0 = $a0 - $t0 = [$t0+4] - $v0 = $t0 - ret - -func Element.GetMarried [in 0, out 0, local 0] - $t0 = $a0 - $t0 = [$t0+8] - $v0 = $t0 - ret - -func Element.Equal [in 0, out 0, local 3] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - $s0 = $a0 - $s1 = $a1 - $s2 = 1 - if $s1 goto :null1 - Error("null pointer") -null1: - $a0 = $s1 - call :Element.GetAge - $t0 = $v0 - $t1 = [$s0] - $a0 = $s0 - $a1 = $t0 - $a2 = $t1 - call :Element.Compare - $t1 = $v0 - if $t1 goto :if1_else - $s2 = 0 - goto :if1_end -if1_else: - if $s1 goto :null2 - Error("null pointer") -null2: - $a0 = $s1 - call :Element.GetSalary - $t1 = $v0 - $t0 = [$s0+4] - $a0 = $s0 - $a1 = $t1 - $a2 = $t0 - call :Element.Compare - $t0 = $v0 - if $t0 goto :if2_else - $s2 = 0 - goto :if2_end -if2_else: - $t0 = [$s0+8] - if0 $t0 goto :if3_else - if $s1 goto :null3 - Error("null pointer") -null3: - $a0 = $s1 - call :Element.GetMarried - $t0 = $v0 - if $t0 goto :if4_else - $s2 = 0 - goto :if4_end -if4_else: -if4_end: - goto :if3_end -if3_else: - if $s1 goto :null4 - Error("null pointer") -null4: - $a0 = $s1 - call :Element.GetMarried - $t0 = $v0 - if0 $t0 goto :if5_else - $s2 = 0 - goto :if5_end -if5_else: -if5_end: -if3_end: -if2_end: -if1_end: - $v0 = $s2 - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - ret - -func Element.Compare [in 0, out 0, local 0] - $t0 = $a1 - $t1 = $a2 - $t2 = Add($t1 1) - $t1 = LtS($t0 $t1) - if0 $t1 goto :if6_else - $t1 = 0 - goto :if6_end -if6_else: - $t2 = LtS($t0 $t2) - if $t2 goto :if7_else - $t1 = 0 - goto :if7_end -if7_else: - $t1 = 1 -if7_end: -if6_end: - $v0 = $t1 - ret - -func List.Init [in 0, out 0, local 0] - $t0 = $a0 - [$t0+8] = 1 - $v0 = 1 - ret - -func List.InitNew [in 0, out 0, local 0] - $t0 = $a0 - $t1 = $a1 - $t2 = $a2 - $t3 = $a3 - [$t0+8] = $t3 - [$t0] = $t1 - [$t0+4] = $t2 - $v0 = 1 - ret - -func List.Insert [in 0, out 0, local 1] - local[0] = $s0 - $t0 = $a0 - $t1 = $a1 - $t0 = $t0 - $s0 = HeapAllocZ(12) - if $s0 goto :null5 - Error("null pointer") -null5: - $a0 = $s0 - $a1 = $t1 - $a2 = $t0 - $a3 = 0 - call :List.InitNew - $v0 = $s0 - $s0 = local[0] - ret - -func List.SetNext [in 0, out 0, local 0] - $t0 = $a0 - $t1 = $a1 - [$t0+4] = $t1 - $v0 = 1 - ret - -func List.Delete [in 0, out 0, local 8] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - local[3] = $s3 - local[4] = $s4 - local[5] = $s5 - local[6] = $s6 - local[7] = $s7 - $t0 = $a0 - $s0 = $a1 - $s1 = $t0 - $s2 = 0 - $s3 = Sub(0 1) - $s4 = $t0 - $s5 = $t0 - $s6 = [$t0+8] - $s7 = [$t0] -while1_top: - if $s6 goto :ss1_else - $t0 = Sub(1 $s2) - goto :ss1_end -ss1_else: - $t0 = 0 -ss1_end: - if0 $t0 goto :while1_end - if $s0 goto :null6 - Error("null pointer") -null6: - $a0 = $s0 - $a1 = $s7 - call :Element.Equal - $t0 = $v0 - if0 $t0 goto :if8_else - $s2 = 1 - $t0 = LtS($s3 0) - if0 $t0 goto :if9_else - if $s4 goto :null7 - Error("null pointer") -null7: - $a0 = $s4 - call :List.GetNext - $s1 = $v0 - goto :if9_end -if9_else: - $t0 = Sub(0 555) - PrintIntS($t0) - if $s5 goto :null8 - Error("null pointer") -null8: - if $s4 goto :null9 - Error("null pointer") -null9: - $a0 = $s4 - call :List.GetNext - $t0 = $v0 - $a0 = $s5 - $a1 = $t0 - call :List.SetNext - $t0 = Sub(0 555) - PrintIntS($t0) -if9_end: - goto :if8_end -if8_else: -if8_end: - if $s2 goto :if10_else - $s5 = $s4 - if $s4 goto :null10 - Error("null pointer") -null10: - $a0 = $s4 - call :List.GetNext - $s4 = $v0 - if $s4 goto :null11 - Error("null pointer") -null11: - $a0 = $s4 - call :List.GetEnd - $s6 = $v0 - if $s4 goto :null12 - Error("null pointer") -null12: - $a0 = $s4 - call :List.GetElem - $s7 = $v0 - $s3 = 1 - goto :if10_end -if10_else: -if10_end: - goto :while1_top -while1_end: - $v0 = $s1 - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - $s3 = local[3] - $s4 = local[4] - $s5 = local[5] - $s6 = local[6] - $s7 = local[7] - ret - -func List.Search [in 0, out 0, local 4] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - local[3] = $s3 - $t0 = $a0 - $s0 = $a1 - $s1 = 0 - $s2 = $t0 - $s3 = [$t0+8] - $t0 = [$t0] -while2_top: - $t1 = Sub(1 $s3) - if0 $t1 goto :while2_end - if $s0 goto :null13 - Error("null pointer") -null13: - $a0 = $s0 - $a1 = $t0 - call :Element.Equal - $t1 = $v0 - if0 $t1 goto :if11_else - $s1 = 1 - goto :if11_end -if11_else: -if11_end: - if $s2 goto :null14 - Error("null pointer") -null14: - $a0 = $s2 - call :List.GetNext - $s2 = $v0 - if $s2 goto :null15 - Error("null pointer") -null15: - $a0 = $s2 - call :List.GetEnd - $s3 = $v0 - if $s2 goto :null16 - Error("null pointer") -null16: - $a0 = $s2 - call :List.GetElem - $t0 = $v0 - goto :while2_top -while2_end: - $v0 = $s1 - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - $s3 = local[3] - ret - -func List.GetEnd [in 0, out 0, local 0] - $t0 = $a0 - $t0 = [$t0+8] - $v0 = $t0 - ret - -func List.GetElem [in 0, out 0, local 0] - $t0 = $a0 - $t0 = [$t0] - $v0 = $t0 - ret - -func List.GetNext [in 0, out 0, local 0] - $t0 = $a0 - $t0 = [$t0+4] - $v0 = $t0 - ret - -func List.Print [in 0, out 0, local 2] - local[0] = $s0 - local[1] = $s1 - $t0 = $a0 - $s0 = $t0 - $s1 = [$t0+8] - $t0 = [$t0] -while3_top: - $t1 = Sub(1 $s1) - if0 $t1 goto :while3_end - if $t0 goto :null17 - Error("null pointer") -null17: - $a0 = $t0 - call :Element.GetAge - $t1 = $v0 - PrintIntS($t1) - if $s0 goto :null18 - Error("null pointer") -null18: - $a0 = $s0 - call :List.GetNext - $s0 = $v0 - if $s0 goto :null19 - Error("null pointer") -null19: - $a0 = $s0 - call :List.GetEnd - $s1 = $v0 - if $s0 goto :null20 - Error("null pointer") -null20: - $a0 = $s0 - call :List.GetElem - $t0 = $v0 - goto :while3_top -while3_end: - $v0 = 1 - $s0 = local[0] - $s1 = local[1] - ret - -func LL.Start [in 0, out 0, local 4] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - local[3] = $s3 - $s0 = HeapAllocZ(12) - if $s0 goto :null21 - Error("null pointer") -null21: - $a0 = $s0 - call :List.Init - $s0 = $s0 - if $s0 goto :null22 - Error("null pointer") -null22: - $a0 = $s0 - call :List.Init - if $s0 goto :null23 - Error("null pointer") -null23: - $a0 = $s0 - call :List.Print - $s1 = HeapAllocZ(12) - if $s1 goto :null24 - Error("null pointer") -null24: - $a0 = $s1 - $a1 = 25 - $a2 = 37000 - $a3 = 0 - call :Element.Init - if $s0 goto :null25 - Error("null pointer") -null25: - $a0 = $s0 - $a1 = $s1 - call :List.Insert - $s0 = $v0 - if $s0 goto :null26 - Error("null pointer") -null26: - $a0 = $s0 - call :List.Print - PrintIntS(10000000) - $s1 = HeapAllocZ(12) - if $s1 goto :null27 - Error("null pointer") -null27: - $a0 = $s1 - $a1 = 39 - $a2 = 42000 - $a3 = 1 - call :Element.Init - $s2 = $s1 - if $s0 goto :null28 - Error("null pointer") -null28: - $a0 = $s0 - $a1 = $s1 - call :List.Insert - $s0 = $v0 - if $s0 goto :null29 - Error("null pointer") -null29: - $a0 = $s0 - call :List.Print - PrintIntS(10000000) - $s1 = HeapAllocZ(12) - if $s1 goto :null30 - Error("null pointer") -null30: - $a0 = $s1 - $a1 = 22 - $a2 = 34000 - $a3 = 0 - call :Element.Init - if $s0 goto :null31 - Error("null pointer") -null31: - $a0 = $s0 - $a1 = $s1 - call :List.Insert - $s0 = $v0 - if $s0 goto :null32 - Error("null pointer") -null32: - $a0 = $s0 - call :List.Print - $s3 = HeapAllocZ(12) - if $s3 goto :null33 - Error("null pointer") -null33: - $a0 = $s3 - $a1 = 27 - $a2 = 34000 - $a3 = 0 - call :Element.Init - if $s0 goto :null34 - Error("null pointer") -null34: - $a0 = $s0 - $a1 = $s2 - call :List.Search - $t0 = $v0 - PrintIntS($t0) - if $s0 goto :null35 - Error("null pointer") -null35: - $a0 = $s0 - $a1 = $s3 - call :List.Search - $t0 = $v0 - PrintIntS($t0) - PrintIntS(10000000) - $s1 = HeapAllocZ(12) - if $s1 goto :null36 - Error("null pointer") -null36: - $a0 = $s1 - $a1 = 28 - $a2 = 35000 - $a3 = 0 - call :Element.Init - if $s0 goto :null37 - Error("null pointer") -null37: - $a0 = $s0 - $a1 = $s1 - call :List.Insert - $s0 = $v0 - if $s0 goto :null38 - Error("null pointer") -null38: - $a0 = $s0 - call :List.Print - PrintIntS(2220000) - if $s0 goto :null39 - Error("null pointer") -null39: - $a0 = $s0 - $a1 = $s2 - call :List.Delete - $s0 = $v0 - if $s0 goto :null40 - Error("null pointer") -null40: - $a0 = $s0 - call :List.Print - PrintIntS(33300000) - if $s0 goto :null41 - Error("null pointer") -null41: - $a0 = $s0 - $a1 = $s1 - call :List.Delete - $s0 = $v0 - if $s0 goto :null42 - Error("null pointer") -null42: - $a0 = $s0 - call :List.Print - PrintIntS(44440000) - $v0 = 0 - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - $s3 = local[3] - ret - diff --git a/vaporize/tests/LinkedList.regalloc b/vaporize/tests/LinkedList.regalloc deleted file mode 100644 index 7b3da4e..0000000 --- a/vaporize/tests/LinkedList.regalloc +++ /dev/null @@ -1,539 +0,0 @@ -func Main - in 0, out 0, callee-saves 0, spills 0 -Live In: - t.0: 28-29 32-34 - t.1: 33-34 - t.2: 35 -Linear Range: - t.0: 27-34 - t.1: 32-34 - t.2: 34-35 -Allocation: - t.0: t0 - t.1: t1 - t.2: t1 - -func Element.Init - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 39-41 - v_Age: 39 - v_Salary: 39-40 - v_Married: 39-41 -Linear Range: - this: 38-41 - v_Age: 38-39 - v_Salary: 38-40 - v_Married: 38-41 -Allocation: - this: t0 - v_Age: t1 - v_Salary: t2 - v_Married: t3 - -func Element.GetAge - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 45 - t.0: 46 -Linear Range: - this: 44-45 - t.0: 45-46 -Allocation: - this: t0 - t.0: t0 - -func Element.GetSalary - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 49 - t.0: 50 -Linear Range: - this: 48-49 - t.0: 49-50 -Allocation: - this: t0 - t.0: t0 - -func Element.GetMarried - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 53 - t.0: 54 -Linear Range: - this: 52-53 - t.0: 53-54 -Allocation: - this: t0 - t.0: t0 - -func Element.Equal - in 0, out 0, callee-saves 3, spills 0 -Live In: - this: 57-58 61-69 73 76-84 88 - other: 57-58 61-69 73 76-84 88-90 93-95 105 108-110 - ret_val: 58 61-69 71-73 76-84 86-90 93-97 99-105 108-111 113-120 - t.0: 62-63 - aux01: 64-67 - t.1: 65-67 - t.2: 67 - t.3: 68 - t.4: 69 - t.5: 77-78 - aux02: 79-82 - t.6: 80-82 - t.7: 82 - t.8: 83 - t.9: 84 - t.10: 89 - t.11: 94-95 - t.12: 96 - t.13: 97 - nt: - t.14: 109-110 - t.15: 111 -Linear Range: - this: 56-88 (cross call) - other: 56-110 (cross call) - ret_val: 57-120 (cross call) - t.0: 61-63 - aux01: 63-67 - t.1: 64-67 - t.2: 66-67 - t.3: 67-68 - t.4: 68-69 - t.5: 76-78 - aux02: 78-82 - t.6: 79-82 - t.7: 81-82 - t.8: 82-83 - t.9: 83-84 - t.10: 88-89 - t.11: 93-95 - t.12: 95-96 - t.13: 96-97 - t.14: 108-110 - t.15: 110-111 -Allocation: - this: s0 - other: s1 - ret_val: s2 - t.0: t0 - aux01: t0 - t.1: t1 - t.2: t2 - t.3: t2 - t.4: t2 - t.5: t2 - aux02: t2 - t.6: t1 - t.7: t0 - t.8: t0 - t.9: t0 - t.10: t0 - t.11: t0 - t.12: t0 - t.13: t0 - t.14: t0 - t.15: t0 - -func Element.Compare - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: - num1: 123-126 130 - num2: 123-125 - retval: 128 134 139 - aux02: 125-126 130 - t.0: 126 - t.1: 131 - t.2: 132 -Linear Range: - num1: 122-130 - num2: 122-125 - retval: 127-139 - aux02: 124-130 - t.0: 125-126 - t.1: 130-131 - t.2: 131-132 -Allocation: - num1: t0 - num2: t1 - retval: t1 - aux02: t2 - t.0: t1 - t.1: t2 - t.2: t2 - -func List.Init - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 142 -Linear Range: - this: 141-142 -Allocation: - this: t0 - -func List.InitNew - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 146-148 - v_elem: 146-147 - v_next: 146-148 - v_end: 146 -Linear Range: - this: 145-148 - v_elem: 145-147 - v_next: 145-148 - v_end: 145-146 -Allocation: - this: t0 - v_elem: t1 - v_next: t2 - v_end: t3 - -func List.Insert - in 0, out 0, callee-saves 1, spills 0 -Live In: - this: 152 - new_elem: 152-156 159-161 - aux03: 153-156 159-161 - t.0: 154-155 - aux02: 156 159-162 - t.1: 160-161 - ret_val: -Linear Range: - this: 151-152 - new_elem: 151-161 - aux03: 152-161 - t.0: 153-155 - aux02: 155-162 (cross call) - t.1: 159-161 -Allocation: - this: t0 - new_elem: t1 - aux03: t0 - t.0: t2 - aux02: s0 - t.1: t2 - -func List.SetNext - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 165 - v_next: 165 -Linear Range: - this: 164-165 - v_next: 164-165 -Allocation: - this: t0 - v_next: t1 - -func List.Delete - in 0, out 0, callee-saves 8, spills 1 -Live In: - this: 169-175 - e: 169-185 188-195 198-205 208-210 213-227 230-233 236-239 242-250 - my_head: 170-185 188-194 201-205 208-210 213-227 230-233 236-239 242-252 - ret_val: 171-185 188-191 193-195 198-205 208-210 213-227 230-233 236-239 242-250 - aux04: 172-185 188-195 198-205 208-210 213-225 246-250 - aux01: 173-185 188-195 198-205 208-210 213-227 230-233 236-239 242-250 - prev: 174-185 188-195 198-205 208-210 213-225 227 230-233 236-239 242-250 - var_end: 175-185 188-195 198-205 208-210 213-225 239 242-250 - var_elem: 177-185 188-195 198-205 208-210 213-225 245-250 - t.1: 178 - t.0: 180 184 - t.2: 189-190 - t.3: 191 - t.4: 194 - t.5: 199-200 - t.6: 204 - t.7: 209-210 213-216 - t.8: 214-215 - t.9: 216 - aux05: - t.10: 218 - nt: - t.11: 225 - t.12: 231-232 - t.13: 237-238 - t.14: 243-244 -Linear Range: - this: 168-175 - e: 168-250 (cross call) - my_head: 169-252 (cross call) - ret_val: 170-250 (cross call) - aux04: 171-250 (cross call) - aux01: 172-250 (cross call) - prev: 173-250 (cross call) - var_end: 174-250 (cross call) - var_elem: 175-250 (cross call) - t.1: 177-178 - t.0: 179-184 - t.2: 188-190 - t.3: 190-191 - t.4: 193-194 - t.5: 198-200 - t.6: 203-204 - t.7: 208-216 (cross call) - t.8: 213-215 - t.9: 215-216 - t.10: 217-218 - t.11: 224-225 - t.12: 230-232 - t.13: 236-238 - t.14: 242-244 -Allocation: - this: t0 - e: s0 - my_head: s1 - ret_val: s2 - aux04: s3 - aux01: s4 - prev: s5 - var_end: s6 - var_elem: s7 - t.1: t0 - t.0: t0 - t.2: t0 - t.3: t0 - t.4: t0 - t.5: t0 - t.6: t0 - t.7: local[0] - t.8: t0 - t.9: t0 - t.10: t0 - t.11: t0 - t.12: t0 - t.13: t0 - t.14: t0 - -func List.Search - in 0, out 0, callee-saves 4, spills 0 -Live In: - this: 255-258 - e: 255-262 265-274 277-280 283-286 289-292 - int_ret_val: 256-262 265-268 270-274 277-280 283-286 289-294 - aux01: 257-262 265-274 277-280 283-286 289-292 - var_end: 258-260 286 289-292 - var_elem: 260-262 265-267 292 - t.0: 261 - t.1: 266-267 - t.2: 268 - nt: - t.3: 278-279 - t.4: 284-285 - t.5: 290-291 -Linear Range: - this: 254-258 - e: 254-292 (cross call) - int_ret_val: 255-294 (cross call) - aux01: 256-292 (cross call) - var_end: 257-292 (cross call) - var_elem: 258-292 - t.0: 260-261 - t.1: 265-267 - t.2: 267-268 - t.3: 277-279 - t.4: 283-285 - t.5: 289-291 -Allocation: - this: t0 - e: s0 - int_ret_val: s1 - aux01: s2 - var_end: s3 - var_elem: t0 - t.0: t1 - t.1: t1 - t.2: t1 - t.3: t1 - t.4: t1 - t.5: t1 - -func List.GetEnd - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 297 - t.0: 298 -Linear Range: - this: 296-297 - t.0: 297-298 -Allocation: - this: t0 - t.0: t0 - -func List.GetElem - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 301 - t.0: 302 -Linear Range: - this: 300-301 - t.0: 301-302 -Allocation: - this: t0 - t.0: t0 - -func List.GetNext - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 305 - t.0: 306 -Linear Range: - this: 304-305 - t.0: 305-306 -Allocation: - this: t0 - t.0: t0 - -func List.Print - in 0, out 0, callee-saves 2, spills 0 -Live In: - this: 309-311 - aux01: 310-315 318-322 325-328 331-334 337-340 - var_end: 311-313 334 337-340 - var_elem: 313-315 318-320 340 - t.0: 314 - t.1: 319-320 - t.2: 321 - t.3: 326-327 - t.4: 332-333 - t.5: 338-339 -Linear Range: - this: 308-311 - aux01: 309-340 (cross call) - var_end: 310-340 (cross call) - var_elem: 311-340 - t.0: 313-314 - t.1: 318-320 - t.2: 320-321 - t.3: 325-327 - t.4: 331-333 - t.5: 337-339 -Allocation: - this: t0 - aux01: s0 - var_end: s1 - var_elem: t0 - t.0: t1 - t.1: t1 - t.2: t1 - t.3: t1 - t.4: t1 - t.5: t1 - -func LL.Start - in 0, out 0, callee-saves 4, spills 0 -Live In: - this: - t.0: 346-347 - last_elem: 348 351-354 - t.1: 352-353 - aux01: - head: 355 358-361 364-370 373-376 379-382 385-392 395-399 402-405 408-415 418-421 424-427 430-436 439-442 445-449 452-460 463-466 469-472 475-479 482-485 488-492 495-498 501-503 - t.2: 359-360 - t.3: 365-366 - t.4: 368-369 - el01: 370 373-376 379-381 392 395-399 402-404 415 418-421 424-426 460 463-466 469-472 475-479 482-485 488-492 495-497 - t.5: 374-375 - t.6: 380-381 - t.7: 386-387 - t.8: 390-391 - t.9: 396-397 - el02: 399 402-405 408-415 418-421 424-427 430-436 439-442 445-449 452-460 463-466 469-472 475-479 482-484 - t.10: 403-404 - t.11: 409-410 - t.12: 413-414 - t.13: 419-420 - t.14: 425-426 - t.15: 431-432 - t.16: 434-435 - el03: 436 439-442 445-449 452-454 - t.17: 440-441 - t.18: 446-447 - t.19: 448 - t.20: 453-454 - t.21: 455 - t.22: 458-459 - t.23: 464-465 - t.24: 470-471 - t.25: 476-477 - t.26: 483-484 - t.27: 489-490 - t.28: 496-497 - t.29: 502-503 -Linear Range: - t.0: 345-347 - last_elem: 347-354 (cross call) - t.1: 351-353 - head: 354-503 (cross call) - t.2: 358-360 - t.3: 364-366 - t.4: 367-369 - el01: 369-497 (cross call) - t.5: 373-375 - t.6: 379-381 - t.7: 385-387 - t.8: 389-391 - t.9: 395-397 - el02: 398-484 (cross call) - t.10: 402-404 - t.11: 408-410 - t.12: 412-414 - t.13: 418-420 - t.14: 424-426 - t.15: 430-432 - t.16: 433-435 - el03: 435-454 (cross call) - t.17: 439-441 - t.18: 445-447 - t.19: 447-448 - t.20: 452-454 - t.21: 454-455 - t.22: 457-459 - t.23: 463-465 - t.24: 469-471 - t.25: 475-477 - t.26: 482-484 - t.27: 488-490 - t.28: 495-497 - t.29: 501-503 -Allocation: - t.0: t0 - last_elem: s0 - t.1: t0 - head: s0 - t.2: t0 - t.3: t0 - t.4: t0 - el01: s1 - t.5: t0 - t.6: t0 - t.7: t0 - t.8: t0 - t.9: t0 - el02: s2 - t.10: t0 - t.11: t0 - t.12: t0 - t.13: t0 - t.14: t0 - t.15: t0 - t.16: t0 - el03: s3 - t.17: t0 - t.18: t0 - t.19: t0 - t.20: t0 - t.21: t0 - t.22: t0 - t.23: t0 - t.24: t0 - t.25: t0 - t.26: t0 - t.27: t0 - t.28: t0 - t.29: t0 - diff --git a/vaporize/tests/LinkedList.vapor b/vaporize/tests/LinkedList.vapor deleted file mode 100644 index bebdf94..0000000 --- a/vaporize/tests/LinkedList.vapor +++ /dev/null @@ -1,505 +0,0 @@ - -const vmt_Element - :Element.Init - :Element.GetAge - :Element.GetSalary - :Element.GetMarried - :Element.Equal - :Element.Compare - -const vmt_List - :List.Init - :List.InitNew - :List.Insert - :List.SetNext - :List.Delete - :List.Search - :List.GetEnd - :List.GetElem - :List.GetNext - :List.Print - -const vmt_LL - :LL.Start - - -func Main() - t.0 = HeapAllocZ(4) - [t.0] = :vmt_LL - if t.0 goto :null1 - Error("null pointer") - null1: - t.1 = [t.0] - t.1 = [t.1+0] - t.2 = call t.1(t.0) - PrintIntS(t.2) - ret - -func Element.Init(this v_Age v_Salary v_Married) - [this+4] = v_Age - [this+8] = v_Salary - [this+12] = v_Married - ret 1 - -func Element.GetAge(this) - t.0 = [this+4] - ret t.0 - -func Element.GetSalary(this) - t.0 = [this+8] - ret t.0 - -func Element.GetMarried(this) - t.0 = [this+12] - ret t.0 - -func Element.Equal(this other) - ret_val = 1 - if other goto :null2 - Error("null pointer") - null2: - t.0 = [other] - t.0 = [t.0+4] - aux01 = call t.0(other) - t.1 = [this] - t.1 = [t.1+20] - t.2 = [this+4] - t.3 = call t.1(this aux01 t.2) - t.4 = Sub(1 t.3) - if0 t.4 goto :if1_else - ret_val = 0 - goto :if1_end - if1_else: - if other goto :null3 - Error("null pointer") - null3: - t.5 = [other] - t.5 = [t.5+8] - aux02 = call t.5(other) - t.6 = [this] - t.6 = [t.6+20] - t.7 = [this+8] - t.8 = call t.6(this aux02 t.7) - t.9 = Sub(1 t.8) - if0 t.9 goto :if2_else - ret_val = 0 - goto :if2_end - if2_else: - t.10 = [this+12] - if0 t.10 goto :if3_else - if other goto :null4 - Error("null pointer") - null4: - t.11 = [other] - t.11 = [t.11+12] - t.12 = call t.11(other) - t.13 = Sub(1 t.12) - if0 t.13 goto :if4_else - ret_val = 0 - goto :if4_end - if4_else: - nt = 0 - if4_end: - goto :if3_end - if3_else: - if other goto :null5 - Error("null pointer") - null5: - t.14 = [other] - t.14 = [t.14+12] - t.15 = call t.14(other) - if0 t.15 goto :if5_else - ret_val = 0 - goto :if5_end - if5_else: - nt = 0 - if5_end: - if3_end: - if2_end: - if1_end: - ret ret_val - -func Element.Compare(this num1 num2) - retval = 0 - aux02 = Add(num2 1) - t.0 = LtS(num1 num2) - if0 t.0 goto :if6_else - retval = 0 - goto :if6_end - if6_else: - t.1 = LtS(num1 aux02) - t.2 = Sub(1 t.1) - if0 t.2 goto :if7_else - retval = 0 - goto :if7_end - if7_else: - retval = 1 - if7_end: - if6_end: - ret retval - -func List.Init(this) - [this+12] = 1 - ret 1 - -func List.InitNew(this v_elem v_next v_end) - [this+12] = v_end - [this+4] = v_elem - [this+8] = v_next - ret 1 - -func List.Insert(this new_elem) - aux03 = this - t.0 = HeapAllocZ(16) - [t.0] = :vmt_List - aux02 = t.0 - if aux02 goto :null6 - Error("null pointer") - null6: - t.1 = [aux02] - t.1 = [t.1+4] - ret_val = call t.1(aux02 new_elem aux03 0) - ret aux02 - -func List.SetNext(this v_next) - [this+8] = v_next - ret 1 - -func List.Delete(this e) - my_head = this - ret_val = 0 - aux04 = Sub(0 1) - aux01 = this - prev = this - var_end = [this+12] - var_elem = [this+4] - while1_top: - t.1 = Sub(1 var_end) - if0 t.1 goto :ss1_else - t.0 = Sub(1 ret_val) - goto :ss1_end - ss1_else: - t.0 = 0 - ss1_end: - if0 t.0 goto :while1_end - if e goto :null7 - Error("null pointer") - null7: - t.2 = [e] - t.2 = [t.2+16] - t.3 = call t.2(e var_elem) - if0 t.3 goto :if8_else - ret_val = 1 - t.4 = LtS(aux04 0) - if0 t.4 goto :if9_else - if aux01 goto :null8 - Error("null pointer") - null8: - t.5 = [aux01] - t.5 = [t.5+32] - my_head = call t.5(aux01) - goto :if9_end - if9_else: - t.6 = Sub(0 555) - PrintIntS(t.6) - if prev goto :null9 - Error("null pointer") - null9: - t.7 = [prev] - t.7 = [t.7+12] - if aux01 goto :null10 - Error("null pointer") - null10: - t.8 = [aux01] - t.8 = [t.8+32] - t.9 = call t.8(aux01) - aux05 = call t.7(prev t.9) - t.10 = Sub(0 555) - PrintIntS(t.10) - if9_end: - goto :if8_end - if8_else: - nt = 0 - if8_end: - t.11 = Sub(1 ret_val) - if0 t.11 goto :if10_else - prev = aux01 - if aux01 goto :null11 - Error("null pointer") - null11: - t.12 = [aux01] - t.12 = [t.12+32] - aux01 = call t.12(aux01) - if aux01 goto :null12 - Error("null pointer") - null12: - t.13 = [aux01] - t.13 = [t.13+24] - var_end = call t.13(aux01) - if aux01 goto :null13 - Error("null pointer") - null13: - t.14 = [aux01] - t.14 = [t.14+28] - var_elem = call t.14(aux01) - aux04 = 1 - goto :if10_end - if10_else: - nt = 0 - if10_end: - goto :while1_top - while1_end: - ret my_head - -func List.Search(this e) - int_ret_val = 0 - aux01 = this - var_end = [this+12] - var_elem = [this+4] - while2_top: - t.0 = Sub(1 var_end) - if0 t.0 goto :while2_end - if e goto :null14 - Error("null pointer") - null14: - t.1 = [e] - t.1 = [t.1+16] - t.2 = call t.1(e var_elem) - if0 t.2 goto :if11_else - int_ret_val = 1 - goto :if11_end - if11_else: - nt = 0 - if11_end: - if aux01 goto :null15 - Error("null pointer") - null15: - t.3 = [aux01] - t.3 = [t.3+32] - aux01 = call t.3(aux01) - if aux01 goto :null16 - Error("null pointer") - null16: - t.4 = [aux01] - t.4 = [t.4+24] - var_end = call t.4(aux01) - if aux01 goto :null17 - Error("null pointer") - null17: - t.5 = [aux01] - t.5 = [t.5+28] - var_elem = call t.5(aux01) - goto :while2_top - while2_end: - ret int_ret_val - -func List.GetEnd(this) - t.0 = [this+12] - ret t.0 - -func List.GetElem(this) - t.0 = [this+4] - ret t.0 - -func List.GetNext(this) - t.0 = [this+8] - ret t.0 - -func List.Print(this) - aux01 = this - var_end = [this+12] - var_elem = [this+4] - while3_top: - t.0 = Sub(1 var_end) - if0 t.0 goto :while3_end - if var_elem goto :null18 - Error("null pointer") - null18: - t.1 = [var_elem] - t.1 = [t.1+4] - t.2 = call t.1(var_elem) - PrintIntS(t.2) - if aux01 goto :null19 - Error("null pointer") - null19: - t.3 = [aux01] - t.3 = [t.3+32] - aux01 = call t.3(aux01) - if aux01 goto :null20 - Error("null pointer") - null20: - t.4 = [aux01] - t.4 = [t.4+24] - var_end = call t.4(aux01) - if aux01 goto :null21 - Error("null pointer") - null21: - t.5 = [aux01] - t.5 = [t.5+28] - var_elem = call t.5(aux01) - goto :while3_top - while3_end: - ret 1 - -func LL.Start(this) - t.0 = HeapAllocZ(16) - [t.0] = :vmt_List - last_elem = t.0 - if last_elem goto :null22 - Error("null pointer") - null22: - t.1 = [last_elem] - t.1 = [t.1+0] - aux01 = call t.1(last_elem) - head = last_elem - if head goto :null23 - Error("null pointer") - null23: - t.2 = [head] - t.2 = [t.2+0] - aux01 = call t.2(head) - if head goto :null24 - Error("null pointer") - null24: - t.3 = [head] - t.3 = [t.3+36] - aux01 = call t.3(head) - t.4 = HeapAllocZ(16) - [t.4] = :vmt_Element - el01 = t.4 - if el01 goto :null25 - Error("null pointer") - null25: - t.5 = [el01] - t.5 = [t.5+0] - aux01 = call t.5(el01 25 37000 0) - if head goto :null26 - Error("null pointer") - null26: - t.6 = [head] - t.6 = [t.6+8] - head = call t.6(head el01) - if head goto :null27 - Error("null pointer") - null27: - t.7 = [head] - t.7 = [t.7+36] - aux01 = call t.7(head) - PrintIntS(10000000) - t.8 = HeapAllocZ(16) - [t.8] = :vmt_Element - el01 = t.8 - if el01 goto :null28 - Error("null pointer") - null28: - t.9 = [el01] - t.9 = [t.9+0] - aux01 = call t.9(el01 39 42000 1) - el02 = el01 - if head goto :null29 - Error("null pointer") - null29: - t.10 = [head] - t.10 = [t.10+8] - head = call t.10(head el01) - if head goto :null30 - Error("null pointer") - null30: - t.11 = [head] - t.11 = [t.11+36] - aux01 = call t.11(head) - PrintIntS(10000000) - t.12 = HeapAllocZ(16) - [t.12] = :vmt_Element - el01 = t.12 - if el01 goto :null31 - Error("null pointer") - null31: - t.13 = [el01] - t.13 = [t.13+0] - aux01 = call t.13(el01 22 34000 0) - if head goto :null32 - Error("null pointer") - null32: - t.14 = [head] - t.14 = [t.14+8] - head = call t.14(head el01) - if head goto :null33 - Error("null pointer") - null33: - t.15 = [head] - t.15 = [t.15+36] - aux01 = call t.15(head) - t.16 = HeapAllocZ(16) - [t.16] = :vmt_Element - el03 = t.16 - if el03 goto :null34 - Error("null pointer") - null34: - t.17 = [el03] - t.17 = [t.17+0] - aux01 = call t.17(el03 27 34000 0) - if head goto :null35 - Error("null pointer") - null35: - t.18 = [head] - t.18 = [t.18+20] - t.19 = call t.18(head el02) - PrintIntS(t.19) - if head goto :null36 - Error("null pointer") - null36: - t.20 = [head] - t.20 = [t.20+20] - t.21 = call t.20(head el03) - PrintIntS(t.21) - PrintIntS(10000000) - t.22 = HeapAllocZ(16) - [t.22] = :vmt_Element - el01 = t.22 - if el01 goto :null37 - Error("null pointer") - null37: - t.23 = [el01] - t.23 = [t.23+0] - aux01 = call t.23(el01 28 35000 0) - if head goto :null38 - Error("null pointer") - null38: - t.24 = [head] - t.24 = [t.24+8] - head = call t.24(head el01) - if head goto :null39 - Error("null pointer") - null39: - t.25 = [head] - t.25 = [t.25+36] - aux01 = call t.25(head) - PrintIntS(2220000) - if head goto :null40 - Error("null pointer") - null40: - t.26 = [head] - t.26 = [t.26+16] - head = call t.26(head el02) - if head goto :null41 - Error("null pointer") - null41: - t.27 = [head] - t.27 = [t.27+36] - aux01 = call t.27(head) - PrintIntS(33300000) - if head goto :null42 - Error("null pointer") - null42: - t.28 = [head] - t.28 = [t.28+16] - head = call t.28(head el01) - if head goto :null43 - Error("null pointer") - null43: - t.29 = [head] - t.29 = [t.29+36] - aux01 = call t.29(head) - PrintIntS(44440000) - ret 0 diff --git a/vaporize/tests/LinkedList.vaporm b/vaporize/tests/LinkedList.vaporm deleted file mode 100644 index 80c3a99..0000000 --- a/vaporize/tests/LinkedList.vaporm +++ /dev/null @@ -1,698 +0,0 @@ -const vmt_Element - :Element.Init - :Element.GetAge - :Element.GetSalary - :Element.GetMarried - :Element.Equal - :Element.Compare - -const vmt_List - :List.Init - :List.InitNew - :List.Insert - :List.SetNext - :List.Delete - :List.Search - :List.GetEnd - :List.GetElem - :List.GetNext - :List.Print - -const vmt_LL - :LL.Start - -func Main [in 0, out 0, local 0] - $t0 = HeapAllocZ(4) - [$t0] = :vmt_LL - if $t0 goto :null1 - Error("null pointer") -null1: - $t1 = [$t0] - $t1 = [$t1] - $a0 = $t0 - call $t1 - $t1 = $v0 - PrintIntS($t1) - ret - -func Element.Init [in 0, out 0, local 0] - $t0 = $a0 - $t1 = $a1 - $t2 = $a2 - $t3 = $a3 - [$t0+4] = $t1 - [$t0+8] = $t2 - [$t0+12] = $t3 - $v0 = 1 - ret - -func Element.GetAge [in 0, out 0, local 0] - $t0 = $a0 - $t0 = [$t0+4] - $v0 = $t0 - ret - -func Element.GetSalary [in 0, out 0, local 0] - $t0 = $a0 - $t0 = [$t0+8] - $v0 = $t0 - ret - -func Element.GetMarried [in 0, out 0, local 0] - $t0 = $a0 - $t0 = [$t0+12] - $v0 = $t0 - ret - -func Element.Equal [in 0, out 0, local 3] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - $s0 = $a0 - $s1 = $a1 - $s2 = 1 - if $s1 goto :null2 - Error("null pointer") -null2: - $t0 = [$s1] - $t0 = [$t0+4] - $a0 = $s1 - call $t0 - $t0 = $v0 - $t1 = [$s0] - $t1 = [$t1+20] - $t2 = [$s0+4] - $a0 = $s0 - $a1 = $t0 - $a2 = $t2 - call $t1 - $t2 = $v0 - $t2 = Sub(1 $t2) - if0 $t2 goto :if1_else - $s2 = 0 - goto :if1_end -if1_else: - if $s1 goto :null3 - Error("null pointer") -null3: - $t2 = [$s1] - $t2 = [$t2+8] - $a0 = $s1 - call $t2 - $t2 = $v0 - $t1 = [$s0] - $t1 = [$t1+20] - $t0 = [$s0+8] - $a0 = $s0 - $a1 = $t2 - $a2 = $t0 - call $t1 - $t0 = $v0 - $t0 = Sub(1 $t0) - if0 $t0 goto :if2_else - $s2 = 0 - goto :if2_end -if2_else: - $t0 = [$s0+12] - if0 $t0 goto :if3_else - if $s1 goto :null4 - Error("null pointer") -null4: - $t0 = [$s1] - $t0 = [$t0+12] - $a0 = $s1 - call $t0 - $t0 = $v0 - $t0 = Sub(1 $t0) - if0 $t0 goto :if4_else - $s2 = 0 - goto :if4_end -if4_else: -if4_end: - goto :if3_end -if3_else: - if $s1 goto :null5 - Error("null pointer") -null5: - $t0 = [$s1] - $t0 = [$t0+12] - $a0 = $s1 - call $t0 - $t0 = $v0 - if0 $t0 goto :if5_else - $s2 = 0 - goto :if5_end -if5_else: -if5_end: -if3_end: -if2_end: -if1_end: - $v0 = $s2 - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - ret - -func Element.Compare [in 0, out 0, local 0] - $t0 = $a1 - $t1 = $a2 - $t2 = Add($t1 1) - $t1 = LtS($t0 $t1) - if0 $t1 goto :if6_else - $t1 = 0 - goto :if6_end -if6_else: - $t2 = LtS($t0 $t2) - $t2 = Sub(1 $t2) - if0 $t2 goto :if7_else - $t1 = 0 - goto :if7_end -if7_else: - $t1 = 1 -if7_end: -if6_end: - $v0 = $t1 - ret - -func List.Init [in 0, out 0, local 0] - $t0 = $a0 - [$t0+12] = 1 - $v0 = 1 - ret - -func List.InitNew [in 0, out 0, local 0] - $t0 = $a0 - $t1 = $a1 - $t2 = $a2 - $t3 = $a3 - [$t0+12] = $t3 - [$t0+4] = $t1 - [$t0+8] = $t2 - $v0 = 1 - ret - -func List.Insert [in 0, out 0, local 1] - local[0] = $s0 - $t0 = $a0 - $t1 = $a1 - $t0 = $t0 - $t2 = HeapAllocZ(16) - [$t2] = :vmt_List - $s0 = $t2 - if $s0 goto :null6 - Error("null pointer") -null6: - $t2 = [$s0] - $t2 = [$t2+4] - $a0 = $s0 - $a1 = $t1 - $a2 = $t0 - $a3 = 0 - call $t2 - $v0 = $s0 - $s0 = local[0] - ret - -func List.SetNext [in 0, out 0, local 0] - $t0 = $a0 - $t1 = $a1 - [$t0+8] = $t1 - $v0 = 1 - ret - -func List.Delete [in 0, out 0, local 9] - local[1] = $s0 - local[2] = $s1 - local[3] = $s2 - local[4] = $s3 - local[5] = $s4 - local[6] = $s5 - local[7] = $s6 - local[8] = $s7 - $t0 = $a0 - $s0 = $a1 - $s1 = $t0 - $s2 = 0 - $s3 = Sub(0 1) - $s4 = $t0 - $s5 = $t0 - $s6 = [$t0+12] - $s7 = [$t0+4] -while1_top: - $t0 = Sub(1 $s6) - if0 $t0 goto :ss1_else - $t0 = Sub(1 $s2) - goto :ss1_end -ss1_else: - $t0 = 0 -ss1_end: - if0 $t0 goto :while1_end - if $s0 goto :null7 - Error("null pointer") -null7: - $t0 = [$s0] - $t0 = [$t0+16] - $a0 = $s0 - $a1 = $s7 - call $t0 - $t0 = $v0 - if0 $t0 goto :if8_else - $s2 = 1 - $t0 = LtS($s3 0) - if0 $t0 goto :if9_else - if $s4 goto :null8 - Error("null pointer") -null8: - $t0 = [$s4] - $t0 = [$t0+32] - $a0 = $s4 - call $t0 - $s1 = $v0 - goto :if9_end -if9_else: - $t0 = Sub(0 555) - PrintIntS($t0) - if $s5 goto :null9 - Error("null pointer") -null9: - $v0 = [$s5] - local[0] = $v0 - $v0 = local[0] - $v0 = [$v0+12] - local[0] = $v0 - if $s4 goto :null10 - Error("null pointer") -null10: - $t0 = [$s4] - $t0 = [$t0+32] - $a0 = $s4 - call $t0 - $t0 = $v0 - $a0 = $s5 - $a1 = $t0 - $v0 = local[0] - call $v0 - $t0 = Sub(0 555) - PrintIntS($t0) -if9_end: - goto :if8_end -if8_else: -if8_end: - $t0 = Sub(1 $s2) - if0 $t0 goto :if10_else - $s5 = $s4 - if $s4 goto :null11 - Error("null pointer") -null11: - $t0 = [$s4] - $t0 = [$t0+32] - $a0 = $s4 - call $t0 - $s4 = $v0 - if $s4 goto :null12 - Error("null pointer") -null12: - $t0 = [$s4] - $t0 = [$t0+24] - $a0 = $s4 - call $t0 - $s6 = $v0 - if $s4 goto :null13 - Error("null pointer") -null13: - $t0 = [$s4] - $t0 = [$t0+28] - $a0 = $s4 - call $t0 - $s7 = $v0 - $s3 = 1 - goto :if10_end -if10_else: -if10_end: - goto :while1_top -while1_end: - $v0 = $s1 - $s0 = local[1] - $s1 = local[2] - $s2 = local[3] - $s3 = local[4] - $s4 = local[5] - $s5 = local[6] - $s6 = local[7] - $s7 = local[8] - ret - -func List.Search [in 0, out 0, local 4] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - local[3] = $s3 - $t0 = $a0 - $s0 = $a1 - $s1 = 0 - $s2 = $t0 - $s3 = [$t0+12] - $t0 = [$t0+4] -while2_top: - $t1 = Sub(1 $s3) - if0 $t1 goto :while2_end - if $s0 goto :null14 - Error("null pointer") -null14: - $t1 = [$s0] - $t1 = [$t1+16] - $a0 = $s0 - $a1 = $t0 - call $t1 - $t1 = $v0 - if0 $t1 goto :if11_else - $s1 = 1 - goto :if11_end -if11_else: -if11_end: - if $s2 goto :null15 - Error("null pointer") -null15: - $t1 = [$s2] - $t1 = [$t1+32] - $a0 = $s2 - call $t1 - $s2 = $v0 - if $s2 goto :null16 - Error("null pointer") -null16: - $t1 = [$s2] - $t1 = [$t1+24] - $a0 = $s2 - call $t1 - $s3 = $v0 - if $s2 goto :null17 - Error("null pointer") -null17: - $t1 = [$s2] - $t1 = [$t1+28] - $a0 = $s2 - call $t1 - $t0 = $v0 - goto :while2_top -while2_end: - $v0 = $s1 - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - $s3 = local[3] - ret - -func List.GetEnd [in 0, out 0, local 0] - $t0 = $a0 - $t0 = [$t0+12] - $v0 = $t0 - ret - -func List.GetElem [in 0, out 0, local 0] - $t0 = $a0 - $t0 = [$t0+4] - $v0 = $t0 - ret - -func List.GetNext [in 0, out 0, local 0] - $t0 = $a0 - $t0 = [$t0+8] - $v0 = $t0 - ret - -func List.Print [in 0, out 0, local 2] - local[0] = $s0 - local[1] = $s1 - $t0 = $a0 - $s0 = $t0 - $s1 = [$t0+12] - $t0 = [$t0+4] -while3_top: - $t1 = Sub(1 $s1) - if0 $t1 goto :while3_end - if $t0 goto :null18 - Error("null pointer") -null18: - $t1 = [$t0] - $t1 = [$t1+4] - $a0 = $t0 - call $t1 - $t1 = $v0 - PrintIntS($t1) - if $s0 goto :null19 - Error("null pointer") -null19: - $t1 = [$s0] - $t1 = [$t1+32] - $a0 = $s0 - call $t1 - $s0 = $v0 - if $s0 goto :null20 - Error("null pointer") -null20: - $t1 = [$s0] - $t1 = [$t1+24] - $a0 = $s0 - call $t1 - $s1 = $v0 - if $s0 goto :null21 - Error("null pointer") -null21: - $t1 = [$s0] - $t1 = [$t1+28] - $a0 = $s0 - call $t1 - $t0 = $v0 - goto :while3_top -while3_end: - $v0 = 1 - $s0 = local[0] - $s1 = local[1] - ret - -func LL.Start [in 0, out 0, local 4] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - local[3] = $s3 - $t0 = HeapAllocZ(16) - [$t0] = :vmt_List - $s0 = $t0 - if $s0 goto :null22 - Error("null pointer") -null22: - $t0 = [$s0] - $t0 = [$t0] - $a0 = $s0 - call $t0 - $s0 = $s0 - if $s0 goto :null23 - Error("null pointer") -null23: - $t0 = [$s0] - $t0 = [$t0] - $a0 = $s0 - call $t0 - if $s0 goto :null24 - Error("null pointer") -null24: - $t0 = [$s0] - $t0 = [$t0+36] - $a0 = $s0 - call $t0 - $t0 = HeapAllocZ(16) - [$t0] = :vmt_Element - $s1 = $t0 - if $s1 goto :null25 - Error("null pointer") -null25: - $t0 = [$s1] - $t0 = [$t0] - $a0 = $s1 - $a1 = 25 - $a2 = 37000 - $a3 = 0 - call $t0 - if $s0 goto :null26 - Error("null pointer") -null26: - $t0 = [$s0] - $t0 = [$t0+8] - $a0 = $s0 - $a1 = $s1 - call $t0 - $s0 = $v0 - if $s0 goto :null27 - Error("null pointer") -null27: - $t0 = [$s0] - $t0 = [$t0+36] - $a0 = $s0 - call $t0 - PrintIntS(10000000) - $t0 = HeapAllocZ(16) - [$t0] = :vmt_Element - $s1 = $t0 - if $s1 goto :null28 - Error("null pointer") -null28: - $t0 = [$s1] - $t0 = [$t0] - $a0 = $s1 - $a1 = 39 - $a2 = 42000 - $a3 = 1 - call $t0 - $s2 = $s1 - if $s0 goto :null29 - Error("null pointer") -null29: - $t0 = [$s0] - $t0 = [$t0+8] - $a0 = $s0 - $a1 = $s1 - call $t0 - $s0 = $v0 - if $s0 goto :null30 - Error("null pointer") -null30: - $t0 = [$s0] - $t0 = [$t0+36] - $a0 = $s0 - call $t0 - PrintIntS(10000000) - $t0 = HeapAllocZ(16) - [$t0] = :vmt_Element - $s1 = $t0 - if $s1 goto :null31 - Error("null pointer") -null31: - $t0 = [$s1] - $t0 = [$t0] - $a0 = $s1 - $a1 = 22 - $a2 = 34000 - $a3 = 0 - call $t0 - if $s0 goto :null32 - Error("null pointer") -null32: - $t0 = [$s0] - $t0 = [$t0+8] - $a0 = $s0 - $a1 = $s1 - call $t0 - $s0 = $v0 - if $s0 goto :null33 - Error("null pointer") -null33: - $t0 = [$s0] - $t0 = [$t0+36] - $a0 = $s0 - call $t0 - $t0 = HeapAllocZ(16) - [$t0] = :vmt_Element - $s3 = $t0 - if $s3 goto :null34 - Error("null pointer") -null34: - $t0 = [$s3] - $t0 = [$t0] - $a0 = $s3 - $a1 = 27 - $a2 = 34000 - $a3 = 0 - call $t0 - if $s0 goto :null35 - Error("null pointer") -null35: - $t0 = [$s0] - $t0 = [$t0+20] - $a0 = $s0 - $a1 = $s2 - call $t0 - $t0 = $v0 - PrintIntS($t0) - if $s0 goto :null36 - Error("null pointer") -null36: - $t0 = [$s0] - $t0 = [$t0+20] - $a0 = $s0 - $a1 = $s3 - call $t0 - $t0 = $v0 - PrintIntS($t0) - PrintIntS(10000000) - $t0 = HeapAllocZ(16) - [$t0] = :vmt_Element - $s1 = $t0 - if $s1 goto :null37 - Error("null pointer") -null37: - $t0 = [$s1] - $t0 = [$t0] - $a0 = $s1 - $a1 = 28 - $a2 = 35000 - $a3 = 0 - call $t0 - if $s0 goto :null38 - Error("null pointer") -null38: - $t0 = [$s0] - $t0 = [$t0+8] - $a0 = $s0 - $a1 = $s1 - call $t0 - $s0 = $v0 - if $s0 goto :null39 - Error("null pointer") -null39: - $t0 = [$s0] - $t0 = [$t0+36] - $a0 = $s0 - call $t0 - PrintIntS(2220000) - if $s0 goto :null40 - Error("null pointer") -null40: - $t0 = [$s0] - $t0 = [$t0+16] - $a0 = $s0 - $a1 = $s2 - call $t0 - $s0 = $v0 - if $s0 goto :null41 - Error("null pointer") -null41: - $t0 = [$s0] - $t0 = [$t0+36] - $a0 = $s0 - call $t0 - PrintIntS(33300000) - if $s0 goto :null42 - Error("null pointer") -null42: - $t0 = [$s0] - $t0 = [$t0+16] - $a0 = $s0 - $a1 = $s1 - call $t0 - $s0 = $v0 - if $s0 goto :null43 - Error("null pointer") -null43: - $t0 = [$s0] - $t0 = [$t0+36] - $a0 = $s0 - call $t0 - PrintIntS(44440000) - $v0 = 0 - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - $s3 = local[3] - ret - diff --git a/vaporize/tests/MoreThan4.names.vaporm b/vaporize/tests/MoreThan4.names.vaporm deleted file mode 100644 index 366618c..0000000 --- a/vaporize/tests/MoreThan4.names.vaporm +++ /dev/null @@ -1,68 +0,0 @@ -const vmt_MT4 - :MT4.Start - :MT4.Change - -func Main [in 0, out 3, local 0] - $t0{t.0} = HeapAllocZ(4) - [$t0{t.0}] = :vmt_MT4 - if $t0{t.0} goto :null1 - Error("null pointer") -null1: - $t1{t.1} = [$t0{t.0}] - $t1{t.1} = [$t1{t.1}] - $a0 = $t0{t.0} - $a1 = 1 - $a2 = 2 - $a3 = 3 - out[0] = 4 - out[1] = 5 - out[2] = 6 - call $t1{t.1} - $t1{t.2} = $v0 - PrintIntS($t1{t.2}) - ret - -func MT4.Start [in 3, out 3, local 0] - $t0{this} = $a0 - $t1{p1} = $a1 - $t2{p2} = $a2 - $t3{p3} = $a3 - $t4{p4} = in[0] - $t5{p5} = in[1] - $t6{p6} = in[2] - PrintIntS($t1{p1}) - PrintIntS($t2{p2}) - PrintIntS($t3{p3}) - PrintIntS($t4{p4}) - PrintIntS($t5{p5}) - PrintIntS($t6{p6}) - $t7{t.0} = [$t0{this}] - $t7{t.0} = [$t7{t.0}+4] - $a0 = $t0{this} - $a1 = $t6{p6} - $a2 = $t5{p5} - $a3 = $t4{p4} - out[0] = $t3{p3} - out[1] = $t2{p2} - out[2] = $t1{p1} - call $t7{t.0} - $t7{aux} = $v0 - $v0 = $t7{aux} - ret - -func MT4.Change [in 3, out 0, local 0] - $t0{p1} = $a1 - $t1{p2} = $a2 - $t2{p3} = $a3 - $t3{p4} = in[0] - $t4{p5} = in[1] - $t5{p6} = in[2] - PrintIntS($t0{p1}) - PrintIntS($t1{p2}) - PrintIntS($t2{p3}) - PrintIntS($t3{p4}) - PrintIntS($t4{p5}) - PrintIntS($t5{p6}) - $v0 = 0 - ret - diff --git a/vaporize/tests/MoreThan4.opt.names.vaporm b/vaporize/tests/MoreThan4.opt.names.vaporm deleted file mode 100644 index a07f7e7..0000000 --- a/vaporize/tests/MoreThan4.opt.names.vaporm +++ /dev/null @@ -1,57 +0,0 @@ -const empty_MT4 - -func Main [in 0, out 3, local 0] - $a0 = :empty_MT4 - $a1 = 1 - $a2 = 2 - $a3 = 3 - out[0] = 4 - out[1] = 5 - out[2] = 6 - call :MT4.Start - $t0{t.0} = $v0 - PrintIntS($t0{t.0}) - ret - -func MT4.Start [in 3, out 3, local 0] - $t0{this} = $a0 - $t1{p1} = $a1 - $t2{p2} = $a2 - $t3{p3} = $a3 - $t4{p4} = in[0] - $t5{p5} = in[1] - $t6{p6} = in[2] - PrintIntS($t1{p1}) - PrintIntS($t2{p2}) - PrintIntS($t3{p3}) - PrintIntS($t4{p4}) - PrintIntS($t5{p5}) - PrintIntS($t6{p6}) - $a0 = $t0{this} - $a1 = $t6{p6} - $a2 = $t5{p5} - $a3 = $t4{p4} - out[0] = $t3{p3} - out[1] = $t2{p2} - out[2] = $t1{p1} - call :MT4.Change - $t6{aux} = $v0 - $v0 = $t6{aux} - ret - -func MT4.Change [in 3, out 0, local 0] - $t0{p1} = $a1 - $t1{p2} = $a2 - $t2{p3} = $a3 - $t3{p4} = in[0] - $t4{p5} = in[1] - $t5{p6} = in[2] - PrintIntS($t0{p1}) - PrintIntS($t1{p2}) - PrintIntS($t2{p3}) - PrintIntS($t3{p4}) - PrintIntS($t4{p5}) - PrintIntS($t5{p6}) - $v0 = 0 - ret - diff --git a/vaporize/tests/MoreThan4.opt.regalloc b/vaporize/tests/MoreThan4.opt.regalloc deleted file mode 100644 index ceb8927..0000000 --- a/vaporize/tests/MoreThan4.opt.regalloc +++ /dev/null @@ -1,64 +0,0 @@ -func Main - in 0, out 3, callee-saves 0, spills 0 -Live In: - t.0: 7 -Linear Range: - t.0: 6-7 -Allocation: - t.0: t0 - -func MT4.Start - in 3, out 3, callee-saves 0, spills 0 -Live In: - this: 11-17 - p1: 11-17 - p2: 11-17 - p3: 11-17 - p4: 11-17 - p5: 11-17 - p6: 11-17 - aux: 18 -Linear Range: - this: 10-17 - p1: 10-17 - p2: 10-17 - p3: 10-17 - p4: 10-17 - p5: 10-17 - p6: 10-17 - aux: 17-18 -Allocation: - this: t0 - p1: t1 - p2: t2 - p3: t3 - p4: t4 - p5: t5 - p6: t6 - aux: t6 - -func MT4.Change - in 3, out 0, callee-saves 0, spills 0 -Live In: - this: - p1: 21 - p2: 21-22 - p3: 21-23 - p4: 21-24 - p5: 21-25 - p6: 21-26 -Linear Range: - p1: 20-21 - p2: 20-22 - p3: 20-23 - p4: 20-24 - p5: 20-25 - p6: 20-26 -Allocation: - p1: t0 - p2: t1 - p3: t2 - p4: t3 - p5: t4 - p6: t5 - diff --git a/vaporize/tests/MoreThan4.opt.vapor b/vaporize/tests/MoreThan4.opt.vapor deleted file mode 100644 index a59d1b5..0000000 --- a/vaporize/tests/MoreThan4.opt.vapor +++ /dev/null @@ -1,27 +0,0 @@ - -const empty_MT4 - - -func Main() - t.0 = call :MT4.Start(:empty_MT4 1 2 3 4 5 6) - PrintIntS(t.0) - ret - -func MT4.Start(this p1 p2 p3 p4 p5 p6) - PrintIntS(p1) - PrintIntS(p2) - PrintIntS(p3) - PrintIntS(p4) - PrintIntS(p5) - PrintIntS(p6) - aux = call :MT4.Change(this p6 p5 p4 p3 p2 p1) - ret aux - -func MT4.Change(this p1 p2 p3 p4 p5 p6) - PrintIntS(p1) - PrintIntS(p2) - PrintIntS(p3) - PrintIntS(p4) - PrintIntS(p5) - PrintIntS(p6) - ret 0 diff --git a/vaporize/tests/MoreThan4.opt.vaporm b/vaporize/tests/MoreThan4.opt.vaporm deleted file mode 100644 index d1d663b..0000000 --- a/vaporize/tests/MoreThan4.opt.vaporm +++ /dev/null @@ -1,57 +0,0 @@ -const empty_MT4 - -func Main [in 0, out 3, local 0] - $a0 = :empty_MT4 - $a1 = 1 - $a2 = 2 - $a3 = 3 - out[0] = 4 - out[1] = 5 - out[2] = 6 - call :MT4.Start - $t0 = $v0 - PrintIntS($t0) - 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) - $a0 = $t0 - $a1 = $t6 - $a2 = $t5 - $a3 = $t4 - out[0] = $t3 - out[1] = $t2 - out[2] = $t1 - call :MT4.Change - $t6 = $v0 - $v0 = $t6 - 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 - diff --git a/vaporize/tests/MoreThan4.regalloc b/vaporize/tests/MoreThan4.regalloc deleted file mode 100644 index 0748f62..0000000 --- a/vaporize/tests/MoreThan4.regalloc +++ /dev/null @@ -1,73 +0,0 @@ -func Main - in 0, out 3, callee-saves 0, spills 0 -Live In: - t.0: 9-10 13-15 - t.1: 14-15 - t.2: 16 -Linear Range: - t.0: 8-15 - t.1: 13-15 - t.2: 15-16 -Allocation: - t.0: t0 - t.1: t1 - t.2: t1 - -func MT4.Start - in 3, out 3, callee-saves 0, spills 0 -Live In: - this: 20-28 - p1: 20-28 - p2: 20-28 - p3: 20-28 - p4: 20-28 - p5: 20-28 - p6: 20-28 - t.0: 27-28 - aux: 29 -Linear Range: - this: 19-28 - p1: 19-28 - p2: 19-28 - p3: 19-28 - p4: 19-28 - p5: 19-28 - p6: 19-28 - t.0: 26-28 - aux: 28-29 -Allocation: - this: t0 - p1: t1 - p2: t2 - p3: t3 - p4: t4 - p5: t5 - p6: t6 - t.0: t7 - aux: t7 - -func MT4.Change - in 3, out 0, callee-saves 0, spills 0 -Live In: - this: - p1: 32 - p2: 32-33 - p3: 32-34 - p4: 32-35 - p5: 32-36 - p6: 32-37 -Linear Range: - p1: 31-32 - p2: 31-33 - p3: 31-34 - p4: 31-35 - p5: 31-36 - p6: 31-37 -Allocation: - p1: t0 - p2: t1 - p3: t2 - p4: t3 - p5: t4 - p6: t5 - diff --git a/vaporize/tests/MoreThan4.vapor b/vaporize/tests/MoreThan4.vapor deleted file mode 100644 index 6067f8e..0000000 --- a/vaporize/tests/MoreThan4.vapor +++ /dev/null @@ -1,38 +0,0 @@ - -const vmt_MT4 - :MT4.Start - :MT4.Change - - -func Main() - t.0 = HeapAllocZ(4) - [t.0] = :vmt_MT4 - if t.0 goto :null1 - Error("null pointer") - null1: - t.1 = [t.0] - t.1 = [t.1+0] - t.2 = call t.1(t.0 1 2 3 4 5 6) - PrintIntS(t.2) - ret - -func MT4.Start(this p1 p2 p3 p4 p5 p6) - PrintIntS(p1) - PrintIntS(p2) - PrintIntS(p3) - PrintIntS(p4) - PrintIntS(p5) - PrintIntS(p6) - t.0 = [this] - t.0 = [t.0+4] - aux = call t.0(this p6 p5 p4 p3 p2 p1) - ret aux - -func MT4.Change(this p1 p2 p3 p4 p5 p6) - PrintIntS(p1) - PrintIntS(p2) - PrintIntS(p3) - PrintIntS(p4) - PrintIntS(p5) - PrintIntS(p6) - ret 0 diff --git a/vaporize/tests/MoreThan4.vaporm b/vaporize/tests/MoreThan4.vaporm deleted file mode 100644 index bf549b2..0000000 --- a/vaporize/tests/MoreThan4.vaporm +++ /dev/null @@ -1,68 +0,0 @@ -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 - diff --git a/vaporize/tests/QuickSort.names.vaporm b/vaporize/tests/QuickSort.names.vaporm deleted file mode 100644 index 0029cf0..0000000 --- a/vaporize/tests/QuickSort.names.vaporm +++ /dev/null @@ -1,439 +0,0 @@ -const vmt_QS - :QS.Start - :QS.Sort - :QS.Print - :QS.Init - -func Main [in 0, out 0, local 0] - $t0{t.0} = HeapAllocZ(12) - [$t0{t.0}] = :vmt_QS - if $t0{t.0} goto :null1 - Error("null pointer") -null1: - $t1{t.1} = [$t0{t.0}] - $t1{t.1} = [$t1{t.1}] - $a0 = $t0{t.0} - $a1 = 10 - call $t1{t.1} - $t1{t.2} = $v0 - PrintIntS($t1{t.2}) - ret - -func QS.Start [in 0, out 0, local 1] - local[0] = $s0 - $s0{this} = $a0 - $t0{sz} = $a1 - $t1{t.0} = [$s0{this}] - $t1{t.0} = [$t1{t.0}+12] - $a0 = $s0{this} - $a1 = $t0{sz} - call $t1{t.0} - $t1{t.1} = [$s0{this}] - $t1{t.1} = [$t1{t.1}+8] - $a0 = $s0{this} - call $t1{t.1} - PrintIntS(9999) - $t1{t.2} = [$s0{this}+8] - $t1{aux01} = Sub($t1{t.2} 1) - $t0{t.3} = [$s0{this}] - $t0{t.3} = [$t0{t.3}+4] - $a0 = $s0{this} - $a1 = 0 - $a2 = $t1{aux01} - call $t0{t.3} - $t0{t.4} = [$s0{this}] - $t0{t.4} = [$t0{t.4}+8] - $a0 = $s0{this} - call $t0{t.4} - $v0 = 0 - $s0 = local[0] - ret - -func QS.Sort [in 0, out 0, local 3] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - $s0{this} = $a0 - $t0{left} = $a1 - $s1{right} = $a2 - $t1{t} = 0 - $t2{t.0} = LtS($t0{left} $s1{right}) - if0 $t2{t.0} goto :if1_else - $t2{t.1} = [$s0{this}+4] - if $t2{t.1} goto :null2 - Error("null pointer") -null2: - $t3{t.2} = [$t2{t.1}] - $t3{t.2} = Lt($s1{right} $t3{t.2}) - if $t3{t.2} goto :bounds1 - Error("array index out of bounds") -bounds1: - $t3{t.2} = MulS($s1{right} 4) - $t3{t.2} = Add($t3{t.2} $t2{t.1}) - $t3{v} = [$t3{t.2}+4] - $s2{i} = Sub($t0{left} 1) - $t2{j} = $s1{right} - $t4{cont01} = 1 -while1_top: - if0 $t4{cont01} goto :while1_end - $t5{cont02} = 1 -while2_top: - if0 $t5{cont02} goto :while2_end - $s2{i} = Add($s2{i} 1) - $t6{t.3} = [$s0{this}+4] - if $t6{t.3} goto :null3 - Error("null pointer") -null3: - $t7{t.4} = [$t6{t.3}] - $t7{t.4} = Lt($s2{i} $t7{t.4}) - if $t7{t.4} goto :bounds2 - Error("array index out of bounds") -bounds2: - $t7{t.4} = MulS($s2{i} 4) - $t7{t.4} = Add($t7{t.4} $t6{t.3}) - $t7{aux03} = [$t7{t.4}+4] - $t6{t.5} = LtS($t7{aux03} $t3{v}) - $t6{t.6} = Sub(1 $t6{t.5}) - if0 $t6{t.6} goto :if2_else - $t5{cont02} = 0 - goto :if2_end -if2_else: - $t5{cont02} = 1 -if2_end: - goto :while2_top -while2_end: - $t5{cont02} = 1 -while3_top: - if0 $t5{cont02} goto :while3_end - $t2{j} = Sub($t2{j} 1) - $t6{t.7} = [$s0{this}+4] - if $t6{t.7} goto :null4 - Error("null pointer") -null4: - $t8{t.8} = [$t6{t.7}] - $t8{t.8} = Lt($t2{j} $t8{t.8}) - if $t8{t.8} goto :bounds3 - Error("array index out of bounds") -bounds3: - $t8{t.8} = MulS($t2{j} 4) - $t8{t.8} = Add($t8{t.8} $t6{t.7}) - $t7{aux03} = [$t8{t.8}+4] - $t7{t.9} = LtS($t3{v} $t7{aux03}) - $t7{t.10} = Sub(1 $t7{t.9}) - if0 $t7{t.10} goto :if3_else - $t5{cont02} = 0 - goto :if3_end -if3_else: - $t5{cont02} = 1 -if3_end: - goto :while3_top -while3_end: - $t5{t.11} = [$s0{this}+4] - if $t5{t.11} goto :null5 - Error("null pointer") -null5: - $t7{t.12} = [$t5{t.11}] - $t7{t.12} = Lt($s2{i} $t7{t.12}) - if $t7{t.12} goto :bounds4 - Error("array index out of bounds") -bounds4: - $t7{t.12} = MulS($s2{i} 4) - $t7{t.12} = Add($t7{t.12} $t5{t.11}) - $t1{t} = [$t7{t.12}+4] - $t7{t.13} = [$s0{this}+4] - if $t7{t.13} goto :null6 - Error("null pointer") -null6: - $t5{t.14} = [$t7{t.13}] - $t5{t.14} = Lt($s2{i} $t5{t.14}) - if $t5{t.14} goto :bounds5 - Error("array index out of bounds") -bounds5: - $t5{t.14} = MulS($s2{i} 4) - $t5{t.14} = Add($t5{t.14} $t7{t.13}) - $t7{t.15} = [$s0{this}+4] - if $t7{t.15} goto :null7 - Error("null pointer") -null7: - $t8{t.16} = [$t7{t.15}] - $t8{t.16} = Lt($t2{j} $t8{t.16}) - if $t8{t.16} goto :bounds6 - Error("array index out of bounds") -bounds6: - $t8{t.16} = MulS($t2{j} 4) - $t8{t.16} = Add($t8{t.16} $t7{t.15}) - $t8{t.17} = [$t8{t.16}+4] - [$t5{t.14}+4] = $t8{t.17} - $t8{t.18} = [$s0{this}+4] - if $t8{t.18} goto :null8 - Error("null pointer") -null8: - $t5{t.19} = [$t8{t.18}] - $t5{t.19} = Lt($t2{j} $t5{t.19}) - if $t5{t.19} goto :bounds7 - Error("array index out of bounds") -bounds7: - $t5{t.19} = MulS($t2{j} 4) - $t5{t.19} = Add($t5{t.19} $t8{t.18}) - [$t5{t.19}+4] = $t1{t} - $t5{t.20} = Add($s2{i} 1) - $t5{t.21} = LtS($t2{j} $t5{t.20}) - if0 $t5{t.21} goto :if4_else - $t4{cont01} = 0 - goto :if4_end -if4_else: - $t4{cont01} = 1 -if4_end: - goto :while1_top -while1_end: - $t4{t.22} = [$s0{this}+4] - if $t4{t.22} goto :null9 - Error("null pointer") -null9: - $t3{t.23} = [$t4{t.22}] - $t3{t.23} = Lt($t2{j} $t3{t.23}) - if $t3{t.23} goto :bounds8 - Error("array index out of bounds") -bounds8: - $t3{t.23} = MulS($t2{j} 4) - $t3{t.23} = Add($t3{t.23} $t4{t.22}) - $t4{t.24} = [$s0{this}+4] - if $t4{t.24} goto :null10 - Error("null pointer") -null10: - $t2{t.25} = [$t4{t.24}] - $t2{t.25} = Lt($s2{i} $t2{t.25}) - if $t2{t.25} goto :bounds9 - Error("array index out of bounds") -bounds9: - $t2{t.25} = MulS($s2{i} 4) - $t2{t.25} = Add($t2{t.25} $t4{t.24}) - $t2{t.26} = [$t2{t.25}+4] - [$t3{t.23}+4] = $t2{t.26} - $t2{t.27} = [$s0{this}+4] - if $t2{t.27} goto :null11 - Error("null pointer") -null11: - $t3{t.28} = [$t2{t.27}] - $t3{t.28} = Lt($s2{i} $t3{t.28}) - if $t3{t.28} goto :bounds10 - Error("array index out of bounds") -bounds10: - $t3{t.28} = MulS($s2{i} 4) - $t3{t.28} = Add($t3{t.28} $t2{t.27}) - $t2{t.29} = [$s0{this}+4] - if $t2{t.29} goto :null12 - Error("null pointer") -null12: - $t4{t.30} = [$t2{t.29}] - $t4{t.30} = Lt($s1{right} $t4{t.30}) - if $t4{t.30} goto :bounds11 - Error("array index out of bounds") -bounds11: - $t4{t.30} = MulS($s1{right} 4) - $t4{t.30} = Add($t4{t.30} $t2{t.29}) - $t4{t.31} = [$t4{t.30}+4] - [$t3{t.28}+4] = $t4{t.31} - $t4{t.32} = [$s0{this}+4] - if $t4{t.32} goto :null13 - Error("null pointer") -null13: - $t3{t.33} = [$t4{t.32}] - $t3{t.33} = Lt($s1{right} $t3{t.33}) - if $t3{t.33} goto :bounds12 - Error("array index out of bounds") -bounds12: - $t3{t.33} = MulS($s1{right} 4) - $t3{t.33} = Add($t3{t.33} $t4{t.32}) - [$t3{t.33}+4] = $t1{t} - $t3{t.34} = [$s0{this}] - $t3{t.34} = [$t3{t.34}+4] - $t1{t.35} = Sub($s2{i} 1) - $a0 = $s0{this} - $a1 = $t0{left} - $a2 = $t1{t.35} - call $t3{t.34} - $t1{t.36} = [$s0{this}] - $t1{t.36} = [$t1{t.36}+4] - $t3{t.37} = Add($s2{i} 1) - $a0 = $s0{this} - $a1 = $t3{t.37} - $a2 = $s1{right} - call $t1{t.36} - goto :if1_end -if1_else: -if1_end: - $v0 = 0 - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - ret - -func QS.Print [in 0, out 0, local 0] - $t0{this} = $a0 - $t1{j} = 0 -while4_top: - $t2{t.0} = [$t0{this}+8] - $t2{t.1} = LtS($t1{j} $t2{t.0}) - if0 $t2{t.1} goto :while4_end - $t2{t.2} = [$t0{this}+4] - if $t2{t.2} goto :null14 - Error("null pointer") -null14: - $t3{t.3} = [$t2{t.2}] - $t3{t.3} = Lt($t1{j} $t3{t.3}) - if $t3{t.3} goto :bounds13 - Error("array index out of bounds") -bounds13: - $t3{t.3} = MulS($t1{j} 4) - $t3{t.3} = Add($t3{t.3} $t2{t.2}) - $t3{t.4} = [$t3{t.3}+4] - PrintIntS($t3{t.4}) - $t1{j} = Add($t1{j} 1) - goto :while4_top -while4_end: - $v0 = 0 - ret - -func QS.Init [in 0, out 0, local 1] - local[0] = $s0 - $s0{this} = $a0 - $t0{sz} = $a1 - [$s0{this}+8] = $t0{sz} - $a0 = $t0{sz} - call :AllocArray - $t0{t.0} = $v0 - [$s0{this}+4] = $t0{t.0} - $t0{t.1} = [$s0{this}+4] - if $t0{t.1} goto :null15 - Error("null pointer") -null15: - $t1{t.2} = [$t0{t.1}] - $t1{t.2} = Lt(0 $t1{t.2}) - if $t1{t.2} goto :bounds14 - Error("array index out of bounds") -bounds14: - $t1{t.2} = MulS(0 4) - $t1{t.2} = Add($t1{t.2} $t0{t.1}) - [$t1{t.2}+4] = 20 - $t1{t.3} = [$s0{this}+4] - if $t1{t.3} goto :null16 - Error("null pointer") -null16: - $t0{t.4} = [$t1{t.3}] - $t0{t.4} = Lt(1 $t0{t.4}) - if $t0{t.4} goto :bounds15 - Error("array index out of bounds") -bounds15: - $t0{t.4} = MulS(1 4) - $t0{t.4} = Add($t0{t.4} $t1{t.3}) - [$t0{t.4}+4] = 7 - $t0{t.5} = [$s0{this}+4] - if $t0{t.5} goto :null17 - Error("null pointer") -null17: - $t1{t.6} = [$t0{t.5}] - $t1{t.6} = Lt(2 $t1{t.6}) - if $t1{t.6} goto :bounds16 - Error("array index out of bounds") -bounds16: - $t1{t.6} = MulS(2 4) - $t1{t.6} = Add($t1{t.6} $t0{t.5}) - [$t1{t.6}+4] = 12 - $t1{t.7} = [$s0{this}+4] - if $t1{t.7} goto :null18 - Error("null pointer") -null18: - $t0{t.8} = [$t1{t.7}] - $t0{t.8} = Lt(3 $t0{t.8}) - if $t0{t.8} goto :bounds17 - Error("array index out of bounds") -bounds17: - $t0{t.8} = MulS(3 4) - $t0{t.8} = Add($t0{t.8} $t1{t.7}) - [$t0{t.8}+4] = 18 - $t0{t.9} = [$s0{this}+4] - if $t0{t.9} goto :null19 - Error("null pointer") -null19: - $t1{t.10} = [$t0{t.9}] - $t1{t.10} = Lt(4 $t1{t.10}) - if $t1{t.10} goto :bounds18 - Error("array index out of bounds") -bounds18: - $t1{t.10} = MulS(4 4) - $t1{t.10} = Add($t1{t.10} $t0{t.9}) - [$t1{t.10}+4] = 2 - $t1{t.11} = [$s0{this}+4] - if $t1{t.11} goto :null20 - Error("null pointer") -null20: - $t0{t.12} = [$t1{t.11}] - $t0{t.12} = Lt(5 $t0{t.12}) - if $t0{t.12} goto :bounds19 - Error("array index out of bounds") -bounds19: - $t0{t.12} = MulS(5 4) - $t0{t.12} = Add($t0{t.12} $t1{t.11}) - [$t0{t.12}+4] = 11 - $t0{t.13} = [$s0{this}+4] - if $t0{t.13} goto :null21 - Error("null pointer") -null21: - $t1{t.14} = [$t0{t.13}] - $t1{t.14} = Lt(6 $t1{t.14}) - if $t1{t.14} goto :bounds20 - Error("array index out of bounds") -bounds20: - $t1{t.14} = MulS(6 4) - $t1{t.14} = Add($t1{t.14} $t0{t.13}) - [$t1{t.14}+4] = 6 - $t1{t.15} = [$s0{this}+4] - if $t1{t.15} goto :null22 - Error("null pointer") -null22: - $t0{t.16} = [$t1{t.15}] - $t0{t.16} = Lt(7 $t0{t.16}) - if $t0{t.16} goto :bounds21 - Error("array index out of bounds") -bounds21: - $t0{t.16} = MulS(7 4) - $t0{t.16} = Add($t0{t.16} $t1{t.15}) - [$t0{t.16}+4] = 9 - $t0{t.17} = [$s0{this}+4] - if $t0{t.17} goto :null23 - Error("null pointer") -null23: - $t1{t.18} = [$t0{t.17}] - $t1{t.18} = Lt(8 $t1{t.18}) - if $t1{t.18} goto :bounds22 - Error("array index out of bounds") -bounds22: - $t1{t.18} = MulS(8 4) - $t1{t.18} = Add($t1{t.18} $t0{t.17}) - [$t1{t.18}+4] = 19 - $t1{t.19} = [$s0{this}+4] - if $t1{t.19} goto :null24 - Error("null pointer") -null24: - $t0{t.20} = [$t1{t.19}] - $t0{t.20} = Lt(9 $t0{t.20}) - if $t0{t.20} goto :bounds23 - Error("array index out of bounds") -bounds23: - $t0{t.20} = MulS(9 4) - $t0{t.20} = Add($t0{t.20} $t1{t.19}) - [$t0{t.20}+4] = 5 - $v0 = 0 - $s0 = local[0] - ret - -func AllocArray [in 0, out 0, local 0] - $t0{size} = $a0 - $t1{bytes} = MulS($t0{size} 4) - $t1{bytes} = Add($t1{bytes} 4) - $t1{v} = HeapAllocZ($t1{bytes}) - [$t1{v}] = $t0{size} - $v0 = $t1{v} - ret - diff --git a/vaporize/tests/QuickSort.opt.names.vaporm b/vaporize/tests/QuickSort.opt.names.vaporm deleted file mode 100644 index 9946042..0000000 --- a/vaporize/tests/QuickSort.opt.names.vaporm +++ /dev/null @@ -1,418 +0,0 @@ -const empty_QS - -func Main [in 0, out 0, local 0] - $t0{t.0} = HeapAllocZ(8) - if $t0{t.0} goto :null1 - Error("null pointer") -null1: - $a0 = $t0{t.0} - $a1 = 10 - call :QS.Start - $t0{t.1} = $v0 - PrintIntS($t0{t.1}) - ret - -func QS.Start [in 0, out 0, local 1] - local[0] = $s0 - $s0{this} = $a0 - $t0{sz} = $a1 - $a0 = $s0{this} - $a1 = $t0{sz} - call :QS.Init - $a0 = $s0{this} - call :QS.Print - PrintIntS(9999) - $t0{t.0} = [$s0{this}+4] - $t0{aux01} = Sub($t0{t.0} 1) - $a0 = $s0{this} - $a1 = 0 - $a2 = $t0{aux01} - call :QS.Sort - $a0 = $s0{this} - call :QS.Print - $v0 = 0 - $s0 = local[0] - ret - -func QS.Sort [in 0, out 0, local 3] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - $s0{this} = $a0 - $t0{left} = $a1 - $s1{right} = $a2 - $t1{t} = 0 - $t2{t.0} = LtS($t0{left} $s1{right}) - if0 $t2{t.0} goto :if1_else - $t2{t.1} = [$s0{this}] - if $t2{t.1} goto :null2 - Error("null pointer") -null2: - $t3{t.2} = [$t2{t.1}] - $t3{t.2} = Lt($s1{right} $t3{t.2}) - if $t3{t.2} goto :bounds1 - Error("array index out of bounds") -bounds1: - $t3{t.2} = MulS($s1{right} 4) - $t3{t.2} = Add($t3{t.2} $t2{t.1}) - $t3{v} = [$t3{t.2}+4] - $s2{i} = Sub($t0{left} 1) - $t2{j} = $s1{right} - $t4{cont01} = 1 -while1_top: - if0 $t4{cont01} goto :while1_end - $t5{cont02} = 1 -while2_top: - if0 $t5{cont02} goto :while2_end - $s2{i} = Add($s2{i} 1) - $t6{t.3} = [$s0{this}] - if $t6{t.3} goto :null3 - Error("null pointer") -null3: - $t7{t.4} = [$t6{t.3}] - $t7{t.4} = Lt($s2{i} $t7{t.4}) - if $t7{t.4} goto :bounds2 - Error("array index out of bounds") -bounds2: - $t7{t.4} = MulS($s2{i} 4) - $t7{t.4} = Add($t7{t.4} $t6{t.3}) - $t7{aux03} = [$t7{t.4}+4] - $t6{t.5} = LtS($t7{aux03} $t3{v}) - if $t6{t.5} goto :if2_else - $t5{cont02} = 0 - goto :if2_end -if2_else: - $t5{cont02} = 1 -if2_end: - goto :while2_top -while2_end: - $t5{cont02} = 1 -while3_top: - if0 $t5{cont02} goto :while3_end - $t2{j} = Sub($t2{j} 1) - $t6{t.6} = [$s0{this}] - if $t6{t.6} goto :null4 - Error("null pointer") -null4: - $t8{t.7} = [$t6{t.6}] - $t8{t.7} = Lt($t2{j} $t8{t.7}) - if $t8{t.7} goto :bounds3 - Error("array index out of bounds") -bounds3: - $t8{t.7} = MulS($t2{j} 4) - $t8{t.7} = Add($t8{t.7} $t6{t.6}) - $t7{aux03} = [$t8{t.7}+4] - $t7{t.8} = LtS($t3{v} $t7{aux03}) - if $t7{t.8} goto :if3_else - $t5{cont02} = 0 - goto :if3_end -if3_else: - $t5{cont02} = 1 -if3_end: - goto :while3_top -while3_end: - $t5{t.9} = [$s0{this}] - if $t5{t.9} goto :null5 - Error("null pointer") -null5: - $t7{t.10} = [$t5{t.9}] - $t7{t.10} = Lt($s2{i} $t7{t.10}) - if $t7{t.10} goto :bounds4 - Error("array index out of bounds") -bounds4: - $t7{t.10} = MulS($s2{i} 4) - $t7{t.10} = Add($t7{t.10} $t5{t.9}) - $t1{t} = [$t7{t.10}+4] - $t7{t.11} = [$s0{this}] - if $t7{t.11} goto :null6 - Error("null pointer") -null6: - $t5{t.12} = [$t7{t.11}] - $t5{t.12} = Lt($s2{i} $t5{t.12}) - if $t5{t.12} goto :bounds5 - Error("array index out of bounds") -bounds5: - $t5{t.12} = MulS($s2{i} 4) - $t5{t.12} = Add($t5{t.12} $t7{t.11}) - $t7{t.13} = [$s0{this}] - if $t7{t.13} goto :null7 - Error("null pointer") -null7: - $t8{t.14} = [$t7{t.13}] - $t8{t.14} = Lt($t2{j} $t8{t.14}) - if $t8{t.14} goto :bounds6 - Error("array index out of bounds") -bounds6: - $t8{t.14} = MulS($t2{j} 4) - $t8{t.14} = Add($t8{t.14} $t7{t.13}) - $t8{t.15} = [$t8{t.14}+4] - [$t5{t.12}+4] = $t8{t.15} - $t8{t.16} = [$s0{this}] - if $t8{t.16} goto :null8 - Error("null pointer") -null8: - $t5{t.17} = [$t8{t.16}] - $t5{t.17} = Lt($t2{j} $t5{t.17}) - if $t5{t.17} goto :bounds7 - Error("array index out of bounds") -bounds7: - $t5{t.17} = MulS($t2{j} 4) - $t5{t.17} = Add($t5{t.17} $t8{t.16}) - [$t5{t.17}+4] = $t1{t} - $t5{t.18} = Add($s2{i} 1) - $t5{t.19} = LtS($t2{j} $t5{t.18}) - if0 $t5{t.19} goto :if4_else - $t4{cont01} = 0 - goto :if4_end -if4_else: - $t4{cont01} = 1 -if4_end: - goto :while1_top -while1_end: - $t4{t.20} = [$s0{this}] - if $t4{t.20} goto :null9 - Error("null pointer") -null9: - $t3{t.21} = [$t4{t.20}] - $t3{t.21} = Lt($t2{j} $t3{t.21}) - if $t3{t.21} goto :bounds8 - Error("array index out of bounds") -bounds8: - $t3{t.21} = MulS($t2{j} 4) - $t3{t.21} = Add($t3{t.21} $t4{t.20}) - $t4{t.22} = [$s0{this}] - if $t4{t.22} goto :null10 - Error("null pointer") -null10: - $t2{t.23} = [$t4{t.22}] - $t2{t.23} = Lt($s2{i} $t2{t.23}) - if $t2{t.23} goto :bounds9 - Error("array index out of bounds") -bounds9: - $t2{t.23} = MulS($s2{i} 4) - $t2{t.23} = Add($t2{t.23} $t4{t.22}) - $t2{t.24} = [$t2{t.23}+4] - [$t3{t.21}+4] = $t2{t.24} - $t2{t.25} = [$s0{this}] - if $t2{t.25} goto :null11 - Error("null pointer") -null11: - $t3{t.26} = [$t2{t.25}] - $t3{t.26} = Lt($s2{i} $t3{t.26}) - if $t3{t.26} goto :bounds10 - Error("array index out of bounds") -bounds10: - $t3{t.26} = MulS($s2{i} 4) - $t3{t.26} = Add($t3{t.26} $t2{t.25}) - $t2{t.27} = [$s0{this}] - if $t2{t.27} goto :null12 - Error("null pointer") -null12: - $t4{t.28} = [$t2{t.27}] - $t4{t.28} = Lt($s1{right} $t4{t.28}) - if $t4{t.28} goto :bounds11 - Error("array index out of bounds") -bounds11: - $t4{t.28} = MulS($s1{right} 4) - $t4{t.28} = Add($t4{t.28} $t2{t.27}) - $t4{t.29} = [$t4{t.28}+4] - [$t3{t.26}+4] = $t4{t.29} - $t4{t.30} = [$s0{this}] - if $t4{t.30} goto :null13 - Error("null pointer") -null13: - $t3{t.31} = [$t4{t.30}] - $t3{t.31} = Lt($s1{right} $t3{t.31}) - if $t3{t.31} goto :bounds12 - Error("array index out of bounds") -bounds12: - $t3{t.31} = MulS($s1{right} 4) - $t3{t.31} = Add($t3{t.31} $t4{t.30}) - [$t3{t.31}+4] = $t1{t} - $t3{t.32} = Sub($s2{i} 1) - $a0 = $s0{this} - $a1 = $t0{left} - $a2 = $t3{t.32} - call :QS.Sort - $t3{t.33} = Add($s2{i} 1) - $a0 = $s0{this} - $a1 = $t3{t.33} - $a2 = $s1{right} - call :QS.Sort - goto :if1_end -if1_else: -if1_end: - $v0 = 0 - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - ret - -func QS.Print [in 0, out 0, local 0] - $t0{this} = $a0 - $t1{j} = 0 -while4_top: - $t2{t.0} = [$t0{this}+4] - $t2{t.1} = LtS($t1{j} $t2{t.0}) - if0 $t2{t.1} goto :while4_end - $t2{t.2} = [$t0{this}] - if $t2{t.2} goto :null14 - Error("null pointer") -null14: - $t3{t.3} = [$t2{t.2}] - $t3{t.3} = Lt($t1{j} $t3{t.3}) - if $t3{t.3} goto :bounds13 - Error("array index out of bounds") -bounds13: - $t3{t.3} = MulS($t1{j} 4) - $t3{t.3} = Add($t3{t.3} $t2{t.2}) - $t3{t.4} = [$t3{t.3}+4] - PrintIntS($t3{t.4}) - $t1{j} = Add($t1{j} 1) - goto :while4_top -while4_end: - $v0 = 0 - ret - -func QS.Init [in 0, out 0, local 1] - local[0] = $s0 - $s0{this} = $a0 - $t0{sz} = $a1 - [$s0{this}+4] = $t0{sz} - $a0 = $t0{sz} - call :AllocArray - $t0{t.0} = $v0 - [$s0{this}] = $t0{t.0} - $t0{t.1} = [$s0{this}] - if $t0{t.1} goto :null15 - Error("null pointer") -null15: - $t1{t.2} = [$t0{t.1}] - $t1{t.2} = Lt(0 $t1{t.2}) - if $t1{t.2} goto :bounds14 - Error("array index out of bounds") -bounds14: - $t1{t.2} = MulS(0 4) - $t1{t.2} = Add($t1{t.2} $t0{t.1}) - [$t1{t.2}+4] = 20 - $t1{t.3} = [$s0{this}] - if $t1{t.3} goto :null16 - Error("null pointer") -null16: - $t0{t.4} = [$t1{t.3}] - $t0{t.4} = Lt(1 $t0{t.4}) - if $t0{t.4} goto :bounds15 - Error("array index out of bounds") -bounds15: - $t0{t.4} = MulS(1 4) - $t0{t.4} = Add($t0{t.4} $t1{t.3}) - [$t0{t.4}+4] = 7 - $t0{t.5} = [$s0{this}] - if $t0{t.5} goto :null17 - Error("null pointer") -null17: - $t1{t.6} = [$t0{t.5}] - $t1{t.6} = Lt(2 $t1{t.6}) - if $t1{t.6} goto :bounds16 - Error("array index out of bounds") -bounds16: - $t1{t.6} = MulS(2 4) - $t1{t.6} = Add($t1{t.6} $t0{t.5}) - [$t1{t.6}+4] = 12 - $t1{t.7} = [$s0{this}] - if $t1{t.7} goto :null18 - Error("null pointer") -null18: - $t0{t.8} = [$t1{t.7}] - $t0{t.8} = Lt(3 $t0{t.8}) - if $t0{t.8} goto :bounds17 - Error("array index out of bounds") -bounds17: - $t0{t.8} = MulS(3 4) - $t0{t.8} = Add($t0{t.8} $t1{t.7}) - [$t0{t.8}+4] = 18 - $t0{t.9} = [$s0{this}] - if $t0{t.9} goto :null19 - Error("null pointer") -null19: - $t1{t.10} = [$t0{t.9}] - $t1{t.10} = Lt(4 $t1{t.10}) - if $t1{t.10} goto :bounds18 - Error("array index out of bounds") -bounds18: - $t1{t.10} = MulS(4 4) - $t1{t.10} = Add($t1{t.10} $t0{t.9}) - [$t1{t.10}+4] = 2 - $t1{t.11} = [$s0{this}] - if $t1{t.11} goto :null20 - Error("null pointer") -null20: - $t0{t.12} = [$t1{t.11}] - $t0{t.12} = Lt(5 $t0{t.12}) - if $t0{t.12} goto :bounds19 - Error("array index out of bounds") -bounds19: - $t0{t.12} = MulS(5 4) - $t0{t.12} = Add($t0{t.12} $t1{t.11}) - [$t0{t.12}+4] = 11 - $t0{t.13} = [$s0{this}] - if $t0{t.13} goto :null21 - Error("null pointer") -null21: - $t1{t.14} = [$t0{t.13}] - $t1{t.14} = Lt(6 $t1{t.14}) - if $t1{t.14} goto :bounds20 - Error("array index out of bounds") -bounds20: - $t1{t.14} = MulS(6 4) - $t1{t.14} = Add($t1{t.14} $t0{t.13}) - [$t1{t.14}+4] = 6 - $t1{t.15} = [$s0{this}] - if $t1{t.15} goto :null22 - Error("null pointer") -null22: - $t0{t.16} = [$t1{t.15}] - $t0{t.16} = Lt(7 $t0{t.16}) - if $t0{t.16} goto :bounds21 - Error("array index out of bounds") -bounds21: - $t0{t.16} = MulS(7 4) - $t0{t.16} = Add($t0{t.16} $t1{t.15}) - [$t0{t.16}+4] = 9 - $t0{t.17} = [$s0{this}] - if $t0{t.17} goto :null23 - Error("null pointer") -null23: - $t1{t.18} = [$t0{t.17}] - $t1{t.18} = Lt(8 $t1{t.18}) - if $t1{t.18} goto :bounds22 - Error("array index out of bounds") -bounds22: - $t1{t.18} = MulS(8 4) - $t1{t.18} = Add($t1{t.18} $t0{t.17}) - [$t1{t.18}+4] = 19 - $t1{t.19} = [$s0{this}] - if $t1{t.19} goto :null24 - Error("null pointer") -null24: - $t0{t.20} = [$t1{t.19}] - $t0{t.20} = Lt(9 $t0{t.20}) - if $t0{t.20} goto :bounds23 - Error("array index out of bounds") -bounds23: - $t0{t.20} = MulS(9 4) - $t0{t.20} = Add($t0{t.20} $t1{t.19}) - [$t0{t.20}+4] = 5 - $v0 = 0 - $s0 = local[0] - ret - -func AllocArray [in 0, out 0, local 0] - $t0{size} = $a0 - $t1{bytes} = MulS($t0{size} 4) - $t1{bytes} = Add($t1{bytes} 4) - $t1{v} = HeapAllocZ($t1{bytes}) - [$t1{v}] = $t0{size} - $v0 = $t1{v} - ret - diff --git a/vaporize/tests/QuickSort.opt.regalloc b/vaporize/tests/QuickSort.opt.regalloc deleted file mode 100644 index cb7fb8c..0000000 --- a/vaporize/tests/QuickSort.opt.regalloc +++ /dev/null @@ -1,286 +0,0 @@ -func Main - in 0, out 0, callee-saves 0, spills 0 -Live In: - t.0: 7 10 - t.1: 11 -Linear Range: - t.0: 6-10 - t.1: 10-11 -Allocation: - t.0: t0 - t.1: t0 - -func QS.Start - in 0, out 0, callee-saves 1, spills 0 -Live In: - this: 15-21 - sz: 15 - aux01: 20 - t.0: 19 -Linear Range: - this: 14-21 (cross call) - sz: 14-15 - aux01: 19-20 - t.0: 18-19 -Allocation: - this: s0 - sz: t0 - aux01: t0 - t.0: t0 - -func QS.Sort - in 0, out 0, callee-saves 3, spills 0 -Live In: - this: 25-29 32-34 37-50 53-55 58-75 78-80 83-96 99-101 104-108 111-113 116-119 122-124 127-132 135-137 140-154 157-159 162-165 168-170 173-178 181-183 186-189 192-194 197-202 205-207 210-216 - left: 25-29 32-34 37-50 53-55 58-75 78-80 83-96 99-101 104-108 111-113 116-119 122-124 127-132 135-137 140-154 157-159 162-165 168-170 173-178 181-183 186-189 192-194 197-202 205-207 210-214 - right: 25-29 32-34 37-50 53-55 58-75 78-80 83-96 99-101 104-108 111-113 116-119 122-124 127-132 135-137 140-154 157-159 162-165 168-170 173-178 181-183 186-189 192-194 197-202 205-207 210-216 - t: 26-29 32-34 37-44 107-108 111-113 116-119 122-124 127-132 135-137 140-154 157-159 162-165 168-170 173-178 181-183 186-189 192-194 197-202 205-207 210-212 - t.0: 27 - t.1: 29 32-34 37-38 - t.2: 33-34 38-39 - v: 40-50 53-55 58-75 78-80 83-96 99-101 104-108 111-113 116-119 122-124 127-132 135-137 140-151 - i: 41-50 53-55 58-75 78-80 83-96 99-101 104-108 111-113 116-119 122-124 127-132 135-137 140-154 157-159 162-165 168-170 173-178 181-183 186-189 192-194 197-202 205-207 210-215 - j: 42-50 53-55 58-75 78-80 83-96 99-101 104-108 111-113 116-119 122-124 127-132 135-137 140-154 157-159 162 - cont01: 44 147 151 - cont02: 47 64 68 72 89 93 - t.3: 50 53-55 58-59 - t.4: 54-55 59-60 - aux03: 61 86 - t.5: 62 - t.6: 75 78-80 83-84 - t.7: 79-80 84-85 - t.8: 87 - t.9: 96 99-101 104-105 - t.10: 100-101 105-106 - t.11: 108 111-113 116-117 - t.12: 112-113 117-119 122-124 127-130 - t.13: 119 122-124 127-128 - t.14: 123-124 128-129 - t.15: 130 - t.16: 132 135-137 140-141 - t.17: 136-137 141-142 - t.18: 144 - t.19: 145 - t.20: 154 157-159 162-163 - t.21: 158-159 163-165 168-170 173-176 - t.22: 165 168-170 173-174 - t.23: 169-170 174-175 - t.24: 176 - t.25: 178 181-183 186-187 - t.26: 182-183 187-189 192-194 197-200 - t.27: 189 192-194 197-198 - t.28: 193-194 198-199 - t.29: 200 - t.30: 202 205-207 210-211 - t.31: 206-207 211-212 - t.32: 214 - nt: - t.33: 216 -Linear Range: - this: 24-216 (cross call) - left: 24-214 - right: 24-216 (cross call) - t: 25-212 - t.0: 26-27 - t.1: 28-38 - t.2: 32-39 - v: 39-151 - i: 40-215 (cross call) - j: 41-162 - cont01: 42-151 - cont02: 45-93 - t.3: 49-59 - t.4: 53-60 - aux03: 60-86 - t.5: 61-62 - t.6: 74-84 - t.7: 78-85 - t.8: 86-87 - t.9: 95-105 - t.10: 99-106 - t.11: 107-117 - t.12: 111-130 - t.13: 118-128 - t.14: 122-129 - t.15: 129-130 - t.16: 131-141 - t.17: 135-142 - t.18: 143-144 - t.19: 144-145 - t.20: 153-163 - t.21: 157-176 - t.22: 164-174 - t.23: 168-175 - t.24: 175-176 - t.25: 177-187 - t.26: 181-200 - t.27: 188-198 - t.28: 192-199 - t.29: 199-200 - t.30: 201-211 - t.31: 205-212 - t.32: 213-214 - t.33: 215-216 -Allocation: - this: s0 - left: t0 - right: s1 - t: t1 - t.0: t2 - t.1: t2 - t.2: t3 - v: t3 - i: s2 - j: t2 - cont01: t4 - cont02: t5 - t.3: t6 - t.4: t7 - aux03: t7 - t.5: t6 - t.6: t6 - t.7: t8 - t.8: t7 - t.9: t5 - t.10: t7 - t.11: t7 - t.12: t5 - t.13: t7 - t.14: t8 - t.15: t8 - t.16: t8 - t.17: t5 - t.18: t5 - t.19: t5 - t.20: t4 - t.21: t3 - t.22: t4 - t.23: t2 - t.24: t2 - t.25: t2 - t.26: t3 - t.27: t2 - t.28: t4 - t.29: t4 - t.30: t4 - t.31: t3 - t.32: t3 - t.33: t3 - -func QS.Print - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 224-230 233-235 238-243 - j: 226-230 233-235 238-243 - t.0: 227 - t.1: 228 - t.2: 230 233-235 238-239 - t.3: 234-235 239-240 - t.4: 241 -Linear Range: - this: 223-243 - j: 224-243 - t.0: 226-227 - t.1: 227-228 - t.2: 229-239 - t.3: 233-240 - t.4: 240-241 -Allocation: - this: t0 - j: t1 - t.0: t2 - t.1: t2 - t.2: t2 - t.3: t3 - t.4: t3 - -func QS.Init - in 0, out 0, callee-saves 1, spills 0 -Live In: - this: 248-252 255-257 260-264 267-269 272-276 279-281 284-288 291-293 296-300 303-305 308-312 315-317 320-324 327-329 332-336 339-341 344-348 351-353 356-359 - sz: 248-249 - t.0: 250 - t.1: 252 255-257 260-261 - t.2: 256-257 261-262 - t.3: 264 267-269 272-273 - t.4: 268-269 273-274 - t.5: 276 279-281 284-285 - t.6: 280-281 285-286 - t.7: 288 291-293 296-297 - t.8: 292-293 297-298 - t.9: 300 303-305 308-309 - t.10: 304-305 309-310 - t.11: 312 315-317 320-321 - t.12: 316-317 321-322 - t.13: 324 327-329 332-333 - t.14: 328-329 333-334 - t.15: 336 339-341 344-345 - t.16: 340-341 345-346 - t.17: 348 351-353 356-357 - t.18: 352-353 357-358 - t.19: 360 363-365 368-369 - t.20: 364-365 369-370 -Linear Range: - this: 247-359 (cross call) - sz: 247-249 - t.0: 249-250 - t.1: 251-261 - t.2: 255-262 - t.3: 263-273 - t.4: 267-274 - t.5: 275-285 - t.6: 279-286 - t.7: 287-297 - t.8: 291-298 - t.9: 299-309 - t.10: 303-310 - t.11: 311-321 - t.12: 315-322 - t.13: 323-333 - t.14: 327-334 - t.15: 335-345 - t.16: 339-346 - t.17: 347-357 - t.18: 351-358 - t.19: 359-369 - t.20: 363-370 -Allocation: - this: s0 - sz: t0 - t.0: t0 - t.1: t0 - t.2: t1 - t.3: t1 - t.4: t0 - t.5: t0 - t.6: t1 - t.7: t1 - t.8: t0 - t.9: t0 - t.10: t1 - t.11: t1 - t.12: t0 - t.13: t0 - t.14: t1 - t.15: t1 - t.16: t0 - t.17: t0 - t.18: t1 - t.19: t1 - t.20: t0 - -func AllocArray - in 0, out 0, callee-saves 0, spills 0 -Live In: - size: 374-377 - bytes: 375-376 - v: 377-378 -Linear Range: - size: 373-377 - bytes: 374-376 - v: 376-378 -Allocation: - size: t0 - bytes: t1 - v: t1 - diff --git a/vaporize/tests/QuickSort.opt.vapor b/vaporize/tests/QuickSort.opt.vapor deleted file mode 100644 index 6e14e5a..0000000 --- a/vaporize/tests/QuickSort.opt.vapor +++ /dev/null @@ -1,378 +0,0 @@ - -const empty_QS - - -func Main() - t.0 = HeapAllocZ(8) - if t.0 goto :null1 - Error("null pointer") - null1: - t.1 = call :QS.Start(t.0 10) - PrintIntS(t.1) - ret - -func QS.Start(this sz) - aux01 = call :QS.Init(this sz) - aux01 = call :QS.Print(this) - PrintIntS(9999) - t.0 = [this+4] - aux01 = Sub(t.0 1) - aux01 = call :QS.Sort(this 0 aux01) - aux01 = call :QS.Print(this) - ret 0 - -func QS.Sort(this left right) - t = 0 - t.0 = LtS(left right) - if0 t.0 goto :if1_else - t.1 = [this+0] - if t.1 goto :null2 - Error("null pointer") - null2: - t.2 = [t.1] - t.2 = Lt(right t.2) - if t.2 goto :bounds1 - Error("array index out of bounds") - bounds1: - t.2 = MulS(right 4) - t.2 = Add(t.2 t.1) - v = [t.2+4] - i = Sub(left 1) - j = right - cont01 = 1 - while1_top: - if0 cont01 goto :while1_end - cont02 = 1 - while2_top: - if0 cont02 goto :while2_end - i = Add(i 1) - t.3 = [this+0] - if t.3 goto :null3 - Error("null pointer") - null3: - t.4 = [t.3] - t.4 = Lt(i t.4) - if t.4 goto :bounds2 - Error("array index out of bounds") - bounds2: - t.4 = MulS(i 4) - t.4 = Add(t.4 t.3) - aux03 = [t.4+4] - t.5 = LtS(aux03 v) - if t.5 goto :if2_else - cont02 = 0 - goto :if2_end - if2_else: - cont02 = 1 - if2_end: - goto :while2_top - while2_end: - cont02 = 1 - while3_top: - if0 cont02 goto :while3_end - j = Sub(j 1) - t.6 = [this+0] - if t.6 goto :null4 - Error("null pointer") - null4: - t.7 = [t.6] - t.7 = Lt(j t.7) - if t.7 goto :bounds3 - Error("array index out of bounds") - bounds3: - t.7 = MulS(j 4) - t.7 = Add(t.7 t.6) - aux03 = [t.7+4] - t.8 = LtS(v aux03) - if t.8 goto :if3_else - cont02 = 0 - goto :if3_end - if3_else: - cont02 = 1 - if3_end: - goto :while3_top - while3_end: - t.9 = [this+0] - if t.9 goto :null5 - Error("null pointer") - null5: - t.10 = [t.9] - t.10 = Lt(i t.10) - if t.10 goto :bounds4 - Error("array index out of bounds") - bounds4: - t.10 = MulS(i 4) - t.10 = Add(t.10 t.9) - t = [t.10+4] - t.11 = [this+0] - if t.11 goto :null6 - Error("null pointer") - null6: - t.12 = [t.11] - t.12 = Lt(i t.12) - if t.12 goto :bounds5 - Error("array index out of bounds") - bounds5: - t.12 = MulS(i 4) - t.12 = Add(t.12 t.11) - t.13 = [this+0] - if t.13 goto :null7 - Error("null pointer") - null7: - t.14 = [t.13] - t.14 = Lt(j t.14) - if t.14 goto :bounds6 - Error("array index out of bounds") - bounds6: - t.14 = MulS(j 4) - t.14 = Add(t.14 t.13) - t.15 = [t.14+4] - [t.12+4] = t.15 - t.16 = [this+0] - if t.16 goto :null8 - Error("null pointer") - null8: - t.17 = [t.16] - t.17 = Lt(j t.17) - if t.17 goto :bounds7 - Error("array index out of bounds") - bounds7: - t.17 = MulS(j 4) - t.17 = Add(t.17 t.16) - [t.17+4] = t - t.18 = Add(i 1) - t.19 = LtS(j t.18) - if0 t.19 goto :if4_else - cont01 = 0 - goto :if4_end - if4_else: - cont01 = 1 - if4_end: - goto :while1_top - while1_end: - t.20 = [this+0] - if t.20 goto :null9 - Error("null pointer") - null9: - t.21 = [t.20] - t.21 = Lt(j t.21) - if t.21 goto :bounds8 - Error("array index out of bounds") - bounds8: - t.21 = MulS(j 4) - t.21 = Add(t.21 t.20) - t.22 = [this+0] - if t.22 goto :null10 - Error("null pointer") - null10: - t.23 = [t.22] - t.23 = Lt(i t.23) - if t.23 goto :bounds9 - Error("array index out of bounds") - bounds9: - t.23 = MulS(i 4) - t.23 = Add(t.23 t.22) - t.24 = [t.23+4] - [t.21+4] = t.24 - t.25 = [this+0] - if t.25 goto :null11 - Error("null pointer") - null11: - t.26 = [t.25] - t.26 = Lt(i t.26) - if t.26 goto :bounds10 - Error("array index out of bounds") - bounds10: - t.26 = MulS(i 4) - t.26 = Add(t.26 t.25) - t.27 = [this+0] - if t.27 goto :null12 - Error("null pointer") - null12: - t.28 = [t.27] - t.28 = Lt(right t.28) - if t.28 goto :bounds11 - Error("array index out of bounds") - bounds11: - t.28 = MulS(right 4) - t.28 = Add(t.28 t.27) - t.29 = [t.28+4] - [t.26+4] = t.29 - t.30 = [this+0] - if t.30 goto :null13 - Error("null pointer") - null13: - t.31 = [t.30] - t.31 = Lt(right t.31) - if t.31 goto :bounds12 - Error("array index out of bounds") - bounds12: - t.31 = MulS(right 4) - t.31 = Add(t.31 t.30) - [t.31+4] = t - t.32 = Sub(i 1) - nt = call :QS.Sort(this left t.32) - t.33 = Add(i 1) - nt = call :QS.Sort(this t.33 right) - goto :if1_end - if1_else: - nt = 0 - if1_end: - ret 0 - -func QS.Print(this) - j = 0 - while4_top: - t.0 = [this+4] - t.1 = LtS(j t.0) - if0 t.1 goto :while4_end - t.2 = [this+0] - if t.2 goto :null14 - Error("null pointer") - null14: - t.3 = [t.2] - t.3 = Lt(j t.3) - if t.3 goto :bounds13 - Error("array index out of bounds") - bounds13: - t.3 = MulS(j 4) - t.3 = Add(t.3 t.2) - t.4 = [t.3+4] - PrintIntS(t.4) - j = Add(j 1) - goto :while4_top - while4_end: - ret 0 - -func QS.Init(this sz) - [this+4] = sz - t.0 = call :AllocArray(sz) - [this+0] = t.0 - t.1 = [this+0] - if t.1 goto :null15 - Error("null pointer") - null15: - t.2 = [t.1] - t.2 = Lt(0 t.2) - if t.2 goto :bounds14 - Error("array index out of bounds") - bounds14: - t.2 = MulS(0 4) - t.2 = Add(t.2 t.1) - [t.2+4] = 20 - t.3 = [this+0] - if t.3 goto :null16 - Error("null pointer") - null16: - t.4 = [t.3] - t.4 = Lt(1 t.4) - if t.4 goto :bounds15 - Error("array index out of bounds") - bounds15: - t.4 = MulS(1 4) - t.4 = Add(t.4 t.3) - [t.4+4] = 7 - t.5 = [this+0] - if t.5 goto :null17 - Error("null pointer") - null17: - t.6 = [t.5] - t.6 = Lt(2 t.6) - if t.6 goto :bounds16 - Error("array index out of bounds") - bounds16: - t.6 = MulS(2 4) - t.6 = Add(t.6 t.5) - [t.6+4] = 12 - t.7 = [this+0] - if t.7 goto :null18 - Error("null pointer") - null18: - t.8 = [t.7] - t.8 = Lt(3 t.8) - if t.8 goto :bounds17 - Error("array index out of bounds") - bounds17: - t.8 = MulS(3 4) - t.8 = Add(t.8 t.7) - [t.8+4] = 18 - t.9 = [this+0] - if t.9 goto :null19 - Error("null pointer") - null19: - t.10 = [t.9] - t.10 = Lt(4 t.10) - if t.10 goto :bounds18 - Error("array index out of bounds") - bounds18: - t.10 = MulS(4 4) - t.10 = Add(t.10 t.9) - [t.10+4] = 2 - t.11 = [this+0] - if t.11 goto :null20 - Error("null pointer") - null20: - t.12 = [t.11] - t.12 = Lt(5 t.12) - if t.12 goto :bounds19 - Error("array index out of bounds") - bounds19: - t.12 = MulS(5 4) - t.12 = Add(t.12 t.11) - [t.12+4] = 11 - t.13 = [this+0] - if t.13 goto :null21 - Error("null pointer") - null21: - t.14 = [t.13] - t.14 = Lt(6 t.14) - if t.14 goto :bounds20 - Error("array index out of bounds") - bounds20: - t.14 = MulS(6 4) - t.14 = Add(t.14 t.13) - [t.14+4] = 6 - t.15 = [this+0] - if t.15 goto :null22 - Error("null pointer") - null22: - t.16 = [t.15] - t.16 = Lt(7 t.16) - if t.16 goto :bounds21 - Error("array index out of bounds") - bounds21: - t.16 = MulS(7 4) - t.16 = Add(t.16 t.15) - [t.16+4] = 9 - t.17 = [this+0] - if t.17 goto :null23 - Error("null pointer") - null23: - t.18 = [t.17] - t.18 = Lt(8 t.18) - if t.18 goto :bounds22 - Error("array index out of bounds") - bounds22: - t.18 = MulS(8 4) - t.18 = Add(t.18 t.17) - [t.18+4] = 19 - t.19 = [this+0] - if t.19 goto :null24 - Error("null pointer") - null24: - t.20 = [t.19] - t.20 = Lt(9 t.20) - if t.20 goto :bounds23 - Error("array index out of bounds") - bounds23: - t.20 = MulS(9 4) - t.20 = Add(t.20 t.19) - [t.20+4] = 5 - ret 0 - -func AllocArray(size) - bytes = MulS(size 4) - bytes = Add(bytes 4) - v = HeapAllocZ(bytes) - [v] = size - ret v diff --git a/vaporize/tests/QuickSort.opt.vaporm b/vaporize/tests/QuickSort.opt.vaporm deleted file mode 100644 index 61f1151..0000000 --- a/vaporize/tests/QuickSort.opt.vaporm +++ /dev/null @@ -1,418 +0,0 @@ -const empty_QS - -func Main [in 0, out 0, local 0] - $t0 = HeapAllocZ(8) - if $t0 goto :null1 - Error("null pointer") -null1: - $a0 = $t0 - $a1 = 10 - call :QS.Start - $t0 = $v0 - PrintIntS($t0) - ret - -func QS.Start [in 0, out 0, local 1] - local[0] = $s0 - $s0 = $a0 - $t0 = $a1 - $a0 = $s0 - $a1 = $t0 - call :QS.Init - $a0 = $s0 - call :QS.Print - PrintIntS(9999) - $t0 = [$s0+4] - $t0 = Sub($t0 1) - $a0 = $s0 - $a1 = 0 - $a2 = $t0 - call :QS.Sort - $a0 = $s0 - call :QS.Print - $v0 = 0 - $s0 = local[0] - ret - -func QS.Sort [in 0, out 0, local 3] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - $s0 = $a0 - $t0 = $a1 - $s1 = $a2 - $t1 = 0 - $t2 = LtS($t0 $s1) - if0 $t2 goto :if1_else - $t2 = [$s0] - if $t2 goto :null2 - Error("null pointer") -null2: - $t3 = [$t2] - $t3 = Lt($s1 $t3) - if $t3 goto :bounds1 - Error("array index out of bounds") -bounds1: - $t3 = MulS($s1 4) - $t3 = Add($t3 $t2) - $t3 = [$t3+4] - $s2 = Sub($t0 1) - $t2 = $s1 - $t4 = 1 -while1_top: - if0 $t4 goto :while1_end - $t5 = 1 -while2_top: - if0 $t5 goto :while2_end - $s2 = Add($s2 1) - $t6 = [$s0] - if $t6 goto :null3 - Error("null pointer") -null3: - $t7 = [$t6] - $t7 = Lt($s2 $t7) - if $t7 goto :bounds2 - Error("array index out of bounds") -bounds2: - $t7 = MulS($s2 4) - $t7 = Add($t7 $t6) - $t7 = [$t7+4] - $t6 = LtS($t7 $t3) - if $t6 goto :if2_else - $t5 = 0 - goto :if2_end -if2_else: - $t5 = 1 -if2_end: - goto :while2_top -while2_end: - $t5 = 1 -while3_top: - if0 $t5 goto :while3_end - $t2 = Sub($t2 1) - $t6 = [$s0] - if $t6 goto :null4 - Error("null pointer") -null4: - $t8 = [$t6] - $t8 = Lt($t2 $t8) - if $t8 goto :bounds3 - Error("array index out of bounds") -bounds3: - $t8 = MulS($t2 4) - $t8 = Add($t8 $t6) - $t7 = [$t8+4] - $t7 = LtS($t3 $t7) - if $t7 goto :if3_else - $t5 = 0 - goto :if3_end -if3_else: - $t5 = 1 -if3_end: - goto :while3_top -while3_end: - $t5 = [$s0] - if $t5 goto :null5 - Error("null pointer") -null5: - $t7 = [$t5] - $t7 = Lt($s2 $t7) - if $t7 goto :bounds4 - Error("array index out of bounds") -bounds4: - $t7 = MulS($s2 4) - $t7 = Add($t7 $t5) - $t1 = [$t7+4] - $t7 = [$s0] - if $t7 goto :null6 - Error("null pointer") -null6: - $t5 = [$t7] - $t5 = Lt($s2 $t5) - if $t5 goto :bounds5 - Error("array index out of bounds") -bounds5: - $t5 = MulS($s2 4) - $t5 = Add($t5 $t7) - $t7 = [$s0] - if $t7 goto :null7 - Error("null pointer") -null7: - $t8 = [$t7] - $t8 = Lt($t2 $t8) - if $t8 goto :bounds6 - Error("array index out of bounds") -bounds6: - $t8 = MulS($t2 4) - $t8 = Add($t8 $t7) - $t8 = [$t8+4] - [$t5+4] = $t8 - $t8 = [$s0] - if $t8 goto :null8 - Error("null pointer") -null8: - $t5 = [$t8] - $t5 = Lt($t2 $t5) - if $t5 goto :bounds7 - Error("array index out of bounds") -bounds7: - $t5 = MulS($t2 4) - $t5 = Add($t5 $t8) - [$t5+4] = $t1 - $t5 = Add($s2 1) - $t5 = LtS($t2 $t5) - if0 $t5 goto :if4_else - $t4 = 0 - goto :if4_end -if4_else: - $t4 = 1 -if4_end: - goto :while1_top -while1_end: - $t4 = [$s0] - if $t4 goto :null9 - Error("null pointer") -null9: - $t3 = [$t4] - $t3 = Lt($t2 $t3) - if $t3 goto :bounds8 - Error("array index out of bounds") -bounds8: - $t3 = MulS($t2 4) - $t3 = Add($t3 $t4) - $t4 = [$s0] - if $t4 goto :null10 - Error("null pointer") -null10: - $t2 = [$t4] - $t2 = Lt($s2 $t2) - if $t2 goto :bounds9 - Error("array index out of bounds") -bounds9: - $t2 = MulS($s2 4) - $t2 = Add($t2 $t4) - $t2 = [$t2+4] - [$t3+4] = $t2 - $t2 = [$s0] - if $t2 goto :null11 - Error("null pointer") -null11: - $t3 = [$t2] - $t3 = Lt($s2 $t3) - if $t3 goto :bounds10 - Error("array index out of bounds") -bounds10: - $t3 = MulS($s2 4) - $t3 = Add($t3 $t2) - $t2 = [$s0] - if $t2 goto :null12 - Error("null pointer") -null12: - $t4 = [$t2] - $t4 = Lt($s1 $t4) - if $t4 goto :bounds11 - Error("array index out of bounds") -bounds11: - $t4 = MulS($s1 4) - $t4 = Add($t4 $t2) - $t4 = [$t4+4] - [$t3+4] = $t4 - $t4 = [$s0] - if $t4 goto :null13 - Error("null pointer") -null13: - $t3 = [$t4] - $t3 = Lt($s1 $t3) - if $t3 goto :bounds12 - Error("array index out of bounds") -bounds12: - $t3 = MulS($s1 4) - $t3 = Add($t3 $t4) - [$t3+4] = $t1 - $t3 = Sub($s2 1) - $a0 = $s0 - $a1 = $t0 - $a2 = $t3 - call :QS.Sort - $t3 = Add($s2 1) - $a0 = $s0 - $a1 = $t3 - $a2 = $s1 - call :QS.Sort - goto :if1_end -if1_else: -if1_end: - $v0 = 0 - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - ret - -func QS.Print [in 0, out 0, local 0] - $t0 = $a0 - $t1 = 0 -while4_top: - $t2 = [$t0+4] - $t2 = LtS($t1 $t2) - if0 $t2 goto :while4_end - $t2 = [$t0] - if $t2 goto :null14 - Error("null pointer") -null14: - $t3 = [$t2] - $t3 = Lt($t1 $t3) - if $t3 goto :bounds13 - Error("array index out of bounds") -bounds13: - $t3 = MulS($t1 4) - $t3 = Add($t3 $t2) - $t3 = [$t3+4] - PrintIntS($t3) - $t1 = Add($t1 1) - goto :while4_top -while4_end: - $v0 = 0 - ret - -func QS.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 = [$s0] - if $t0 goto :null15 - Error("null pointer") -null15: - $t1 = [$t0] - $t1 = Lt(0 $t1) - if $t1 goto :bounds14 - Error("array index out of bounds") -bounds14: - $t1 = MulS(0 4) - $t1 = Add($t1 $t0) - [$t1+4] = 20 - $t1 = [$s0] - if $t1 goto :null16 - Error("null pointer") -null16: - $t0 = [$t1] - $t0 = Lt(1 $t0) - if $t0 goto :bounds15 - Error("array index out of bounds") -bounds15: - $t0 = MulS(1 4) - $t0 = Add($t0 $t1) - [$t0+4] = 7 - $t0 = [$s0] - if $t0 goto :null17 - Error("null pointer") -null17: - $t1 = [$t0] - $t1 = Lt(2 $t1) - if $t1 goto :bounds16 - Error("array index out of bounds") -bounds16: - $t1 = MulS(2 4) - $t1 = Add($t1 $t0) - [$t1+4] = 12 - $t1 = [$s0] - if $t1 goto :null18 - Error("null pointer") -null18: - $t0 = [$t1] - $t0 = Lt(3 $t0) - if $t0 goto :bounds17 - Error("array index out of bounds") -bounds17: - $t0 = MulS(3 4) - $t0 = Add($t0 $t1) - [$t0+4] = 18 - $t0 = [$s0] - if $t0 goto :null19 - Error("null pointer") -null19: - $t1 = [$t0] - $t1 = Lt(4 $t1) - if $t1 goto :bounds18 - Error("array index out of bounds") -bounds18: - $t1 = MulS(4 4) - $t1 = Add($t1 $t0) - [$t1+4] = 2 - $t1 = [$s0] - if $t1 goto :null20 - Error("null pointer") -null20: - $t0 = [$t1] - $t0 = Lt(5 $t0) - if $t0 goto :bounds19 - Error("array index out of bounds") -bounds19: - $t0 = MulS(5 4) - $t0 = Add($t0 $t1) - [$t0+4] = 11 - $t0 = [$s0] - if $t0 goto :null21 - Error("null pointer") -null21: - $t1 = [$t0] - $t1 = Lt(6 $t1) - if $t1 goto :bounds20 - Error("array index out of bounds") -bounds20: - $t1 = MulS(6 4) - $t1 = Add($t1 $t0) - [$t1+4] = 6 - $t1 = [$s0] - if $t1 goto :null22 - Error("null pointer") -null22: - $t0 = [$t1] - $t0 = Lt(7 $t0) - if $t0 goto :bounds21 - Error("array index out of bounds") -bounds21: - $t0 = MulS(7 4) - $t0 = Add($t0 $t1) - [$t0+4] = 9 - $t0 = [$s0] - if $t0 goto :null23 - Error("null pointer") -null23: - $t1 = [$t0] - $t1 = Lt(8 $t1) - if $t1 goto :bounds22 - Error("array index out of bounds") -bounds22: - $t1 = MulS(8 4) - $t1 = Add($t1 $t0) - [$t1+4] = 19 - $t1 = [$s0] - if $t1 goto :null24 - Error("null pointer") -null24: - $t0 = [$t1] - $t0 = Lt(9 $t0) - if $t0 goto :bounds23 - Error("array index out of bounds") -bounds23: - $t0 = MulS(9 4) - $t0 = Add($t0 $t1) - [$t0+4] = 5 - $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 - diff --git a/vaporize/tests/QuickSort.regalloc b/vaporize/tests/QuickSort.regalloc deleted file mode 100644 index 02b4418..0000000 --- a/vaporize/tests/QuickSort.regalloc +++ /dev/null @@ -1,313 +0,0 @@ -func Main - in 0, out 0, callee-saves 0, spills 0 -Live In: - t.0: 11-12 15-17 - t.1: 16-17 - t.2: 18 -Linear Range: - t.0: 10-17 - t.1: 15-17 - t.2: 17-18 -Allocation: - t.0: t0 - t.1: t1 - t.2: t1 - -func QS.Start - in 0, out 0, callee-saves 1, spills 0 -Live In: - this: 22-36 - sz: 22-24 - t.0: 23-24 - aux01: 31-33 - t.1: 26-27 - t.2: 30 - t.3: 32-33 - t.4: 35-36 -Linear Range: - this: 21-36 (cross call) - sz: 21-24 - t.0: 22-24 - aux01: 30-33 - t.1: 25-27 - t.2: 29-30 - t.3: 31-33 - t.4: 34-36 -Allocation: - this: s0 - sz: t0 - t.0: t1 - aux01: t1 - t.1: t1 - t.2: t1 - t.3: t0 - t.4: t0 - -func QS.Sort - in 0, out 0, callee-saves 3, spills 0 -Live In: - this: 40-44 47-49 52-65 68-70 73-91 94-96 99-113 116-118 121-125 128-130 133-136 139-141 144-149 152-154 157-171 174-176 179-182 185-187 190-195 198-200 203-206 209-211 214-219 222-224 227-237 - left: 40-44 47-49 52-65 68-70 73-91 94-96 99-113 116-118 121-125 128-130 133-136 139-141 144-149 152-154 157-171 174-176 179-182 185-187 190-195 198-200 203-206 209-211 214-219 222-224 227-233 - right: 40-44 47-49 52-65 68-70 73-91 94-96 99-113 116-118 121-125 128-130 133-136 139-141 144-149 152-154 157-171 174-176 179-182 185-187 190-195 198-200 203-206 209-211 214-219 222-224 227-237 - t: 41-44 47-49 52-59 124-125 128-130 133-136 139-141 144-149 152-154 157-171 174-176 179-182 185-187 190-195 198-200 203-206 209-211 214-219 222-224 227-229 - t.0: 42 - t.1: 44 47-49 52-53 - t.2: 48-49 53-54 - v: 55-65 68-70 73-91 94-96 99-113 116-118 121-125 128-130 133-136 139-141 144-149 152-154 157-168 - i: 56-65 68-70 73-91 94-96 99-113 116-118 121-125 128-130 133-136 139-141 144-149 152-154 157-171 174-176 179-182 185-187 190-195 198-200 203-206 209-211 214-219 222-224 227-236 - j: 57-65 68-70 73-91 94-96 99-113 116-118 121-125 128-130 133-136 139-141 144-149 152-154 157-171 174-176 179 - cont01: 59 164 168 - cont02: 62 80 84 88 106 110 - t.3: 65 68-70 73-74 - t.4: 69-70 74-75 - aux03: 76 102 - t.5: 77 - t.6: 78 - t.7: 91 94-96 99-100 - t.8: 95-96 100-101 - t.9: 103 - t.10: 104 - t.11: 113 116-118 121-122 - t.12: 117-118 122-123 - t.13: 125 128-130 133-134 - t.14: 129-130 134-136 139-141 144-147 - t.15: 136 139-141 144-145 - t.16: 140-141 145-146 - t.17: 147 - t.18: 149 152-154 157-158 - t.19: 153-154 158-159 - t.20: 161 - t.21: 162 - t.22: 171 174-176 179-180 - t.23: 175-176 180-182 185-187 190-193 - t.24: 182 185-187 190-191 - t.25: 186-187 191-192 - t.26: 193 - t.27: 195 198-200 203-204 - t.28: 199-200 204-206 209-211 214-217 - t.29: 206 209-211 214-215 - t.30: 210-211 215-216 - t.31: 217 - t.32: 219 222-224 227-228 - t.33: 223-224 228-229 - t.34: 231-233 - t.35: 233 - nt: - t.36: 235-237 - t.37: 237 -Linear Range: - this: 39-237 (cross call) - left: 39-233 - right: 39-237 (cross call) - t: 40-229 - t.0: 41-42 - t.1: 43-53 - t.2: 47-54 - v: 54-168 - i: 55-236 (cross call) - j: 56-179 - cont01: 57-168 - cont02: 60-110 - t.3: 64-74 - t.4: 68-75 - aux03: 75-102 - t.5: 76-77 - t.6: 77-78 - t.7: 90-100 - t.8: 94-101 - t.9: 102-103 - t.10: 103-104 - t.11: 112-122 - t.12: 116-123 - t.13: 124-134 - t.14: 128-147 - t.15: 135-145 - t.16: 139-146 - t.17: 146-147 - t.18: 148-158 - t.19: 152-159 - t.20: 160-161 - t.21: 161-162 - t.22: 170-180 - t.23: 174-193 - t.24: 181-191 - t.25: 185-192 - t.26: 192-193 - t.27: 194-204 - t.28: 198-217 - t.29: 205-215 - t.30: 209-216 - t.31: 216-217 - t.32: 218-228 - t.33: 222-229 - t.34: 230-233 - t.35: 232-233 - t.36: 234-237 - t.37: 236-237 -Allocation: - this: s0 - left: t0 - right: s1 - t: t1 - t.0: t2 - t.1: t2 - t.2: t3 - v: t3 - i: s2 - j: t2 - cont01: t4 - cont02: t5 - t.3: t6 - t.4: t7 - aux03: t7 - t.5: t6 - t.6: t6 - t.7: t6 - t.8: t8 - t.9: t7 - t.10: t7 - t.11: t5 - t.12: t7 - t.13: t7 - t.14: t5 - t.15: t7 - t.16: t8 - t.17: t8 - t.18: t8 - t.19: t5 - t.20: t5 - t.21: t5 - t.22: t4 - t.23: t3 - t.24: t4 - t.25: t2 - t.26: t2 - t.27: t2 - t.28: t3 - t.29: t2 - t.30: t4 - t.31: t4 - t.32: t4 - t.33: t3 - t.34: t3 - t.35: t1 - t.36: t1 - t.37: t3 - -func QS.Print - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 245-251 254-256 259-264 - j: 247-251 254-256 259-264 - t.0: 248 - t.1: 249 - t.2: 251 254-256 259-260 - t.3: 255-256 260-261 - t.4: 262 -Linear Range: - this: 244-264 - j: 245-264 - t.0: 247-248 - t.1: 248-249 - t.2: 250-260 - t.3: 254-261 - t.4: 261-262 -Allocation: - this: t0 - j: t1 - t.0: t2 - t.1: t2 - t.2: t2 - t.3: t3 - t.4: t3 - -func QS.Init - in 0, out 0, callee-saves 1, spills 0 -Live In: - this: 269-273 276-278 281-285 288-290 293-297 300-302 305-309 312-314 317-321 324-326 329-333 336-338 341-345 348-350 353-357 360-362 365-369 372-374 377-380 - sz: 269-270 - t.0: 271 - t.1: 273 276-278 281-282 - t.2: 277-278 282-283 - t.3: 285 288-290 293-294 - t.4: 289-290 294-295 - t.5: 297 300-302 305-306 - t.6: 301-302 306-307 - t.7: 309 312-314 317-318 - t.8: 313-314 318-319 - t.9: 321 324-326 329-330 - t.10: 325-326 330-331 - t.11: 333 336-338 341-342 - t.12: 337-338 342-343 - t.13: 345 348-350 353-354 - t.14: 349-350 354-355 - t.15: 357 360-362 365-366 - t.16: 361-362 366-367 - t.17: 369 372-374 377-378 - t.18: 373-374 378-379 - t.19: 381 384-386 389-390 - t.20: 385-386 390-391 -Linear Range: - this: 268-380 (cross call) - sz: 268-270 - t.0: 270-271 - t.1: 272-282 - t.2: 276-283 - t.3: 284-294 - t.4: 288-295 - t.5: 296-306 - t.6: 300-307 - t.7: 308-318 - t.8: 312-319 - t.9: 320-330 - t.10: 324-331 - t.11: 332-342 - t.12: 336-343 - t.13: 344-354 - t.14: 348-355 - t.15: 356-366 - t.16: 360-367 - t.17: 368-378 - t.18: 372-379 - t.19: 380-390 - t.20: 384-391 -Allocation: - this: s0 - sz: t0 - t.0: t0 - t.1: t0 - t.2: t1 - t.3: t1 - t.4: t0 - t.5: t0 - t.6: t1 - t.7: t1 - t.8: t0 - t.9: t0 - t.10: t1 - t.11: t1 - t.12: t0 - t.13: t0 - t.14: t1 - t.15: t1 - t.16: t0 - t.17: t0 - t.18: t1 - t.19: t1 - t.20: t0 - -func AllocArray - in 0, out 0, callee-saves 0, spills 0 -Live In: - size: 395-398 - bytes: 396-397 - v: 398-399 -Linear Range: - size: 394-398 - bytes: 395-397 - v: 397-399 -Allocation: - size: t0 - bytes: t1 - v: t1 - diff --git a/vaporize/tests/QuickSort.vapor b/vaporize/tests/QuickSort.vapor deleted file mode 100644 index 3fe3798..0000000 --- a/vaporize/tests/QuickSort.vapor +++ /dev/null @@ -1,399 +0,0 @@ - -const vmt_QS - :QS.Start - :QS.Sort - :QS.Print - :QS.Init - - -func Main() - t.0 = HeapAllocZ(12) - [t.0] = :vmt_QS - if t.0 goto :null1 - Error("null pointer") - null1: - t.1 = [t.0] - t.1 = [t.1+0] - t.2 = call t.1(t.0 10) - PrintIntS(t.2) - ret - -func QS.Start(this sz) - t.0 = [this] - t.0 = [t.0+12] - aux01 = call t.0(this sz) - t.1 = [this] - t.1 = [t.1+8] - aux01 = call t.1(this) - PrintIntS(9999) - t.2 = [this+8] - aux01 = Sub(t.2 1) - t.3 = [this] - t.3 = [t.3+4] - aux01 = call t.3(this 0 aux01) - t.4 = [this] - t.4 = [t.4+8] - aux01 = call t.4(this) - ret 0 - -func QS.Sort(this left right) - t = 0 - t.0 = LtS(left right) - if0 t.0 goto :if1_else - t.1 = [this+4] - if t.1 goto :null2 - Error("null pointer") - null2: - t.2 = [t.1] - t.2 = Lt(right t.2) - if t.2 goto :bounds1 - Error("array index out of bounds") - bounds1: - t.2 = MulS(right 4) - t.2 = Add(t.2 t.1) - v = [t.2+4] - i = Sub(left 1) - j = right - cont01 = 1 - while1_top: - if0 cont01 goto :while1_end - cont02 = 1 - while2_top: - if0 cont02 goto :while2_end - i = Add(i 1) - t.3 = [this+4] - if t.3 goto :null3 - Error("null pointer") - null3: - t.4 = [t.3] - t.4 = Lt(i t.4) - if t.4 goto :bounds2 - Error("array index out of bounds") - bounds2: - t.4 = MulS(i 4) - t.4 = Add(t.4 t.3) - aux03 = [t.4+4] - t.5 = LtS(aux03 v) - t.6 = Sub(1 t.5) - if0 t.6 goto :if2_else - cont02 = 0 - goto :if2_end - if2_else: - cont02 = 1 - if2_end: - goto :while2_top - while2_end: - cont02 = 1 - while3_top: - if0 cont02 goto :while3_end - j = Sub(j 1) - t.7 = [this+4] - if t.7 goto :null4 - Error("null pointer") - null4: - t.8 = [t.7] - t.8 = Lt(j t.8) - if t.8 goto :bounds3 - Error("array index out of bounds") - bounds3: - t.8 = MulS(j 4) - t.8 = Add(t.8 t.7) - aux03 = [t.8+4] - t.9 = LtS(v aux03) - t.10 = Sub(1 t.9) - if0 t.10 goto :if3_else - cont02 = 0 - goto :if3_end - if3_else: - cont02 = 1 - if3_end: - goto :while3_top - while3_end: - t.11 = [this+4] - if t.11 goto :null5 - Error("null pointer") - null5: - t.12 = [t.11] - t.12 = Lt(i t.12) - if t.12 goto :bounds4 - Error("array index out of bounds") - bounds4: - t.12 = MulS(i 4) - t.12 = Add(t.12 t.11) - t = [t.12+4] - t.13 = [this+4] - if t.13 goto :null6 - Error("null pointer") - null6: - t.14 = [t.13] - t.14 = Lt(i t.14) - if t.14 goto :bounds5 - Error("array index out of bounds") - bounds5: - t.14 = MulS(i 4) - t.14 = Add(t.14 t.13) - t.15 = [this+4] - if t.15 goto :null7 - Error("null pointer") - null7: - t.16 = [t.15] - t.16 = Lt(j t.16) - if t.16 goto :bounds6 - Error("array index out of bounds") - bounds6: - t.16 = MulS(j 4) - t.16 = Add(t.16 t.15) - t.17 = [t.16+4] - [t.14+4] = t.17 - t.18 = [this+4] - if t.18 goto :null8 - Error("null pointer") - null8: - t.19 = [t.18] - t.19 = Lt(j t.19) - if t.19 goto :bounds7 - Error("array index out of bounds") - bounds7: - t.19 = MulS(j 4) - t.19 = Add(t.19 t.18) - [t.19+4] = t - t.20 = Add(i 1) - t.21 = LtS(j t.20) - if0 t.21 goto :if4_else - cont01 = 0 - goto :if4_end - if4_else: - cont01 = 1 - if4_end: - goto :while1_top - while1_end: - t.22 = [this+4] - if t.22 goto :null9 - Error("null pointer") - null9: - t.23 = [t.22] - t.23 = Lt(j t.23) - if t.23 goto :bounds8 - Error("array index out of bounds") - bounds8: - t.23 = MulS(j 4) - t.23 = Add(t.23 t.22) - t.24 = [this+4] - if t.24 goto :null10 - Error("null pointer") - null10: - t.25 = [t.24] - t.25 = Lt(i t.25) - if t.25 goto :bounds9 - Error("array index out of bounds") - bounds9: - t.25 = MulS(i 4) - t.25 = Add(t.25 t.24) - t.26 = [t.25+4] - [t.23+4] = t.26 - t.27 = [this+4] - if t.27 goto :null11 - Error("null pointer") - null11: - t.28 = [t.27] - t.28 = Lt(i t.28) - if t.28 goto :bounds10 - Error("array index out of bounds") - bounds10: - t.28 = MulS(i 4) - t.28 = Add(t.28 t.27) - t.29 = [this+4] - if t.29 goto :null12 - Error("null pointer") - null12: - t.30 = [t.29] - t.30 = Lt(right t.30) - if t.30 goto :bounds11 - Error("array index out of bounds") - bounds11: - t.30 = MulS(right 4) - t.30 = Add(t.30 t.29) - t.31 = [t.30+4] - [t.28+4] = t.31 - t.32 = [this+4] - if t.32 goto :null13 - Error("null pointer") - null13: - t.33 = [t.32] - t.33 = Lt(right t.33) - if t.33 goto :bounds12 - Error("array index out of bounds") - bounds12: - t.33 = MulS(right 4) - t.33 = Add(t.33 t.32) - [t.33+4] = t - t.34 = [this] - t.34 = [t.34+4] - t.35 = Sub(i 1) - nt = call t.34(this left t.35) - t.36 = [this] - t.36 = [t.36+4] - t.37 = Add(i 1) - nt = call t.36(this t.37 right) - goto :if1_end - if1_else: - nt = 0 - if1_end: - ret 0 - -func QS.Print(this) - j = 0 - while4_top: - t.0 = [this+8] - t.1 = LtS(j t.0) - if0 t.1 goto :while4_end - t.2 = [this+4] - if t.2 goto :null14 - Error("null pointer") - null14: - t.3 = [t.2] - t.3 = Lt(j t.3) - if t.3 goto :bounds13 - Error("array index out of bounds") - bounds13: - t.3 = MulS(j 4) - t.3 = Add(t.3 t.2) - t.4 = [t.3+4] - PrintIntS(t.4) - j = Add(j 1) - goto :while4_top - while4_end: - ret 0 - -func QS.Init(this sz) - [this+8] = sz - t.0 = call :AllocArray(sz) - [this+4] = t.0 - t.1 = [this+4] - if t.1 goto :null15 - Error("null pointer") - null15: - t.2 = [t.1] - t.2 = Lt(0 t.2) - if t.2 goto :bounds14 - Error("array index out of bounds") - bounds14: - t.2 = MulS(0 4) - t.2 = Add(t.2 t.1) - [t.2+4] = 20 - t.3 = [this+4] - if t.3 goto :null16 - Error("null pointer") - null16: - t.4 = [t.3] - t.4 = Lt(1 t.4) - if t.4 goto :bounds15 - Error("array index out of bounds") - bounds15: - t.4 = MulS(1 4) - t.4 = Add(t.4 t.3) - [t.4+4] = 7 - t.5 = [this+4] - if t.5 goto :null17 - Error("null pointer") - null17: - t.6 = [t.5] - t.6 = Lt(2 t.6) - if t.6 goto :bounds16 - Error("array index out of bounds") - bounds16: - t.6 = MulS(2 4) - t.6 = Add(t.6 t.5) - [t.6+4] = 12 - t.7 = [this+4] - if t.7 goto :null18 - Error("null pointer") - null18: - t.8 = [t.7] - t.8 = Lt(3 t.8) - if t.8 goto :bounds17 - Error("array index out of bounds") - bounds17: - t.8 = MulS(3 4) - t.8 = Add(t.8 t.7) - [t.8+4] = 18 - t.9 = [this+4] - if t.9 goto :null19 - Error("null pointer") - null19: - t.10 = [t.9] - t.10 = Lt(4 t.10) - if t.10 goto :bounds18 - Error("array index out of bounds") - bounds18: - t.10 = MulS(4 4) - t.10 = Add(t.10 t.9) - [t.10+4] = 2 - t.11 = [this+4] - if t.11 goto :null20 - Error("null pointer") - null20: - t.12 = [t.11] - t.12 = Lt(5 t.12) - if t.12 goto :bounds19 - Error("array index out of bounds") - bounds19: - t.12 = MulS(5 4) - t.12 = Add(t.12 t.11) - [t.12+4] = 11 - t.13 = [this+4] - if t.13 goto :null21 - Error("null pointer") - null21: - t.14 = [t.13] - t.14 = Lt(6 t.14) - if t.14 goto :bounds20 - Error("array index out of bounds") - bounds20: - t.14 = MulS(6 4) - t.14 = Add(t.14 t.13) - [t.14+4] = 6 - t.15 = [this+4] - if t.15 goto :null22 - Error("null pointer") - null22: - t.16 = [t.15] - t.16 = Lt(7 t.16) - if t.16 goto :bounds21 - Error("array index out of bounds") - bounds21: - t.16 = MulS(7 4) - t.16 = Add(t.16 t.15) - [t.16+4] = 9 - t.17 = [this+4] - if t.17 goto :null23 - Error("null pointer") - null23: - t.18 = [t.17] - t.18 = Lt(8 t.18) - if t.18 goto :bounds22 - Error("array index out of bounds") - bounds22: - t.18 = MulS(8 4) - t.18 = Add(t.18 t.17) - [t.18+4] = 19 - t.19 = [this+4] - if t.19 goto :null24 - Error("null pointer") - null24: - t.20 = [t.19] - t.20 = Lt(9 t.20) - if t.20 goto :bounds23 - Error("array index out of bounds") - bounds23: - t.20 = MulS(9 4) - t.20 = Add(t.20 t.19) - [t.20+4] = 5 - ret 0 - -func AllocArray(size) - bytes = MulS(size 4) - bytes = Add(bytes 4) - v = HeapAllocZ(bytes) - [v] = size - ret v diff --git a/vaporize/tests/QuickSort.vaporm b/vaporize/tests/QuickSort.vaporm deleted file mode 100644 index 2aaa582..0000000 --- a/vaporize/tests/QuickSort.vaporm +++ /dev/null @@ -1,439 +0,0 @@ -const vmt_QS - :QS.Start - :QS.Sort - :QS.Print - :QS.Init - -func Main [in 0, out 0, local 0] - $t0 = HeapAllocZ(12) - [$t0] = :vmt_QS - if $t0 goto :null1 - Error("null pointer") -null1: - $t1 = [$t0] - $t1 = [$t1] - $a0 = $t0 - $a1 = 10 - call $t1 - $t1 = $v0 - PrintIntS($t1) - ret - -func QS.Start [in 0, out 0, local 1] - local[0] = $s0 - $s0 = $a0 - $t0 = $a1 - $t1 = [$s0] - $t1 = [$t1+12] - $a0 = $s0 - $a1 = $t0 - call $t1 - $t1 = [$s0] - $t1 = [$t1+8] - $a0 = $s0 - call $t1 - PrintIntS(9999) - $t1 = [$s0+8] - $t1 = Sub($t1 1) - $t0 = [$s0] - $t0 = [$t0+4] - $a0 = $s0 - $a1 = 0 - $a2 = $t1 - call $t0 - $t0 = [$s0] - $t0 = [$t0+8] - $a0 = $s0 - call $t0 - $v0 = 0 - $s0 = local[0] - ret - -func QS.Sort [in 0, out 0, local 3] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - $s0 = $a0 - $t0 = $a1 - $s1 = $a2 - $t1 = 0 - $t2 = LtS($t0 $s1) - if0 $t2 goto :if1_else - $t2 = [$s0+4] - if $t2 goto :null2 - Error("null pointer") -null2: - $t3 = [$t2] - $t3 = Lt($s1 $t3) - if $t3 goto :bounds1 - Error("array index out of bounds") -bounds1: - $t3 = MulS($s1 4) - $t3 = Add($t3 $t2) - $t3 = [$t3+4] - $s2 = Sub($t0 1) - $t2 = $s1 - $t4 = 1 -while1_top: - if0 $t4 goto :while1_end - $t5 = 1 -while2_top: - if0 $t5 goto :while2_end - $s2 = Add($s2 1) - $t6 = [$s0+4] - if $t6 goto :null3 - Error("null pointer") -null3: - $t7 = [$t6] - $t7 = Lt($s2 $t7) - if $t7 goto :bounds2 - Error("array index out of bounds") -bounds2: - $t7 = MulS($s2 4) - $t7 = Add($t7 $t6) - $t7 = [$t7+4] - $t6 = LtS($t7 $t3) - $t6 = Sub(1 $t6) - if0 $t6 goto :if2_else - $t5 = 0 - goto :if2_end -if2_else: - $t5 = 1 -if2_end: - goto :while2_top -while2_end: - $t5 = 1 -while3_top: - if0 $t5 goto :while3_end - $t2 = Sub($t2 1) - $t6 = [$s0+4] - if $t6 goto :null4 - Error("null pointer") -null4: - $t8 = [$t6] - $t8 = Lt($t2 $t8) - if $t8 goto :bounds3 - Error("array index out of bounds") -bounds3: - $t8 = MulS($t2 4) - $t8 = Add($t8 $t6) - $t7 = [$t8+4] - $t7 = LtS($t3 $t7) - $t7 = Sub(1 $t7) - if0 $t7 goto :if3_else - $t5 = 0 - goto :if3_end -if3_else: - $t5 = 1 -if3_end: - goto :while3_top -while3_end: - $t5 = [$s0+4] - if $t5 goto :null5 - Error("null pointer") -null5: - $t7 = [$t5] - $t7 = Lt($s2 $t7) - if $t7 goto :bounds4 - Error("array index out of bounds") -bounds4: - $t7 = MulS($s2 4) - $t7 = Add($t7 $t5) - $t1 = [$t7+4] - $t7 = [$s0+4] - if $t7 goto :null6 - Error("null pointer") -null6: - $t5 = [$t7] - $t5 = Lt($s2 $t5) - if $t5 goto :bounds5 - Error("array index out of bounds") -bounds5: - $t5 = MulS($s2 4) - $t5 = Add($t5 $t7) - $t7 = [$s0+4] - if $t7 goto :null7 - Error("null pointer") -null7: - $t8 = [$t7] - $t8 = Lt($t2 $t8) - if $t8 goto :bounds6 - Error("array index out of bounds") -bounds6: - $t8 = MulS($t2 4) - $t8 = Add($t8 $t7) - $t8 = [$t8+4] - [$t5+4] = $t8 - $t8 = [$s0+4] - if $t8 goto :null8 - Error("null pointer") -null8: - $t5 = [$t8] - $t5 = Lt($t2 $t5) - if $t5 goto :bounds7 - Error("array index out of bounds") -bounds7: - $t5 = MulS($t2 4) - $t5 = Add($t5 $t8) - [$t5+4] = $t1 - $t5 = Add($s2 1) - $t5 = LtS($t2 $t5) - if0 $t5 goto :if4_else - $t4 = 0 - goto :if4_end -if4_else: - $t4 = 1 -if4_end: - goto :while1_top -while1_end: - $t4 = [$s0+4] - if $t4 goto :null9 - Error("null pointer") -null9: - $t3 = [$t4] - $t3 = Lt($t2 $t3) - if $t3 goto :bounds8 - Error("array index out of bounds") -bounds8: - $t3 = MulS($t2 4) - $t3 = Add($t3 $t4) - $t4 = [$s0+4] - if $t4 goto :null10 - Error("null pointer") -null10: - $t2 = [$t4] - $t2 = Lt($s2 $t2) - if $t2 goto :bounds9 - Error("array index out of bounds") -bounds9: - $t2 = MulS($s2 4) - $t2 = Add($t2 $t4) - $t2 = [$t2+4] - [$t3+4] = $t2 - $t2 = [$s0+4] - if $t2 goto :null11 - Error("null pointer") -null11: - $t3 = [$t2] - $t3 = Lt($s2 $t3) - if $t3 goto :bounds10 - Error("array index out of bounds") -bounds10: - $t3 = MulS($s2 4) - $t3 = Add($t3 $t2) - $t2 = [$s0+4] - if $t2 goto :null12 - Error("null pointer") -null12: - $t4 = [$t2] - $t4 = Lt($s1 $t4) - if $t4 goto :bounds11 - Error("array index out of bounds") -bounds11: - $t4 = MulS($s1 4) - $t4 = Add($t4 $t2) - $t4 = [$t4+4] - [$t3+4] = $t4 - $t4 = [$s0+4] - if $t4 goto :null13 - Error("null pointer") -null13: - $t3 = [$t4] - $t3 = Lt($s1 $t3) - if $t3 goto :bounds12 - Error("array index out of bounds") -bounds12: - $t3 = MulS($s1 4) - $t3 = Add($t3 $t4) - [$t3+4] = $t1 - $t3 = [$s0] - $t3 = [$t3+4] - $t1 = Sub($s2 1) - $a0 = $s0 - $a1 = $t0 - $a2 = $t1 - call $t3 - $t1 = [$s0] - $t1 = [$t1+4] - $t3 = Add($s2 1) - $a0 = $s0 - $a1 = $t3 - $a2 = $s1 - call $t1 - goto :if1_end -if1_else: -if1_end: - $v0 = 0 - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - ret - -func QS.Print [in 0, out 0, local 0] - $t0 = $a0 - $t1 = 0 -while4_top: - $t2 = [$t0+8] - $t2 = LtS($t1 $t2) - if0 $t2 goto :while4_end - $t2 = [$t0+4] - if $t2 goto :null14 - Error("null pointer") -null14: - $t3 = [$t2] - $t3 = Lt($t1 $t3) - if $t3 goto :bounds13 - Error("array index out of bounds") -bounds13: - $t3 = MulS($t1 4) - $t3 = Add($t3 $t2) - $t3 = [$t3+4] - PrintIntS($t3) - $t1 = Add($t1 1) - goto :while4_top -while4_end: - $v0 = 0 - ret - -func QS.Init [in 0, out 0, local 1] - local[0] = $s0 - $s0 = $a0 - $t0 = $a1 - [$s0+8] = $t0 - $a0 = $t0 - call :AllocArray - $t0 = $v0 - [$s0+4] = $t0 - $t0 = [$s0+4] - if $t0 goto :null15 - Error("null pointer") -null15: - $t1 = [$t0] - $t1 = Lt(0 $t1) - if $t1 goto :bounds14 - Error("array index out of bounds") -bounds14: - $t1 = MulS(0 4) - $t1 = Add($t1 $t0) - [$t1+4] = 20 - $t1 = [$s0+4] - if $t1 goto :null16 - Error("null pointer") -null16: - $t0 = [$t1] - $t0 = Lt(1 $t0) - if $t0 goto :bounds15 - Error("array index out of bounds") -bounds15: - $t0 = MulS(1 4) - $t0 = Add($t0 $t1) - [$t0+4] = 7 - $t0 = [$s0+4] - if $t0 goto :null17 - Error("null pointer") -null17: - $t1 = [$t0] - $t1 = Lt(2 $t1) - if $t1 goto :bounds16 - Error("array index out of bounds") -bounds16: - $t1 = MulS(2 4) - $t1 = Add($t1 $t0) - [$t1+4] = 12 - $t1 = [$s0+4] - if $t1 goto :null18 - Error("null pointer") -null18: - $t0 = [$t1] - $t0 = Lt(3 $t0) - if $t0 goto :bounds17 - Error("array index out of bounds") -bounds17: - $t0 = MulS(3 4) - $t0 = Add($t0 $t1) - [$t0+4] = 18 - $t0 = [$s0+4] - if $t0 goto :null19 - Error("null pointer") -null19: - $t1 = [$t0] - $t1 = Lt(4 $t1) - if $t1 goto :bounds18 - Error("array index out of bounds") -bounds18: - $t1 = MulS(4 4) - $t1 = Add($t1 $t0) - [$t1+4] = 2 - $t1 = [$s0+4] - if $t1 goto :null20 - Error("null pointer") -null20: - $t0 = [$t1] - $t0 = Lt(5 $t0) - if $t0 goto :bounds19 - Error("array index out of bounds") -bounds19: - $t0 = MulS(5 4) - $t0 = Add($t0 $t1) - [$t0+4] = 11 - $t0 = [$s0+4] - if $t0 goto :null21 - Error("null pointer") -null21: - $t1 = [$t0] - $t1 = Lt(6 $t1) - if $t1 goto :bounds20 - Error("array index out of bounds") -bounds20: - $t1 = MulS(6 4) - $t1 = Add($t1 $t0) - [$t1+4] = 6 - $t1 = [$s0+4] - if $t1 goto :null22 - Error("null pointer") -null22: - $t0 = [$t1] - $t0 = Lt(7 $t0) - if $t0 goto :bounds21 - Error("array index out of bounds") -bounds21: - $t0 = MulS(7 4) - $t0 = Add($t0 $t1) - [$t0+4] = 9 - $t0 = [$s0+4] - if $t0 goto :null23 - Error("null pointer") -null23: - $t1 = [$t0] - $t1 = Lt(8 $t1) - if $t1 goto :bounds22 - Error("array index out of bounds") -bounds22: - $t1 = MulS(8 4) - $t1 = Add($t1 $t0) - [$t1+4] = 19 - $t1 = [$s0+4] - if $t1 goto :null24 - Error("null pointer") -null24: - $t0 = [$t1] - $t0 = Lt(9 $t0) - if $t0 goto :bounds23 - Error("array index out of bounds") -bounds23: - $t0 = MulS(9 4) - $t0 = Add($t0 $t1) - [$t0+4] = 5 - $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 - diff --git a/vaporize/tests/ShortCircuit.opt.vapor b/vaporize/tests/ShortCircuit.opt.vapor deleted file mode 100644 index 8275acd..0000000 --- a/vaporize/tests/ShortCircuit.opt.vapor +++ /dev/null @@ -1,215 +0,0 @@ - -const vmt_Main - :Main.run1 - :Main.run2 - :Main.run3 - :Main.run4 - :Main.if1 - :Main.if2 - :Main.if3 - :Main.if4 - :Main.if5 - :Main.if6 - - -func Main() - PrintIntS(1) - ret - -func Main.run1(this a b c) - if0 a goto :ss2_else - t.1 = b - goto :ss2_end - ss2_else: - t.1 = 0 - ss2_end: - if0 t.1 goto :ss1_else - t.0 = 1 - goto :ss1_end - ss1_else: - t.0 = c - ss1_end: - ret t.0 - -func Main.run2(this a b c) - if0 a goto :ss3_else - if0 b goto :ss4_else - t.1 = 1 - goto :ss4_end - ss4_else: - t.1 = c - ss4_end: - t.0 = t.1 - goto :ss3_end - ss3_else: - t.0 = 0 - ss3_end: - ret t.0 - -func Main.run3(this a b c) - if0 a goto :ss6_else - t.1 = 1 - goto :ss6_end - ss6_else: - t.1 = b - ss6_end: - if0 t.1 goto :ss5_else - t.0 = c - goto :ss5_end - ss5_else: - t.0 = 0 - ss5_end: - ret t.0 - -func Main.run4(this a b c) - if0 a goto :ss7_else - t.0 = 1 - goto :ss7_end - ss7_else: - if0 b goto :ss8_else - t.1 = c - goto :ss8_end - ss8_else: - t.1 = 0 - ss8_end: - t.0 = t.1 - ss7_end: - ret t.0 - -func Main.if1(this a b c) - if0 a goto :ss10_else - t.1 = b - goto :ss10_end - ss10_else: - t.1 = 0 - ss10_end: - if0 t.1 goto :ss9_else - t.0 = 1 - goto :ss9_end - ss9_else: - t.0 = c - ss9_end: - if0 t.0 goto :if1_else - if1_then: - PrintIntS(1) - goto :if1_end - if1_else: - if1_end: - ret 1 - -func Main.if2(this a b c) - if0 a goto :ss11_else - if0 b goto :ss12_else - t.1 = 1 - goto :ss12_end - ss12_else: - t.1 = c - ss12_end: - t.0 = t.1 - goto :ss11_end - ss11_else: - t.0 = 0 - ss11_end: - if0 t.0 goto :if2_else - if2_then: - PrintIntS(2) - goto :if2_end - if2_else: - if2_end: - ret 1 - -func Main.if3(this a b c) - if0 a goto :ss14_else - t.1 = 1 - goto :ss14_end - ss14_else: - t.1 = b - ss14_end: - if0 t.1 goto :ss13_else - t.0 = c - goto :ss13_end - ss13_else: - t.0 = 0 - ss13_end: - if0 t.0 goto :if3_else - if3_then: - PrintIntS(3) - goto :if3_end - if3_else: - if3_end: - ret 1 - -func Main.if4(this a b c) - if0 a goto :ss15_else - t.0 = 1 - goto :ss15_end - ss15_else: - if0 b goto :ss16_else - t.1 = c - goto :ss16_end - ss16_else: - t.1 = 0 - ss16_end: - t.0 = t.1 - ss15_end: - if0 t.0 goto :if4_else - if4_then: - PrintIntS(4) - goto :if4_end - if4_else: - if4_end: - ret 1 - -func Main.if5(this a b c d) - if0 a goto :ss19_else - t.2 = 1 - goto :ss19_end - ss19_else: - t.2 = b - ss19_end: - if0 t.2 goto :ss18_else - t.1 = 1 - goto :ss18_end - ss18_else: - t.1 = c - ss18_end: - if0 t.1 goto :ss17_else - t.0 = 1 - goto :ss17_end - ss17_else: - t.0 = d - ss17_end: - if0 t.0 goto :if5_else - if5_then: - PrintIntS(5) - goto :if5_end - if5_else: - if5_end: - ret 1 - -func Main.if6(this a b c d) - if0 a goto :ss22_else - t.2 = b - goto :ss22_end - ss22_else: - t.2 = 0 - ss22_end: - if0 t.2 goto :ss21_else - t.1 = c - goto :ss21_end - ss21_else: - t.1 = 0 - ss21_end: - if0 t.1 goto :ss20_else - t.0 = d - goto :ss20_end - ss20_else: - t.0 = 0 - ss20_end: - if0 t.0 goto :if6_else - if6_then: - PrintIntS(6) - goto :if6_end - if6_else: - if6_end: - ret 1 diff --git a/vaporize/tests/ShortCircuit.vapor b/vaporize/tests/ShortCircuit.vapor deleted file mode 100644 index 31cc088..0000000 --- a/vaporize/tests/ShortCircuit.vapor +++ /dev/null @@ -1,128 +0,0 @@ - -const empty_Main - - -func Main() - PrintIntS(1) - ret - -func Main.run1(this a b c) - if0 a goto :ss1_else - if0 b goto :ss1_else - t.0 = 1 - goto :ss1_end - ss1_else: - t.0 = c - ss1_end: - ret t.0 - -func Main.run2(this a b c) - if0 a goto :ss3_else - if0 b goto :ss4_else - t.1 = 1 - goto :ss4_end - ss4_else: - t.1 = c - ss4_end: - t.0 = t.1 - goto :ss3_end - ss3_else: - t.0 = 0 - ss3_end: - ret t.0 - -func Main.run3(this a b c) - if a goto :ss5_then - if0 b goto :ss5_else - ss5_then: - t.0 = c - goto :ss5_end - ss5_else: - t.0 = 0 - ss5_end: - ret t.0 - -func Main.run4(this a b c) - if0 a goto :ss7_else - t.0 = 1 - goto :ss7_end - ss7_else: - if0 b goto :ss8_else - t.1 = c - goto :ss8_end - ss8_else: - t.1 = 0 - ss8_end: - t.0 = t.1 - ss7_end: - ret t.0 - -func Main.if1(this a b c) - if0 a goto :ss9 - if b goto :if1_then - ss9: - if0 c goto :if1_else - if1_then: - PrintIntS(1) - goto :if1_end - if1_else: - if1_end: - ret 1 - -func Main.if2(this a b c) - if0 a goto :if2_else - if b goto :if2_then - if0 c goto :if2_else - if2_then: - PrintIntS(2) - goto :if2_end - if2_else: - if2_end: - ret 1 - -func Main.if3(this a b c) - if a goto :ss13 - if0 b goto :if3_else - ss13: - if0 c goto :if3_else - if3_then: - PrintIntS(3) - goto :if3_end - if3_else: - if3_end: - ret 1 - -func Main.if4(this a b c) - if a goto :if4_then - if0 b goto :if4_else - if0 c goto :if4_else - if4_then: - PrintIntS(4) - goto :if4_end - if4_else: - if4_end: - ret 1 - -func Main.if5(this a b c d) - if a goto :if5_then - if b goto :if5_then - if c goto :if5_then - if0 d goto :if5_else - if5_then: - PrintIntS(5) - goto :if5_end - if5_else: - if5_end: - ret 1 - -func Main.if6(this a b c d) - if0 a goto :if6_else - if0 b goto :if6_else - if0 c goto :if6_else - if0 d goto :if6_else - if6_then: - PrintIntS(6) - goto :if6_end - if6_else: - if6_end: - ret 1 diff --git a/vaporize/tests/TreeVisitor.names.vaporm b/vaporize/tests/TreeVisitor.names.vaporm deleted file mode 100644 index 0eefb6e..0000000 --- a/vaporize/tests/TreeVisitor.names.vaporm +++ /dev/null @@ -1,1174 +0,0 @@ -const vmt_TV - :TV.Start - -const vmt_Tree - :Tree.Init - :Tree.SetRight - :Tree.SetLeft - :Tree.GetRight - :Tree.GetLeft - :Tree.GetKey - :Tree.SetKey - :Tree.GetHas_Right - :Tree.GetHas_Left - :Tree.SetHas_Left - :Tree.SetHas_Right - :Tree.Compare - :Tree.Insert - :Tree.Delete - :Tree.Remove - :Tree.RemoveRight - :Tree.RemoveLeft - :Tree.Search - :Tree.Print - :Tree.RecPrint - :Tree.accept - -const vmt_Visitor - :Visitor.visit - -const vmt_MyVisitor - :MyVisitor.visit - -func Main [in 0, out 0, local 0] - $t0{t.0} = HeapAllocZ(4) - [$t0{t.0}] = :vmt_TV - if $t0{t.0} goto :null1 - Error("null pointer") -null1: - $t1{t.1} = [$t0{t.0}] - $t1{t.1} = [$t1{t.1}] - $a0 = $t0{t.0} - call $t1{t.1} - $t1{t.2} = $v0 - PrintIntS($t1{t.2}) - ret - -func TV.Start [in 0, out 0, local 1] - local[0] = $s0 - $t0{t.0} = HeapAllocZ(28) - [$t0{t.0}] = :vmt_Tree - $s0{root} = $t0{t.0} - if $s0{root} goto :null2 - Error("null pointer") -null2: - $t0{t.1} = [$s0{root}] - $t0{t.1} = [$t0{t.1}] - $a0 = $s0{root} - $a1 = 16 - call $t0{t.1} - if $s0{root} goto :null3 - Error("null pointer") -null3: - $t0{t.2} = [$s0{root}] - $t0{t.2} = [$t0{t.2}+72] - $a0 = $s0{root} - call $t0{t.2} - PrintIntS(100000000) - if $s0{root} goto :null4 - Error("null pointer") -null4: - $t0{t.3} = [$s0{root}] - $t0{t.3} = [$t0{t.3}+48] - $a0 = $s0{root} - $a1 = 8 - call $t0{t.3} - if $s0{root} goto :null5 - Error("null pointer") -null5: - $t0{t.4} = [$s0{root}] - $t0{t.4} = [$t0{t.4}+48] - $a0 = $s0{root} - $a1 = 24 - call $t0{t.4} - if $s0{root} goto :null6 - Error("null pointer") -null6: - $t0{t.5} = [$s0{root}] - $t0{t.5} = [$t0{t.5}+48] - $a0 = $s0{root} - $a1 = 4 - call $t0{t.5} - if $s0{root} goto :null7 - Error("null pointer") -null7: - $t0{t.6} = [$s0{root}] - $t0{t.6} = [$t0{t.6}+48] - $a0 = $s0{root} - $a1 = 12 - call $t0{t.6} - if $s0{root} goto :null8 - Error("null pointer") -null8: - $t0{t.7} = [$s0{root}] - $t0{t.7} = [$t0{t.7}+48] - $a0 = $s0{root} - $a1 = 20 - call $t0{t.7} - if $s0{root} goto :null9 - Error("null pointer") -null9: - $t0{t.8} = [$s0{root}] - $t0{t.8} = [$t0{t.8}+48] - $a0 = $s0{root} - $a1 = 28 - call $t0{t.8} - if $s0{root} goto :null10 - Error("null pointer") -null10: - $t0{t.9} = [$s0{root}] - $t0{t.9} = [$t0{t.9}+48] - $a0 = $s0{root} - $a1 = 14 - call $t0{t.9} - if $s0{root} goto :null11 - Error("null pointer") -null11: - $t0{t.10} = [$s0{root}] - $t0{t.10} = [$t0{t.10}+72] - $a0 = $s0{root} - call $t0{t.10} - PrintIntS(100000000) - $t0{t.11} = HeapAllocZ(12) - [$t0{t.11}] = :vmt_MyVisitor - $t0{v} = $t0{t.11} - PrintIntS(50000000) - if $s0{root} goto :null12 - Error("null pointer") -null12: - $t1{t.12} = [$s0{root}] - $t1{t.12} = [$t1{t.12}+80] - $a0 = $s0{root} - $a1 = $t0{v} - call $t1{t.12} - PrintIntS(100000000) - if $s0{root} goto :null13 - Error("null pointer") -null13: - $t1{t.13} = [$s0{root}] - $t1{t.13} = [$t1{t.13}+68] - $a0 = $s0{root} - $a1 = 24 - call $t1{t.13} - $t1{t.14} = $v0 - PrintIntS($t1{t.14}) - if $s0{root} goto :null14 - Error("null pointer") -null14: - $t1{t.15} = [$s0{root}] - $t1{t.15} = [$t1{t.15}+68] - $a0 = $s0{root} - $a1 = 12 - call $t1{t.15} - $t1{t.16} = $v0 - PrintIntS($t1{t.16}) - if $s0{root} goto :null15 - Error("null pointer") -null15: - $t1{t.17} = [$s0{root}] - $t1{t.17} = [$t1{t.17}+68] - $a0 = $s0{root} - $a1 = 16 - call $t1{t.17} - $t1{t.18} = $v0 - PrintIntS($t1{t.18}) - if $s0{root} goto :null16 - Error("null pointer") -null16: - $t1{t.19} = [$s0{root}] - $t1{t.19} = [$t1{t.19}+68] - $a0 = $s0{root} - $a1 = 50 - call $t1{t.19} - $t1{t.20} = $v0 - PrintIntS($t1{t.20}) - if $s0{root} goto :null17 - Error("null pointer") -null17: - $t1{t.21} = [$s0{root}] - $t1{t.21} = [$t1{t.21}+68] - $a0 = $s0{root} - $a1 = 12 - call $t1{t.21} - $t1{t.22} = $v0 - PrintIntS($t1{t.22}) - if $s0{root} goto :null18 - Error("null pointer") -null18: - $t1{t.23} = [$s0{root}] - $t1{t.23} = [$t1{t.23}+52] - $a0 = $s0{root} - $a1 = 12 - call $t1{t.23} - if $s0{root} goto :null19 - Error("null pointer") -null19: - $t1{t.24} = [$s0{root}] - $t1{t.24} = [$t1{t.24}+72] - $a0 = $s0{root} - call $t1{t.24} - if $s0{root} goto :null20 - Error("null pointer") -null20: - $t1{t.25} = [$s0{root}] - $t1{t.25} = [$t1{t.25}+68] - $a0 = $s0{root} - $a1 = 12 - call $t1{t.25} - $t1{t.26} = $v0 - PrintIntS($t1{t.26}) - $v0 = 0 - $s0 = local[0] - ret - -func Tree.Init [in 0, out 0, local 0] - $t0{this} = $a0 - $t1{v_key} = $a1 - [$t0{this}+12] = $t1{v_key} - [$t0{this}+16] = 0 - [$t0{this}+20] = 0 - $v0 = 1 - ret - -func Tree.SetRight [in 0, out 0, local 0] - $t0{this} = $a0 - $t1{rn} = $a1 - [$t0{this}+8] = $t1{rn} - $v0 = 1 - ret - -func Tree.SetLeft [in 0, out 0, local 0] - $t0{this} = $a0 - $t1{ln} = $a1 - [$t0{this}+4] = $t1{ln} - $v0 = 1 - ret - -func Tree.GetRight [in 0, out 0, local 0] - $t0{this} = $a0 - $t0{t.0} = [$t0{this}+8] - $v0 = $t0{t.0} - ret - -func Tree.GetLeft [in 0, out 0, local 0] - $t0{this} = $a0 - $t0{t.0} = [$t0{this}+4] - $v0 = $t0{t.0} - ret - -func Tree.GetKey [in 0, out 0, local 0] - $t0{this} = $a0 - $t0{t.0} = [$t0{this}+12] - $v0 = $t0{t.0} - ret - -func Tree.SetKey [in 0, out 0, local 0] - $t0{this} = $a0 - $t1{v_key} = $a1 - [$t0{this}+12] = $t1{v_key} - $v0 = 1 - ret - -func Tree.GetHas_Right [in 0, out 0, local 0] - $t0{this} = $a0 - $t0{t.0} = [$t0{this}+20] - $v0 = $t0{t.0} - ret - -func Tree.GetHas_Left [in 0, out 0, local 0] - $t0{this} = $a0 - $t0{t.0} = [$t0{this}+16] - $v0 = $t0{t.0} - ret - -func Tree.SetHas_Left [in 0, out 0, local 0] - $t0{this} = $a0 - $t1{val} = $a1 - [$t0{this}+16] = $t1{val} - $v0 = 1 - ret - -func Tree.SetHas_Right [in 0, out 0, local 0] - $t0{this} = $a0 - $t1{val} = $a1 - [$t0{this}+20] = $t1{val} - $v0 = 1 - ret - -func Tree.Compare [in 0, out 0, local 0] - $t0{num1} = $a1 - $t1{num2} = $a2 - $t2{nti} = Add($t1{num2} 1) - $t1{t.0} = LtS($t0{num1} $t1{num2}) - if0 $t1{t.0} goto :if1_else - $t1{ntb} = 0 - goto :if1_end -if1_else: - $t2{t.1} = LtS($t0{num1} $t2{nti}) - $t2{t.2} = Sub(1 $t2{t.1}) - if0 $t2{t.2} goto :if2_else - $t1{ntb} = 0 - goto :if2_end -if2_else: - $t1{ntb} = 1 -if2_end: -if1_end: - $v0 = $t1{ntb} - ret - -func Tree.Insert [in 0, out 0, local 4] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - local[3] = $s3 - $s0{this} = $a0 - $s1{v_key} = $a1 - $t0{t.0} = HeapAllocZ(28) - [$t0{t.0}] = :vmt_Tree - $s2{new_node} = $t0{t.0} - if $s2{new_node} goto :null21 - Error("null pointer") -null21: - $t0{t.1} = [$s2{new_node}] - $t0{t.1} = [$t0{t.1}] - $a0 = $s2{new_node} - $a1 = $s1{v_key} - call $t0{t.1} - $s0{current_node} = $s0{this} - $s3{cont} = 1 -while1_top: - if0 $s3{cont} goto :while1_end - if $s0{current_node} goto :null22 - Error("null pointer") -null22: - $t0{t.2} = [$s0{current_node}] - $t0{t.2} = [$t0{t.2}+20] - $a0 = $s0{current_node} - call $t0{t.2} - $t0{key_aux} = $v0 - $t0{t.3} = LtS($s1{v_key} $t0{key_aux}) - if0 $t0{t.3} goto :if3_else - if $s0{current_node} goto :null23 - Error("null pointer") -null23: - $t0{t.4} = [$s0{current_node}] - $t0{t.4} = [$t0{t.4}+32] - $a0 = $s0{current_node} - call $t0{t.4} - $t0{t.5} = $v0 - if0 $t0{t.5} goto :if4_else - if $s0{current_node} goto :null24 - Error("null pointer") -null24: - $t0{t.6} = [$s0{current_node}] - $t0{t.6} = [$t0{t.6}+16] - $a0 = $s0{current_node} - call $t0{t.6} - $s0{current_node} = $v0 - goto :if4_end -if4_else: - $s3{cont} = 0 - if $s0{current_node} goto :null25 - Error("null pointer") -null25: - $t0{t.7} = [$s0{current_node}] - $t0{t.7} = [$t0{t.7}+36] - $a0 = $s0{current_node} - $a1 = 1 - call $t0{t.7} - if $s0{current_node} goto :null26 - Error("null pointer") -null26: - $t0{t.8} = [$s0{current_node}] - $t0{t.8} = [$t0{t.8}+8] - $a0 = $s0{current_node} - $a1 = $s2{new_node} - call $t0{t.8} -if4_end: - goto :if3_end -if3_else: - if $s0{current_node} goto :null27 - Error("null pointer") -null27: - $t0{t.9} = [$s0{current_node}] - $t0{t.9} = [$t0{t.9}+28] - $a0 = $s0{current_node} - call $t0{t.9} - $t0{t.10} = $v0 - if0 $t0{t.10} goto :if5_else - if $s0{current_node} goto :null28 - Error("null pointer") -null28: - $t0{t.11} = [$s0{current_node}] - $t0{t.11} = [$t0{t.11}+12] - $a0 = $s0{current_node} - call $t0{t.11} - $s0{current_node} = $v0 - goto :if5_end -if5_else: - $s3{cont} = 0 - if $s0{current_node} goto :null29 - Error("null pointer") -null29: - $t0{t.12} = [$s0{current_node}] - $t0{t.12} = [$t0{t.12}+40] - $a0 = $s0{current_node} - $a1 = 1 - call $t0{t.12} - if $s0{current_node} goto :null30 - Error("null pointer") -null30: - $t0{t.13} = [$s0{current_node}] - $t0{t.13} = [$t0{t.13}+4] - $a0 = $s0{current_node} - $a1 = $s2{new_node} - call $t0{t.13} -if5_end: -if3_end: - goto :while1_top -while1_end: - $v0 = 1 - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - $s3 = local[3] - ret - -func Tree.Delete [in 0, out 0, local 7] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - local[3] = $s3 - local[4] = $s4 - local[5] = $s5 - local[6] = $s6 - $s0{this} = $a0 - $s1{v_key} = $a1 - $s2{current_node} = $s0{this} - $s3{parent_node} = $s0{this} - $s4{cont} = 1 - $s5{found} = 0 - $s6{is_root} = 1 -while2_top: - if0 $s4{cont} goto :while2_end - if $s2{current_node} goto :null31 - Error("null pointer") -null31: - $t0{t.0} = [$s2{current_node}] - $t0{t.0} = [$t0{t.0}+20] - $a0 = $s2{current_node} - call $t0{t.0} - $t0{key_aux} = $v0 - $t1{t.1} = LtS($s1{v_key} $t0{key_aux}) - if0 $t1{t.1} goto :if6_else - if $s2{current_node} goto :null32 - Error("null pointer") -null32: - $t1{t.2} = [$s2{current_node}] - $t1{t.2} = [$t1{t.2}+32] - $a0 = $s2{current_node} - call $t1{t.2} - $t1{t.3} = $v0 - if0 $t1{t.3} goto :if7_else - $s3{parent_node} = $s2{current_node} - if $s2{current_node} goto :null33 - Error("null pointer") -null33: - $t1{t.4} = [$s2{current_node}] - $t1{t.4} = [$t1{t.4}+16] - $a0 = $s2{current_node} - call $t1{t.4} - $s2{current_node} = $v0 - goto :if7_end -if7_else: - $s4{cont} = 0 -if7_end: - goto :if6_end -if6_else: - $t0{t.5} = LtS($t0{key_aux} $s1{v_key}) - if0 $t0{t.5} goto :if8_else - if $s2{current_node} goto :null34 - Error("null pointer") -null34: - $t0{t.6} = [$s2{current_node}] - $t0{t.6} = [$t0{t.6}+28] - $a0 = $s2{current_node} - call $t0{t.6} - $t0{t.7} = $v0 - if0 $t0{t.7} goto :if9_else - $s3{parent_node} = $s2{current_node} - if $s2{current_node} goto :null35 - Error("null pointer") -null35: - $t0{t.8} = [$s2{current_node}] - $t0{t.8} = [$t0{t.8}+12] - $a0 = $s2{current_node} - call $t0{t.8} - $s2{current_node} = $v0 - goto :if9_end -if9_else: - $s4{cont} = 0 -if9_end: - goto :if8_end -if8_else: - if0 $s6{is_root} goto :if10_else - if $s2{current_node} goto :null36 - Error("null pointer") -null36: - $t0{t.10} = [$s2{current_node}] - $t0{t.10} = [$t0{t.10}+28] - $a0 = $s2{current_node} - call $t0{t.10} - $t0{t.11} = $v0 - $t0{t.12} = Sub(1 $t0{t.11}) - if0 $t0{t.12} goto :ss1_else - if $s2{current_node} goto :null37 - Error("null pointer") -null37: - $t0{t.13} = [$s2{current_node}] - $t0{t.13} = [$t0{t.13}+32] - $a0 = $s2{current_node} - call $t0{t.13} - $t0{t.14} = $v0 - $t0{t.9} = Sub(1 $t0{t.14}) - goto :ss1_end -ss1_else: - $t0{t.9} = 0 -ss1_end: - if0 $t0{t.9} goto :if11_else - goto :if11_end -if11_else: - $t0{t.15} = [$s0{this}] - $t0{t.15} = [$t0{t.15}+56] - $a0 = $s0{this} - $a1 = $s3{parent_node} - $a2 = $s2{current_node} - call $t0{t.15} -if11_end: - goto :if10_end -if10_else: - $t0{t.16} = [$s0{this}] - $t0{t.16} = [$t0{t.16}+56] - $a0 = $s0{this} - $a1 = $s3{parent_node} - $a2 = $s2{current_node} - call $t0{t.16} -if10_end: - $s5{found} = 1 - $s4{cont} = 0 -if8_end: -if6_end: - $s6{is_root} = 0 - goto :while2_top -while2_end: - $v0 = $s5{found} - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - $s3 = local[3] - $s4 = local[4] - $s5 = local[5] - $s6 = local[6] - ret - -func Tree.Remove [in 0, out 0, local 3] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - $s0{this} = $a0 - $s1{p_node} = $a1 - $s2{c_node} = $a2 - if $s2{c_node} goto :null38 - Error("null pointer") -null38: - $t0{t.0} = [$s2{c_node}] - $t0{t.0} = [$t0{t.0}+32] - $a0 = $s2{c_node} - call $t0{t.0} - $t0{t.1} = $v0 - if0 $t0{t.1} goto :if12_else - $t0{t.2} = [$s0{this}] - $t0{t.2} = [$t0{t.2}+64] - $a0 = $s0{this} - $a1 = $s1{p_node} - $a2 = $s2{c_node} - call $t0{t.2} - goto :if12_end -if12_else: - if $s2{c_node} goto :null39 - Error("null pointer") -null39: - $t0{t.3} = [$s2{c_node}] - $t0{t.3} = [$t0{t.3}+28] - $a0 = $s2{c_node} - call $t0{t.3} - $t0{t.4} = $v0 - if0 $t0{t.4} goto :if13_else - $t0{t.5} = [$s0{this}] - $t0{t.5} = [$t0{t.5}+60] - $a0 = $s0{this} - $a1 = $s1{p_node} - $a2 = $s2{c_node} - call $t0{t.5} - goto :if13_end -if13_else: - if $s2{c_node} goto :null40 - Error("null pointer") -null40: - $t0{t.6} = [$s2{c_node}] - $t0{t.6} = [$t0{t.6}+20] - $a0 = $s2{c_node} - call $t0{t.6} - $s2{auxkey1} = $v0 - if $s1{p_node} goto :null41 - Error("null pointer") -null41: - $t0{t.7} = [$s1{p_node}] - $t0{t.7} = [$t0{t.7}+16] - $a0 = $s1{p_node} - call $t0{t.7} - $t0{t.8} = $v0 - if $t0{t.8} goto :null42 - Error("null pointer") -null42: - $t1{t.9} = [$t0{t.8}] - $t1{t.9} = [$t1{t.9}+20] - $a0 = $t0{t.8} - call $t1{t.9} - $t1{auxkey2} = $v0 - $t0{t.10} = [$s0{this}] - $t0{t.10} = [$t0{t.10}+44] - $a0 = $s0{this} - $a1 = $s2{auxkey1} - $a2 = $t1{auxkey2} - call $t0{t.10} - $t0{t.11} = $v0 - if0 $t0{t.11} goto :if14_else - if $s1{p_node} goto :null43 - Error("null pointer") -null43: - $t0{t.12} = [$s1{p_node}] - $t0{t.12} = [$t0{t.12}+8] - $t1{t.13} = [$s0{this}+24] - $a0 = $s1{p_node} - $a1 = $t1{t.13} - call $t0{t.12} - if $s1{p_node} goto :null44 - Error("null pointer") -null44: - $t1{t.14} = [$s1{p_node}] - $t1{t.14} = [$t1{t.14}+36] - $a0 = $s1{p_node} - $a1 = 0 - call $t1{t.14} - goto :if14_end -if14_else: - if $s1{p_node} goto :null45 - Error("null pointer") -null45: - $t1{t.15} = [$s1{p_node}] - $t1{t.15} = [$t1{t.15}+4] - $t0{t.16} = [$s0{this}+24] - $a0 = $s1{p_node} - $a1 = $t0{t.16} - call $t1{t.15} - if $s1{p_node} goto :null46 - Error("null pointer") -null46: - $t0{t.17} = [$s1{p_node}] - $t0{t.17} = [$t0{t.17}+40] - $a0 = $s1{p_node} - $a1 = 0 - call $t0{t.17} -if14_end: -if13_end: -if12_end: - $v0 = 1 - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - ret - -func Tree.RemoveRight [in 0, out 0, local 4] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - local[3] = $s3 - $s0{this} = $a0 - $s1{p_node} = $a1 - $s2{c_node} = $a2 -while3_top: - if $s2{c_node} goto :null47 - Error("null pointer") -null47: - $t0{t.0} = [$s2{c_node}] - $t0{t.0} = [$t0{t.0}+28] - $a0 = $s2{c_node} - call $t0{t.0} - $t0{t.1} = $v0 - if0 $t0{t.1} goto :while3_end - if $s2{c_node} goto :null48 - Error("null pointer") -null48: - $s3{t.2} = [$s2{c_node}] - $s3{t.2} = [$s3{t.2}+24] - if $s2{c_node} goto :null49 - Error("null pointer") -null49: - $t0{t.3} = [$s2{c_node}] - $t0{t.3} = [$t0{t.3}+12] - $a0 = $s2{c_node} - call $t0{t.3} - $t0{t.4} = $v0 - if $t0{t.4} goto :null50 - Error("null pointer") -null50: - $t1{t.5} = [$t0{t.4}] - $t1{t.5} = [$t1{t.5}+20] - $a0 = $t0{t.4} - call $t1{t.5} - $t1{t.6} = $v0 - $a0 = $s2{c_node} - $a1 = $t1{t.6} - call $s3{t.2} - $s1{p_node} = $s2{c_node} - if $s2{c_node} goto :null51 - Error("null pointer") -null51: - $t1{t.7} = [$s2{c_node}] - $t1{t.7} = [$t1{t.7}+12] - $a0 = $s2{c_node} - call $t1{t.7} - $s2{c_node} = $v0 - goto :while3_top -while3_end: - if $s1{p_node} goto :null52 - Error("null pointer") -null52: - $t1{t.8} = [$s1{p_node}] - $t1{t.8} = [$t1{t.8}+4] - $t0{t.9} = [$s0{this}+24] - $a0 = $s1{p_node} - $a1 = $t0{t.9} - call $t1{t.8} - if $s1{p_node} goto :null53 - Error("null pointer") -null53: - $t0{t.10} = [$s1{p_node}] - $t0{t.10} = [$t0{t.10}+40] - $a0 = $s1{p_node} - $a1 = 0 - call $t0{t.10} - $v0 = 1 - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - $s3 = local[3] - ret - -func Tree.RemoveLeft [in 0, out 0, local 4] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - local[3] = $s3 - $s0{this} = $a0 - $s1{p_node} = $a1 - $s2{c_node} = $a2 -while4_top: - if $s2{c_node} goto :null54 - Error("null pointer") -null54: - $t0{t.0} = [$s2{c_node}] - $t0{t.0} = [$t0{t.0}+32] - $a0 = $s2{c_node} - call $t0{t.0} - $t0{t.1} = $v0 - if0 $t0{t.1} goto :while4_end - if $s2{c_node} goto :null55 - Error("null pointer") -null55: - $s3{t.2} = [$s2{c_node}] - $s3{t.2} = [$s3{t.2}+24] - if $s2{c_node} goto :null56 - Error("null pointer") -null56: - $t0{t.3} = [$s2{c_node}] - $t0{t.3} = [$t0{t.3}+16] - $a0 = $s2{c_node} - call $t0{t.3} - $t0{t.4} = $v0 - if $t0{t.4} goto :null57 - Error("null pointer") -null57: - $t1{t.5} = [$t0{t.4}] - $t1{t.5} = [$t1{t.5}+20] - $a0 = $t0{t.4} - call $t1{t.5} - $t1{t.6} = $v0 - $a0 = $s2{c_node} - $a1 = $t1{t.6} - call $s3{t.2} - $s1{p_node} = $s2{c_node} - if $s2{c_node} goto :null58 - Error("null pointer") -null58: - $t1{t.7} = [$s2{c_node}] - $t1{t.7} = [$t1{t.7}+16] - $a0 = $s2{c_node} - call $t1{t.7} - $s2{c_node} = $v0 - goto :while4_top -while4_end: - if $s1{p_node} goto :null59 - Error("null pointer") -null59: - $t1{t.8} = [$s1{p_node}] - $t1{t.8} = [$t1{t.8}+8] - $t0{t.9} = [$s0{this}+24] - $a0 = $s1{p_node} - $a1 = $t0{t.9} - call $t1{t.8} - if $s1{p_node} goto :null60 - Error("null pointer") -null60: - $t0{t.10} = [$s1{p_node}] - $t0{t.10} = [$t0{t.10}+36] - $a0 = $s1{p_node} - $a1 = 0 - call $t0{t.10} - $v0 = 1 - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - $s3 = local[3] - ret - -func Tree.Search [in 0, out 0, local 4] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - local[3] = $s3 - $t0{this} = $a0 - $s0{v_key} = $a1 - $s1{current_node} = $t0{this} - $s2{cont} = 1 - $s3{ifound} = 0 -while5_top: - if0 $s2{cont} goto :while5_end - if $s1{current_node} goto :null61 - Error("null pointer") -null61: - $t0{t.0} = [$s1{current_node}] - $t0{t.0} = [$t0{t.0}+20] - $a0 = $s1{current_node} - call $t0{t.0} - $t0{key_aux} = $v0 - $t1{t.1} = LtS($s0{v_key} $t0{key_aux}) - if0 $t1{t.1} goto :if15_else - if $s1{current_node} goto :null62 - Error("null pointer") -null62: - $t1{t.2} = [$s1{current_node}] - $t1{t.2} = [$t1{t.2}+32] - $a0 = $s1{current_node} - call $t1{t.2} - $t1{t.3} = $v0 - if0 $t1{t.3} goto :if16_else - if $s1{current_node} goto :null63 - Error("null pointer") -null63: - $t1{t.4} = [$s1{current_node}] - $t1{t.4} = [$t1{t.4}+16] - $a0 = $s1{current_node} - call $t1{t.4} - $s1{current_node} = $v0 - goto :if16_end -if16_else: - $s2{cont} = 0 -if16_end: - goto :if15_end -if15_else: - $t0{t.5} = LtS($t0{key_aux} $s0{v_key}) - if0 $t0{t.5} goto :if17_else - if $s1{current_node} goto :null64 - Error("null pointer") -null64: - $t0{t.6} = [$s1{current_node}] - $t0{t.6} = [$t0{t.6}+28] - $a0 = $s1{current_node} - call $t0{t.6} - $t0{t.7} = $v0 - if0 $t0{t.7} goto :if18_else - if $s1{current_node} goto :null65 - Error("null pointer") -null65: - $t0{t.8} = [$s1{current_node}] - $t0{t.8} = [$t0{t.8}+12] - $a0 = $s1{current_node} - call $t0{t.8} - $s1{current_node} = $v0 - goto :if18_end -if18_else: - $s2{cont} = 0 -if18_end: - goto :if17_end -if17_else: - $s3{ifound} = 1 - $s2{cont} = 0 -if17_end: -if15_end: - goto :while5_top -while5_end: - $v0 = $s3{ifound} - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - $s3 = local[3] - ret - -func Tree.Print [in 0, out 0, local 0] - $t0{this} = $a0 - $t1{current_node} = $t0{this} - $t2{t.0} = [$t0{this}] - $t2{t.0} = [$t2{t.0}+76] - $a0 = $t0{this} - $a1 = $t1{current_node} - call $t2{t.0} - $v0 = 1 - ret - -func Tree.RecPrint [in 0, out 0, local 3] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - $s0{this} = $a0 - $s1{node} = $a1 - if $s1{node} goto :null66 - Error("null pointer") -null66: - $t0{t.0} = [$s1{node}] - $t0{t.0} = [$t0{t.0}+32] - $a0 = $s1{node} - call $t0{t.0} - $t0{t.1} = $v0 - if0 $t0{t.1} goto :if19_else - $s2{t.2} = [$s0{this}] - $s2{t.2} = [$s2{t.2}+76] - if $s1{node} goto :null67 - Error("null pointer") -null67: - $t0{t.3} = [$s1{node}] - $t0{t.3} = [$t0{t.3}+16] - $a0 = $s1{node} - call $t0{t.3} - $t0{t.4} = $v0 - $a0 = $s0{this} - $a1 = $t0{t.4} - call $s2{t.2} - goto :if19_end -if19_else: -if19_end: - if $s1{node} goto :null68 - Error("null pointer") -null68: - $t0{t.5} = [$s1{node}] - $t0{t.5} = [$t0{t.5}+20] - $a0 = $s1{node} - call $t0{t.5} - $t0{t.6} = $v0 - PrintIntS($t0{t.6}) - if $s1{node} goto :null69 - Error("null pointer") -null69: - $t0{t.7} = [$s1{node}] - $t0{t.7} = [$t0{t.7}+28] - $a0 = $s1{node} - call $t0{t.7} - $t0{t.8} = $v0 - if0 $t0{t.8} goto :if20_else - $s2{t.9} = [$s0{this}] - $s2{t.9} = [$s2{t.9}+76] - if $s1{node} goto :null70 - Error("null pointer") -null70: - $t0{t.10} = [$s1{node}] - $t0{t.10} = [$t0{t.10}+12] - $a0 = $s1{node} - call $t0{t.10} - $t0{t.11} = $v0 - $a0 = $s0{this} - $a1 = $t0{t.11} - call $s2{t.9} - goto :if20_end -if20_else: -if20_end: - $v0 = 1 - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - ret - -func Tree.accept [in 0, out 0, local 0] - $t0{this} = $a0 - $t1{v} = $a1 - PrintIntS(333) - if $t1{v} goto :null71 - Error("null pointer") -null71: - $t2{t.0} = [$t1{v}] - $t2{t.0} = [$t2{t.0}] - $a0 = $t1{v} - $a1 = $t0{this} - call $t2{t.0} - $v0 = 0 - ret - -func Visitor.visit [in 0, out 0, local 2] - local[0] = $s0 - local[1] = $s1 - $s0{this} = $a0 - $s1{n} = $a1 - if $s1{n} goto :null72 - Error("null pointer") -null72: - $t0{t.0} = [$s1{n}] - $t0{t.0} = [$t0{t.0}+28] - $a0 = $s1{n} - call $t0{t.0} - $t0{t.1} = $v0 - if0 $t0{t.1} goto :if21_else - if $s1{n} goto :null73 - Error("null pointer") -null73: - $t0{t.2} = [$s1{n}] - $t0{t.2} = [$t0{t.2}+12] - $a0 = $s1{n} - call $t0{t.2} - $t0{t.3} = $v0 - [$s0{this}+8] = $t0{t.3} - $t0{t.4} = [$s0{this}+8] - if $t0{t.4} goto :null74 - Error("null pointer") -null74: - $t1{t.5} = [$t0{t.4}] - $t1{t.5} = [$t1{t.5}+80] - $a0 = $t0{t.4} - $a1 = $s0{this} - call $t1{t.5} - goto :if21_end -if21_else: -if21_end: - if $s1{n} goto :null75 - Error("null pointer") -null75: - $t1{t.6} = [$s1{n}] - $t1{t.6} = [$t1{t.6}+32] - $a0 = $s1{n} - call $t1{t.6} - $t1{t.7} = $v0 - if0 $t1{t.7} goto :if22_else - if $s1{n} goto :null76 - Error("null pointer") -null76: - $t1{t.8} = [$s1{n}] - $t1{t.8} = [$t1{t.8}+16] - $a0 = $s1{n} - call $t1{t.8} - $t1{t.9} = $v0 - [$s0{this}+4] = $t1{t.9} - $t1{t.10} = [$s0{this}+4] - if $t1{t.10} goto :null77 - Error("null pointer") -null77: - $t0{t.11} = [$t1{t.10}] - $t0{t.11} = [$t0{t.11}+80] - $a0 = $t1{t.10} - $a1 = $s0{this} - call $t0{t.11} - goto :if22_end -if22_else: -if22_end: - $v0 = 0 - $s0 = local[0] - $s1 = local[1] - ret - -func MyVisitor.visit [in 0, out 0, local 2] - local[0] = $s0 - local[1] = $s1 - $s0{this} = $a0 - $s1{n} = $a1 - if $s1{n} goto :null78 - Error("null pointer") -null78: - $t0{t.0} = [$s1{n}] - $t0{t.0} = [$t0{t.0}+28] - $a0 = $s1{n} - call $t0{t.0} - $t0{t.1} = $v0 - if0 $t0{t.1} goto :if23_else - if $s1{n} goto :null79 - Error("null pointer") -null79: - $t0{t.2} = [$s1{n}] - $t0{t.2} = [$t0{t.2}+12] - $a0 = $s1{n} - call $t0{t.2} - $t0{t.3} = $v0 - [$s0{this}+8] = $t0{t.3} - $t0{t.4} = [$s0{this}+8] - if $t0{t.4} goto :null80 - Error("null pointer") -null80: - $t1{t.5} = [$t0{t.4}] - $t1{t.5} = [$t1{t.5}+80] - $a0 = $t0{t.4} - $a1 = $s0{this} - call $t1{t.5} - goto :if23_end -if23_else: -if23_end: - if $s1{n} goto :null81 - Error("null pointer") -null81: - $t1{t.6} = [$s1{n}] - $t1{t.6} = [$t1{t.6}+20] - $a0 = $s1{n} - call $t1{t.6} - $t1{t.7} = $v0 - PrintIntS($t1{t.7}) - if $s1{n} goto :null82 - Error("null pointer") -null82: - $t1{t.8} = [$s1{n}] - $t1{t.8} = [$t1{t.8}+32] - $a0 = $s1{n} - call $t1{t.8} - $t1{t.9} = $v0 - if0 $t1{t.9} goto :if24_else - if $s1{n} goto :null83 - Error("null pointer") -null83: - $t1{t.10} = [$s1{n}] - $t1{t.10} = [$t1{t.10}+16] - $a0 = $s1{n} - call $t1{t.10} - $t1{t.11} = $v0 - [$s0{this}+4] = $t1{t.11} - $t1{t.12} = [$s0{this}+4] - if $t1{t.12} goto :null84 - Error("null pointer") -null84: - $t0{t.13} = [$t1{t.12}] - $t0{t.13} = [$t0{t.13}+80] - $a0 = $t1{t.12} - $a1 = $s0{this} - call $t0{t.13} - goto :if24_end -if24_else: -if24_end: - $v0 = 0 - $s0 = local[0] - $s1 = local[1] - ret - diff --git a/vaporize/tests/TreeVisitor.opt.names.vaporm b/vaporize/tests/TreeVisitor.opt.names.vaporm deleted file mode 100644 index 69a62c4..0000000 --- a/vaporize/tests/TreeVisitor.opt.names.vaporm +++ /dev/null @@ -1,948 +0,0 @@ -const empty_TV - -const empty_Tree - -const vmt_Visitor - :Visitor.visit - -const vmt_MyVisitor - :MyVisitor.visit - -func Main [in 0, out 0, local 0] - $a0 = :empty_TV - call :TV.Start - $t0{t.0} = $v0 - PrintIntS($t0{t.0}) - ret - -func TV.Start [in 0, out 0, local 1] - local[0] = $s0 - $s0{root} = HeapAllocZ(24) - if $s0{root} goto :null1 - Error("null pointer") -null1: - $a0 = $s0{root} - $a1 = 16 - call :Tree.Init - if $s0{root} goto :null2 - Error("null pointer") -null2: - $a0 = $s0{root} - call :Tree.Print - PrintIntS(100000000) - if $s0{root} goto :null3 - Error("null pointer") -null3: - $a0 = $s0{root} - $a1 = 8 - call :Tree.Insert - if $s0{root} goto :null4 - Error("null pointer") -null4: - $a0 = $s0{root} - $a1 = 24 - call :Tree.Insert - if $s0{root} goto :null5 - Error("null pointer") -null5: - $a0 = $s0{root} - $a1 = 4 - call :Tree.Insert - if $s0{root} goto :null6 - Error("null pointer") -null6: - $a0 = $s0{root} - $a1 = 12 - call :Tree.Insert - if $s0{root} goto :null7 - Error("null pointer") -null7: - $a0 = $s0{root} - $a1 = 20 - call :Tree.Insert - if $s0{root} goto :null8 - Error("null pointer") -null8: - $a0 = $s0{root} - $a1 = 28 - call :Tree.Insert - if $s0{root} goto :null9 - Error("null pointer") -null9: - $a0 = $s0{root} - $a1 = 14 - call :Tree.Insert - if $s0{root} goto :null10 - Error("null pointer") -null10: - $a0 = $s0{root} - call :Tree.Print - PrintIntS(100000000) - $t0{t.0} = HeapAllocZ(12) - [$t0{t.0}] = :vmt_MyVisitor - $t0{v} = $t0{t.0} - PrintIntS(50000000) - if $s0{root} goto :null11 - Error("null pointer") -null11: - $a0 = $s0{root} - $a1 = $t0{v} - call :Tree.accept - PrintIntS(100000000) - if $s0{root} goto :null12 - Error("null pointer") -null12: - $a0 = $s0{root} - $a1 = 24 - call :Tree.Search - $t0{t.1} = $v0 - PrintIntS($t0{t.1}) - if $s0{root} goto :null13 - Error("null pointer") -null13: - $a0 = $s0{root} - $a1 = 12 - call :Tree.Search - $t0{t.2} = $v0 - PrintIntS($t0{t.2}) - if $s0{root} goto :null14 - Error("null pointer") -null14: - $a0 = $s0{root} - $a1 = 16 - call :Tree.Search - $t0{t.3} = $v0 - PrintIntS($t0{t.3}) - if $s0{root} goto :null15 - Error("null pointer") -null15: - $a0 = $s0{root} - $a1 = 50 - call :Tree.Search - $t0{t.4} = $v0 - PrintIntS($t0{t.4}) - if $s0{root} goto :null16 - Error("null pointer") -null16: - $a0 = $s0{root} - $a1 = 12 - call :Tree.Search - $t0{t.5} = $v0 - PrintIntS($t0{t.5}) - if $s0{root} goto :null17 - Error("null pointer") -null17: - $a0 = $s0{root} - $a1 = 12 - call :Tree.Delete - if $s0{root} goto :null18 - Error("null pointer") -null18: - $a0 = $s0{root} - call :Tree.Print - if $s0{root} goto :null19 - Error("null pointer") -null19: - $a0 = $s0{root} - $a1 = 12 - call :Tree.Search - $t0{t.6} = $v0 - PrintIntS($t0{t.6}) - $v0 = 0 - $s0 = local[0] - ret - -func Tree.Init [in 0, out 0, local 0] - $t0{this} = $a0 - $t1{v_key} = $a1 - [$t0{this}+8] = $t1{v_key} - [$t0{this}+12] = 0 - [$t0{this}+16] = 0 - $v0 = 1 - ret - -func Tree.SetRight [in 0, out 0, local 0] - $t0{this} = $a0 - $t1{rn} = $a1 - [$t0{this}+4] = $t1{rn} - $v0 = 1 - ret - -func Tree.SetLeft [in 0, out 0, local 0] - $t0{this} = $a0 - $t1{ln} = $a1 - [$t0{this}] = $t1{ln} - $v0 = 1 - ret - -func Tree.GetRight [in 0, out 0, local 0] - $t0{this} = $a0 - $t0{t.0} = [$t0{this}+4] - $v0 = $t0{t.0} - ret - -func Tree.GetLeft [in 0, out 0, local 0] - $t0{this} = $a0 - $t0{t.0} = [$t0{this}] - $v0 = $t0{t.0} - ret - -func Tree.GetKey [in 0, out 0, local 0] - $t0{this} = $a0 - $t0{t.0} = [$t0{this}+8] - $v0 = $t0{t.0} - ret - -func Tree.SetKey [in 0, out 0, local 0] - $t0{this} = $a0 - $t1{v_key} = $a1 - [$t0{this}+8] = $t1{v_key} - $v0 = 1 - ret - -func Tree.GetHas_Right [in 0, out 0, local 0] - $t0{this} = $a0 - $t0{t.0} = [$t0{this}+16] - $v0 = $t0{t.0} - ret - -func Tree.GetHas_Left [in 0, out 0, local 0] - $t0{this} = $a0 - $t0{t.0} = [$t0{this}+12] - $v0 = $t0{t.0} - ret - -func Tree.SetHas_Left [in 0, out 0, local 0] - $t0{this} = $a0 - $t1{val} = $a1 - [$t0{this}+12] = $t1{val} - $v0 = 1 - ret - -func Tree.SetHas_Right [in 0, out 0, local 0] - $t0{this} = $a0 - $t1{val} = $a1 - [$t0{this}+16] = $t1{val} - $v0 = 1 - ret - -func Tree.Compare [in 0, out 0, local 0] - $t0{num1} = $a1 - $t1{num2} = $a2 - $t2{nti} = Add($t1{num2} 1) - $t1{t.0} = LtS($t0{num1} $t1{num2}) - if0 $t1{t.0} goto :if1_else - $t1{ntb} = 0 - goto :if1_end -if1_else: - $t2{t.1} = LtS($t0{num1} $t2{nti}) - if $t2{t.1} goto :if2_else - $t1{ntb} = 0 - goto :if2_end -if2_else: - $t1{ntb} = 1 -if2_end: -if1_end: - $v0 = $t1{ntb} - ret - -func Tree.Insert [in 0, out 0, local 4] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - local[3] = $s3 - $s0{this} = $a0 - $s1{v_key} = $a1 - $s2{new_node} = HeapAllocZ(24) - if $s2{new_node} goto :null20 - Error("null pointer") -null20: - $a0 = $s2{new_node} - $a1 = $s1{v_key} - call :Tree.Init - $s0{current_node} = $s0{this} - $s3{cont} = 1 -while1_top: - if0 $s3{cont} goto :while1_end - if $s0{current_node} goto :null21 - Error("null pointer") -null21: - $a0 = $s0{current_node} - call :Tree.GetKey - $t0{key_aux} = $v0 - $t0{t.0} = LtS($s1{v_key} $t0{key_aux}) - if0 $t0{t.0} goto :if3_else - if $s0{current_node} goto :null22 - Error("null pointer") -null22: - $a0 = $s0{current_node} - call :Tree.GetHas_Left - $t0{t.1} = $v0 - if0 $t0{t.1} goto :if4_else - if $s0{current_node} goto :null23 - Error("null pointer") -null23: - $a0 = $s0{current_node} - call :Tree.GetLeft - $s0{current_node} = $v0 - goto :if4_end -if4_else: - $s3{cont} = 0 - if $s0{current_node} goto :null24 - Error("null pointer") -null24: - $a0 = $s0{current_node} - $a1 = 1 - call :Tree.SetHas_Left - if $s0{current_node} goto :null25 - Error("null pointer") -null25: - $a0 = $s0{current_node} - $a1 = $s2{new_node} - call :Tree.SetLeft -if4_end: - goto :if3_end -if3_else: - if $s0{current_node} goto :null26 - Error("null pointer") -null26: - $a0 = $s0{current_node} - call :Tree.GetHas_Right - $t0{t.2} = $v0 - if0 $t0{t.2} goto :if5_else - if $s0{current_node} goto :null27 - Error("null pointer") -null27: - $a0 = $s0{current_node} - call :Tree.GetRight - $s0{current_node} = $v0 - goto :if5_end -if5_else: - $s3{cont} = 0 - if $s0{current_node} goto :null28 - Error("null pointer") -null28: - $a0 = $s0{current_node} - $a1 = 1 - call :Tree.SetHas_Right - if $s0{current_node} goto :null29 - Error("null pointer") -null29: - $a0 = $s0{current_node} - $a1 = $s2{new_node} - call :Tree.SetRight -if5_end: -if3_end: - goto :while1_top -while1_end: - $v0 = 1 - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - $s3 = local[3] - ret - -func Tree.Delete [in 0, out 0, local 7] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - local[3] = $s3 - local[4] = $s4 - local[5] = $s5 - local[6] = $s6 - $s0{this} = $a0 - $s1{v_key} = $a1 - $s2{current_node} = $s0{this} - $s3{parent_node} = $s0{this} - $s4{cont} = 1 - $s5{found} = 0 - $s6{is_root} = 1 -while2_top: - if0 $s4{cont} goto :while2_end - if $s2{current_node} goto :null30 - Error("null pointer") -null30: - $a0 = $s2{current_node} - call :Tree.GetKey - $t0{key_aux} = $v0 - $t1{t.0} = LtS($s1{v_key} $t0{key_aux}) - if0 $t1{t.0} goto :if6_else - if $s2{current_node} goto :null31 - Error("null pointer") -null31: - $a0 = $s2{current_node} - call :Tree.GetHas_Left - $t1{t.1} = $v0 - if0 $t1{t.1} goto :if7_else - $s3{parent_node} = $s2{current_node} - if $s2{current_node} goto :null32 - Error("null pointer") -null32: - $a0 = $s2{current_node} - call :Tree.GetLeft - $s2{current_node} = $v0 - goto :if7_end -if7_else: - $s4{cont} = 0 -if7_end: - goto :if6_end -if6_else: - $t0{t.2} = LtS($t0{key_aux} $s1{v_key}) - if0 $t0{t.2} goto :if8_else - if $s2{current_node} goto :null33 - Error("null pointer") -null33: - $a0 = $s2{current_node} - call :Tree.GetHas_Right - $t0{t.3} = $v0 - if0 $t0{t.3} goto :if9_else - $s3{parent_node} = $s2{current_node} - if $s2{current_node} goto :null34 - Error("null pointer") -null34: - $a0 = $s2{current_node} - call :Tree.GetRight - $s2{current_node} = $v0 - goto :if9_end -if9_else: - $s4{cont} = 0 -if9_end: - goto :if8_end -if8_else: - if0 $s6{is_root} goto :if10_else - if $s2{current_node} goto :null35 - Error("null pointer") -null35: - $a0 = $s2{current_node} - call :Tree.GetHas_Right - $t0{t.4} = $v0 - if $t0{t.4} goto :if11_else - if $s2{current_node} goto :null36 - Error("null pointer") -null36: - $a0 = $s2{current_node} - call :Tree.GetHas_Left - $t0{t.5} = $v0 - if $t0{t.5} goto :if11_else - goto :if11_end -if11_else: - $a0 = $s0{this} - $a1 = $s3{parent_node} - $a2 = $s2{current_node} - call :Tree.Remove -if11_end: - goto :if10_end -if10_else: - $a0 = $s0{this} - $a1 = $s3{parent_node} - $a2 = $s2{current_node} - call :Tree.Remove -if10_end: - $s5{found} = 1 - $s4{cont} = 0 -if8_end: -if6_end: - $s6{is_root} = 0 - goto :while2_top -while2_end: - $v0 = $s5{found} - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - $s3 = local[3] - $s4 = local[4] - $s5 = local[5] - $s6 = local[6] - ret - -func Tree.Remove [in 0, out 0, local 3] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - $s0{this} = $a0 - $s1{p_node} = $a1 - $s2{c_node} = $a2 - if $s2{c_node} goto :null37 - Error("null pointer") -null37: - $a0 = $s2{c_node} - call :Tree.GetHas_Left - $t0{t.0} = $v0 - if0 $t0{t.0} goto :if12_else - $a0 = $s0{this} - $a1 = $s1{p_node} - $a2 = $s2{c_node} - call :Tree.RemoveLeft - goto :if12_end -if12_else: - if $s2{c_node} goto :null38 - Error("null pointer") -null38: - $a0 = $s2{c_node} - call :Tree.GetHas_Right - $t0{t.1} = $v0 - if0 $t0{t.1} goto :if13_else - $a0 = $s0{this} - $a1 = $s1{p_node} - $a2 = $s2{c_node} - call :Tree.RemoveRight - goto :if13_end -if13_else: - if $s2{c_node} goto :null39 - Error("null pointer") -null39: - $a0 = $s2{c_node} - call :Tree.GetKey - $s2{auxkey1} = $v0 - if $s1{p_node} goto :null40 - Error("null pointer") -null40: - $a0 = $s1{p_node} - call :Tree.GetLeft - $t0{t.2} = $v0 - if $t0{t.2} goto :null41 - Error("null pointer") -null41: - $a0 = $t0{t.2} - call :Tree.GetKey - $t0{auxkey2} = $v0 - $a0 = $s0{this} - $a1 = $s2{auxkey1} - $a2 = $t0{auxkey2} - call :Tree.Compare - $t0{t.3} = $v0 - if0 $t0{t.3} goto :if14_else - if $s1{p_node} goto :null42 - Error("null pointer") -null42: - $t0{t.4} = [$s0{this}+20] - $a0 = $s1{p_node} - $a1 = $t0{t.4} - call :Tree.SetLeft - if $s1{p_node} goto :null43 - Error("null pointer") -null43: - $a0 = $s1{p_node} - $a1 = 0 - call :Tree.SetHas_Left - goto :if14_end -if14_else: - if $s1{p_node} goto :null44 - Error("null pointer") -null44: - $t0{t.5} = [$s0{this}+20] - $a0 = $s1{p_node} - $a1 = $t0{t.5} - call :Tree.SetRight - if $s1{p_node} goto :null45 - Error("null pointer") -null45: - $a0 = $s1{p_node} - $a1 = 0 - call :Tree.SetHas_Right -if14_end: -if13_end: -if12_end: - $v0 = 1 - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - ret - -func Tree.RemoveRight [in 0, out 0, local 3] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - $s0{this} = $a0 - $s1{p_node} = $a1 - $s2{c_node} = $a2 -while3_top: - if $s2{c_node} goto :null46 - Error("null pointer") -null46: - $a0 = $s2{c_node} - call :Tree.GetHas_Right - $t0{t.0} = $v0 - if0 $t0{t.0} goto :while3_end - if $s2{c_node} goto :null47 - Error("null pointer") -null47: - if $s2{c_node} goto :null48 - Error("null pointer") -null48: - $a0 = $s2{c_node} - call :Tree.GetRight - $t0{t.1} = $v0 - if $t0{t.1} goto :null49 - Error("null pointer") -null49: - $a0 = $t0{t.1} - call :Tree.GetKey - $t0{t.2} = $v0 - $a0 = $s2{c_node} - $a1 = $t0{t.2} - call :Tree.SetKey - $s1{p_node} = $s2{c_node} - if $s2{c_node} goto :null50 - Error("null pointer") -null50: - $a0 = $s2{c_node} - call :Tree.GetRight - $s2{c_node} = $v0 - goto :while3_top -while3_end: - if $s1{p_node} goto :null51 - Error("null pointer") -null51: - $t0{t.3} = [$s0{this}+20] - $a0 = $s1{p_node} - $a1 = $t0{t.3} - call :Tree.SetRight - if $s1{p_node} goto :null52 - Error("null pointer") -null52: - $a0 = $s1{p_node} - $a1 = 0 - call :Tree.SetHas_Right - $v0 = 1 - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - ret - -func Tree.RemoveLeft [in 0, out 0, local 3] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - $s0{this} = $a0 - $s1{p_node} = $a1 - $s2{c_node} = $a2 -while4_top: - if $s2{c_node} goto :null53 - Error("null pointer") -null53: - $a0 = $s2{c_node} - call :Tree.GetHas_Left - $t0{t.0} = $v0 - if0 $t0{t.0} goto :while4_end - if $s2{c_node} goto :null54 - Error("null pointer") -null54: - if $s2{c_node} goto :null55 - Error("null pointer") -null55: - $a0 = $s2{c_node} - call :Tree.GetLeft - $t0{t.1} = $v0 - if $t0{t.1} goto :null56 - Error("null pointer") -null56: - $a0 = $t0{t.1} - call :Tree.GetKey - $t0{t.2} = $v0 - $a0 = $s2{c_node} - $a1 = $t0{t.2} - call :Tree.SetKey - $s1{p_node} = $s2{c_node} - if $s2{c_node} goto :null57 - Error("null pointer") -null57: - $a0 = $s2{c_node} - call :Tree.GetLeft - $s2{c_node} = $v0 - goto :while4_top -while4_end: - if $s1{p_node} goto :null58 - Error("null pointer") -null58: - $t0{t.3} = [$s0{this}+20] - $a0 = $s1{p_node} - $a1 = $t0{t.3} - call :Tree.SetLeft - if $s1{p_node} goto :null59 - Error("null pointer") -null59: - $a0 = $s1{p_node} - $a1 = 0 - call :Tree.SetHas_Left - $v0 = 1 - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - ret - -func Tree.Search [in 0, out 0, local 4] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - local[3] = $s3 - $t0{this} = $a0 - $s0{v_key} = $a1 - $s1{current_node} = $t0{this} - $s2{cont} = 1 - $s3{ifound} = 0 -while5_top: - if0 $s2{cont} goto :while5_end - if $s1{current_node} goto :null60 - Error("null pointer") -null60: - $a0 = $s1{current_node} - call :Tree.GetKey - $t0{key_aux} = $v0 - $t1{t.0} = LtS($s0{v_key} $t0{key_aux}) - if0 $t1{t.0} goto :if15_else - if $s1{current_node} goto :null61 - Error("null pointer") -null61: - $a0 = $s1{current_node} - call :Tree.GetHas_Left - $t1{t.1} = $v0 - if0 $t1{t.1} goto :if16_else - if $s1{current_node} goto :null62 - Error("null pointer") -null62: - $a0 = $s1{current_node} - call :Tree.GetLeft - $s1{current_node} = $v0 - goto :if16_end -if16_else: - $s2{cont} = 0 -if16_end: - goto :if15_end -if15_else: - $t0{t.2} = LtS($t0{key_aux} $s0{v_key}) - if0 $t0{t.2} goto :if17_else - if $s1{current_node} goto :null63 - Error("null pointer") -null63: - $a0 = $s1{current_node} - call :Tree.GetHas_Right - $t0{t.3} = $v0 - if0 $t0{t.3} goto :if18_else - if $s1{current_node} goto :null64 - Error("null pointer") -null64: - $a0 = $s1{current_node} - call :Tree.GetRight - $s1{current_node} = $v0 - goto :if18_end -if18_else: - $s2{cont} = 0 -if18_end: - goto :if17_end -if17_else: - $s3{ifound} = 1 - $s2{cont} = 0 -if17_end: -if15_end: - goto :while5_top -while5_end: - $v0 = $s3{ifound} - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - $s3 = local[3] - ret - -func Tree.Print [in 0, out 0, local 0] - $t0{this} = $a0 - $t1{current_node} = $t0{this} - $a0 = $t0{this} - $a1 = $t1{current_node} - call :Tree.RecPrint - $v0 = 1 - ret - -func Tree.RecPrint [in 0, out 0, local 2] - local[0] = $s0 - local[1] = $s1 - $s0{this} = $a0 - $s1{node} = $a1 - if $s1{node} goto :null65 - Error("null pointer") -null65: - $a0 = $s1{node} - call :Tree.GetHas_Left - $t0{t.0} = $v0 - if0 $t0{t.0} goto :if19_else - if $s1{node} goto :null66 - Error("null pointer") -null66: - $a0 = $s1{node} - call :Tree.GetLeft - $t0{t.1} = $v0 - $a0 = $s0{this} - $a1 = $t0{t.1} - call :Tree.RecPrint - goto :if19_end -if19_else: -if19_end: - if $s1{node} goto :null67 - Error("null pointer") -null67: - $a0 = $s1{node} - call :Tree.GetKey - $t0{t.2} = $v0 - PrintIntS($t0{t.2}) - if $s1{node} goto :null68 - Error("null pointer") -null68: - $a0 = $s1{node} - call :Tree.GetHas_Right - $t0{t.3} = $v0 - if0 $t0{t.3} goto :if20_else - if $s1{node} goto :null69 - Error("null pointer") -null69: - $a0 = $s1{node} - call :Tree.GetRight - $t0{t.4} = $v0 - $a0 = $s0{this} - $a1 = $t0{t.4} - call :Tree.RecPrint - goto :if20_end -if20_else: -if20_end: - $v0 = 1 - $s0 = local[0] - $s1 = local[1] - ret - -func Tree.accept [in 0, out 0, local 0] - $t0{this} = $a0 - $t1{v} = $a1 - PrintIntS(333) - if $t1{v} goto :null70 - Error("null pointer") -null70: - $t2{t.0} = [$t1{v}] - $t2{t.0} = [$t2{t.0}] - $a0 = $t1{v} - $a1 = $t0{this} - call $t2{t.0} - $v0 = 0 - ret - -func Visitor.visit [in 0, out 0, local 2] - local[0] = $s0 - local[1] = $s1 - $s0{this} = $a0 - $s1{n} = $a1 - if $s1{n} goto :null71 - Error("null pointer") -null71: - $a0 = $s1{n} - call :Tree.GetHas_Right - $t0{t.0} = $v0 - if0 $t0{t.0} goto :if21_else - if $s1{n} goto :null72 - Error("null pointer") -null72: - $a0 = $s1{n} - call :Tree.GetRight - $t0{t.1} = $v0 - [$s0{this}+8] = $t0{t.1} - $t0{t.2} = [$s0{this}+8] - if $t0{t.2} goto :null73 - Error("null pointer") -null73: - $a0 = $t0{t.2} - $a1 = $s0{this} - call :Tree.accept - goto :if21_end -if21_else: -if21_end: - if $s1{n} goto :null74 - Error("null pointer") -null74: - $a0 = $s1{n} - call :Tree.GetHas_Left - $t0{t.3} = $v0 - if0 $t0{t.3} goto :if22_else - if $s1{n} goto :null75 - Error("null pointer") -null75: - $a0 = $s1{n} - call :Tree.GetLeft - $t0{t.4} = $v0 - [$s0{this}+4] = $t0{t.4} - $t0{t.5} = [$s0{this}+4] - if $t0{t.5} goto :null76 - Error("null pointer") -null76: - $a0 = $t0{t.5} - $a1 = $s0{this} - call :Tree.accept - goto :if22_end -if22_else: -if22_end: - $v0 = 0 - $s0 = local[0] - $s1 = local[1] - ret - -func MyVisitor.visit [in 0, out 0, local 2] - local[0] = $s0 - local[1] = $s1 - $s0{this} = $a0 - $s1{n} = $a1 - if $s1{n} goto :null77 - Error("null pointer") -null77: - $a0 = $s1{n} - call :Tree.GetHas_Right - $t0{t.0} = $v0 - if0 $t0{t.0} goto :if23_else - if $s1{n} goto :null78 - Error("null pointer") -null78: - $a0 = $s1{n} - call :Tree.GetRight - $t0{t.1} = $v0 - [$s0{this}+8] = $t0{t.1} - $t0{t.2} = [$s0{this}+8] - if $t0{t.2} goto :null79 - Error("null pointer") -null79: - $a0 = $t0{t.2} - $a1 = $s0{this} - call :Tree.accept - goto :if23_end -if23_else: -if23_end: - if $s1{n} goto :null80 - Error("null pointer") -null80: - $a0 = $s1{n} - call :Tree.GetKey - $t0{t.3} = $v0 - PrintIntS($t0{t.3}) - if $s1{n} goto :null81 - Error("null pointer") -null81: - $a0 = $s1{n} - call :Tree.GetHas_Left - $t0{t.4} = $v0 - if0 $t0{t.4} goto :if24_else - if $s1{n} goto :null82 - Error("null pointer") -null82: - $a0 = $s1{n} - call :Tree.GetLeft - $t0{t.5} = $v0 - [$s0{this}+4] = $t0{t.5} - $t0{t.6} = [$s0{this}+4] - if $t0{t.6} goto :null83 - Error("null pointer") -null83: - $a0 = $t0{t.6} - $a1 = $s0{this} - call :Tree.accept - goto :if24_end -if24_else: -if24_end: - $v0 = 0 - $s0 = local[0] - $s1 = local[1] - ret - diff --git a/vaporize/tests/TreeVisitor.opt.regalloc b/vaporize/tests/TreeVisitor.opt.regalloc deleted file mode 100644 index 985ead2..0000000 --- a/vaporize/tests/TreeVisitor.opt.regalloc +++ /dev/null @@ -1,539 +0,0 @@ -func Main - in 0, out 0, callee-saves 0, spills 0 -Live In: - t.0: 15 -Linear Range: - t.0: 14-15 -Allocation: - t.0: t0 - -func TV.Start - in 0, out 0, callee-saves 1, spills 0 -Live In: - this: - root: 20 23-24 27-29 32-33 36-37 40-41 44-45 48-49 52-53 56-57 60-66 69-71 74-76 79-81 84-86 89-91 94-96 99-100 103-104 107 - ntb: - t.0: 63-64 - v: 65-66 69 - nti: - t.1: 75 - t.2: 80 - t.3: 85 - t.4: 90 - t.5: 95 - t.6: 108 -Linear Range: - root: 19-107 (cross call) - t.0: 62-64 - v: 64-69 - t.1: 74-75 - t.2: 79-80 - t.3: 84-85 - t.4: 89-90 - t.5: 94-95 - t.6: 107-108 -Allocation: - root: s0 - t.0: t0 - v: t0 - t.1: t0 - t.2: t0 - t.3: t0 - t.4: t0 - t.5: t0 - t.6: t0 - -func Tree.Init - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 112-114 - v_key: 112 -Linear Range: - this: 111-114 - v_key: 111-112 -Allocation: - this: t0 - v_key: t1 - -func Tree.SetRight - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 118 - rn: 118 -Linear Range: - this: 117-118 - rn: 117-118 -Allocation: - this: t0 - rn: t1 - -func Tree.SetLeft - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 122 - ln: 122 -Linear Range: - this: 121-122 - ln: 121-122 -Allocation: - this: t0 - ln: t1 - -func Tree.GetRight - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 126 - t.0: 127 -Linear Range: - this: 125-126 - t.0: 126-127 -Allocation: - this: t0 - t.0: t0 - -func Tree.GetLeft - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 130 - t.0: 131 -Linear Range: - this: 129-130 - t.0: 130-131 -Allocation: - this: t0 - t.0: t0 - -func Tree.GetKey - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 134 - t.0: 135 -Linear Range: - this: 133-134 - t.0: 134-135 -Allocation: - this: t0 - t.0: t0 - -func Tree.SetKey - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 138 - v_key: 138 -Linear Range: - this: 137-138 - v_key: 137-138 -Allocation: - this: t0 - v_key: t1 - -func Tree.GetHas_Right - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 142 - t.0: 143 -Linear Range: - this: 141-142 - t.0: 142-143 -Allocation: - this: t0 - t.0: t0 - -func Tree.GetHas_Left - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 146 - t.0: 147 -Linear Range: - this: 145-146 - t.0: 146-147 -Allocation: - this: t0 - t.0: t0 - -func Tree.SetHas_Left - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 150 - val: 150 -Linear Range: - this: 149-150 - val: 149-150 -Allocation: - this: t0 - val: t1 - -func Tree.SetHas_Right - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 154 - val: 154 -Linear Range: - this: 153-154 - val: 153-154 -Allocation: - this: t0 - val: t1 - -func Tree.Compare - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: - num1: 158-161 165 - num2: 158-160 - ntb: 163 168 173 - nti: 160-161 165 - t.0: 161 - t.1: 166 -Linear Range: - num1: 157-165 - num2: 157-160 - ntb: 162-173 - nti: 159-165 - t.0: 160-161 - t.1: 165-166 -Allocation: - num1: t0 - num2: t1 - ntb: t1 - nti: t2 - t.0: t1 - t.1: t2 - -func Tree.Insert - in 0, out 0, callee-saves 4, spills 0 -Live In: - this: 176-177 180-181 - v_key: 176-177 180-185 188-191 194-196 199-203 206-207 210-214 217-219 222-226 229-230 233-236 - new_node: 177 180-185 188-191 194-196 199-203 206-207 210-214 217-219 222-226 229-230 233-236 - ntb: - current_node: 182-185 188-191 194-196 199-203 206-207 210-214 217-219 222-226 229-230 233-236 - cont: 184-185 188-191 194-196 199-200 203 206-207 210-214 217-219 222-223 226 229-230 233-236 - key_aux: 189 - t.0: 190 - t.1: 195 - t.2: 218 -Linear Range: - this: 175-181 (cross call) - v_key: 175-236 (cross call) - new_node: 176-236 (cross call) - current_node: 181-236 (cross call) - cont: 182-236 (cross call) - key_aux: 188-189 - t.0: 189-190 - t.1: 194-195 - t.2: 217-218 -Allocation: - this: s0 - v_key: s1 - new_node: s2 - current_node: s0 - cont: s3 - key_aux: t0 - t.0: t0 - t.1: t0 - t.2: t0 - -func Tree.Delete - in 0, out 0, callee-saves 7, spills 0 -Live In: - this: 241-248 251-254 257-260 263-272 275-278 281-289 292-294 297-313 - v_key: 241-248 251-254 257-260 263-272 275-278 281-289 292-294 297-313 - current_node: 242-248 251-254 257-260 263-272 275-278 281-289 292-294 297-313 - parent_node: 243-248 251-254 257-258 260 263-272 275-276 278 281-289 292-294 297-313 - cont: 244-248 251-254 257-260 263-264 268-272 275-278 281-282 286 312-313 - found: 245-248 251-254 257-260 263-272 275-278 281-286 309-315 - is_root: 247-248 251-253 270-271 288 313 - key_aux: 252-253 270 - t.0: 253 - t.1: 258 - t.2: 271 - t.3: 276 - t.4: 293 - t.5: 298 - ntb: -Linear Range: - this: 240-313 (cross call) - v_key: 240-313 (cross call) - current_node: 241-313 (cross call) - parent_node: 242-313 (cross call) - cont: 243-313 (cross call) - found: 244-315 (cross call) - is_root: 245-313 (cross call) - key_aux: 251-270 - t.0: 252-253 - t.1: 257-258 - t.2: 270-271 - t.3: 275-276 - t.4: 292-293 - t.5: 297-298 -Allocation: - this: s0 - v_key: s1 - current_node: s2 - parent_node: s3 - cont: s4 - found: s5 - is_root: s6 - key_aux: t0 - t.0: t1 - t.1: t1 - t.2: t0 - t.3: t0 - t.4: t0 - t.5: t0 - -func Tree.Remove - in 0, out 0, callee-saves 3, spills 0 -Live In: - this: 318 321-323 326 329-331 334 337-338 341-342 345-348 351 359 362 - p_node: 318 321-323 326 329-331 334 337-338 341-342 345-348 351-353 356 359 362-364 367 - c_node: 318 321-323 326 329-331 334 337 - t.0: 322 - ntb: - t.1: 330 - auxkey1: 338 341-342 345-346 - t.2: 342 345 - auxkey2: 346 - t.3: 347 - t.4: 352 - t.5: 363 -Linear Range: - this: 317-362 (cross call) - p_node: 317-367 (cross call) - c_node: 317-337 (cross call) - t.0: 321-322 - t.1: 329-330 - auxkey1: 337-346 (cross call) - t.2: 341-345 - auxkey2: 345-346 - t.3: 346-347 - t.4: 351-352 - t.5: 362-363 -Allocation: - this: s0 - p_node: s1 - c_node: s2 - t.0: t0 - t.1: t0 - auxkey1: s2 - t.2: t0 - auxkey2: t0 - t.3: t0 - t.4: t0 - t.5: t0 - -func Tree.RemoveRight - in 0, out 0, callee-saves 3, spills 0 -Live In: - this: 375 378-380 383 386-387 390-393 396-399 402 - p_node: 375 378-379 393 396-399 402-404 407 - c_node: 375 378-380 383 386-387 390-393 396-397 - t.0: 379 - t.1: 387 390 - t.2: 391 - ntb: - t.3: 403 -Linear Range: - this: 373-402 (cross call) - p_node: 373-407 (cross call) - c_node: 373-397 (cross call) - t.0: 378-379 - t.1: 386-390 - t.2: 390-391 - t.3: 402-403 -Allocation: - this: s0 - p_node: s1 - c_node: s2 - t.0: t0 - t.1: t0 - t.2: t0 - t.3: t0 - -func Tree.RemoveLeft - in 0, out 0, callee-saves 3, spills 0 -Live In: - this: 412 415-417 420 423-424 427-430 433-436 439 - p_node: 412 415-416 430 433-436 439-441 444 - c_node: 412 415-417 420 423-424 427-430 433-434 - t.0: 416 - t.1: 424 427 - t.2: 428 - ntb: - t.3: 440 -Linear Range: - this: 410-439 (cross call) - p_node: 410-444 (cross call) - c_node: 410-434 (cross call) - t.0: 415-416 - t.1: 423-427 - t.2: 427-428 - t.3: 439-440 -Allocation: - this: s0 - p_node: s1 - c_node: s2 - t.0: t0 - t.1: t0 - t.2: t0 - t.3: t0 - -func Tree.Search - in 0, out 0, callee-saves 4, spills 0 -Live In: - this: 448 - v_key: 448-453 456-459 462-464 467-476 479-481 484-495 - current_node: 449-453 456-459 462-464 467-476 479-481 484-495 - cont: 450-453 456-459 462-464 467-468 472-476 479-481 484-485 489 495 - ifound: 452-453 456-459 462-464 467-476 479-481 484-489 492-497 - key_aux: 457-458 474 - t.0: 458 - t.1: 463 - t.2: 475 - t.3: 480 -Linear Range: - this: 447-448 - v_key: 447-495 (cross call) - current_node: 448-495 (cross call) - cont: 449-495 (cross call) - ifound: 450-497 (cross call) - key_aux: 456-474 - t.0: 457-458 - t.1: 462-463 - t.2: 474-475 - t.3: 479-480 -Allocation: - this: t0 - v_key: s0 - current_node: s1 - cont: s2 - ifound: s3 - key_aux: t0 - t.0: t1 - t.1: t1 - t.2: t0 - t.3: t0 - -func Tree.Print - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 500-501 - current_node: 501 - ntb: -Linear Range: - this: 499-501 - current_node: 500-501 -Allocation: - this: t0 - current_node: t1 - -func Tree.RecPrint - in 0, out 0, callee-saves 2, spills 0 -Live In: - this: 505 508-510 513-519 522-524 527-529 532-533 - node: 505 508-510 513-519 522-524 527-529 532 - t.0: 509 - t.1: 514 - ntb: - t.2: 523 - t.3: 528 - t.4: 533 -Linear Range: - this: 504-533 (cross call) - node: 504-532 (cross call) - t.0: 508-509 - t.1: 513-514 - t.2: 522-523 - t.3: 527-528 - t.4: 532-533 -Allocation: - this: s0 - node: s1 - t.0: t0 - t.1: t0 - t.2: t0 - t.3: t0 - t.4: t0 - -func Tree.accept - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 541-542 545-547 - v: 541-542 545-547 - t.0: 546-547 - nti: -Linear Range: - this: 540-547 - v: 540-547 - t.0: 545-547 -Allocation: - this: t0 - v: t1 - t.0: t2 - -func Visitor.visit - in 0, out 0, callee-saves 2, spills 0 -Live In: - this: 551 554-556 559-562 565-570 573-575 578-581 584 - n: 551 554-556 559-562 565-570 573-575 578 - t.0: 555 - t.1: 560 - t.2: 562 565 - nti: - t.3: 574 - t.4: 579 - t.5: 581 584 -Linear Range: - this: 550-584 (cross call) - n: 550-578 (cross call) - t.0: 554-555 - t.1: 559-560 - t.2: 561-565 - t.3: 573-574 - t.4: 578-579 - t.5: 580-584 -Allocation: - this: s0 - n: s1 - t.0: t0 - t.1: t0 - t.2: t0 - t.3: t0 - t.4: t0 - t.5: t0 - -func MyVisitor.visit - in 0, out 0, callee-saves 2, spills 0 -Live In: - this: 592 595-597 600-603 606-611 614-616 619-621 624-627 630 - n: 592 595-597 600-603 606-611 614-616 619-621 624 - t.0: 596 - t.1: 601 - t.2: 603 606 - nti: - t.3: 615 - t.4: 620 - t.5: 625 - t.6: 627 630 -Linear Range: - this: 591-630 (cross call) - n: 591-624 (cross call) - t.0: 595-596 - t.1: 600-601 - t.2: 602-606 - t.3: 614-615 - t.4: 619-620 - t.5: 624-625 - t.6: 626-630 -Allocation: - this: s0 - n: s1 - t.0: t0 - t.1: t0 - t.2: t0 - t.3: t0 - t.4: t0 - t.5: t0 - t.6: t0 - diff --git a/vaporize/tests/TreeVisitor.opt.vapor b/vaporize/tests/TreeVisitor.opt.vapor deleted file mode 100644 index dfa80a6..0000000 --- a/vaporize/tests/TreeVisitor.opt.vapor +++ /dev/null @@ -1,635 +0,0 @@ - -const empty_TV - -const empty_Tree - -const vmt_Visitor - :Visitor.visit - -const vmt_MyVisitor - :MyVisitor.visit - - -func Main() - t.0 = call :TV.Start(:empty_TV) - PrintIntS(t.0) - ret - -func TV.Start(this) - root = HeapAllocZ(24) - if root goto :null1 - Error("null pointer") - null1: - ntb = call :Tree.Init(root 16) - if root goto :null2 - Error("null pointer") - null2: - ntb = call :Tree.Print(root) - PrintIntS(100000000) - if root goto :null3 - Error("null pointer") - null3: - ntb = call :Tree.Insert(root 8) - if root goto :null4 - Error("null pointer") - null4: - ntb = call :Tree.Insert(root 24) - if root goto :null5 - Error("null pointer") - null5: - ntb = call :Tree.Insert(root 4) - if root goto :null6 - Error("null pointer") - null6: - ntb = call :Tree.Insert(root 12) - if root goto :null7 - Error("null pointer") - null7: - ntb = call :Tree.Insert(root 20) - if root goto :null8 - Error("null pointer") - null8: - ntb = call :Tree.Insert(root 28) - if root goto :null9 - Error("null pointer") - null9: - ntb = call :Tree.Insert(root 14) - if root goto :null10 - Error("null pointer") - null10: - ntb = call :Tree.Print(root) - PrintIntS(100000000) - t.0 = HeapAllocZ(12) - [t.0] = :vmt_MyVisitor - v = t.0 - PrintIntS(50000000) - if root goto :null11 - Error("null pointer") - null11: - nti = call :Tree.accept(root v) - PrintIntS(100000000) - if root goto :null12 - Error("null pointer") - null12: - t.1 = call :Tree.Search(root 24) - PrintIntS(t.1) - if root goto :null13 - Error("null pointer") - null13: - t.2 = call :Tree.Search(root 12) - PrintIntS(t.2) - if root goto :null14 - Error("null pointer") - null14: - t.3 = call :Tree.Search(root 16) - PrintIntS(t.3) - if root goto :null15 - Error("null pointer") - null15: - t.4 = call :Tree.Search(root 50) - PrintIntS(t.4) - if root goto :null16 - Error("null pointer") - null16: - t.5 = call :Tree.Search(root 12) - PrintIntS(t.5) - if root goto :null17 - Error("null pointer") - null17: - ntb = call :Tree.Delete(root 12) - if root goto :null18 - Error("null pointer") - null18: - ntb = call :Tree.Print(root) - if root goto :null19 - Error("null pointer") - null19: - t.6 = call :Tree.Search(root 12) - PrintIntS(t.6) - ret 0 - -func Tree.Init(this v_key) - [this+8] = v_key - [this+12] = 0 - [this+16] = 0 - ret 1 - -func Tree.SetRight(this rn) - [this+4] = rn - ret 1 - -func Tree.SetLeft(this ln) - [this+0] = ln - ret 1 - -func Tree.GetRight(this) - t.0 = [this+4] - ret t.0 - -func Tree.GetLeft(this) - t.0 = [this+0] - ret t.0 - -func Tree.GetKey(this) - t.0 = [this+8] - ret t.0 - -func Tree.SetKey(this v_key) - [this+8] = v_key - ret 1 - -func Tree.GetHas_Right(this) - t.0 = [this+16] - ret t.0 - -func Tree.GetHas_Left(this) - t.0 = [this+12] - ret t.0 - -func Tree.SetHas_Left(this val) - [this+12] = val - ret 1 - -func Tree.SetHas_Right(this val) - [this+16] = val - ret 1 - -func Tree.Compare(this num1 num2) - ntb = 0 - nti = Add(num2 1) - t.0 = LtS(num1 num2) - if0 t.0 goto :if1_else - ntb = 0 - goto :if1_end - if1_else: - t.1 = LtS(num1 nti) - if t.1 goto :if2_else - ntb = 0 - goto :if2_end - if2_else: - ntb = 1 - if2_end: - if1_end: - ret ntb - -func Tree.Insert(this v_key) - new_node = HeapAllocZ(24) - if new_node goto :null20 - Error("null pointer") - null20: - ntb = call :Tree.Init(new_node v_key) - current_node = this - cont = 1 - while1_top: - if0 cont goto :while1_end - if current_node goto :null21 - Error("null pointer") - null21: - key_aux = call :Tree.GetKey(current_node) - t.0 = LtS(v_key key_aux) - if0 t.0 goto :if3_else - if current_node goto :null22 - Error("null pointer") - null22: - t.1 = call :Tree.GetHas_Left(current_node) - if0 t.1 goto :if4_else - if current_node goto :null23 - Error("null pointer") - null23: - current_node = call :Tree.GetLeft(current_node) - goto :if4_end - if4_else: - cont = 0 - if current_node goto :null24 - Error("null pointer") - null24: - ntb = call :Tree.SetHas_Left(current_node 1) - if current_node goto :null25 - Error("null pointer") - null25: - ntb = call :Tree.SetLeft(current_node new_node) - if4_end: - goto :if3_end - if3_else: - if current_node goto :null26 - Error("null pointer") - null26: - t.2 = call :Tree.GetHas_Right(current_node) - if0 t.2 goto :if5_else - if current_node goto :null27 - Error("null pointer") - null27: - current_node = call :Tree.GetRight(current_node) - goto :if5_end - if5_else: - cont = 0 - if current_node goto :null28 - Error("null pointer") - null28: - ntb = call :Tree.SetHas_Right(current_node 1) - if current_node goto :null29 - Error("null pointer") - null29: - ntb = call :Tree.SetRight(current_node new_node) - if5_end: - if3_end: - goto :while1_top - while1_end: - ret 1 - -func Tree.Delete(this v_key) - current_node = this - parent_node = this - cont = 1 - found = 0 - is_root = 1 - while2_top: - if0 cont goto :while2_end - if current_node goto :null30 - Error("null pointer") - null30: - key_aux = call :Tree.GetKey(current_node) - t.0 = LtS(v_key key_aux) - if0 t.0 goto :if6_else - if current_node goto :null31 - Error("null pointer") - null31: - t.1 = call :Tree.GetHas_Left(current_node) - if0 t.1 goto :if7_else - parent_node = current_node - if current_node goto :null32 - Error("null pointer") - null32: - current_node = call :Tree.GetLeft(current_node) - goto :if7_end - if7_else: - cont = 0 - if7_end: - goto :if6_end - if6_else: - t.2 = LtS(key_aux v_key) - if0 t.2 goto :if8_else - if current_node goto :null33 - Error("null pointer") - null33: - t.3 = call :Tree.GetHas_Right(current_node) - if0 t.3 goto :if9_else - parent_node = current_node - if current_node goto :null34 - Error("null pointer") - null34: - current_node = call :Tree.GetRight(current_node) - goto :if9_end - if9_else: - cont = 0 - if9_end: - goto :if8_end - if8_else: - if0 is_root goto :if10_else - if current_node goto :null35 - Error("null pointer") - null35: - t.4 = call :Tree.GetHas_Right(current_node) - if t.4 goto :if11_else - if current_node goto :null36 - Error("null pointer") - null36: - t.5 = call :Tree.GetHas_Left(current_node) - if t.5 goto :if11_else - ntb = 1 - goto :if11_end - if11_else: - ntb = call :Tree.Remove(this parent_node current_node) - if11_end: - goto :if10_end - if10_else: - ntb = call :Tree.Remove(this parent_node current_node) - if10_end: - found = 1 - cont = 0 - if8_end: - if6_end: - is_root = 0 - goto :while2_top - while2_end: - ret found - -func Tree.Remove(this p_node c_node) - if c_node goto :null37 - Error("null pointer") - null37: - t.0 = call :Tree.GetHas_Left(c_node) - if0 t.0 goto :if12_else - ntb = call :Tree.RemoveLeft(this p_node c_node) - goto :if12_end - if12_else: - if c_node goto :null38 - Error("null pointer") - null38: - t.1 = call :Tree.GetHas_Right(c_node) - if0 t.1 goto :if13_else - ntb = call :Tree.RemoveRight(this p_node c_node) - goto :if13_end - if13_else: - if c_node goto :null39 - Error("null pointer") - null39: - auxkey1 = call :Tree.GetKey(c_node) - if p_node goto :null40 - Error("null pointer") - null40: - t.2 = call :Tree.GetLeft(p_node) - if t.2 goto :null41 - Error("null pointer") - null41: - auxkey2 = call :Tree.GetKey(t.2) - t.3 = call :Tree.Compare(this auxkey1 auxkey2) - if0 t.3 goto :if14_else - if p_node goto :null42 - Error("null pointer") - null42: - t.4 = [this+20] - ntb = call :Tree.SetLeft(p_node t.4) - if p_node goto :null43 - Error("null pointer") - null43: - ntb = call :Tree.SetHas_Left(p_node 0) - goto :if14_end - if14_else: - if p_node goto :null44 - Error("null pointer") - null44: - t.5 = [this+20] - ntb = call :Tree.SetRight(p_node t.5) - if p_node goto :null45 - Error("null pointer") - null45: - ntb = call :Tree.SetHas_Right(p_node 0) - if14_end: - if13_end: - if12_end: - ret 1 - -func Tree.RemoveRight(this p_node c_node) - while3_top: - if c_node goto :null46 - Error("null pointer") - null46: - t.0 = call :Tree.GetHas_Right(c_node) - if0 t.0 goto :while3_end - if c_node goto :null47 - Error("null pointer") - null47: - if c_node goto :null48 - Error("null pointer") - null48: - t.1 = call :Tree.GetRight(c_node) - if t.1 goto :null49 - Error("null pointer") - null49: - t.2 = call :Tree.GetKey(t.1) - ntb = call :Tree.SetKey(c_node t.2) - p_node = c_node - if c_node goto :null50 - Error("null pointer") - null50: - c_node = call :Tree.GetRight(c_node) - goto :while3_top - while3_end: - if p_node goto :null51 - Error("null pointer") - null51: - t.3 = [this+20] - ntb = call :Tree.SetRight(p_node t.3) - if p_node goto :null52 - Error("null pointer") - null52: - ntb = call :Tree.SetHas_Right(p_node 0) - ret 1 - -func Tree.RemoveLeft(this p_node c_node) - while4_top: - if c_node goto :null53 - Error("null pointer") - null53: - t.0 = call :Tree.GetHas_Left(c_node) - if0 t.0 goto :while4_end - if c_node goto :null54 - Error("null pointer") - null54: - if c_node goto :null55 - Error("null pointer") - null55: - t.1 = call :Tree.GetLeft(c_node) - if t.1 goto :null56 - Error("null pointer") - null56: - t.2 = call :Tree.GetKey(t.1) - ntb = call :Tree.SetKey(c_node t.2) - p_node = c_node - if c_node goto :null57 - Error("null pointer") - null57: - c_node = call :Tree.GetLeft(c_node) - goto :while4_top - while4_end: - if p_node goto :null58 - Error("null pointer") - null58: - t.3 = [this+20] - ntb = call :Tree.SetLeft(p_node t.3) - if p_node goto :null59 - Error("null pointer") - null59: - ntb = call :Tree.SetHas_Left(p_node 0) - ret 1 - -func Tree.Search(this v_key) - current_node = this - cont = 1 - ifound = 0 - while5_top: - if0 cont goto :while5_end - if current_node goto :null60 - Error("null pointer") - null60: - key_aux = call :Tree.GetKey(current_node) - t.0 = LtS(v_key key_aux) - if0 t.0 goto :if15_else - if current_node goto :null61 - Error("null pointer") - null61: - t.1 = call :Tree.GetHas_Left(current_node) - if0 t.1 goto :if16_else - if current_node goto :null62 - Error("null pointer") - null62: - current_node = call :Tree.GetLeft(current_node) - goto :if16_end - if16_else: - cont = 0 - if16_end: - goto :if15_end - if15_else: - t.2 = LtS(key_aux v_key) - if0 t.2 goto :if17_else - if current_node goto :null63 - Error("null pointer") - null63: - t.3 = call :Tree.GetHas_Right(current_node) - if0 t.3 goto :if18_else - if current_node goto :null64 - Error("null pointer") - null64: - current_node = call :Tree.GetRight(current_node) - goto :if18_end - if18_else: - cont = 0 - if18_end: - goto :if17_end - if17_else: - ifound = 1 - cont = 0 - if17_end: - if15_end: - goto :while5_top - while5_end: - ret ifound - -func Tree.Print(this) - current_node = this - ntb = call :Tree.RecPrint(this current_node) - ret 1 - -func Tree.RecPrint(this node) - if node goto :null65 - Error("null pointer") - null65: - t.0 = call :Tree.GetHas_Left(node) - if0 t.0 goto :if19_else - if node goto :null66 - Error("null pointer") - null66: - t.1 = call :Tree.GetLeft(node) - ntb = call :Tree.RecPrint(this t.1) - goto :if19_end - if19_else: - ntb = 1 - if19_end: - if node goto :null67 - Error("null pointer") - null67: - t.2 = call :Tree.GetKey(node) - PrintIntS(t.2) - if node goto :null68 - Error("null pointer") - null68: - t.3 = call :Tree.GetHas_Right(node) - if0 t.3 goto :if20_else - if node goto :null69 - Error("null pointer") - null69: - t.4 = call :Tree.GetRight(node) - ntb = call :Tree.RecPrint(this t.4) - goto :if20_end - if20_else: - ntb = 1 - if20_end: - ret 1 - -func Tree.accept(this v) - PrintIntS(333) - if v goto :null70 - Error("null pointer") - null70: - t.0 = [v] - t.0 = [t.0+0] - nti = call t.0(v this) - ret 0 - -func Visitor.visit(this n) - if n goto :null71 - Error("null pointer") - null71: - t.0 = call :Tree.GetHas_Right(n) - if0 t.0 goto :if21_else - if n goto :null72 - Error("null pointer") - null72: - t.1 = call :Tree.GetRight(n) - [this+8] = t.1 - t.2 = [this+8] - if t.2 goto :null73 - Error("null pointer") - null73: - nti = call :Tree.accept(t.2 this) - goto :if21_end - if21_else: - nti = 0 - if21_end: - if n goto :null74 - Error("null pointer") - null74: - t.3 = call :Tree.GetHas_Left(n) - if0 t.3 goto :if22_else - if n goto :null75 - Error("null pointer") - null75: - t.4 = call :Tree.GetLeft(n) - [this+4] = t.4 - t.5 = [this+4] - if t.5 goto :null76 - Error("null pointer") - null76: - nti = call :Tree.accept(t.5 this) - goto :if22_end - if22_else: - nti = 0 - if22_end: - ret 0 - -func MyVisitor.visit(this n) - if n goto :null77 - Error("null pointer") - null77: - t.0 = call :Tree.GetHas_Right(n) - if0 t.0 goto :if23_else - if n goto :null78 - Error("null pointer") - null78: - t.1 = call :Tree.GetRight(n) - [this+8] = t.1 - t.2 = [this+8] - if t.2 goto :null79 - Error("null pointer") - null79: - nti = call :Tree.accept(t.2 this) - goto :if23_end - if23_else: - nti = 0 - if23_end: - if n goto :null80 - Error("null pointer") - null80: - t.3 = call :Tree.GetKey(n) - PrintIntS(t.3) - if n goto :null81 - Error("null pointer") - null81: - t.4 = call :Tree.GetHas_Left(n) - if0 t.4 goto :if24_else - if n goto :null82 - Error("null pointer") - null82: - t.5 = call :Tree.GetLeft(n) - [this+4] = t.5 - t.6 = [this+4] - if t.6 goto :null83 - Error("null pointer") - null83: - nti = call :Tree.accept(t.6 this) - goto :if24_end - if24_else: - nti = 0 - if24_end: - ret 0 diff --git a/vaporize/tests/TreeVisitor.opt.vaporm b/vaporize/tests/TreeVisitor.opt.vaporm deleted file mode 100644 index 0ff4fc4..0000000 --- a/vaporize/tests/TreeVisitor.opt.vaporm +++ /dev/null @@ -1,948 +0,0 @@ -const empty_TV - -const empty_Tree - -const vmt_Visitor - :Visitor.visit - -const vmt_MyVisitor - :MyVisitor.visit - -func Main [in 0, out 0, local 0] - $a0 = :empty_TV - call :TV.Start - $t0 = $v0 - PrintIntS($t0) - ret - -func TV.Start [in 0, out 0, local 1] - local[0] = $s0 - $s0 = HeapAllocZ(24) - if $s0 goto :null1 - Error("null pointer") -null1: - $a0 = $s0 - $a1 = 16 - call :Tree.Init - if $s0 goto :null2 - Error("null pointer") -null2: - $a0 = $s0 - call :Tree.Print - PrintIntS(100000000) - if $s0 goto :null3 - Error("null pointer") -null3: - $a0 = $s0 - $a1 = 8 - call :Tree.Insert - if $s0 goto :null4 - Error("null pointer") -null4: - $a0 = $s0 - $a1 = 24 - call :Tree.Insert - if $s0 goto :null5 - Error("null pointer") -null5: - $a0 = $s0 - $a1 = 4 - call :Tree.Insert - if $s0 goto :null6 - Error("null pointer") -null6: - $a0 = $s0 - $a1 = 12 - call :Tree.Insert - if $s0 goto :null7 - Error("null pointer") -null7: - $a0 = $s0 - $a1 = 20 - call :Tree.Insert - if $s0 goto :null8 - Error("null pointer") -null8: - $a0 = $s0 - $a1 = 28 - call :Tree.Insert - if $s0 goto :null9 - Error("null pointer") -null9: - $a0 = $s0 - $a1 = 14 - call :Tree.Insert - if $s0 goto :null10 - Error("null pointer") -null10: - $a0 = $s0 - call :Tree.Print - PrintIntS(100000000) - $t0 = HeapAllocZ(12) - [$t0] = :vmt_MyVisitor - $t0 = $t0 - PrintIntS(50000000) - if $s0 goto :null11 - Error("null pointer") -null11: - $a0 = $s0 - $a1 = $t0 - call :Tree.accept - PrintIntS(100000000) - if $s0 goto :null12 - Error("null pointer") -null12: - $a0 = $s0 - $a1 = 24 - call :Tree.Search - $t0 = $v0 - PrintIntS($t0) - if $s0 goto :null13 - Error("null pointer") -null13: - $a0 = $s0 - $a1 = 12 - call :Tree.Search - $t0 = $v0 - PrintIntS($t0) - if $s0 goto :null14 - Error("null pointer") -null14: - $a0 = $s0 - $a1 = 16 - call :Tree.Search - $t0 = $v0 - PrintIntS($t0) - if $s0 goto :null15 - Error("null pointer") -null15: - $a0 = $s0 - $a1 = 50 - call :Tree.Search - $t0 = $v0 - PrintIntS($t0) - if $s0 goto :null16 - Error("null pointer") -null16: - $a0 = $s0 - $a1 = 12 - call :Tree.Search - $t0 = $v0 - PrintIntS($t0) - if $s0 goto :null17 - Error("null pointer") -null17: - $a0 = $s0 - $a1 = 12 - call :Tree.Delete - if $s0 goto :null18 - Error("null pointer") -null18: - $a0 = $s0 - call :Tree.Print - if $s0 goto :null19 - Error("null pointer") -null19: - $a0 = $s0 - $a1 = 12 - call :Tree.Search - $t0 = $v0 - PrintIntS($t0) - $v0 = 0 - $s0 = local[0] - ret - -func Tree.Init [in 0, out 0, local 0] - $t0 = $a0 - $t1 = $a1 - [$t0+8] = $t1 - [$t0+12] = 0 - [$t0+16] = 0 - $v0 = 1 - ret - -func Tree.SetRight [in 0, out 0, local 0] - $t0 = $a0 - $t1 = $a1 - [$t0+4] = $t1 - $v0 = 1 - ret - -func Tree.SetLeft [in 0, out 0, local 0] - $t0 = $a0 - $t1 = $a1 - [$t0] = $t1 - $v0 = 1 - ret - -func Tree.GetRight [in 0, out 0, local 0] - $t0 = $a0 - $t0 = [$t0+4] - $v0 = $t0 - ret - -func Tree.GetLeft [in 0, out 0, local 0] - $t0 = $a0 - $t0 = [$t0] - $v0 = $t0 - ret - -func Tree.GetKey [in 0, out 0, local 0] - $t0 = $a0 - $t0 = [$t0+8] - $v0 = $t0 - ret - -func Tree.SetKey [in 0, out 0, local 0] - $t0 = $a0 - $t1 = $a1 - [$t0+8] = $t1 - $v0 = 1 - ret - -func Tree.GetHas_Right [in 0, out 0, local 0] - $t0 = $a0 - $t0 = [$t0+16] - $v0 = $t0 - ret - -func Tree.GetHas_Left [in 0, out 0, local 0] - $t0 = $a0 - $t0 = [$t0+12] - $v0 = $t0 - ret - -func Tree.SetHas_Left [in 0, out 0, local 0] - $t0 = $a0 - $t1 = $a1 - [$t0+12] = $t1 - $v0 = 1 - ret - -func Tree.SetHas_Right [in 0, out 0, local 0] - $t0 = $a0 - $t1 = $a1 - [$t0+16] = $t1 - $v0 = 1 - ret - -func Tree.Compare [in 0, out 0, local 0] - $t0 = $a1 - $t1 = $a2 - $t2 = Add($t1 1) - $t1 = LtS($t0 $t1) - if0 $t1 goto :if1_else - $t1 = 0 - goto :if1_end -if1_else: - $t2 = LtS($t0 $t2) - if $t2 goto :if2_else - $t1 = 0 - goto :if2_end -if2_else: - $t1 = 1 -if2_end: -if1_end: - $v0 = $t1 - ret - -func Tree.Insert [in 0, out 0, local 4] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - local[3] = $s3 - $s0 = $a0 - $s1 = $a1 - $s2 = HeapAllocZ(24) - if $s2 goto :null20 - Error("null pointer") -null20: - $a0 = $s2 - $a1 = $s1 - call :Tree.Init - $s0 = $s0 - $s3 = 1 -while1_top: - if0 $s3 goto :while1_end - if $s0 goto :null21 - Error("null pointer") -null21: - $a0 = $s0 - call :Tree.GetKey - $t0 = $v0 - $t0 = LtS($s1 $t0) - if0 $t0 goto :if3_else - if $s0 goto :null22 - Error("null pointer") -null22: - $a0 = $s0 - call :Tree.GetHas_Left - $t0 = $v0 - if0 $t0 goto :if4_else - if $s0 goto :null23 - Error("null pointer") -null23: - $a0 = $s0 - call :Tree.GetLeft - $s0 = $v0 - goto :if4_end -if4_else: - $s3 = 0 - if $s0 goto :null24 - Error("null pointer") -null24: - $a0 = $s0 - $a1 = 1 - call :Tree.SetHas_Left - if $s0 goto :null25 - Error("null pointer") -null25: - $a0 = $s0 - $a1 = $s2 - call :Tree.SetLeft -if4_end: - goto :if3_end -if3_else: - if $s0 goto :null26 - Error("null pointer") -null26: - $a0 = $s0 - call :Tree.GetHas_Right - $t0 = $v0 - if0 $t0 goto :if5_else - if $s0 goto :null27 - Error("null pointer") -null27: - $a0 = $s0 - call :Tree.GetRight - $s0 = $v0 - goto :if5_end -if5_else: - $s3 = 0 - if $s0 goto :null28 - Error("null pointer") -null28: - $a0 = $s0 - $a1 = 1 - call :Tree.SetHas_Right - if $s0 goto :null29 - Error("null pointer") -null29: - $a0 = $s0 - $a1 = $s2 - call :Tree.SetRight -if5_end: -if3_end: - goto :while1_top -while1_end: - $v0 = 1 - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - $s3 = local[3] - ret - -func Tree.Delete [in 0, out 0, local 7] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - local[3] = $s3 - local[4] = $s4 - local[5] = $s5 - local[6] = $s6 - $s0 = $a0 - $s1 = $a1 - $s2 = $s0 - $s3 = $s0 - $s4 = 1 - $s5 = 0 - $s6 = 1 -while2_top: - if0 $s4 goto :while2_end - if $s2 goto :null30 - Error("null pointer") -null30: - $a0 = $s2 - call :Tree.GetKey - $t0 = $v0 - $t1 = LtS($s1 $t0) - if0 $t1 goto :if6_else - if $s2 goto :null31 - Error("null pointer") -null31: - $a0 = $s2 - call :Tree.GetHas_Left - $t1 = $v0 - if0 $t1 goto :if7_else - $s3 = $s2 - if $s2 goto :null32 - Error("null pointer") -null32: - $a0 = $s2 - call :Tree.GetLeft - $s2 = $v0 - goto :if7_end -if7_else: - $s4 = 0 -if7_end: - goto :if6_end -if6_else: - $t0 = LtS($t0 $s1) - if0 $t0 goto :if8_else - if $s2 goto :null33 - Error("null pointer") -null33: - $a0 = $s2 - call :Tree.GetHas_Right - $t0 = $v0 - if0 $t0 goto :if9_else - $s3 = $s2 - if $s2 goto :null34 - Error("null pointer") -null34: - $a0 = $s2 - call :Tree.GetRight - $s2 = $v0 - goto :if9_end -if9_else: - $s4 = 0 -if9_end: - goto :if8_end -if8_else: - if0 $s6 goto :if10_else - if $s2 goto :null35 - Error("null pointer") -null35: - $a0 = $s2 - call :Tree.GetHas_Right - $t0 = $v0 - if $t0 goto :if11_else - if $s2 goto :null36 - Error("null pointer") -null36: - $a0 = $s2 - call :Tree.GetHas_Left - $t0 = $v0 - if $t0 goto :if11_else - goto :if11_end -if11_else: - $a0 = $s0 - $a1 = $s3 - $a2 = $s2 - call :Tree.Remove -if11_end: - goto :if10_end -if10_else: - $a0 = $s0 - $a1 = $s3 - $a2 = $s2 - call :Tree.Remove -if10_end: - $s5 = 1 - $s4 = 0 -if8_end: -if6_end: - $s6 = 0 - goto :while2_top -while2_end: - $v0 = $s5 - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - $s3 = local[3] - $s4 = local[4] - $s5 = local[5] - $s6 = local[6] - ret - -func Tree.Remove [in 0, out 0, local 3] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - $s0 = $a0 - $s1 = $a1 - $s2 = $a2 - if $s2 goto :null37 - Error("null pointer") -null37: - $a0 = $s2 - call :Tree.GetHas_Left - $t0 = $v0 - if0 $t0 goto :if12_else - $a0 = $s0 - $a1 = $s1 - $a2 = $s2 - call :Tree.RemoveLeft - goto :if12_end -if12_else: - if $s2 goto :null38 - Error("null pointer") -null38: - $a0 = $s2 - call :Tree.GetHas_Right - $t0 = $v0 - if0 $t0 goto :if13_else - $a0 = $s0 - $a1 = $s1 - $a2 = $s2 - call :Tree.RemoveRight - goto :if13_end -if13_else: - if $s2 goto :null39 - Error("null pointer") -null39: - $a0 = $s2 - call :Tree.GetKey - $s2 = $v0 - if $s1 goto :null40 - Error("null pointer") -null40: - $a0 = $s1 - call :Tree.GetLeft - $t0 = $v0 - if $t0 goto :null41 - Error("null pointer") -null41: - $a0 = $t0 - call :Tree.GetKey - $t0 = $v0 - $a0 = $s0 - $a1 = $s2 - $a2 = $t0 - call :Tree.Compare - $t0 = $v0 - if0 $t0 goto :if14_else - if $s1 goto :null42 - Error("null pointer") -null42: - $t0 = [$s0+20] - $a0 = $s1 - $a1 = $t0 - call :Tree.SetLeft - if $s1 goto :null43 - Error("null pointer") -null43: - $a0 = $s1 - $a1 = 0 - call :Tree.SetHas_Left - goto :if14_end -if14_else: - if $s1 goto :null44 - Error("null pointer") -null44: - $t0 = [$s0+20] - $a0 = $s1 - $a1 = $t0 - call :Tree.SetRight - if $s1 goto :null45 - Error("null pointer") -null45: - $a0 = $s1 - $a1 = 0 - call :Tree.SetHas_Right -if14_end: -if13_end: -if12_end: - $v0 = 1 - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - ret - -func Tree.RemoveRight [in 0, out 0, local 3] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - $s0 = $a0 - $s1 = $a1 - $s2 = $a2 -while3_top: - if $s2 goto :null46 - Error("null pointer") -null46: - $a0 = $s2 - call :Tree.GetHas_Right - $t0 = $v0 - if0 $t0 goto :while3_end - if $s2 goto :null47 - Error("null pointer") -null47: - if $s2 goto :null48 - Error("null pointer") -null48: - $a0 = $s2 - call :Tree.GetRight - $t0 = $v0 - if $t0 goto :null49 - Error("null pointer") -null49: - $a0 = $t0 - call :Tree.GetKey - $t0 = $v0 - $a0 = $s2 - $a1 = $t0 - call :Tree.SetKey - $s1 = $s2 - if $s2 goto :null50 - Error("null pointer") -null50: - $a0 = $s2 - call :Tree.GetRight - $s2 = $v0 - goto :while3_top -while3_end: - if $s1 goto :null51 - Error("null pointer") -null51: - $t0 = [$s0+20] - $a0 = $s1 - $a1 = $t0 - call :Tree.SetRight - if $s1 goto :null52 - Error("null pointer") -null52: - $a0 = $s1 - $a1 = 0 - call :Tree.SetHas_Right - $v0 = 1 - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - ret - -func Tree.RemoveLeft [in 0, out 0, local 3] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - $s0 = $a0 - $s1 = $a1 - $s2 = $a2 -while4_top: - if $s2 goto :null53 - Error("null pointer") -null53: - $a0 = $s2 - call :Tree.GetHas_Left - $t0 = $v0 - if0 $t0 goto :while4_end - if $s2 goto :null54 - Error("null pointer") -null54: - if $s2 goto :null55 - Error("null pointer") -null55: - $a0 = $s2 - call :Tree.GetLeft - $t0 = $v0 - if $t0 goto :null56 - Error("null pointer") -null56: - $a0 = $t0 - call :Tree.GetKey - $t0 = $v0 - $a0 = $s2 - $a1 = $t0 - call :Tree.SetKey - $s1 = $s2 - if $s2 goto :null57 - Error("null pointer") -null57: - $a0 = $s2 - call :Tree.GetLeft - $s2 = $v0 - goto :while4_top -while4_end: - if $s1 goto :null58 - Error("null pointer") -null58: - $t0 = [$s0+20] - $a0 = $s1 - $a1 = $t0 - call :Tree.SetLeft - if $s1 goto :null59 - Error("null pointer") -null59: - $a0 = $s1 - $a1 = 0 - call :Tree.SetHas_Left - $v0 = 1 - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - ret - -func Tree.Search [in 0, out 0, local 4] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - local[3] = $s3 - $t0 = $a0 - $s0 = $a1 - $s1 = $t0 - $s2 = 1 - $s3 = 0 -while5_top: - if0 $s2 goto :while5_end - if $s1 goto :null60 - Error("null pointer") -null60: - $a0 = $s1 - call :Tree.GetKey - $t0 = $v0 - $t1 = LtS($s0 $t0) - if0 $t1 goto :if15_else - if $s1 goto :null61 - Error("null pointer") -null61: - $a0 = $s1 - call :Tree.GetHas_Left - $t1 = $v0 - if0 $t1 goto :if16_else - if $s1 goto :null62 - Error("null pointer") -null62: - $a0 = $s1 - call :Tree.GetLeft - $s1 = $v0 - goto :if16_end -if16_else: - $s2 = 0 -if16_end: - goto :if15_end -if15_else: - $t0 = LtS($t0 $s0) - if0 $t0 goto :if17_else - if $s1 goto :null63 - Error("null pointer") -null63: - $a0 = $s1 - call :Tree.GetHas_Right - $t0 = $v0 - if0 $t0 goto :if18_else - if $s1 goto :null64 - Error("null pointer") -null64: - $a0 = $s1 - call :Tree.GetRight - $s1 = $v0 - goto :if18_end -if18_else: - $s2 = 0 -if18_end: - goto :if17_end -if17_else: - $s3 = 1 - $s2 = 0 -if17_end: -if15_end: - goto :while5_top -while5_end: - $v0 = $s3 - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - $s3 = local[3] - ret - -func Tree.Print [in 0, out 0, local 0] - $t0 = $a0 - $t1 = $t0 - $a0 = $t0 - $a1 = $t1 - call :Tree.RecPrint - $v0 = 1 - ret - -func Tree.RecPrint [in 0, out 0, local 2] - local[0] = $s0 - local[1] = $s1 - $s0 = $a0 - $s1 = $a1 - if $s1 goto :null65 - Error("null pointer") -null65: - $a0 = $s1 - call :Tree.GetHas_Left - $t0 = $v0 - if0 $t0 goto :if19_else - if $s1 goto :null66 - Error("null pointer") -null66: - $a0 = $s1 - call :Tree.GetLeft - $t0 = $v0 - $a0 = $s0 - $a1 = $t0 - call :Tree.RecPrint - goto :if19_end -if19_else: -if19_end: - if $s1 goto :null67 - Error("null pointer") -null67: - $a0 = $s1 - call :Tree.GetKey - $t0 = $v0 - PrintIntS($t0) - if $s1 goto :null68 - Error("null pointer") -null68: - $a0 = $s1 - call :Tree.GetHas_Right - $t0 = $v0 - if0 $t0 goto :if20_else - if $s1 goto :null69 - Error("null pointer") -null69: - $a0 = $s1 - call :Tree.GetRight - $t0 = $v0 - $a0 = $s0 - $a1 = $t0 - call :Tree.RecPrint - goto :if20_end -if20_else: -if20_end: - $v0 = 1 - $s0 = local[0] - $s1 = local[1] - ret - -func Tree.accept [in 0, out 0, local 0] - $t0 = $a0 - $t1 = $a1 - PrintIntS(333) - if $t1 goto :null70 - Error("null pointer") -null70: - $t2 = [$t1] - $t2 = [$t2] - $a0 = $t1 - $a1 = $t0 - call $t2 - $v0 = 0 - ret - -func Visitor.visit [in 0, out 0, local 2] - local[0] = $s0 - local[1] = $s1 - $s0 = $a0 - $s1 = $a1 - if $s1 goto :null71 - Error("null pointer") -null71: - $a0 = $s1 - call :Tree.GetHas_Right - $t0 = $v0 - if0 $t0 goto :if21_else - if $s1 goto :null72 - Error("null pointer") -null72: - $a0 = $s1 - call :Tree.GetRight - $t0 = $v0 - [$s0+8] = $t0 - $t0 = [$s0+8] - if $t0 goto :null73 - Error("null pointer") -null73: - $a0 = $t0 - $a1 = $s0 - call :Tree.accept - goto :if21_end -if21_else: -if21_end: - if $s1 goto :null74 - Error("null pointer") -null74: - $a0 = $s1 - call :Tree.GetHas_Left - $t0 = $v0 - if0 $t0 goto :if22_else - if $s1 goto :null75 - Error("null pointer") -null75: - $a0 = $s1 - call :Tree.GetLeft - $t0 = $v0 - [$s0+4] = $t0 - $t0 = [$s0+4] - if $t0 goto :null76 - Error("null pointer") -null76: - $a0 = $t0 - $a1 = $s0 - call :Tree.accept - goto :if22_end -if22_else: -if22_end: - $v0 = 0 - $s0 = local[0] - $s1 = local[1] - ret - -func MyVisitor.visit [in 0, out 0, local 2] - local[0] = $s0 - local[1] = $s1 - $s0 = $a0 - $s1 = $a1 - if $s1 goto :null77 - Error("null pointer") -null77: - $a0 = $s1 - call :Tree.GetHas_Right - $t0 = $v0 - if0 $t0 goto :if23_else - if $s1 goto :null78 - Error("null pointer") -null78: - $a0 = $s1 - call :Tree.GetRight - $t0 = $v0 - [$s0+8] = $t0 - $t0 = [$s0+8] - if $t0 goto :null79 - Error("null pointer") -null79: - $a0 = $t0 - $a1 = $s0 - call :Tree.accept - goto :if23_end -if23_else: -if23_end: - if $s1 goto :null80 - Error("null pointer") -null80: - $a0 = $s1 - call :Tree.GetKey - $t0 = $v0 - PrintIntS($t0) - if $s1 goto :null81 - Error("null pointer") -null81: - $a0 = $s1 - call :Tree.GetHas_Left - $t0 = $v0 - if0 $t0 goto :if24_else - if $s1 goto :null82 - Error("null pointer") -null82: - $a0 = $s1 - call :Tree.GetLeft - $t0 = $v0 - [$s0+4] = $t0 - $t0 = [$s0+4] - if $t0 goto :null83 - Error("null pointer") -null83: - $a0 = $t0 - $a1 = $s0 - call :Tree.accept - goto :if24_end -if24_else: -if24_end: - $v0 = 0 - $s0 = local[0] - $s1 = local[1] - ret - diff --git a/vaporize/tests/TreeVisitor.regalloc b/vaporize/tests/TreeVisitor.regalloc deleted file mode 100644 index 3edb0c1..0000000 --- a/vaporize/tests/TreeVisitor.regalloc +++ /dev/null @@ -1,830 +0,0 @@ -func Main - in 0, out 0, callee-saves 0, spills 0 -Live In: - t.0: 37-38 41-43 - t.1: 42-43 - t.2: 44 -Linear Range: - t.0: 36-43 - t.1: 41-43 - t.2: 43-44 -Allocation: - t.0: t0 - t.1: t1 - t.2: t1 - -func TV.Start - in 0, out 0, callee-saves 1, spills 0 -Live In: - this: - t.0: 49-50 - root: 51 54-57 60-64 67-70 73-76 79-82 85-88 91-94 97-100 103-106 109-117 120-124 127-131 134-138 141-145 148-152 155-159 162-165 168-171 174-176 - t.1: 55-56 - ntb: - t.2: 61-62 - t.3: 68-69 - t.4: 74-75 - t.5: 80-81 - t.6: 86-87 - t.7: 92-93 - t.8: 98-99 - t.9: 104-105 - t.10: 110-111 - t.11: 114-115 - v: 116-117 120-122 - t.12: 121-122 - nti: - t.13: 128-129 - t.14: 130 - t.15: 135-136 - t.16: 137 - t.17: 142-143 - t.18: 144 - t.19: 149-150 - t.20: 151 - t.21: 156-157 - t.22: 158 - t.23: 163-164 - t.24: 169-170 - t.25: 175-176 - t.26: 177 -Linear Range: - t.0: 48-50 - root: 50-176 (cross call) - t.1: 54-56 - t.2: 60-62 - t.3: 67-69 - t.4: 73-75 - t.5: 79-81 - t.6: 85-87 - t.7: 91-93 - t.8: 97-99 - t.9: 103-105 - t.10: 109-111 - t.11: 113-115 - v: 115-122 - t.12: 120-122 - t.13: 127-129 - t.14: 129-130 - t.15: 134-136 - t.16: 136-137 - t.17: 141-143 - t.18: 143-144 - t.19: 148-150 - t.20: 150-151 - t.21: 155-157 - t.22: 157-158 - t.23: 162-164 - t.24: 168-170 - t.25: 174-176 - t.26: 176-177 -Allocation: - t.0: t0 - root: s0 - t.1: t0 - t.2: t0 - t.3: t0 - t.4: t0 - t.5: t0 - t.6: t0 - t.7: t0 - t.8: t0 - t.9: t0 - t.10: t0 - t.11: t0 - v: t0 - t.12: t1 - t.13: t1 - t.14: t1 - t.15: t1 - t.16: t1 - t.17: t1 - t.18: t1 - t.19: t1 - t.20: t1 - t.21: t1 - t.22: t1 - t.23: t1 - t.24: t1 - t.25: t1 - t.26: t1 - -func Tree.Init - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 181-183 - v_key: 181 -Linear Range: - this: 180-183 - v_key: 180-181 -Allocation: - this: t0 - v_key: t1 - -func Tree.SetRight - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 187 - rn: 187 -Linear Range: - this: 186-187 - rn: 186-187 -Allocation: - this: t0 - rn: t1 - -func Tree.SetLeft - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 191 - ln: 191 -Linear Range: - this: 190-191 - ln: 190-191 -Allocation: - this: t0 - ln: t1 - -func Tree.GetRight - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 195 - t.0: 196 -Linear Range: - this: 194-195 - t.0: 195-196 -Allocation: - this: t0 - t.0: t0 - -func Tree.GetLeft - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 199 - t.0: 200 -Linear Range: - this: 198-199 - t.0: 199-200 -Allocation: - this: t0 - t.0: t0 - -func Tree.GetKey - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 203 - t.0: 204 -Linear Range: - this: 202-203 - t.0: 203-204 -Allocation: - this: t0 - t.0: t0 - -func Tree.SetKey - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 207 - v_key: 207 -Linear Range: - this: 206-207 - v_key: 206-207 -Allocation: - this: t0 - v_key: t1 - -func Tree.GetHas_Right - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 211 - t.0: 212 -Linear Range: - this: 210-211 - t.0: 211-212 -Allocation: - this: t0 - t.0: t0 - -func Tree.GetHas_Left - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 215 - t.0: 216 -Linear Range: - this: 214-215 - t.0: 215-216 -Allocation: - this: t0 - t.0: t0 - -func Tree.SetHas_Left - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 219 - val: 219 -Linear Range: - this: 218-219 - val: 218-219 -Allocation: - this: t0 - val: t1 - -func Tree.SetHas_Right - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 223 - val: 223 -Linear Range: - this: 222-223 - val: 222-223 -Allocation: - this: t0 - val: t1 - -func Tree.Compare - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: - num1: 227-230 234 - num2: 227-229 - ntb: 232 238 243 - nti: 229-230 234 - t.0: 230 - t.1: 235 - t.2: 236 -Linear Range: - num1: 226-234 - num2: 226-229 - ntb: 231-243 - nti: 228-234 - t.0: 229-230 - t.1: 234-235 - t.2: 235-236 -Allocation: - num1: t0 - num2: t1 - ntb: t1 - nti: t2 - t.0: t1 - t.1: t2 - t.2: t2 - -func Tree.Insert - in 0, out 0, callee-saves 4, spills 0 -Live In: - this: 246-249 252-255 - v_key: 246-249 252-259 262-267 270-274 277-283 286-289 292-298 301-305 308-314 317-320 323-328 - t.0: 247-248 - new_node: 249 252-259 262-267 270-274 277-283 286-289 292-298 301-305 308-314 317-320 323-328 - t.1: 253-254 - ntb: - current_node: 256-259 262-267 270-274 277-283 286-289 292-298 301-305 308-314 317-320 323-328 - cont: 258-259 262-267 270-274 277-280 283 286-289 292-298 301-305 308-311 314 317-320 323-328 - t.2: 263-264 - key_aux: 265 - t.3: 266 - t.4: 271-272 - t.5: 273 - t.6: 278-279 - t.7: 287-288 - t.8: 293-294 - t.9: 302-303 - t.10: 304 - t.11: 309-310 - t.12: 318-319 - t.13: 324-325 -Linear Range: - this: 245-255 (cross call) - v_key: 245-328 (cross call) - t.0: 246-248 - new_node: 248-328 (cross call) - t.1: 252-254 - current_node: 255-328 (cross call) - cont: 256-328 (cross call) - t.2: 262-264 - key_aux: 264-265 - t.3: 265-266 - t.4: 270-272 - t.5: 272-273 - t.6: 277-279 - t.7: 286-288 - t.8: 292-294 - t.9: 301-303 - t.10: 303-304 - t.11: 308-310 - t.12: 317-319 - t.13: 323-325 -Allocation: - this: s0 - v_key: s1 - t.0: t0 - new_node: s2 - t.1: t0 - current_node: s0 - cont: s3 - t.2: t0 - key_aux: t0 - t.3: t0 - t.4: t0 - t.5: t0 - t.6: t0 - t.7: t0 - t.8: t0 - t.9: t0 - t.10: t0 - t.11: t0 - t.12: t0 - t.13: t0 - -func Tree.Delete - in 0, out 0, callee-saves 7, spills 0 -Live In: - this: 333-340 343-348 351-356 359-370 373-378 381-391 394-399 402-429 - v_key: 333-340 343-348 351-356 359-370 373-378 381-391 394-399 402-429 - current_node: 334-340 343-348 351-356 359-370 373-378 381-391 394-399 402-429 - parent_node: 335-340 343-348 351-354 356 359-370 373-376 378 381-391 394-399 402-429 - cont: 336-340 343-348 351-356 359-362 366-370 373-378 381-384 388 428-429 - found: 337-340 343-348 351-356 359-370 373-378 381-388 425-431 - is_root: 339-340 343-347 368-369 390 429 - t.0: 344-345 - key_aux: 346-347 368 - t.1: 347 - t.2: 352-353 - t.3: 354 - t.4: 360-361 - t.5: 369 - t.6: 374-375 - t.7: 376 - t.8: 382-383 - t.10: 395-396 - t.11: 397 - t.12: 398 - t.13: 403-404 - t.14: 405 - t.9: 406 410 - ntb: - t.15: 415-416 - t.16: 421-422 -Linear Range: - this: 332-429 (cross call) - v_key: 332-429 (cross call) - current_node: 333-429 (cross call) - parent_node: 334-429 (cross call) - cont: 335-429 (cross call) - found: 336-431 (cross call) - is_root: 337-429 (cross call) - t.0: 343-345 - key_aux: 345-368 - t.1: 346-347 - t.2: 351-353 - t.3: 353-354 - t.4: 359-361 - t.5: 368-369 - t.6: 373-375 - t.7: 375-376 - t.8: 381-383 - t.10: 394-396 - t.11: 396-397 - t.12: 397-398 - t.13: 402-404 - t.14: 404-405 - t.9: 405-410 - t.15: 414-416 - t.16: 420-422 -Allocation: - this: s0 - v_key: s1 - current_node: s2 - parent_node: s3 - cont: s4 - found: s5 - is_root: s6 - t.0: t0 - key_aux: t0 - t.1: t1 - t.2: t1 - t.3: t1 - t.4: t1 - t.5: t0 - t.6: t0 - t.7: t0 - t.8: t0 - t.10: t0 - t.11: t0 - t.12: t0 - t.13: t0 - t.14: t0 - t.9: t0 - t.15: t0 - t.16: t0 - -func Tree.Remove - in 0, out 0, callee-saves 3, spills 0 -Live In: - this: 434 437-443 446 449-455 458 461-464 467-470 473-480 483-485 495 498-500 - p_node: 434 437-443 446 449-455 458 461-464 467-470 473-480 483-487 490-492 495 498-502 505-507 - c_node: 434 437-443 446 449-455 458 461-463 - t.0: 438-439 - t.1: 440 - t.2: 442-443 - ntb: - t.3: 450-451 - t.4: 452 - t.5: 454-455 - t.6: 462-463 - auxkey1: 464 467-470 473-478 - t.7: 468-469 - t.8: 470 473-475 - t.9: 474-475 - auxkey2: 476-478 - t.10: 477-478 - t.11: 479 - t.12: 484-486 - t.13: 486 - t.14: 491-492 - t.15: 499-501 - t.16: 501 - t.17: 506-507 -Linear Range: - this: 433-500 (cross call) - p_node: 433-507 (cross call) - c_node: 433-463 (cross call) - t.0: 437-439 - t.1: 439-440 - t.2: 441-443 - t.3: 449-451 - t.4: 451-452 - t.5: 453-455 - t.6: 461-463 - auxkey1: 463-478 (cross call) - t.7: 467-469 - t.8: 469-475 - t.9: 473-475 - auxkey2: 475-478 - t.10: 476-478 - t.11: 478-479 - t.12: 483-486 - t.13: 485-486 - t.14: 490-492 - t.15: 498-501 - t.16: 500-501 - t.17: 505-507 -Allocation: - this: s0 - p_node: s1 - c_node: s2 - t.0: t0 - t.1: t0 - t.2: t0 - t.3: t0 - t.4: t0 - t.5: t0 - t.6: t0 - auxkey1: s2 - t.7: t0 - t.8: t0 - t.9: t1 - auxkey2: t1 - t.10: t0 - t.11: t0 - t.12: t0 - t.13: t1 - t.14: t1 - t.15: t1 - t.16: t0 - t.17: t0 - -func Tree.RemoveRight - in 0, out 0, callee-saves 4, spills 0 -Live In: - this: 515 518-522 525-527 530-533 536-541 544-549 552-554 - p_node: 515 518-521 541 544-549 552-556 559-561 - c_node: 515 518-522 525-527 530-533 536-541 544-547 - t.0: 519-520 - t.1: 521 - t.2: 526-527 530-533 536-539 - t.3: 531-532 - t.4: 533 536-538 - t.5: 537-538 - t.6: 539 - ntb: - t.7: 545-546 - t.8: 553-555 - t.9: 555 - t.10: 560-561 -Linear Range: - this: 513-554 (cross call) - p_node: 513-561 (cross call) - c_node: 513-547 (cross call) - t.0: 518-520 - t.1: 520-521 - t.2: 525-539 (cross call) - t.3: 530-532 - t.4: 532-538 - t.5: 536-538 - t.6: 538-539 - t.7: 544-546 - t.8: 552-555 - t.9: 554-555 - t.10: 559-561 -Allocation: - this: s0 - p_node: s1 - c_node: s2 - t.0: t0 - t.1: t0 - t.2: s3 - t.3: t0 - t.4: t0 - t.5: t1 - t.6: t1 - t.7: t1 - t.8: t1 - t.9: t0 - t.10: t0 - -func Tree.RemoveLeft - in 0, out 0, callee-saves 4, spills 0 -Live In: - this: 566 569-573 576-578 581-584 587-592 595-600 603-605 - p_node: 566 569-572 592 595-600 603-607 610-612 - c_node: 566 569-573 576-578 581-584 587-592 595-598 - t.0: 570-571 - t.1: 572 - t.2: 577-578 581-584 587-590 - t.3: 582-583 - t.4: 584 587-589 - t.5: 588-589 - t.6: 590 - ntb: - t.7: 596-597 - t.8: 604-606 - t.9: 606 - t.10: 611-612 -Linear Range: - this: 564-605 (cross call) - p_node: 564-612 (cross call) - c_node: 564-598 (cross call) - t.0: 569-571 - t.1: 571-572 - t.2: 576-590 (cross call) - t.3: 581-583 - t.4: 583-589 - t.5: 587-589 - t.6: 589-590 - t.7: 595-597 - t.8: 603-606 - t.9: 605-606 - t.10: 610-612 -Allocation: - this: s0 - p_node: s1 - c_node: s2 - t.0: t0 - t.1: t0 - t.2: s3 - t.3: t0 - t.4: t0 - t.5: t1 - t.6: t1 - t.7: t1 - t.8: t1 - t.9: t0 - t.10: t0 - -func Tree.Search - in 0, out 0, callee-saves 4, spills 0 -Live In: - this: 616 - v_key: 616-621 624-629 632-636 639-650 653-657 660-673 - current_node: 617-621 624-629 632-636 639-650 653-657 660-673 - cont: 618-621 624-629 632-636 639-642 646-650 653-657 660-663 667 673 - ifound: 620-621 624-629 632-636 639-650 653-657 660-667 670-675 - t.0: 625-626 - key_aux: 627-628 648 - t.1: 628 - t.2: 633-634 - t.3: 635 - t.4: 640-641 - t.5: 649 - t.6: 654-655 - t.7: 656 - t.8: 661-662 -Linear Range: - this: 615-616 - v_key: 615-673 (cross call) - current_node: 616-673 (cross call) - cont: 617-673 (cross call) - ifound: 618-675 (cross call) - t.0: 624-626 - key_aux: 626-648 - t.1: 627-628 - t.2: 632-634 - t.3: 634-635 - t.4: 639-641 - t.5: 648-649 - t.6: 653-655 - t.7: 655-656 - t.8: 660-662 -Allocation: - this: t0 - v_key: s0 - current_node: s1 - cont: s2 - ifound: s3 - t.0: t0 - key_aux: t0 - t.1: t1 - t.2: t1 - t.3: t1 - t.4: t1 - t.5: t0 - t.6: t0 - t.7: t0 - t.8: t0 - -func Tree.Print - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 678-681 - current_node: 679-681 - t.0: 680-681 - ntb: -Linear Range: - this: 677-681 - current_node: 678-681 - t.0: 679-681 -Allocation: - this: t0 - current_node: t1 - t.0: t2 - -func Tree.RecPrint - in 0, out 0, callee-saves 3, spills 0 -Live In: - this: 685 688-694 697-705 708-712 715-721 724-727 - node: 685 688-694 697-705 708-712 715-721 724-726 - t.0: 689-690 - t.1: 691 - t.2: 693-694 697-700 - t.3: 698-699 - t.4: 700 - ntb: - t.5: 709-710 - t.6: 711 - t.7: 716-717 - t.8: 718 - t.9: 720-721 724-727 - t.10: 725-726 - t.11: 727 -Linear Range: - this: 684-727 (cross call) - node: 684-726 (cross call) - t.0: 688-690 - t.1: 690-691 - t.2: 692-700 (cross call) - t.3: 697-699 - t.4: 699-700 - t.5: 708-710 - t.6: 710-711 - t.7: 715-717 - t.8: 717-718 - t.9: 719-727 (cross call) - t.10: 724-726 - t.11: 726-727 -Allocation: - this: s0 - node: s1 - t.0: t0 - t.1: t0 - t.2: s2 - t.3: t0 - t.4: t0 - t.5: t0 - t.6: t0 - t.7: t0 - t.8: t0 - t.9: s2 - t.10: t0 - t.11: t0 - -func Tree.accept - in 0, out 0, callee-saves 0, spills 0 -Live In: - this: 735-736 739-741 - v: 735-736 739-741 - t.0: 740-741 - nti: -Linear Range: - this: 734-741 - v: 734-741 - t.0: 739-741 -Allocation: - this: t0 - v: t1 - t.0: t2 - -func Visitor.visit - in 0, out 0, callee-saves 2, spills 0 -Live In: - this: 745 748-752 755-760 763-770 773-777 780-785 788-790 - n: 745 748-752 755-760 763-770 773-777 780-782 - t.0: 749-750 - t.1: 751 - t.2: 756-757 - t.3: 758 - t.4: 760 763-765 - t.5: 764-765 - nti: - t.6: 774-775 - t.7: 776 - t.8: 781-782 - t.9: 783 - t.10: 785 788-790 - t.11: 789-790 -Linear Range: - this: 744-790 (cross call) - n: 744-782 (cross call) - t.0: 748-750 - t.1: 750-751 - t.2: 755-757 - t.3: 757-758 - t.4: 759-765 - t.5: 763-765 - t.6: 773-775 - t.7: 775-776 - t.8: 780-782 - t.9: 782-783 - t.10: 784-790 - t.11: 788-790 -Allocation: - this: s0 - n: s1 - t.0: t0 - t.1: t0 - t.2: t0 - t.3: t0 - t.4: t0 - t.5: t1 - t.6: t1 - t.7: t1 - t.8: t1 - t.9: t1 - t.10: t1 - t.11: t0 - -func MyVisitor.visit - in 0, out 0, callee-saves 2, spills 0 -Live In: - this: 798 801-805 808-813 816-823 826-830 833-837 840-845 848-850 - n: 798 801-805 808-813 816-823 826-830 833-837 840-842 - t.0: 802-803 - t.1: 804 - t.2: 809-810 - t.3: 811 - t.4: 813 816-818 - t.5: 817-818 - nti: - t.6: 827-828 - t.7: 829 - t.8: 834-835 - t.9: 836 - t.10: 841-842 - t.11: 843 - t.12: 845 848-850 - t.13: 849-850 -Linear Range: - this: 797-850 (cross call) - n: 797-842 (cross call) - t.0: 801-803 - t.1: 803-804 - t.2: 808-810 - t.3: 810-811 - t.4: 812-818 - t.5: 816-818 - t.6: 826-828 - t.7: 828-829 - t.8: 833-835 - t.9: 835-836 - t.10: 840-842 - t.11: 842-843 - t.12: 844-850 - t.13: 848-850 -Allocation: - this: s0 - n: s1 - t.0: t0 - t.1: t0 - t.2: t0 - t.3: t0 - t.4: t0 - t.5: t1 - t.6: t1 - t.7: t1 - t.8: t1 - t.9: t1 - t.10: t1 - t.11: t1 - t.12: t1 - t.13: t0 - diff --git a/vaporize/tests/TreeVisitor.vapor b/vaporize/tests/TreeVisitor.vapor deleted file mode 100644 index d8aa63b..0000000 --- a/vaporize/tests/TreeVisitor.vapor +++ /dev/null @@ -1,855 +0,0 @@ - -const vmt_TV - :TV.Start - -const vmt_Tree - :Tree.Init - :Tree.SetRight - :Tree.SetLeft - :Tree.GetRight - :Tree.GetLeft - :Tree.GetKey - :Tree.SetKey - :Tree.GetHas_Right - :Tree.GetHas_Left - :Tree.SetHas_Left - :Tree.SetHas_Right - :Tree.Compare - :Tree.Insert - :Tree.Delete - :Tree.Remove - :Tree.RemoveRight - :Tree.RemoveLeft - :Tree.Search - :Tree.Print - :Tree.RecPrint - :Tree.accept - -const vmt_Visitor - :Visitor.visit - -const vmt_MyVisitor - :MyVisitor.visit - - -func Main() - t.0 = HeapAllocZ(4) - [t.0] = :vmt_TV - if t.0 goto :null1 - Error("null pointer") - null1: - t.1 = [t.0] - t.1 = [t.1+0] - t.2 = call t.1(t.0) - PrintIntS(t.2) - ret - -func TV.Start(this) - t.0 = HeapAllocZ(28) - [t.0] = :vmt_Tree - root = t.0 - if root goto :null2 - Error("null pointer") - null2: - t.1 = [root] - t.1 = [t.1+0] - ntb = call t.1(root 16) - if root goto :null3 - Error("null pointer") - null3: - t.2 = [root] - t.2 = [t.2+72] - ntb = call t.2(root) - PrintIntS(100000000) - if root goto :null4 - Error("null pointer") - null4: - t.3 = [root] - t.3 = [t.3+48] - ntb = call t.3(root 8) - if root goto :null5 - Error("null pointer") - null5: - t.4 = [root] - t.4 = [t.4+48] - ntb = call t.4(root 24) - if root goto :null6 - Error("null pointer") - null6: - t.5 = [root] - t.5 = [t.5+48] - ntb = call t.5(root 4) - if root goto :null7 - Error("null pointer") - null7: - t.6 = [root] - t.6 = [t.6+48] - ntb = call t.6(root 12) - if root goto :null8 - Error("null pointer") - null8: - t.7 = [root] - t.7 = [t.7+48] - ntb = call t.7(root 20) - if root goto :null9 - Error("null pointer") - null9: - t.8 = [root] - t.8 = [t.8+48] - ntb = call t.8(root 28) - if root goto :null10 - Error("null pointer") - null10: - t.9 = [root] - t.9 = [t.9+48] - ntb = call t.9(root 14) - if root goto :null11 - Error("null pointer") - null11: - t.10 = [root] - t.10 = [t.10+72] - ntb = call t.10(root) - PrintIntS(100000000) - t.11 = HeapAllocZ(12) - [t.11] = :vmt_MyVisitor - v = t.11 - PrintIntS(50000000) - if root goto :null12 - Error("null pointer") - null12: - t.12 = [root] - t.12 = [t.12+80] - nti = call t.12(root v) - PrintIntS(100000000) - if root goto :null13 - Error("null pointer") - null13: - t.13 = [root] - t.13 = [t.13+68] - t.14 = call t.13(root 24) - PrintIntS(t.14) - if root goto :null14 - Error("null pointer") - null14: - t.15 = [root] - t.15 = [t.15+68] - t.16 = call t.15(root 12) - PrintIntS(t.16) - if root goto :null15 - Error("null pointer") - null15: - t.17 = [root] - t.17 = [t.17+68] - t.18 = call t.17(root 16) - PrintIntS(t.18) - if root goto :null16 - Error("null pointer") - null16: - t.19 = [root] - t.19 = [t.19+68] - t.20 = call t.19(root 50) - PrintIntS(t.20) - if root goto :null17 - Error("null pointer") - null17: - t.21 = [root] - t.21 = [t.21+68] - t.22 = call t.21(root 12) - PrintIntS(t.22) - if root goto :null18 - Error("null pointer") - null18: - t.23 = [root] - t.23 = [t.23+52] - ntb = call t.23(root 12) - if root goto :null19 - Error("null pointer") - null19: - t.24 = [root] - t.24 = [t.24+72] - ntb = call t.24(root) - if root goto :null20 - Error("null pointer") - null20: - t.25 = [root] - t.25 = [t.25+68] - t.26 = call t.25(root 12) - PrintIntS(t.26) - ret 0 - -func Tree.Init(this v_key) - [this+12] = v_key - [this+16] = 0 - [this+20] = 0 - ret 1 - -func Tree.SetRight(this rn) - [this+8] = rn - ret 1 - -func Tree.SetLeft(this ln) - [this+4] = ln - ret 1 - -func Tree.GetRight(this) - t.0 = [this+8] - ret t.0 - -func Tree.GetLeft(this) - t.0 = [this+4] - ret t.0 - -func Tree.GetKey(this) - t.0 = [this+12] - ret t.0 - -func Tree.SetKey(this v_key) - [this+12] = v_key - ret 1 - -func Tree.GetHas_Right(this) - t.0 = [this+20] - ret t.0 - -func Tree.GetHas_Left(this) - t.0 = [this+16] - ret t.0 - -func Tree.SetHas_Left(this val) - [this+16] = val - ret 1 - -func Tree.SetHas_Right(this val) - [this+20] = val - ret 1 - -func Tree.Compare(this num1 num2) - ntb = 0 - nti = Add(num2 1) - t.0 = LtS(num1 num2) - if0 t.0 goto :if1_else - ntb = 0 - goto :if1_end - if1_else: - t.1 = LtS(num1 nti) - t.2 = Sub(1 t.1) - if0 t.2 goto :if2_else - ntb = 0 - goto :if2_end - if2_else: - ntb = 1 - if2_end: - if1_end: - ret ntb - -func Tree.Insert(this v_key) - t.0 = HeapAllocZ(28) - [t.0] = :vmt_Tree - new_node = t.0 - if new_node goto :null21 - Error("null pointer") - null21: - t.1 = [new_node] - t.1 = [t.1+0] - ntb = call t.1(new_node v_key) - current_node = this - cont = 1 - while1_top: - if0 cont goto :while1_end - if current_node goto :null22 - Error("null pointer") - null22: - t.2 = [current_node] - t.2 = [t.2+20] - key_aux = call t.2(current_node) - t.3 = LtS(v_key key_aux) - if0 t.3 goto :if3_else - if current_node goto :null23 - Error("null pointer") - null23: - t.4 = [current_node] - t.4 = [t.4+32] - t.5 = call t.4(current_node) - if0 t.5 goto :if4_else - if current_node goto :null24 - Error("null pointer") - null24: - t.6 = [current_node] - t.6 = [t.6+16] - current_node = call t.6(current_node) - goto :if4_end - if4_else: - cont = 0 - if current_node goto :null25 - Error("null pointer") - null25: - t.7 = [current_node] - t.7 = [t.7+36] - ntb = call t.7(current_node 1) - if current_node goto :null26 - Error("null pointer") - null26: - t.8 = [current_node] - t.8 = [t.8+8] - ntb = call t.8(current_node new_node) - if4_end: - goto :if3_end - if3_else: - if current_node goto :null27 - Error("null pointer") - null27: - t.9 = [current_node] - t.9 = [t.9+28] - t.10 = call t.9(current_node) - if0 t.10 goto :if5_else - if current_node goto :null28 - Error("null pointer") - null28: - t.11 = [current_node] - t.11 = [t.11+12] - current_node = call t.11(current_node) - goto :if5_end - if5_else: - cont = 0 - if current_node goto :null29 - Error("null pointer") - null29: - t.12 = [current_node] - t.12 = [t.12+40] - ntb = call t.12(current_node 1) - if current_node goto :null30 - Error("null pointer") - null30: - t.13 = [current_node] - t.13 = [t.13+4] - ntb = call t.13(current_node new_node) - if5_end: - if3_end: - goto :while1_top - while1_end: - ret 1 - -func Tree.Delete(this v_key) - current_node = this - parent_node = this - cont = 1 - found = 0 - is_root = 1 - while2_top: - if0 cont goto :while2_end - if current_node goto :null31 - Error("null pointer") - null31: - t.0 = [current_node] - t.0 = [t.0+20] - key_aux = call t.0(current_node) - t.1 = LtS(v_key key_aux) - if0 t.1 goto :if6_else - if current_node goto :null32 - Error("null pointer") - null32: - t.2 = [current_node] - t.2 = [t.2+32] - t.3 = call t.2(current_node) - if0 t.3 goto :if7_else - parent_node = current_node - if current_node goto :null33 - Error("null pointer") - null33: - t.4 = [current_node] - t.4 = [t.4+16] - current_node = call t.4(current_node) - goto :if7_end - if7_else: - cont = 0 - if7_end: - goto :if6_end - if6_else: - t.5 = LtS(key_aux v_key) - if0 t.5 goto :if8_else - if current_node goto :null34 - Error("null pointer") - null34: - t.6 = [current_node] - t.6 = [t.6+28] - t.7 = call t.6(current_node) - if0 t.7 goto :if9_else - parent_node = current_node - if current_node goto :null35 - Error("null pointer") - null35: - t.8 = [current_node] - t.8 = [t.8+12] - current_node = call t.8(current_node) - goto :if9_end - if9_else: - cont = 0 - if9_end: - goto :if8_end - if8_else: - if0 is_root goto :if10_else - if current_node goto :null36 - Error("null pointer") - null36: - t.10 = [current_node] - t.10 = [t.10+28] - t.11 = call t.10(current_node) - t.12 = Sub(1 t.11) - if0 t.12 goto :ss1_else - if current_node goto :null37 - Error("null pointer") - null37: - t.13 = [current_node] - t.13 = [t.13+32] - t.14 = call t.13(current_node) - t.9 = Sub(1 t.14) - goto :ss1_end - ss1_else: - t.9 = 0 - ss1_end: - if0 t.9 goto :if11_else - ntb = 1 - goto :if11_end - if11_else: - t.15 = [this] - t.15 = [t.15+56] - ntb = call t.15(this parent_node current_node) - if11_end: - goto :if10_end - if10_else: - t.16 = [this] - t.16 = [t.16+56] - ntb = call t.16(this parent_node current_node) - if10_end: - found = 1 - cont = 0 - if8_end: - if6_end: - is_root = 0 - goto :while2_top - while2_end: - ret found - -func Tree.Remove(this p_node c_node) - if c_node goto :null38 - Error("null pointer") - null38: - t.0 = [c_node] - t.0 = [t.0+32] - t.1 = call t.0(c_node) - if0 t.1 goto :if12_else - t.2 = [this] - t.2 = [t.2+64] - ntb = call t.2(this p_node c_node) - goto :if12_end - if12_else: - if c_node goto :null39 - Error("null pointer") - null39: - t.3 = [c_node] - t.3 = [t.3+28] - t.4 = call t.3(c_node) - if0 t.4 goto :if13_else - t.5 = [this] - t.5 = [t.5+60] - ntb = call t.5(this p_node c_node) - goto :if13_end - if13_else: - if c_node goto :null40 - Error("null pointer") - null40: - t.6 = [c_node] - t.6 = [t.6+20] - auxkey1 = call t.6(c_node) - if p_node goto :null41 - Error("null pointer") - null41: - t.7 = [p_node] - t.7 = [t.7+16] - t.8 = call t.7(p_node) - if t.8 goto :null42 - Error("null pointer") - null42: - t.9 = [t.8] - t.9 = [t.9+20] - auxkey2 = call t.9(t.8) - t.10 = [this] - t.10 = [t.10+44] - t.11 = call t.10(this auxkey1 auxkey2) - if0 t.11 goto :if14_else - if p_node goto :null43 - Error("null pointer") - null43: - t.12 = [p_node] - t.12 = [t.12+8] - t.13 = [this+24] - ntb = call t.12(p_node t.13) - if p_node goto :null44 - Error("null pointer") - null44: - t.14 = [p_node] - t.14 = [t.14+36] - ntb = call t.14(p_node 0) - goto :if14_end - if14_else: - if p_node goto :null45 - Error("null pointer") - null45: - t.15 = [p_node] - t.15 = [t.15+4] - t.16 = [this+24] - ntb = call t.15(p_node t.16) - if p_node goto :null46 - Error("null pointer") - null46: - t.17 = [p_node] - t.17 = [t.17+40] - ntb = call t.17(p_node 0) - if14_end: - if13_end: - if12_end: - ret 1 - -func Tree.RemoveRight(this p_node c_node) - while3_top: - if c_node goto :null47 - Error("null pointer") - null47: - t.0 = [c_node] - t.0 = [t.0+28] - t.1 = call t.0(c_node) - if0 t.1 goto :while3_end - if c_node goto :null48 - Error("null pointer") - null48: - t.2 = [c_node] - t.2 = [t.2+24] - if c_node goto :null49 - Error("null pointer") - null49: - t.3 = [c_node] - t.3 = [t.3+12] - t.4 = call t.3(c_node) - if t.4 goto :null50 - Error("null pointer") - null50: - t.5 = [t.4] - t.5 = [t.5+20] - t.6 = call t.5(t.4) - ntb = call t.2(c_node t.6) - p_node = c_node - if c_node goto :null51 - Error("null pointer") - null51: - t.7 = [c_node] - t.7 = [t.7+12] - c_node = call t.7(c_node) - goto :while3_top - while3_end: - if p_node goto :null52 - Error("null pointer") - null52: - t.8 = [p_node] - t.8 = [t.8+4] - t.9 = [this+24] - ntb = call t.8(p_node t.9) - if p_node goto :null53 - Error("null pointer") - null53: - t.10 = [p_node] - t.10 = [t.10+40] - ntb = call t.10(p_node 0) - ret 1 - -func Tree.RemoveLeft(this p_node c_node) - while4_top: - if c_node goto :null54 - Error("null pointer") - null54: - t.0 = [c_node] - t.0 = [t.0+32] - t.1 = call t.0(c_node) - if0 t.1 goto :while4_end - if c_node goto :null55 - Error("null pointer") - null55: - t.2 = [c_node] - t.2 = [t.2+24] - if c_node goto :null56 - Error("null pointer") - null56: - t.3 = [c_node] - t.3 = [t.3+16] - t.4 = call t.3(c_node) - if t.4 goto :null57 - Error("null pointer") - null57: - t.5 = [t.4] - t.5 = [t.5+20] - t.6 = call t.5(t.4) - ntb = call t.2(c_node t.6) - p_node = c_node - if c_node goto :null58 - Error("null pointer") - null58: - t.7 = [c_node] - t.7 = [t.7+16] - c_node = call t.7(c_node) - goto :while4_top - while4_end: - if p_node goto :null59 - Error("null pointer") - null59: - t.8 = [p_node] - t.8 = [t.8+8] - t.9 = [this+24] - ntb = call t.8(p_node t.9) - if p_node goto :null60 - Error("null pointer") - null60: - t.10 = [p_node] - t.10 = [t.10+36] - ntb = call t.10(p_node 0) - ret 1 - -func Tree.Search(this v_key) - current_node = this - cont = 1 - ifound = 0 - while5_top: - if0 cont goto :while5_end - if current_node goto :null61 - Error("null pointer") - null61: - t.0 = [current_node] - t.0 = [t.0+20] - key_aux = call t.0(current_node) - t.1 = LtS(v_key key_aux) - if0 t.1 goto :if15_else - if current_node goto :null62 - Error("null pointer") - null62: - t.2 = [current_node] - t.2 = [t.2+32] - t.3 = call t.2(current_node) - if0 t.3 goto :if16_else - if current_node goto :null63 - Error("null pointer") - null63: - t.4 = [current_node] - t.4 = [t.4+16] - current_node = call t.4(current_node) - goto :if16_end - if16_else: - cont = 0 - if16_end: - goto :if15_end - if15_else: - t.5 = LtS(key_aux v_key) - if0 t.5 goto :if17_else - if current_node goto :null64 - Error("null pointer") - null64: - t.6 = [current_node] - t.6 = [t.6+28] - t.7 = call t.6(current_node) - if0 t.7 goto :if18_else - if current_node goto :null65 - Error("null pointer") - null65: - t.8 = [current_node] - t.8 = [t.8+12] - current_node = call t.8(current_node) - goto :if18_end - if18_else: - cont = 0 - if18_end: - goto :if17_end - if17_else: - ifound = 1 - cont = 0 - if17_end: - if15_end: - goto :while5_top - while5_end: - ret ifound - -func Tree.Print(this) - current_node = this - t.0 = [this] - t.0 = [t.0+76] - ntb = call t.0(this current_node) - ret 1 - -func Tree.RecPrint(this node) - if node goto :null66 - Error("null pointer") - null66: - t.0 = [node] - t.0 = [t.0+32] - t.1 = call t.0(node) - if0 t.1 goto :if19_else - t.2 = [this] - t.2 = [t.2+76] - if node goto :null67 - Error("null pointer") - null67: - t.3 = [node] - t.3 = [t.3+16] - t.4 = call t.3(node) - ntb = call t.2(this t.4) - goto :if19_end - if19_else: - ntb = 1 - if19_end: - if node goto :null68 - Error("null pointer") - null68: - t.5 = [node] - t.5 = [t.5+20] - t.6 = call t.5(node) - PrintIntS(t.6) - if node goto :null69 - Error("null pointer") - null69: - t.7 = [node] - t.7 = [t.7+28] - t.8 = call t.7(node) - if0 t.8 goto :if20_else - t.9 = [this] - t.9 = [t.9+76] - if node goto :null70 - Error("null pointer") - null70: - t.10 = [node] - t.10 = [t.10+12] - t.11 = call t.10(node) - ntb = call t.9(this t.11) - goto :if20_end - if20_else: - ntb = 1 - if20_end: - ret 1 - -func Tree.accept(this v) - PrintIntS(333) - if v goto :null71 - Error("null pointer") - null71: - t.0 = [v] - t.0 = [t.0+0] - nti = call t.0(v this) - ret 0 - -func Visitor.visit(this n) - if n goto :null72 - Error("null pointer") - null72: - t.0 = [n] - t.0 = [t.0+28] - t.1 = call t.0(n) - if0 t.1 goto :if21_else - if n goto :null73 - Error("null pointer") - null73: - t.2 = [n] - t.2 = [t.2+12] - t.3 = call t.2(n) - [this+8] = t.3 - t.4 = [this+8] - if t.4 goto :null74 - Error("null pointer") - null74: - t.5 = [t.4] - t.5 = [t.5+80] - nti = call t.5(t.4 this) - goto :if21_end - if21_else: - nti = 0 - if21_end: - if n goto :null75 - Error("null pointer") - null75: - t.6 = [n] - t.6 = [t.6+32] - t.7 = call t.6(n) - if0 t.7 goto :if22_else - if n goto :null76 - Error("null pointer") - null76: - t.8 = [n] - t.8 = [t.8+16] - t.9 = call t.8(n) - [this+4] = t.9 - t.10 = [this+4] - if t.10 goto :null77 - Error("null pointer") - null77: - t.11 = [t.10] - t.11 = [t.11+80] - nti = call t.11(t.10 this) - goto :if22_end - if22_else: - nti = 0 - if22_end: - ret 0 - -func MyVisitor.visit(this n) - if n goto :null78 - Error("null pointer") - null78: - t.0 = [n] - t.0 = [t.0+28] - t.1 = call t.0(n) - if0 t.1 goto :if23_else - if n goto :null79 - Error("null pointer") - null79: - t.2 = [n] - t.2 = [t.2+12] - t.3 = call t.2(n) - [this+8] = t.3 - t.4 = [this+8] - if t.4 goto :null80 - Error("null pointer") - null80: - t.5 = [t.4] - t.5 = [t.5+80] - nti = call t.5(t.4 this) - goto :if23_end - if23_else: - nti = 0 - if23_end: - if n goto :null81 - Error("null pointer") - null81: - t.6 = [n] - t.6 = [t.6+20] - t.7 = call t.6(n) - PrintIntS(t.7) - if n goto :null82 - Error("null pointer") - null82: - t.8 = [n] - t.8 = [t.8+32] - t.9 = call t.8(n) - if0 t.9 goto :if24_else - if n goto :null83 - Error("null pointer") - null83: - t.10 = [n] - t.10 = [t.10+16] - t.11 = call t.10(n) - [this+4] = t.11 - t.12 = [this+4] - if t.12 goto :null84 - Error("null pointer") - null84: - t.13 = [t.12] - t.13 = [t.13+80] - nti = call t.13(t.12 this) - goto :if24_end - if24_else: - nti = 0 - if24_end: - ret 0 diff --git a/vaporize/tests/TreeVisitor.vaporm b/vaporize/tests/TreeVisitor.vaporm deleted file mode 100644 index 392cf0c..0000000 --- a/vaporize/tests/TreeVisitor.vaporm +++ /dev/null @@ -1,1174 +0,0 @@ -const vmt_TV - :TV.Start - -const vmt_Tree - :Tree.Init - :Tree.SetRight - :Tree.SetLeft - :Tree.GetRight - :Tree.GetLeft - :Tree.GetKey - :Tree.SetKey - :Tree.GetHas_Right - :Tree.GetHas_Left - :Tree.SetHas_Left - :Tree.SetHas_Right - :Tree.Compare - :Tree.Insert - :Tree.Delete - :Tree.Remove - :Tree.RemoveRight - :Tree.RemoveLeft - :Tree.Search - :Tree.Print - :Tree.RecPrint - :Tree.accept - -const vmt_Visitor - :Visitor.visit - -const vmt_MyVisitor - :MyVisitor.visit - -func Main [in 0, out 0, local 0] - $t0 = HeapAllocZ(4) - [$t0] = :vmt_TV - if $t0 goto :null1 - Error("null pointer") -null1: - $t1 = [$t0] - $t1 = [$t1] - $a0 = $t0 - call $t1 - $t1 = $v0 - PrintIntS($t1) - ret - -func TV.Start [in 0, out 0, local 1] - local[0] = $s0 - $t0 = HeapAllocZ(28) - [$t0] = :vmt_Tree - $s0 = $t0 - if $s0 goto :null2 - Error("null pointer") -null2: - $t0 = [$s0] - $t0 = [$t0] - $a0 = $s0 - $a1 = 16 - call $t0 - if $s0 goto :null3 - Error("null pointer") -null3: - $t0 = [$s0] - $t0 = [$t0+72] - $a0 = $s0 - call $t0 - PrintIntS(100000000) - if $s0 goto :null4 - Error("null pointer") -null4: - $t0 = [$s0] - $t0 = [$t0+48] - $a0 = $s0 - $a1 = 8 - call $t0 - if $s0 goto :null5 - Error("null pointer") -null5: - $t0 = [$s0] - $t0 = [$t0+48] - $a0 = $s0 - $a1 = 24 - call $t0 - if $s0 goto :null6 - Error("null pointer") -null6: - $t0 = [$s0] - $t0 = [$t0+48] - $a0 = $s0 - $a1 = 4 - call $t0 - if $s0 goto :null7 - Error("null pointer") -null7: - $t0 = [$s0] - $t0 = [$t0+48] - $a0 = $s0 - $a1 = 12 - call $t0 - if $s0 goto :null8 - Error("null pointer") -null8: - $t0 = [$s0] - $t0 = [$t0+48] - $a0 = $s0 - $a1 = 20 - call $t0 - if $s0 goto :null9 - Error("null pointer") -null9: - $t0 = [$s0] - $t0 = [$t0+48] - $a0 = $s0 - $a1 = 28 - call $t0 - if $s0 goto :null10 - Error("null pointer") -null10: - $t0 = [$s0] - $t0 = [$t0+48] - $a0 = $s0 - $a1 = 14 - call $t0 - if $s0 goto :null11 - Error("null pointer") -null11: - $t0 = [$s0] - $t0 = [$t0+72] - $a0 = $s0 - call $t0 - PrintIntS(100000000) - $t0 = HeapAllocZ(12) - [$t0] = :vmt_MyVisitor - $t0 = $t0 - PrintIntS(50000000) - if $s0 goto :null12 - Error("null pointer") -null12: - $t1 = [$s0] - $t1 = [$t1+80] - $a0 = $s0 - $a1 = $t0 - call $t1 - PrintIntS(100000000) - if $s0 goto :null13 - Error("null pointer") -null13: - $t1 = [$s0] - $t1 = [$t1+68] - $a0 = $s0 - $a1 = 24 - call $t1 - $t1 = $v0 - PrintIntS($t1) - if $s0 goto :null14 - Error("null pointer") -null14: - $t1 = [$s0] - $t1 = [$t1+68] - $a0 = $s0 - $a1 = 12 - call $t1 - $t1 = $v0 - PrintIntS($t1) - if $s0 goto :null15 - Error("null pointer") -null15: - $t1 = [$s0] - $t1 = [$t1+68] - $a0 = $s0 - $a1 = 16 - call $t1 - $t1 = $v0 - PrintIntS($t1) - if $s0 goto :null16 - Error("null pointer") -null16: - $t1 = [$s0] - $t1 = [$t1+68] - $a0 = $s0 - $a1 = 50 - call $t1 - $t1 = $v0 - PrintIntS($t1) - if $s0 goto :null17 - Error("null pointer") -null17: - $t1 = [$s0] - $t1 = [$t1+68] - $a0 = $s0 - $a1 = 12 - call $t1 - $t1 = $v0 - PrintIntS($t1) - if $s0 goto :null18 - Error("null pointer") -null18: - $t1 = [$s0] - $t1 = [$t1+52] - $a0 = $s0 - $a1 = 12 - call $t1 - if $s0 goto :null19 - Error("null pointer") -null19: - $t1 = [$s0] - $t1 = [$t1+72] - $a0 = $s0 - call $t1 - if $s0 goto :null20 - Error("null pointer") -null20: - $t1 = [$s0] - $t1 = [$t1+68] - $a0 = $s0 - $a1 = 12 - call $t1 - $t1 = $v0 - PrintIntS($t1) - $v0 = 0 - $s0 = local[0] - ret - -func Tree.Init [in 0, out 0, local 0] - $t0 = $a0 - $t1 = $a1 - [$t0+12] = $t1 - [$t0+16] = 0 - [$t0+20] = 0 - $v0 = 1 - ret - -func Tree.SetRight [in 0, out 0, local 0] - $t0 = $a0 - $t1 = $a1 - [$t0+8] = $t1 - $v0 = 1 - ret - -func Tree.SetLeft [in 0, out 0, local 0] - $t0 = $a0 - $t1 = $a1 - [$t0+4] = $t1 - $v0 = 1 - ret - -func Tree.GetRight [in 0, out 0, local 0] - $t0 = $a0 - $t0 = [$t0+8] - $v0 = $t0 - ret - -func Tree.GetLeft [in 0, out 0, local 0] - $t0 = $a0 - $t0 = [$t0+4] - $v0 = $t0 - ret - -func Tree.GetKey [in 0, out 0, local 0] - $t0 = $a0 - $t0 = [$t0+12] - $v0 = $t0 - ret - -func Tree.SetKey [in 0, out 0, local 0] - $t0 = $a0 - $t1 = $a1 - [$t0+12] = $t1 - $v0 = 1 - ret - -func Tree.GetHas_Right [in 0, out 0, local 0] - $t0 = $a0 - $t0 = [$t0+20] - $v0 = $t0 - ret - -func Tree.GetHas_Left [in 0, out 0, local 0] - $t0 = $a0 - $t0 = [$t0+16] - $v0 = $t0 - ret - -func Tree.SetHas_Left [in 0, out 0, local 0] - $t0 = $a0 - $t1 = $a1 - [$t0+16] = $t1 - $v0 = 1 - ret - -func Tree.SetHas_Right [in 0, out 0, local 0] - $t0 = $a0 - $t1 = $a1 - [$t0+20] = $t1 - $v0 = 1 - ret - -func Tree.Compare [in 0, out 0, local 0] - $t0 = $a1 - $t1 = $a2 - $t2 = Add($t1 1) - $t1 = LtS($t0 $t1) - if0 $t1 goto :if1_else - $t1 = 0 - goto :if1_end -if1_else: - $t2 = LtS($t0 $t2) - $t2 = Sub(1 $t2) - if0 $t2 goto :if2_else - $t1 = 0 - goto :if2_end -if2_else: - $t1 = 1 -if2_end: -if1_end: - $v0 = $t1 - ret - -func Tree.Insert [in 0, out 0, local 4] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - local[3] = $s3 - $s0 = $a0 - $s1 = $a1 - $t0 = HeapAllocZ(28) - [$t0] = :vmt_Tree - $s2 = $t0 - if $s2 goto :null21 - Error("null pointer") -null21: - $t0 = [$s2] - $t0 = [$t0] - $a0 = $s2 - $a1 = $s1 - call $t0 - $s0 = $s0 - $s3 = 1 -while1_top: - if0 $s3 goto :while1_end - if $s0 goto :null22 - Error("null pointer") -null22: - $t0 = [$s0] - $t0 = [$t0+20] - $a0 = $s0 - call $t0 - $t0 = $v0 - $t0 = LtS($s1 $t0) - if0 $t0 goto :if3_else - if $s0 goto :null23 - Error("null pointer") -null23: - $t0 = [$s0] - $t0 = [$t0+32] - $a0 = $s0 - call $t0 - $t0 = $v0 - if0 $t0 goto :if4_else - if $s0 goto :null24 - Error("null pointer") -null24: - $t0 = [$s0] - $t0 = [$t0+16] - $a0 = $s0 - call $t0 - $s0 = $v0 - goto :if4_end -if4_else: - $s3 = 0 - if $s0 goto :null25 - Error("null pointer") -null25: - $t0 = [$s0] - $t0 = [$t0+36] - $a0 = $s0 - $a1 = 1 - call $t0 - if $s0 goto :null26 - Error("null pointer") -null26: - $t0 = [$s0] - $t0 = [$t0+8] - $a0 = $s0 - $a1 = $s2 - call $t0 -if4_end: - goto :if3_end -if3_else: - if $s0 goto :null27 - Error("null pointer") -null27: - $t0 = [$s0] - $t0 = [$t0+28] - $a0 = $s0 - call $t0 - $t0 = $v0 - if0 $t0 goto :if5_else - if $s0 goto :null28 - Error("null pointer") -null28: - $t0 = [$s0] - $t0 = [$t0+12] - $a0 = $s0 - call $t0 - $s0 = $v0 - goto :if5_end -if5_else: - $s3 = 0 - if $s0 goto :null29 - Error("null pointer") -null29: - $t0 = [$s0] - $t0 = [$t0+40] - $a0 = $s0 - $a1 = 1 - call $t0 - if $s0 goto :null30 - Error("null pointer") -null30: - $t0 = [$s0] - $t0 = [$t0+4] - $a0 = $s0 - $a1 = $s2 - call $t0 -if5_end: -if3_end: - goto :while1_top -while1_end: - $v0 = 1 - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - $s3 = local[3] - ret - -func Tree.Delete [in 0, out 0, local 7] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - local[3] = $s3 - local[4] = $s4 - local[5] = $s5 - local[6] = $s6 - $s0 = $a0 - $s1 = $a1 - $s2 = $s0 - $s3 = $s0 - $s4 = 1 - $s5 = 0 - $s6 = 1 -while2_top: - if0 $s4 goto :while2_end - if $s2 goto :null31 - Error("null pointer") -null31: - $t0 = [$s2] - $t0 = [$t0+20] - $a0 = $s2 - call $t0 - $t0 = $v0 - $t1 = LtS($s1 $t0) - if0 $t1 goto :if6_else - if $s2 goto :null32 - Error("null pointer") -null32: - $t1 = [$s2] - $t1 = [$t1+32] - $a0 = $s2 - call $t1 - $t1 = $v0 - if0 $t1 goto :if7_else - $s3 = $s2 - if $s2 goto :null33 - Error("null pointer") -null33: - $t1 = [$s2] - $t1 = [$t1+16] - $a0 = $s2 - call $t1 - $s2 = $v0 - goto :if7_end -if7_else: - $s4 = 0 -if7_end: - goto :if6_end -if6_else: - $t0 = LtS($t0 $s1) - if0 $t0 goto :if8_else - if $s2 goto :null34 - Error("null pointer") -null34: - $t0 = [$s2] - $t0 = [$t0+28] - $a0 = $s2 - call $t0 - $t0 = $v0 - if0 $t0 goto :if9_else - $s3 = $s2 - if $s2 goto :null35 - Error("null pointer") -null35: - $t0 = [$s2] - $t0 = [$t0+12] - $a0 = $s2 - call $t0 - $s2 = $v0 - goto :if9_end -if9_else: - $s4 = 0 -if9_end: - goto :if8_end -if8_else: - if0 $s6 goto :if10_else - if $s2 goto :null36 - Error("null pointer") -null36: - $t0 = [$s2] - $t0 = [$t0+28] - $a0 = $s2 - call $t0 - $t0 = $v0 - $t0 = Sub(1 $t0) - if0 $t0 goto :ss1_else - if $s2 goto :null37 - Error("null pointer") -null37: - $t0 = [$s2] - $t0 = [$t0+32] - $a0 = $s2 - call $t0 - $t0 = $v0 - $t0 = Sub(1 $t0) - goto :ss1_end -ss1_else: - $t0 = 0 -ss1_end: - if0 $t0 goto :if11_else - goto :if11_end -if11_else: - $t0 = [$s0] - $t0 = [$t0+56] - $a0 = $s0 - $a1 = $s3 - $a2 = $s2 - call $t0 -if11_end: - goto :if10_end -if10_else: - $t0 = [$s0] - $t0 = [$t0+56] - $a0 = $s0 - $a1 = $s3 - $a2 = $s2 - call $t0 -if10_end: - $s5 = 1 - $s4 = 0 -if8_end: -if6_end: - $s6 = 0 - goto :while2_top -while2_end: - $v0 = $s5 - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - $s3 = local[3] - $s4 = local[4] - $s5 = local[5] - $s6 = local[6] - ret - -func Tree.Remove [in 0, out 0, local 3] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - $s0 = $a0 - $s1 = $a1 - $s2 = $a2 - if $s2 goto :null38 - Error("null pointer") -null38: - $t0 = [$s2] - $t0 = [$t0+32] - $a0 = $s2 - call $t0 - $t0 = $v0 - if0 $t0 goto :if12_else - $t0 = [$s0] - $t0 = [$t0+64] - $a0 = $s0 - $a1 = $s1 - $a2 = $s2 - call $t0 - goto :if12_end -if12_else: - if $s2 goto :null39 - Error("null pointer") -null39: - $t0 = [$s2] - $t0 = [$t0+28] - $a0 = $s2 - call $t0 - $t0 = $v0 - if0 $t0 goto :if13_else - $t0 = [$s0] - $t0 = [$t0+60] - $a0 = $s0 - $a1 = $s1 - $a2 = $s2 - call $t0 - goto :if13_end -if13_else: - if $s2 goto :null40 - Error("null pointer") -null40: - $t0 = [$s2] - $t0 = [$t0+20] - $a0 = $s2 - call $t0 - $s2 = $v0 - if $s1 goto :null41 - Error("null pointer") -null41: - $t0 = [$s1] - $t0 = [$t0+16] - $a0 = $s1 - call $t0 - $t0 = $v0 - if $t0 goto :null42 - Error("null pointer") -null42: - $t1 = [$t0] - $t1 = [$t1+20] - $a0 = $t0 - call $t1 - $t1 = $v0 - $t0 = [$s0] - $t0 = [$t0+44] - $a0 = $s0 - $a1 = $s2 - $a2 = $t1 - call $t0 - $t0 = $v0 - if0 $t0 goto :if14_else - if $s1 goto :null43 - Error("null pointer") -null43: - $t0 = [$s1] - $t0 = [$t0+8] - $t1 = [$s0+24] - $a0 = $s1 - $a1 = $t1 - call $t0 - if $s1 goto :null44 - Error("null pointer") -null44: - $t1 = [$s1] - $t1 = [$t1+36] - $a0 = $s1 - $a1 = 0 - call $t1 - goto :if14_end -if14_else: - if $s1 goto :null45 - Error("null pointer") -null45: - $t1 = [$s1] - $t1 = [$t1+4] - $t0 = [$s0+24] - $a0 = $s1 - $a1 = $t0 - call $t1 - if $s1 goto :null46 - Error("null pointer") -null46: - $t0 = [$s1] - $t0 = [$t0+40] - $a0 = $s1 - $a1 = 0 - call $t0 -if14_end: -if13_end: -if12_end: - $v0 = 1 - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - ret - -func Tree.RemoveRight [in 0, out 0, local 4] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - local[3] = $s3 - $s0 = $a0 - $s1 = $a1 - $s2 = $a2 -while3_top: - if $s2 goto :null47 - Error("null pointer") -null47: - $t0 = [$s2] - $t0 = [$t0+28] - $a0 = $s2 - call $t0 - $t0 = $v0 - if0 $t0 goto :while3_end - if $s2 goto :null48 - Error("null pointer") -null48: - $s3 = [$s2] - $s3 = [$s3+24] - if $s2 goto :null49 - Error("null pointer") -null49: - $t0 = [$s2] - $t0 = [$t0+12] - $a0 = $s2 - call $t0 - $t0 = $v0 - if $t0 goto :null50 - Error("null pointer") -null50: - $t1 = [$t0] - $t1 = [$t1+20] - $a0 = $t0 - call $t1 - $t1 = $v0 - $a0 = $s2 - $a1 = $t1 - call $s3 - $s1 = $s2 - if $s2 goto :null51 - Error("null pointer") -null51: - $t1 = [$s2] - $t1 = [$t1+12] - $a0 = $s2 - call $t1 - $s2 = $v0 - goto :while3_top -while3_end: - if $s1 goto :null52 - Error("null pointer") -null52: - $t1 = [$s1] - $t1 = [$t1+4] - $t0 = [$s0+24] - $a0 = $s1 - $a1 = $t0 - call $t1 - if $s1 goto :null53 - Error("null pointer") -null53: - $t0 = [$s1] - $t0 = [$t0+40] - $a0 = $s1 - $a1 = 0 - call $t0 - $v0 = 1 - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - $s3 = local[3] - ret - -func Tree.RemoveLeft [in 0, out 0, local 4] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - local[3] = $s3 - $s0 = $a0 - $s1 = $a1 - $s2 = $a2 -while4_top: - if $s2 goto :null54 - Error("null pointer") -null54: - $t0 = [$s2] - $t0 = [$t0+32] - $a0 = $s2 - call $t0 - $t0 = $v0 - if0 $t0 goto :while4_end - if $s2 goto :null55 - Error("null pointer") -null55: - $s3 = [$s2] - $s3 = [$s3+24] - if $s2 goto :null56 - Error("null pointer") -null56: - $t0 = [$s2] - $t0 = [$t0+16] - $a0 = $s2 - call $t0 - $t0 = $v0 - if $t0 goto :null57 - Error("null pointer") -null57: - $t1 = [$t0] - $t1 = [$t1+20] - $a0 = $t0 - call $t1 - $t1 = $v0 - $a0 = $s2 - $a1 = $t1 - call $s3 - $s1 = $s2 - if $s2 goto :null58 - Error("null pointer") -null58: - $t1 = [$s2] - $t1 = [$t1+16] - $a0 = $s2 - call $t1 - $s2 = $v0 - goto :while4_top -while4_end: - if $s1 goto :null59 - Error("null pointer") -null59: - $t1 = [$s1] - $t1 = [$t1+8] - $t0 = [$s0+24] - $a0 = $s1 - $a1 = $t0 - call $t1 - if $s1 goto :null60 - Error("null pointer") -null60: - $t0 = [$s1] - $t0 = [$t0+36] - $a0 = $s1 - $a1 = 0 - call $t0 - $v0 = 1 - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - $s3 = local[3] - ret - -func Tree.Search [in 0, out 0, local 4] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - local[3] = $s3 - $t0 = $a0 - $s0 = $a1 - $s1 = $t0 - $s2 = 1 - $s3 = 0 -while5_top: - if0 $s2 goto :while5_end - if $s1 goto :null61 - Error("null pointer") -null61: - $t0 = [$s1] - $t0 = [$t0+20] - $a0 = $s1 - call $t0 - $t0 = $v0 - $t1 = LtS($s0 $t0) - if0 $t1 goto :if15_else - if $s1 goto :null62 - Error("null pointer") -null62: - $t1 = [$s1] - $t1 = [$t1+32] - $a0 = $s1 - call $t1 - $t1 = $v0 - if0 $t1 goto :if16_else - if $s1 goto :null63 - Error("null pointer") -null63: - $t1 = [$s1] - $t1 = [$t1+16] - $a0 = $s1 - call $t1 - $s1 = $v0 - goto :if16_end -if16_else: - $s2 = 0 -if16_end: - goto :if15_end -if15_else: - $t0 = LtS($t0 $s0) - if0 $t0 goto :if17_else - if $s1 goto :null64 - Error("null pointer") -null64: - $t0 = [$s1] - $t0 = [$t0+28] - $a0 = $s1 - call $t0 - $t0 = $v0 - if0 $t0 goto :if18_else - if $s1 goto :null65 - Error("null pointer") -null65: - $t0 = [$s1] - $t0 = [$t0+12] - $a0 = $s1 - call $t0 - $s1 = $v0 - goto :if18_end -if18_else: - $s2 = 0 -if18_end: - goto :if17_end -if17_else: - $s3 = 1 - $s2 = 0 -if17_end: -if15_end: - goto :while5_top -while5_end: - $v0 = $s3 - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - $s3 = local[3] - ret - -func Tree.Print [in 0, out 0, local 0] - $t0 = $a0 - $t1 = $t0 - $t2 = [$t0] - $t2 = [$t2+76] - $a0 = $t0 - $a1 = $t1 - call $t2 - $v0 = 1 - ret - -func Tree.RecPrint [in 0, out 0, local 3] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - $s0 = $a0 - $s1 = $a1 - if $s1 goto :null66 - Error("null pointer") -null66: - $t0 = [$s1] - $t0 = [$t0+32] - $a0 = $s1 - call $t0 - $t0 = $v0 - if0 $t0 goto :if19_else - $s2 = [$s0] - $s2 = [$s2+76] - if $s1 goto :null67 - Error("null pointer") -null67: - $t0 = [$s1] - $t0 = [$t0+16] - $a0 = $s1 - call $t0 - $t0 = $v0 - $a0 = $s0 - $a1 = $t0 - call $s2 - goto :if19_end -if19_else: -if19_end: - if $s1 goto :null68 - Error("null pointer") -null68: - $t0 = [$s1] - $t0 = [$t0+20] - $a0 = $s1 - call $t0 - $t0 = $v0 - PrintIntS($t0) - if $s1 goto :null69 - Error("null pointer") -null69: - $t0 = [$s1] - $t0 = [$t0+28] - $a0 = $s1 - call $t0 - $t0 = $v0 - if0 $t0 goto :if20_else - $s2 = [$s0] - $s2 = [$s2+76] - if $s1 goto :null70 - Error("null pointer") -null70: - $t0 = [$s1] - $t0 = [$t0+12] - $a0 = $s1 - call $t0 - $t0 = $v0 - $a0 = $s0 - $a1 = $t0 - call $s2 - goto :if20_end -if20_else: -if20_end: - $v0 = 1 - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - ret - -func Tree.accept [in 0, out 0, local 0] - $t0 = $a0 - $t1 = $a1 - PrintIntS(333) - if $t1 goto :null71 - Error("null pointer") -null71: - $t2 = [$t1] - $t2 = [$t2] - $a0 = $t1 - $a1 = $t0 - call $t2 - $v0 = 0 - ret - -func Visitor.visit [in 0, out 0, local 2] - local[0] = $s0 - local[1] = $s1 - $s0 = $a0 - $s1 = $a1 - if $s1 goto :null72 - Error("null pointer") -null72: - $t0 = [$s1] - $t0 = [$t0+28] - $a0 = $s1 - call $t0 - $t0 = $v0 - if0 $t0 goto :if21_else - if $s1 goto :null73 - Error("null pointer") -null73: - $t0 = [$s1] - $t0 = [$t0+12] - $a0 = $s1 - call $t0 - $t0 = $v0 - [$s0+8] = $t0 - $t0 = [$s0+8] - if $t0 goto :null74 - Error("null pointer") -null74: - $t1 = [$t0] - $t1 = [$t1+80] - $a0 = $t0 - $a1 = $s0 - call $t1 - goto :if21_end -if21_else: -if21_end: - if $s1 goto :null75 - Error("null pointer") -null75: - $t1 = [$s1] - $t1 = [$t1+32] - $a0 = $s1 - call $t1 - $t1 = $v0 - if0 $t1 goto :if22_else - if $s1 goto :null76 - Error("null pointer") -null76: - $t1 = [$s1] - $t1 = [$t1+16] - $a0 = $s1 - call $t1 - $t1 = $v0 - [$s0+4] = $t1 - $t1 = [$s0+4] - if $t1 goto :null77 - Error("null pointer") -null77: - $t0 = [$t1] - $t0 = [$t0+80] - $a0 = $t1 - $a1 = $s0 - call $t0 - goto :if22_end -if22_else: -if22_end: - $v0 = 0 - $s0 = local[0] - $s1 = local[1] - ret - -func MyVisitor.visit [in 0, out 0, local 2] - local[0] = $s0 - local[1] = $s1 - $s0 = $a0 - $s1 = $a1 - if $s1 goto :null78 - Error("null pointer") -null78: - $t0 = [$s1] - $t0 = [$t0+28] - $a0 = $s1 - call $t0 - $t0 = $v0 - if0 $t0 goto :if23_else - if $s1 goto :null79 - Error("null pointer") -null79: - $t0 = [$s1] - $t0 = [$t0+12] - $a0 = $s1 - call $t0 - $t0 = $v0 - [$s0+8] = $t0 - $t0 = [$s0+8] - if $t0 goto :null80 - Error("null pointer") -null80: - $t1 = [$t0] - $t1 = [$t1+80] - $a0 = $t0 - $a1 = $s0 - call $t1 - goto :if23_end -if23_else: -if23_end: - if $s1 goto :null81 - Error("null pointer") -null81: - $t1 = [$s1] - $t1 = [$t1+20] - $a0 = $s1 - call $t1 - $t1 = $v0 - PrintIntS($t1) - if $s1 goto :null82 - Error("null pointer") -null82: - $t1 = [$s1] - $t1 = [$t1+32] - $a0 = $s1 - call $t1 - $t1 = $v0 - if0 $t1 goto :if24_else - if $s1 goto :null83 - Error("null pointer") -null83: - $t1 = [$s1] - $t1 = [$t1+16] - $a0 = $s1 - call $t1 - $t1 = $v0 - [$s0+4] = $t1 - $t1 = [$s0+4] - if $t1 goto :null84 - Error("null pointer") -null84: - $t0 = [$t1] - $t0 = [$t0+80] - $a0 = $t1 - $a1 = $s0 - call $t0 - goto :if24_end -if24_else: -if24_end: - $v0 = 0 - $s0 = local[0] - $s1 = local[1] - ret - diff --git a/vaporize/tests/ex32.vapor b/vaporize/tests/ex32.vapor deleted file mode 100644 index 8a8dc62..0000000 --- a/vaporize/tests/ex32.vapor +++ /dev/null @@ -1,15 +0,0 @@ -func Main() - t.3 = HeapAllocZ(4) - [t.3+0] = :functable_A - t.4 = [t.3+0] - t.5 = [t.4+0] - t.6 = 12 - t.10 = call t.5(t.3 t.6) - PrintIntS(t.10) - ret - -const functable_A - :A_foo - -func A_foo(this t.1) - ret t.1 diff --git a/vaporize/tests/ex32.vaporm b/vaporize/tests/ex32.vaporm deleted file mode 100644 index 7ef23aa..0000000 --- a/vaporize/tests/ex32.vaporm +++ /dev/null @@ -1,35 +0,0 @@ -func Main [in 0, out 0, local 4] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - $s0 = HeapAllocZ(4) - local[3] = $s0 - $s0 = local[3] - [$s0] = :functable_A - $local[4] = $s0 - $t1 = [$t0] - $t2 = [$t1] - $a0 = $t0 - $a1 = 12 - call $t2 - $t1 = $v0 - PrintIntS($t1) - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - ret - -const functable_A - :A_foo - -func A_foo [in 0, out 0, local 6] - local[0] = $s0 - local[1] = $s1 - local[2] = $s2 - $t0 = $a0 - $s0 = $a1 - $v0 = $s0 - $s0 = local[0] - $s1 = local[1] - $s2 = local[2] - ret -- cgit v1.2.3