.file "20020411-1.c" .text .align 2 .globl bar .type bar, @function bar: link.w %a6,#0 unlk %a6 rts .size bar, .-bar .align 2 .globl baz .type baz, @function baz: link.w %a6,#-8 move.l %d3,-(%sp) move.l %d2,-(%sp) move.l 8(%a6),%a1 move.l 12(%a6),%d2 lea (-6,%a6),%a0 move.l %a1,%d1 subq.l #1,%d1 cmp.l #1048575,%d1 shi %d0 extb.l %d0 neg.l %d0 bfins %d0,-1(%a6){#7:#1} moveq.l #1,%d3 and.l %d3,%d0 jbeq .L3 moveq.l #12,%d0 lsr.l %d0,%d1 .L3: move.w %d1,(%a0) clr.w %d1 swap %d1 bfins %d1,-1(%a6){#0:#4} or.b #1,-2(%a6) clr.l %d0 move.b %d2,%d0 bfins %d0,-2(%a6){#0:#5} and.b #-13,-1(%a6) bfextu %d0{#25:#1},%d0 bfins %d0,-1(%a6){#6:#1} moveq.l #1,%d3 cmp.l %a1,%d3 jbne .L5 bfclr -1(%a6){#7:#1} move.w #1,(%a0) bfclr -1(%a6){#0:#4} .align 2 .L5: move.l %a0,-(%sp) jbsr bar addq.l #4,%sp move.l -16(%a6),%d2 move.l -12(%a6),%d3 unlk %a6 rts .size baz, .-baz .align 2 .globl foo .type foo, @function foo: link.w %a6,#0 move.l %d2,-(%sp) move.l 8(%a6),%a0 move.l 12(%a6),%d1 cmp.l #1048575,%d1 shi %d0 extb.l %d0 neg.l %d0 bfins %d0,5(%a0){#7:#1} moveq.l #1,%d2 and.l %d2,%d0 jbeq .L9 moveq.l #12,%d0 lsr.l %d0,%d1 .L9: move.w %d1,(%a0) clr.w %d1 swap %d1 bfins %d1,5(%a0){#0:#4} move.l (%sp)+,%d2 unlk %a6 rts .size foo, .-foo .ident "GCC: (GNU) 3.3.2"