1export
2function $insertionSort(l %.1, w %.3) {
3@start.1
4 %.2 =l alloc8 8
5 storel %.1, %.2
6 %.4 =l alloc4 4
7 storew %.3, %.4
8 %.5 =l alloc4 4
9 %.9 =l alloc4 4
10 %.12 =l alloc4 1
11@body.2
12 storew 1, %.5
13@for_cond.3
14 %.6 =w loadw %.5
15 %.7 =w loadw %.4
16 %.8 =w csltw %.6, %.7
17 jnz %.8, @for_body.4, @for_join.6
18@for_body.4
19 %.10 =w loadw %.5
20 %.11 =w sub %.10, 1
21 storew %.11, %.9
22 %.13 =l loadl %.2
23 %.14 =w loadw %.5
24 %.15 =l extsw %.14
25 %.16 =l mul %.15, 1
26 %.17 =l add %.13, %.16
27 %.18 =w loadub %.17
28 storeb %.18, %.12
29@while_cond.7
30 %.19 =w loadw %.9
31 %.20 =w csgew %.19, 0
32 jnz %.20, @logic_right.10, @logic_join.11
33@logic_right.10
34 %.21 =w loadub %.12
35 %.22 =w extub %.21
36 %.23 =l loadl %.2
37 %.24 =w loadw %.9
38 %.25 =l extsw %.24
39 %.26 =l mul %.25, 1
40 %.27 =l add %.23, %.26
41 %.28 =w loadub %.27
42 %.29 =w extub %.28
43 %.30 =w csltw %.22, %.29
44 %.31 =w cnew %.30, 0
45@logic_join.11
46 %.32 =w phi @while_cond.7 0, @logic_right.10 %.31
47 jnz %.32, @while_body.8, @while_join.9
48@while_body.8
49 %.33 =l loadl %.2
50 %.34 =w loadw %.9
51 %.35 =l extsw %.34
52 %.36 =l mul %.35, 1
53 %.37 =l add %.33, %.36
54 %.38 =w loadub %.37
55 %.39 =l loadl %.2
56 %.40 =w loadw %.9
57 %.41 =w add %.40, 1
58 %.42 =l extsw %.41
59 %.43 =l mul %.42, 1
60 %.44 =l add %.39, %.43
61 storeb %.38, %.44
62 %.45 =w loadw %.9
63 %.46 =w sub %.45, 1
64 storew %.46, %.9
65 jmp @while_cond.7
66@while_join.9
67 %.47 =w loadub %.12
68 %.48 =l loadl %.2
69 %.49 =w loadw %.9
70 %.50 =w add %.49, 1
71 %.51 =l extsw %.50
72 %.52 =l mul %.51, 1
73 %.53 =l add %.48, %.52
74 storeb %.47, %.53
75@for_cont.5
76 %.54 =w loadw %.5
77 %.55 =w add %.54, 1
78 storew %.55, %.5
79 jmp @for_cond.3
80@for_join.6
81 ret
82}
83data $.Lstring.3 = align 1 { b "array\000", }
84export
85function w $main() {
86@start.12
87 %.1 =l alloc4 7
88@body.13
89 %.2 =l extsw 7
90 call $quebex_symbolic_array(l %.1, l %.2, l 1, l $.Lstring.3)
91 call $insertionSort(l %.1, w 7)
92 ret 0
93}