------- Comment #2 from ami_stuff at o2 dot pl  2009-08-30 16:57 -------
With -m68060 -O1 -fomit-frame-pointer:

GCC 4.1.2/GCC 4.2.5:

#NO_APP
        .text
        .even
        .globl  _MUL64
_MUL64:
        movm.l #0x3e00,-(sp)
        move.l 28(sp),a1
        move.l 24(sp),a0
#APP
        | Inlined umul_ppmm
    move.l a0,d0
    move.l a1,d1
    move.l d0,d2
    swap    d0
    move.l d1,d3
    swap    d1
    move.w d2,d4
    mulu    d3,d4
    mulu    d1,d2
    mulu    d0,d3
    mulu    d0,d1
    move.l d4,d0
    eor.w  d0,d0
    swap    d0
    add.l  d0,d2
    add.l  d3,d2
    jcc     1f
    add.l  #65536,d1
1:  swap    d2
    moveq   #0,d0
    move.w d2,d0
    move.w d4,d2
    move.l d2,d6
    add.l  d1,d0
    move.l d0,d5
#NO_APP
        tst.l a0
        jbge L2
        sub.l a1,d5
L2:
        tst.l a1
        jbge L4
        sub.l a0,d5
L4:
        move.l d5,d0
        clr.l d1
        or.l d6,d1
        movm.l (sp)+,#0x7c
        rts

GCC 4.3.2:

#NO_APP
        .text
        .even
        .globl  _MUL64
_MUL64:
        movem.l #16128,-(sp)
        move.l 32(sp),d5
        move.l 28(sp),a0
#APP
;# 45 "test5.c" 1
        | Inlined umul_ppmm
    move.l a0,d0
    move.l d5,d1
    move.l d0,d2
    swap    d0
    move.l d1,d3
    swap    d1
    move.w d2,d4
    mulu    d3,d4
    mulu    d1,d2
    mulu    d0,d3
    mulu    d0,d1
    move.l d4,d0
    eor.w  d0,d0
    swap    d0
    add.l  d0,d2
    add.l  d3,d2
    jcc     1f
    add.l  #65536,d1
1:  swap    d2
    moveq   #0,d0
    move.w d2,d0
    move.w d4,d2
    move.l d2,d7
    add.l  d1,d0
    move.l d0,a1
#NO_APP
        tst.l a0
        jge L2
        sub.l d5,a1
L2:
        tst.l d5
        jge L3
        sub.l a0,a1
L3:
        move.l a1,d1
        clr.l d2
        or.l d7,d2
        move.l d1,d0
        move.l d2,d1
        movem.l (sp)+,#252
        rts

GCC 4.4.2:

#NO_APP
        .text
        .even
        .globl  _MUL64
_MUL64:
        movem.l #16128,-(sp)
        move.l 32(sp),a0
        move.l 28(sp),a1
#APP
;# 45 "test5.c" 1
        | Inlined umul_ppmm
    move.l a1,d0
    move.l a0,d1
    move.l d0,d2
    swap    d0
    move.l d1,d3
    swap    d1
    move.w d2,d4
    mulu    d3,d4
    mulu    d1,d2
    mulu    d0,d3
    mulu    d0,d1
    move.l d4,d0
    eor.w  d0,d0
    swap    d0
    add.l  d0,d2
    add.l  d3,d2
    jcc     1f
    add.l  #65536,d1
1:  swap    d2
    moveq   #0,d0
    move.w d2,d0
    move.w d4,d2
    move.l d2,d6
    add.l  d1,d0
    move.l d0,d5
#NO_APP
        tst.l a1
        jge L2
        sub.l a0,d5
L2:
        tst.l a0
        jge L3
        sub.l a1,d5
L3:
        move.l d5,d0
        clr.l d1
        move.l d0,d2
        move.l d1,d3
        or.l d6,d3
        move.l d2,d6
        move.l d3,d7
        move.l d2,d0
        move.l d7,d1
        movem.l (sp)+,#252
        rts


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40977

Reply via email to