diff options
Diffstat (limited to 'test/queen.ssa')
-rw-r--r-- | test/queen.ssa | 282 |
1 files changed, 282 insertions, 0 deletions
diff --git a/test/queen.ssa b/test/queen.ssa new file mode 100644 index 0000000..141e17e --- /dev/null +++ b/test/queen.ssa @@ -0,0 +1,282 @@ +# eight queens program +# generated by minic + +export function w $chk(w %t0, w %t1) { +@l0 + %x =l alloc4 4 + storew %t0, %x + %y =l alloc4 4 + storew %t1, %y + %i =l alloc4 4 + %r =l alloc4 4 + storew 0, %i + storew 0, %r +@l1 + %t6 =w loadw %i + %t7 =w loadw $glo1 + %t5 =w csltw %t6, %t7 + jnz %t5, @l2, @l3 +@l2 + %t10 =w loadw %r + %t15 =l loadl $glo3 + %t16 =w loadw %x + %t17 =l extsw %t16 + %t18 =l mul 8, %t17 + %t14 =l add %t15, %t18 + %t13 =l loadl %t14 + %t19 =w loadw %i + %t20 =l extsw %t19 + %t21 =l mul 4, %t20 + %t12 =l add %t13, %t21 + %t11 =w loadw %t12 + %t9 =w add %t10, %t11 + storew %t9, %r + %t24 =w loadw %r + %t29 =l loadl $glo3 + %t30 =w loadw %i + %t31 =l extsw %t30 + %t32 =l mul 8, %t31 + %t28 =l add %t29, %t32 + %t27 =l loadl %t28 + %t33 =w loadw %y + %t34 =l extsw %t33 + %t35 =l mul 4, %t34 + %t26 =l add %t27, %t35 + %t25 =w loadw %t26 + %t23 =w add %t24, %t25 + storew %t23, %r + %t39 =w loadw %x + %t40 =w loadw %i + %t38 =w add %t39, %t40 + %t41 =w loadw $glo1 + %t37 =w csltw %t38, %t41 + %t44 =w loadw %y + %t45 =w loadw %i + %t43 =w add %t44, %t45 + %t46 =w loadw $glo1 + %t42 =w csltw %t43, %t46 + %t36 =w and %t37, %t42 + jnz %t36, @l4, @l5 +@l4 + %t49 =w loadw %r + %t54 =l loadl $glo3 + %t56 =w loadw %x + %t57 =w loadw %i + %t55 =w add %t56, %t57 + %t58 =l extsw %t55 + %t59 =l mul 8, %t58 + %t53 =l add %t54, %t59 + %t52 =l loadl %t53 + %t61 =w loadw %y + %t62 =w loadw %i + %t60 =w add %t61, %t62 + %t63 =l extsw %t60 + %t64 =l mul 4, %t63 + %t51 =l add %t52, %t64 + %t50 =w loadw %t51 + %t48 =w add %t49, %t50 + storew %t48, %r +@l5 + %t68 =w loadw %x + %t69 =w loadw %i + %t67 =w add %t68, %t69 + %t70 =w loadw $glo1 + %t66 =w csltw %t67, %t70 + %t74 =w loadw %y + %t75 =w loadw %i + %t73 =w sub %t74, %t75 + %t71 =w cslew 0, %t73 + %t65 =w and %t66, %t71 + jnz %t65, @l7, @l8 +@l7 + %t78 =w loadw %r + %t83 =l loadl $glo3 + %t85 =w loadw %x + %t86 =w loadw %i + %t84 =w add %t85, %t86 + %t87 =l extsw %t84 + %t88 =l mul 8, %t87 + %t82 =l add %t83, %t88 + %t81 =l loadl %t82 + %t90 =w loadw %y + %t91 =w loadw %i + %t89 =w sub %t90, %t91 + %t92 =l extsw %t89 + %t93 =l mul 4, %t92 + %t80 =l add %t81, %t93 + %t79 =w loadw %t80 + %t77 =w add %t78, %t79 + storew %t77, %r +@l8 + %t98 =w loadw %x + %t99 =w loadw %i + %t97 =w sub %t98, %t99 + %t95 =w cslew 0, %t97 + %t102 =w loadw %y + %t103 =w loadw %i + %t101 =w add %t102, %t103 + %t104 =w loadw $glo1 + %t100 =w csltw %t101, %t104 + %t94 =w and %t95, %t100 + jnz %t94, @l10, @l11 +@l10 + %t107 =w loadw %r + %t112 =l loadl $glo3 + %t114 =w loadw %x + %t115 =w loadw %i + %t113 =w sub %t114, %t115 + %t116 =l extsw %t113 + %t117 =l mul 8, %t116 + %t111 =l add %t112, %t117 + %t110 =l loadl %t111 + %t119 =w loadw %y + %t120 =w loadw %i + %t118 =w add %t119, %t120 + %t121 =l extsw %t118 + %t122 =l mul 4, %t121 + %t109 =l add %t110, %t122 + %t108 =w loadw %t109 + %t106 =w add %t107, %t108 + storew %t106, %r +@l11 + %t127 =w loadw %x + %t128 =w loadw %i + %t126 =w sub %t127, %t128 + %t124 =w cslew 0, %t126 + %t132 =w loadw %y + %t133 =w loadw %i + %t131 =w sub %t132, %t133 + %t129 =w cslew 0, %t131 + %t123 =w and %t124, %t129 + jnz %t123, @l13, @l14 +@l13 + %t136 =w loadw %r + %t141 =l loadl $glo3 + %t143 =w loadw %x + %t144 =w loadw %i + %t142 =w sub %t143, %t144 + %t145 =l extsw %t142 + %t146 =l mul 8, %t145 + %t140 =l add %t141, %t146 + %t139 =l loadl %t140 + %t148 =w loadw %y + %t149 =w loadw %i + %t147 =w sub %t148, %t149 + %t150 =l extsw %t147 + %t151 =l mul 4, %t150 + %t138 =l add %t139, %t151 + %t137 =w loadw %t138 + %t135 =w add %t136, %t137 + storew %t135, %r +@l14 + %t153 =w loadw %i + %t152 =w add %t153, 1 + storew %t152, %i + jmp @l1 +@l3 + %t154 =w loadw %r + ret %t154 +} + +export function w $go(w %t0) { +@l16 + %y =l alloc4 4 + storew %t0, %y + %x =l alloc4 4 + %t2 =w loadw %y + %t3 =w loadw $glo1 + %t1 =w ceqw %t2, %t3 + jnz %t1, @l17, @l18 +@l17 + %t5 =w loadw $glo2 + %t4 =w add %t5, 1 + storew %t4, $glo2 + ret 0 +@l18 + storew 0, %x +@l20 + %t10 =w loadw %x + %t11 =w loadw $glo1 + %t9 =w csltw %t10, %t11 + jnz %t9, @l21, @l22 +@l21 + %t14 =w loadw %x + %t15 =w loadw %y + %t13 =w call $chk(w %t14, w %t15) + %t12 =w ceqw %t13, 0 + jnz %t12, @l23, @l24 +@l23 + %t21 =l loadl $glo3 + %t22 =w loadw %x + %t23 =l extsw %t22 + %t24 =l mul 8, %t23 + %t20 =l add %t21, %t24 + %t19 =l loadl %t20 + %t25 =w loadw %y + %t26 =l extsw %t25 + %t27 =l mul 4, %t26 + %t18 =l add %t19, %t27 + %t28 =w loadw %t18 + %t17 =w add %t28, 1 + storew %t17, %t18 + %t31 =w loadw %y + %t30 =w add %t31, 1 + %t29 =w call $go(w %t30) + %t37 =l loadl $glo3 + %t38 =w loadw %x + %t39 =l extsw %t38 + %t40 =l mul 8, %t39 + %t36 =l add %t37, %t40 + %t35 =l loadl %t36 + %t41 =w loadw %y + %t42 =l extsw %t41 + %t43 =l mul 4, %t42 + %t34 =l add %t35, %t43 + %t44 =w loadw %t34 + %t33 =w sub %t44, 1 + storew %t33, %t34 +@l24 + %t46 =w loadw %x + %t45 =w add %t46, 1 + storew %t45, %x + jmp @l20 +@l22 + ret 0 +} + +export function w $main() { +@l26 + %i =l alloc4 4 + storew 8, $glo1 + %t4 =w loadw $glo1 + %t3 =l call $calloc(w %t4, w 8) + storel %t3, $glo3 + storew 0, %i +@l27 + %t9 =w loadw %i + %t10 =w loadw $glo1 + %t8 =w csltw %t9, %t10 + jnz %t8, @l28, @l29 +@l28 + %t13 =w loadw $glo1 + %t12 =l call $calloc(w %t13, w 4) + %t16 =l loadl $glo3 + %t17 =w loadw %i + %t18 =l extsw %t17 + %t19 =l mul 8, %t18 + %t15 =l add %t16, %t19 + storel %t12, %t15 + %t21 =w loadw %i + %t20 =w add %t21, 1 + storew %t20, %i + jmp @l27 +@l29 + %t22 =w call $go(w 0) + %t25 =w loadw $glo2 + %t24 =w cnew %t25, 92 + ret %t24 +} + +data $glo1 = { w 0 } +data $glo2 = { w 0 } +data $glo3 = { l 0 } |