|
4 | 4 |
|
5 | 5 | (func $Program_fannkuch
|
6 | 6 | (param $n i32) (local $sign i32) (local $maxflips i32) (local $sum i32)
|
7 |
| - (local $j i32) (local $num i32) (local $q0 i32) (local $flag i32) |
8 |
| - (local $k i32) (local $flips i32) (local $qq i32) (local $flag2 i32) |
9 |
| - (local $flag3 i32) (local $l i32) (local $m i32) (local $t i32) |
10 |
| - (local $flag4 i32) (local $flag5 i32) (local $t3 i32) (local $i2 i32) |
11 |
| - (local $sx i32) (local $flag7 i32) (local $j2 i32) |
| 7 | + (local $j i32) (local $q0 i32) (local $k i32) (local $flips i32) |
| 8 | + (local $qq i32) (local $l i32) (local $m i32) (local $t i32) |
| 9 | + (local $t3 i32) (local $i2 i32) (local $sx i32) (local $j2 i32) |
| 10 | + |
12 | 11 | (local $currentLabel_0 i32)
|
13 | 12 |
|
14 | 13 | (block
|
15 | 14 |
|
16 |
| - ;; LabelGroup 0 |
| 15 | + ;; LabelGroup 0 (starting at $entry0) |
17 | 16 | (setlocal $currentLabel_0 (const.i32 0))
|
18 | 17 |
|
19 | 18 | (label $labelgroup_0 (loop (label $labelgroup_0_dispatch
|
|
72 | 71 | )
|
73 | 72 | (getlocal $j)
|
74 | 73 | )
|
75 |
| - (setlocal $num (getlocal $j)) |
76 |
| - (setlocal $j (add.i32 |
77 |
| - (getlocal $num) |
78 |
| - (const.i32 1) |
79 |
| - )) |
80 | 74 | )
|
| 75 | + |
| 76 | + ;; for (...; ...; <!>) |
| 77 | + (setlocal $j (add.i32 |
| 78 | + (getlocal $j) |
| 79 | + (const.i32 1) |
| 80 | + )) |
81 | 81 | )
|
82 | 82 | )
|
83 | 83 |
|
|
94 | 94 | ;; while (...) {
|
95 | 95 | (block
|
96 | 96 | (setlocal $q0 (loads.1.i32 (const.i32 128) ))
|
97 |
| - (setlocal $flag (gts.i32 |
98 |
| - (getlocal $q0) |
99 |
| - (const.i32 0) |
100 |
| - )) |
101 | 97 |
|
102 | 98 | (if
|
103 |
| - (getlocal $flag) |
| 99 | + (neq.i32 |
| 100 | + (getlocal $q0) |
| 101 | + (const.i32 0) |
| 102 | + ) |
104 | 103 | (block
|
105 | 104 |
|
106 | 105 | ;; for (var (@<var System.Int32 k> = 1); ...)
|
|
120 | 119 | )
|
121 | 120 |
|
122 | 121 | ;; for (...) {
|
123 |
| - (block |
124 |
| - (stores.1.i32 |
125 |
| - (mul.i32 |
| 122 | + (stores.1.i32 |
| 123 | + (mul.i32 |
| 124 | + (add.i32 |
| 125 | + (const.i32 64) |
| 126 | + (getlocal $k) |
| 127 | + ) |
| 128 | + (const.i32 4) |
| 129 | + ) |
| 130 | + (loads.1.i32 (mul.i32 |
126 | 131 | (add.i32
|
127 |
| - (const.i32 64) |
| 132 | + (const.i32 32) |
128 | 133 | (getlocal $k)
|
129 | 134 | )
|
130 | 135 | (const.i32 4)
|
131 |
| - ) |
132 |
| - (loads.1.i32 (mul.i32 |
133 |
| - (add.i32 |
134 |
| - (const.i32 32) |
135 |
| - (getlocal $k) |
136 |
| - ) |
137 |
| - (const.i32 4) |
138 |
| - ) ) |
139 |
| - ) |
140 |
| - (setlocal $num (getlocal $k)) |
141 |
| - (setlocal $k (add.i32 |
142 |
| - (getlocal $num) |
143 |
| - (const.i32 1) |
144 |
| - )) |
| 136 | + ) ) |
145 | 137 | )
|
| 138 | + |
| 139 | + ;; for (...; ...; <!>) |
| 140 | + (setlocal $k (add.i32 |
| 141 | + (getlocal $k) |
| 142 | + (const.i32 1) |
| 143 | + )) |
146 | 144 | )
|
147 | 145 | )
|
148 | 146 | (setlocal $flips (const.i32 1))
|
|
166 | 164 | )
|
167 | 165 | (const.i32 4)
|
168 | 166 | ) ))
|
169 |
| - (setlocal $flag2 (eq.i32 |
170 |
| - (getlocal $qq) |
171 |
| - (const.i32 0) |
172 |
| - )) |
173 | 167 |
|
174 | 168 | (if
|
175 |
| - (getlocal $flag2) |
| 169 | + (eq.i32 |
| 170 | + (getlocal $qq) |
| 171 | + (const.i32 0) |
| 172 | + ) |
176 | 173 | (break $loop_3)
|
177 | 174 | )
|
178 | 175 | (stores.1.i32
|
|
185 | 182 | )
|
186 | 183 | (getlocal $q0)
|
187 | 184 | )
|
188 |
| - (setlocal $flag3 (ges.i32 |
189 |
| - (getlocal $q0) |
190 |
| - (const.i32 3) |
191 |
| - )) |
192 | 185 |
|
193 | 186 | (if
|
194 |
| - (getlocal $flag3) |
| 187 | + (ges.i32 |
| 188 | + (getlocal $q0) |
| 189 | + (const.i32 3) |
| 190 | + ) |
195 | 191 | (block
|
196 | 192 | (setlocal $l (const.i32 1))
|
197 | 193 | (setlocal $m (sub.i32
|
|
236 | 232 | )
|
237 | 233 | (getlocal $t)
|
238 | 234 | )
|
239 |
| - (setlocal $num (getlocal $l)) |
240 | 235 | (setlocal $l (add.i32
|
241 |
| - (getlocal $num) |
| 236 | + (getlocal $l) |
242 | 237 | (const.i32 1)
|
243 | 238 | ))
|
244 |
| - (setlocal $num (getlocal $m)) |
245 | 239 | (setlocal $m (sub.i32
|
246 |
| - (getlocal $num) |
| 240 | + (getlocal $m) |
247 | 241 | (const.i32 1)
|
248 | 242 | ))
|
249 | 243 | )
|
|
263 | 257 | )
|
264 | 258 | )
|
265 | 259 | (setlocal $q0 (getlocal $qq))
|
266 |
| - (setlocal $num (getlocal $flips)) |
267 | 260 | (setlocal $flips (add.i32
|
268 |
| - (getlocal $num) |
| 261 | + (getlocal $flips) |
269 | 262 | (const.i32 1)
|
270 | 263 | ))
|
271 | 264 | )
|
|
278 | 271 | (getlocal $flips)
|
279 | 272 | )
|
280 | 273 | ))
|
281 |
| - (setlocal $flag4 (gts.i32 |
282 |
| - (getlocal $flips) |
283 |
| - (getlocal $maxflips) |
284 |
| - )) |
285 | 274 |
|
286 | 275 | (if
|
287 |
| - (getlocal $flag4) |
| 276 | + (gts.i32 |
| 277 | + (getlocal $flips) |
| 278 | + (getlocal $maxflips) |
| 279 | + ) |
288 | 280 | (setlocal $maxflips (getlocal $flips))
|
289 | 281 | )
|
290 | 282 | )
|
291 | 283 | )
|
292 |
| - (setlocal $flag5 (eq.i32 |
293 |
| - (getlocal $sign) |
294 |
| - (const.i32 1) |
295 |
| - )) |
296 | 284 |
|
297 | 285 | (if
|
298 |
| - (getlocal $flag5) |
| 286 | + (eq.i32 |
| 287 | + (getlocal $sign) |
| 288 | + (const.i32 1) |
| 289 | + ) |
299 | 290 | (block
|
300 | 291 | (stores.1.i32
|
301 | 292 | (const.i32 132)
|
|
346 | 337 | ) ))
|
347 | 338 |
|
348 | 339 | (if
|
349 |
| - (gts.i32 |
| 340 | + (neq.i32 |
350 | 341 | (getlocal $sx)
|
351 | 342 | (const.i32 0)
|
352 | 343 | )
|
|
367 | 358 | (break $loop_5)
|
368 | 359 | )
|
369 | 360 | )
|
370 |
| - (setlocal $flag7 (eq.i32 |
| 361 | + |
| 362 | + (if |
| 363 | + (eq.i32 |
371 | 364 | (getlocal $i2)
|
372 | 365 | (sub.i32
|
373 | 366 | (getlocal $n)
|
374 | 367 | (const.i32 1)
|
375 | 368 | )
|
376 |
| - )) |
377 |
| - |
378 |
| - (if |
379 |
| - (getlocal $flag7) |
| 369 | + ) |
380 | 370 | ;; goto Block_8
|
381 | 371 | (block (setlocal $currentLabel_0 (const.i32 1)) (break $labelgroup_0_dispatch) )
|
382 | 372 | )
|
|
409 | 399 | )
|
410 | 400 |
|
411 | 401 | ;; for (...) {
|
412 |
| - (block |
413 |
| - (stores.1.i32 |
414 |
| - (mul.i32 |
| 402 | + (stores.1.i32 |
| 403 | + (mul.i32 |
| 404 | + (add.i32 |
| 405 | + (const.i32 32) |
| 406 | + (getlocal $j2) |
| 407 | + ) |
| 408 | + (const.i32 4) |
| 409 | + ) |
| 410 | + (loads.1.i32 (mul.i32 |
415 | 411 | (add.i32
|
416 | 412 | (const.i32 32)
|
417 |
| - (getlocal $j2) |
418 |
| - ) |
419 |
| - (const.i32 4) |
420 |
| - ) |
421 |
| - (loads.1.i32 (mul.i32 |
422 | 413 | (add.i32
|
423 |
| - (const.i32 32) |
424 |
| - (add.i32 |
425 |
| - (getlocal $j2) |
426 |
| - (const.i32 1) |
427 |
| - ) |
| 414 | + (getlocal $j2) |
| 415 | + (const.i32 1) |
428 | 416 | )
|
429 |
| - (const.i32 4) |
430 |
| - ) ) |
431 |
| - ) |
432 |
| - (setlocal $num (getlocal $j2)) |
433 |
| - (setlocal $j2 (add.i32 |
434 |
| - (getlocal $num) |
435 |
| - (const.i32 1) |
436 |
| - )) |
| 417 | + ) |
| 418 | + (const.i32 4) |
| 419 | + ) ) |
437 | 420 | )
|
| 421 | + |
| 422 | + ;; for (...; ...; <!>) |
| 423 | + (setlocal $j2 (add.i32 |
| 424 | + (getlocal $j2) |
| 425 | + (const.i32 1) |
| 426 | + )) |
438 | 427 | )
|
439 | 428 | )
|
440 | 429 | (stores.1.i32
|
|
450 | 439 | )
|
451 | 440 | (getlocal $t3)
|
452 | 441 | )
|
453 |
| - (setlocal $num (getlocal $i2)) |
454 |
| - (setlocal $i2 (add.i32 |
455 |
| - (getlocal $num) |
456 |
| - (const.i32 1) |
457 |
| - )) |
458 | 442 | )
|
| 443 | + |
| 444 | + ;; for (...; ...; <!>) |
| 445 | + (setlocal $i2 (add.i32 |
| 446 | + (getlocal $i2) |
| 447 | + (const.i32 1) |
| 448 | + )) |
459 | 449 | )
|
460 | 450 | )
|
461 | 451 | )
|
|
489 | 479 | )
|
490 | 480 | ))
|
491 | 481 | )
|
492 |
| - |
493 | 482 | )
|
| 483 | + |
494 | 484 | (func $Program_readI32
|
495 | 485 | (param $base i32) (param $offset i32)
|
496 | 486 | (result i32)
|
|
505 | 495 | )
|
506 | 496 |
|
507 | 497 | (export "fannkuch" $Program_fannkuch)
|
508 |
| - |
509 | 498 | (export "readI32" $Program_readI32)
|
510 | 499 |
|
511 | 500 | (memory 4096 4096)
|
512 | 501 |
|
513 | 502 | )
|
514 | 503 |
|
| 504 | + |
515 | 505 | (invoke "fannkuch" (const.i32 7) )
|
516 | 506 | (asserteq (invoke "readI32" (const.i32 0) (const.i32 0) ) (const.i32 228) )
|
517 | 507 | (asserteq (invoke "readI32" (const.i32 0) (const.i32 1) ) (const.i32 16) )
|
0 commit comments