.file "udivmod4.c" .globl __ashldi3 .text .align 2 .globl xlrandom .type xlrandom, @function xlrandom: link.w %a6,#0 movm.l #0x3f30,-(%sp) moveq.l #64,%d6 lea random,%a3 lea __ashldi3,%a2 moveq.l #1,%d7 .align 2 .L2: jbsr (%a3) move.l %d0,%d2 moveq.l #15,%d0 and.l %d2,%d0 move.l %d0,%d5 addq.l #1,%d5 move.l %d5,-(%sp) move.l %d4,-(%sp) move.l %d3,-(%sp) jbsr (%a2) lea (12,%sp),%sp move.l %d0,%d3 move.l %d1,%d4 btst #18,%d2 jbeq .L5 move.l %d7,%d0 lsl.l %d5,%d0 subq.l #1,%d0 or.l %d0,%d4 .L5: sub.l %d5,%d6 jbpl .L2 move.l %d3,%d0 move.l %d4,%d1 movm.l -32(%a6),#0xcfc unlk %a6 rts .size xlrandom, .-xlrandom .section .rodata.str1.1,"aMS",@progbits,1 .LC0: .string "Testing udivmoddi4: %d iterations made\n" .LC1: .string "Testing udivmoddi4: failure after %d iterations\n" .LC2: .string "n=%lX%08lX\n" .LC3: .string "d=%lX%08lX\n" .LC4: .string "q=%lX%08lX\n" .LC5: .string "r=%lX%08lX\n" .LC6: .string "rr=%lX%08lX\n" .text .align 2 .globl main .type main, @function main: link.w %a6,#-24 movm.l #0x3f3c,-(%sp) clr.l %d7 .align 2 .L8: jbsr xlrandom move.l %d0,-24(%a6) move.l %d1,-20(%a6) jbsr xlrandom move.l %d0,%d3 move.l %d1,%d4 move.l %d3,%d0 or.l %d4,%d0 jbne .L15 .L10: addq.l #1,%d7 jbra .L8 .align 2 .L15: pea -8(%a6) move.l %d4,-(%sp) move.l %d3,-(%sp) move.l -20(%a6),-(%sp) move.l -24(%a6),-(%sp) jbsr __udivmoddi4 move.l %d0,%a4 move.l %d1,%a5 move.l %d7,%d0 muls.l #1125899907,%d2:%d0 moveq.l #18,%d1 asr.l %d1,%d2 move.l %d7,%d0 add.l %d0,%d0 subx.l %d0,%d0 sub.l %d0,%d2 move.l %d2,%d1 lsl.l #5,%d1 sub.l %d2,%d1 move.l %d1,%d0 lsl.l #6,%d0 sub.l %d1,%d0 move.l %d2,%a0 lea (%a0,%d0.l*8),%a0 move.l %a0,%d0 lsl.l #6,%d0 move.l %d7,%d1 sub.l %d0,%d1 lea (20,%sp),%sp jbeq .L16 .L12: move.l %a5,%d2 mulu.l %d4,%d5:%d2 move.l %d2,%a3 move.l %a5,%d0 muls.l %d3,%d0 add.l %d5,%d0 move.l %a4,%d1 muls.l %d4,%d1 move.l %d0,%a2 add.l %d1,%a2 move.l -24(%a6),%d0 move.l -20(%a6),%d1 move.l %a2,%d2 sub.l %a3,%d1 subx.l %d2,%d0 move.l %d0,-16(%a6) move.l %d1,-12(%a6) move.l -8(%a6),%d5 move.l -4(%a6),%d6 sub.l %d6,%d1 subx.l %d5,%d0 jbne .L14 move.l -16(%a6),%d0 move.l -12(%a6),%d1 sub.l %d4,%d1 subx.l %d3,%d0 jbcs .L10 jbra .L14 .align 2 .L16: move.l %d7,-(%sp) pea .LC0 jbsr printf addq.l #8,%sp jbra .L12 .align 2 .L14: move.l %d7,-(%sp) pea .LC1 jbsr printf move.l -20(%a6),-(%sp) move.l -24(%a6),-(%sp) pea .LC2 jbsr printf move.l %d4,-(%sp) move.l %d3,-(%sp) pea .LC3 jbsr printf lea (28,%sp),%sp move.l %a5,(%sp) move.l %a4,-(%sp) pea .LC4 jbsr printf move.l -4(%a6),-(%sp) move.l -8(%a6),-(%sp) pea .LC5 jbsr printf move.l -12(%a6),-(%sp) move.l -16(%a6),-(%sp) pea .LC6 jbsr printf lea (36,%sp),%sp jbsr abort nop .size main, .-main .ident "GCC: (GNU) 3.3.2"