OpenCores
URL https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [gcc-4.2.2/] [gcc/] [config/] [sparc/] [lb1spl.asm] - Diff between revs 38 and 154

Only display areas with differences | Details | Blame | View Log

Rev 38 Rev 154
/* This is an assembly language implementation of mulsi3, divsi3, and modsi3
/* This is an assembly language implementation of mulsi3, divsi3, and modsi3
   for the sparclite processor.
   for the sparclite processor.
   These routines are all from the SPARClite User's Guide, slightly edited
   These routines are all from the SPARClite User's Guide, slightly edited
   to match the desired calling convention, and also to optimize them.  */
   to match the desired calling convention, and also to optimize them.  */
#ifdef L_udivsi3
#ifdef L_udivsi3
.text
.text
        .align 4
        .align 4
        .global .udiv
        .global .udiv
        .proc   04
        .proc   04
.udiv:
.udiv:
        wr      %g0,%g0,%y      ! Not a delayed write for sparclite
        wr      %g0,%g0,%y      ! Not a delayed write for sparclite
        tst     %g0
        tst     %g0
        divscc  %o0,%o1,%g1
        divscc  %o0,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        retl
        retl
        divscc  %g1,%o1,%o0
        divscc  %g1,%o1,%o0
#endif
#endif
#ifdef L_umodsi3
#ifdef L_umodsi3
.text
.text
        .align 4
        .align 4
        .global .urem
        .global .urem
        .proc   04
        .proc   04
.urem:
.urem:
        wr      %g0,%g0,%y      ! Not a delayed write for sparclite
        wr      %g0,%g0,%y      ! Not a delayed write for sparclite
        tst     %g0
        tst     %g0
        divscc  %o0,%o1,%g1
        divscc  %o0,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        divscc  %g1,%o1,%g1
        bl 1f
        bl 1f
        rd      %y,%o0
        rd      %y,%o0
        retl
        retl
        nop
        nop
1:      retl
1:      retl
        add     %o0,%o1,%o0
        add     %o0,%o1,%o0
#endif
#endif
#ifdef L_divsi3
#ifdef L_divsi3
.text
.text
        .align 4
        .align 4
        .global .div
        .global .div
        .proc   04
        .proc   04
! ??? This routine could be made faster if was optimized, and if it was
! ??? This routine could be made faster if was optimized, and if it was
! rewritten to only calculate the quotient.
! rewritten to only calculate the quotient.
.div:
.div:
        wr      %g0,%g0,%y      ! Not a delayed write for sparclite
        wr      %g0,%g0,%y      ! Not a delayed write for sparclite
        mov     %o1,%o4
        mov     %o1,%o4
        tst     %o1
        tst     %o1
        bl,a    1f
        bl,a    1f
        sub     %g0,%o4,%o4
        sub     %g0,%o4,%o4
1:      tst     %o0
1:      tst     %o0
        bl,a    2f
        bl,a    2f
        mov     -1,%y
        mov     -1,%y
2:      divscc  %o0,%o4,%g1
2:      divscc  %o0,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        be      6f
        be      6f
        mov     %y,%o3
        mov     %y,%o3
        bg      4f
        bg      4f
        addcc   %o3,%o4,%g0
        addcc   %o3,%o4,%g0
        be,a    6f
        be,a    6f
        mov     %g0,%o3
        mov     %g0,%o3
        tst     %o0
        tst     %o0
        bl      5f
        bl      5f
        tst     %g1
        tst     %g1
        ba      5f
        ba      5f
        add     %o3,%o4,%o3
        add     %o3,%o4,%o3
4:      subcc   %o3,%o4,%g0
4:      subcc   %o3,%o4,%g0
        be,a    6f
        be,a    6f
        mov     %g0,%o3
        mov     %g0,%o3
        tst     %o0
        tst     %o0
        bge     5f
        bge     5f
        tst     %g1
        tst     %g1
        sub     %o3,%o4,%o3
        sub     %o3,%o4,%o3
5:      bl,a    6f
5:      bl,a    6f
        add     %g1,1,%g1
        add     %g1,1,%g1
6:      tst     %o1
6:      tst     %o1
        bl,a    7f
        bl,a    7f
        sub     %g0,%g1,%g1
        sub     %g0,%g1,%g1
7:      retl
7:      retl
        mov     %g1,%o0         ! Quotient is in %g1.
        mov     %g1,%o0         ! Quotient is in %g1.
#endif
#endif
#ifdef L_modsi3
#ifdef L_modsi3
.text
.text
        .align 4
        .align 4
        .global .rem
        .global .rem
        .proc   04
        .proc   04
! ??? This routine could be made faster if was optimized, and if it was
! ??? This routine could be made faster if was optimized, and if it was
! rewritten to only calculate the remainder.
! rewritten to only calculate the remainder.
.rem:
.rem:
        wr      %g0,%g0,%y      ! Not a delayed write for sparclite
        wr      %g0,%g0,%y      ! Not a delayed write for sparclite
        mov     %o1,%o4
        mov     %o1,%o4
        tst     %o1
        tst     %o1
        bl,a    1f
        bl,a    1f
        sub     %g0,%o4,%o4
        sub     %g0,%o4,%o4
1:      tst     %o0
1:      tst     %o0
        bl,a    2f
        bl,a    2f
        mov     -1,%y
        mov     -1,%y
2:      divscc  %o0,%o4,%g1
2:      divscc  %o0,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        divscc  %g1,%o4,%g1
        be      6f
        be      6f
        mov     %y,%o3
        mov     %y,%o3
        bg      4f
        bg      4f
        addcc   %o3,%o4,%g0
        addcc   %o3,%o4,%g0
        be,a    6f
        be,a    6f
        mov     %g0,%o3
        mov     %g0,%o3
        tst     %o0
        tst     %o0
        bl      5f
        bl      5f
        tst     %g1
        tst     %g1
        ba      5f
        ba      5f
        add     %o3,%o4,%o3
        add     %o3,%o4,%o3
4:      subcc   %o3,%o4,%g0
4:      subcc   %o3,%o4,%g0
        be,a    6f
        be,a    6f
        mov     %g0,%o3
        mov     %g0,%o3
        tst     %o0
        tst     %o0
        bge     5f
        bge     5f
        tst     %g1
        tst     %g1
        sub     %o3,%o4,%o3
        sub     %o3,%o4,%o3
5:      bl,a    6f
5:      bl,a    6f
        add     %g1,1,%g1
        add     %g1,1,%g1
6:      tst     %o1
6:      tst     %o1
        bl,a    7f
        bl,a    7f
        sub     %g0,%g1,%g1
        sub     %g0,%g1,%g1
7:      retl
7:      retl
        mov     %o3,%o0         ! Remainder is in %o3.
        mov     %o3,%o0         ! Remainder is in %o3.
#endif
#endif
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.