qbe

Internal scc patchset buffer for QBE
Log | Files | Refs | README | LICENSE

queen.ssa (5318B)


      1 # eight queens program
      2 # generated by minic
      3 
      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
    110 @l8
    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
    176 @l3
    177 	%t154 =w loadw %r
    178 	ret %t154
    179 }
    180 
    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
    245 }
    246 
    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
    278 }
    279 
    280 data $glo1 = { w 0 }
    281 data $glo2 = { w 0 }
    282 data $glo3 = { l 0 }