summary refs log tree commit diff
path: root/test/queen.ssa
diff options
context:
space:
mode:
Diffstat (limited to 'test/queen.ssa')
-rw-r--r--test/queen.ssa282
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 }