relax one assert
[qbe.git] / test / queen.ssa
blob141e17e6598c60fdb30f0c6f83c799f9febb1363
1 # eight queens program
2 # generated by minic
4 export function w $chk(w %t0, w %t1) {
5 @l0
6         %x =l alloc4 4
7         storew %t0, %x
8         %y =l alloc4 4
9         storew %t1, %y
10         %i =l alloc4 4
11         %r =l alloc4 4
12         storew 0, %i
13         storew 0, %r
14 @l1
15         %t6 =w loadw %i
16         %t7 =w loadw $glo1
17         %t5 =w csltw %t6, %t7
18         jnz %t5, @l2, @l3
19 @l2
20         %t10 =w loadw %r
21         %t15 =l loadl $glo3
22         %t16 =w loadw %x
23         %t17 =l extsw %t16
24         %t18 =l mul 8, %t17
25         %t14 =l add %t15, %t18
26         %t13 =l loadl %t14
27         %t19 =w loadw %i
28         %t20 =l extsw %t19
29         %t21 =l mul 4, %t20
30         %t12 =l add %t13, %t21
31         %t11 =w loadw %t12
32         %t9 =w add %t10, %t11
33         storew %t9, %r
34         %t24 =w loadw %r
35         %t29 =l loadl $glo3
36         %t30 =w loadw %i
37         %t31 =l extsw %t30
38         %t32 =l mul 8, %t31
39         %t28 =l add %t29, %t32
40         %t27 =l loadl %t28
41         %t33 =w loadw %y
42         %t34 =l extsw %t33
43         %t35 =l mul 4, %t34
44         %t26 =l add %t27, %t35
45         %t25 =w loadw %t26
46         %t23 =w add %t24, %t25
47         storew %t23, %r
48         %t39 =w loadw %x
49         %t40 =w loadw %i
50         %t38 =w add %t39, %t40
51         %t41 =w loadw $glo1
52         %t37 =w csltw %t38, %t41
53         %t44 =w loadw %y
54         %t45 =w loadw %i
55         %t43 =w add %t44, %t45
56         %t46 =w loadw $glo1
57         %t42 =w csltw %t43, %t46
58         %t36 =w and %t37, %t42
59         jnz %t36, @l4, @l5
60 @l4
61         %t49 =w loadw %r
62         %t54 =l loadl $glo3
63         %t56 =w loadw %x
64         %t57 =w loadw %i
65         %t55 =w add %t56, %t57
66         %t58 =l extsw %t55
67         %t59 =l mul 8, %t58
68         %t53 =l add %t54, %t59
69         %t52 =l loadl %t53
70         %t61 =w loadw %y
71         %t62 =w loadw %i
72         %t60 =w add %t61, %t62
73         %t63 =l extsw %t60
74         %t64 =l mul 4, %t63
75         %t51 =l add %t52, %t64
76         %t50 =w loadw %t51
77         %t48 =w add %t49, %t50
78         storew %t48, %r
79 @l5
80         %t68 =w loadw %x
81         %t69 =w loadw %i
82         %t67 =w add %t68, %t69
83         %t70 =w loadw $glo1
84         %t66 =w csltw %t67, %t70
85         %t74 =w loadw %y
86         %t75 =w loadw %i
87         %t73 =w sub %t74, %t75
88         %t71 =w cslew 0, %t73
89         %t65 =w and %t66, %t71
90         jnz %t65, @l7, @l8
91 @l7
92         %t78 =w loadw %r
93         %t83 =l loadl $glo3
94         %t85 =w loadw %x
95         %t86 =w loadw %i
96         %t84 =w add %t85, %t86
97         %t87 =l extsw %t84
98         %t88 =l mul 8, %t87
99         %t82 =l add %t83, %t88
100         %t81 =l loadl %t82
101         %t90 =w loadw %y
102         %t91 =w loadw %i
103         %t89 =w sub %t90, %t91
104         %t92 =l extsw %t89
105         %t93 =l mul 4, %t92
106         %t80 =l add %t81, %t93
107         %t79 =w loadw %t80
108         %t77 =w add %t78, %t79
109         storew %t77, %r
111         %t98 =w loadw %x
112         %t99 =w loadw %i
113         %t97 =w sub %t98, %t99
114         %t95 =w cslew 0, %t97
115         %t102 =w loadw %y
116         %t103 =w loadw %i
117         %t101 =w add %t102, %t103
118         %t104 =w loadw $glo1
119         %t100 =w csltw %t101, %t104
120         %t94 =w and %t95, %t100
121         jnz %t94, @l10, @l11
122 @l10
123         %t107 =w loadw %r
124         %t112 =l loadl $glo3
125         %t114 =w loadw %x
126         %t115 =w loadw %i
127         %t113 =w sub %t114, %t115
128         %t116 =l extsw %t113
129         %t117 =l mul 8, %t116
130         %t111 =l add %t112, %t117
131         %t110 =l loadl %t111
132         %t119 =w loadw %y
133         %t120 =w loadw %i
134         %t118 =w add %t119, %t120
135         %t121 =l extsw %t118
136         %t122 =l mul 4, %t121
137         %t109 =l add %t110, %t122
138         %t108 =w loadw %t109
139         %t106 =w add %t107, %t108
140         storew %t106, %r
141 @l11
142         %t127 =w loadw %x
143         %t128 =w loadw %i
144         %t126 =w sub %t127, %t128
145         %t124 =w cslew 0, %t126
146         %t132 =w loadw %y
147         %t133 =w loadw %i
148         %t131 =w sub %t132, %t133
149         %t129 =w cslew 0, %t131
150         %t123 =w and %t124, %t129
151         jnz %t123, @l13, @l14
152 @l13
153         %t136 =w loadw %r
154         %t141 =l loadl $glo3
155         %t143 =w loadw %x
156         %t144 =w loadw %i
157         %t142 =w sub %t143, %t144
158         %t145 =l extsw %t142
159         %t146 =l mul 8, %t145
160         %t140 =l add %t141, %t146
161         %t139 =l loadl %t140
162         %t148 =w loadw %y
163         %t149 =w loadw %i
164         %t147 =w sub %t148, %t149
165         %t150 =l extsw %t147
166         %t151 =l mul 4, %t150
167         %t138 =l add %t139, %t151
168         %t137 =w loadw %t138
169         %t135 =w add %t136, %t137
170         storew %t135, %r
171 @l14
172         %t153 =w loadw %i
173         %t152 =w add %t153, 1
174         storew %t152, %i
175         jmp @l1
177         %t154 =w loadw %r
178         ret %t154
181 export function w $go(w %t0) {
182 @l16
183         %y =l alloc4 4
184         storew %t0, %y
185         %x =l alloc4 4
186         %t2 =w loadw %y
187         %t3 =w loadw $glo1
188         %t1 =w ceqw %t2, %t3
189         jnz %t1, @l17, @l18
190 @l17
191         %t5 =w loadw $glo2
192         %t4 =w add %t5, 1
193         storew %t4, $glo2
194         ret 0
195 @l18
196         storew 0, %x
197 @l20
198         %t10 =w loadw %x
199         %t11 =w loadw $glo1
200         %t9 =w csltw %t10, %t11
201         jnz %t9, @l21, @l22
202 @l21
203         %t14 =w loadw %x
204         %t15 =w loadw %y
205         %t13 =w call $chk(w %t14, w %t15)
206         %t12 =w ceqw %t13, 0
207         jnz %t12, @l23, @l24
208 @l23
209         %t21 =l loadl $glo3
210         %t22 =w loadw %x
211         %t23 =l extsw %t22
212         %t24 =l mul 8, %t23
213         %t20 =l add %t21, %t24
214         %t19 =l loadl %t20
215         %t25 =w loadw %y
216         %t26 =l extsw %t25
217         %t27 =l mul 4, %t26
218         %t18 =l add %t19, %t27
219         %t28 =w loadw %t18
220         %t17 =w add %t28, 1
221         storew %t17, %t18
222         %t31 =w loadw %y
223         %t30 =w add %t31, 1
224         %t29 =w call $go(w %t30)
225         %t37 =l loadl $glo3
226         %t38 =w loadw %x
227         %t39 =l extsw %t38
228         %t40 =l mul 8, %t39
229         %t36 =l add %t37, %t40
230         %t35 =l loadl %t36
231         %t41 =w loadw %y
232         %t42 =l extsw %t41
233         %t43 =l mul 4, %t42
234         %t34 =l add %t35, %t43
235         %t44 =w loadw %t34
236         %t33 =w sub %t44, 1
237         storew %t33, %t34
238 @l24
239         %t46 =w loadw %x
240         %t45 =w add %t46, 1
241         storew %t45, %x
242         jmp @l20
243 @l22
244         ret 0
247 export function w $main() {
248 @l26
249         %i =l alloc4 4
250         storew 8, $glo1
251         %t4 =w loadw $glo1
252         %t3 =l call $calloc(w %t4, w 8)
253         storel %t3, $glo3
254         storew 0, %i
255 @l27
256         %t9 =w loadw %i
257         %t10 =w loadw $glo1
258         %t8 =w csltw %t9, %t10
259         jnz %t8, @l28, @l29
260 @l28
261         %t13 =w loadw $glo1
262         %t12 =l call $calloc(w %t13, w 4)
263         %t16 =l loadl $glo3
264         %t17 =w loadw %i
265         %t18 =l extsw %t17
266         %t19 =l mul 8, %t18
267         %t15 =l add %t16, %t19
268         storel %t12, %t15
269         %t21 =w loadw %i
270         %t20 =w add %t21, 1
271         storew %t20, %i
272         jmp @l27
273 @l29
274         %t22 =w call $go(w 0)
275         %t25 =w loadw $glo2
276         %t24 =w cnew %t25, 92
277         ret %t24
280 data $glo1 = { w 0 }
281 data $glo2 = { w 0 }
282 data $glo3 = { l 0 }