[BACK]Return to udiv_fp.asm CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / gmp / mpn / sparc32

Annotation of OpenXM_contrib/gmp/mpn/sparc32/udiv_fp.asm, Revision 1.1.1.1

1.1       maekawa     1: dnl  SPARC v7 __udiv_qrnnd division support, used from longlong.h.
                      2: dnl  This is for v7 CPUs with a floating-point unit.
                      3:
                      4: dnl  Copyright (C) 1993, 1994, 1996, 2000 Free Software Foundation, Inc.
                      5:
                      6: dnl  This file is part of the GNU MP Library.
                      7:
                      8: dnl  The GNU MP Library is free software; you can redistribute it and/or modify
                      9: dnl  it under the terms of the GNU Lesser General Public License as published
                     10: dnl  by the Free Software Foundation; either version 2.1 of the License, or (at
                     11: dnl  your option) any later version.
                     12:
                     13: dnl  The GNU MP Library is distributed in the hope that it will be useful, but
                     14: dnl  WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
                     15: dnl  or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
                     16: dnl  License for more details.
                     17:
                     18: dnl  You should have received a copy of the GNU Lesser General Public License
                     19: dnl  along with the GNU MP Library; see the file COPYING.LIB.  If not, write to
                     20: dnl  the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
                     21: dnl  MA 02111-1307, USA.
                     22:
                     23:
                     24: include(`../config.m4')
                     25:
                     26: C INPUT PARAMETERS
                     27: C rem_ptr      i0
                     28: C n1           i1
                     29: C n0           i2
                     30: C d            i3
                     31:
                     32: ASM_START()
                     33:
                     34: ifdef(`PIC',
                     35: `      TEXT
                     36: L(getpc):
                     37:        retl
                     38:        nop')
                     39:
                     40:        TEXT
                     41:        ALIGN(8)
                     42: L(C0): .double 0r4294967296
                     43: L(C1): .double 0r2147483648
                     44:
                     45: PROLOGUE(mpn_udiv_qrnnd)
                     46:        save    %sp,-104,%sp
                     47:        st      %i1,[%fp-8]
                     48:        ld      [%fp-8],%f10
                     49:
                     50: ifdef(`PIC',
                     51: `L(pc):        call    L(getpc)                C put address of this insn in %o7
                     52:        ldd     [%o7+L(C0)-L(pc)],%f8',
                     53: `      sethi   %hi(L(C0)),%o7
                     54:        ldd     [%o7+%lo(L(C0))],%f8')
                     55:
                     56:        fitod   %f10,%f4
                     57:        cmp     %i1,0
                     58:        bge     L(248)
                     59:        mov     %i0,%i5
                     60:        faddd   %f4,%f8,%f4
                     61: L(248):
                     62:        st      %i2,[%fp-8]
                     63:        ld      [%fp-8],%f10
                     64:        fmuld   %f4,%f8,%f6
                     65:        cmp     %i2,0
                     66:        bge     L(249)
                     67:        fitod   %f10,%f2
                     68:        faddd   %f2,%f8,%f2
                     69: L(249):
                     70:        st      %i3,[%fp-8]
                     71:        faddd   %f6,%f2,%f2
                     72:        ld      [%fp-8],%f10
                     73:        cmp     %i3,0
                     74:        bge     L(250)
                     75:        fitod   %f10,%f4
                     76:        faddd   %f4,%f8,%f4
                     77: L(250):
                     78:        fdivd   %f2,%f4,%f2
                     79:
                     80: ifdef(`PIC',
                     81: `      ldd     [%o7+L(C1)-L(pc)],%f4',
                     82: `      sethi   %hi(L(C1)),%o7
                     83:        ldd     [%o7+%lo(L(C1))],%f4')
                     84:
                     85:        fcmped  %f2,%f4
                     86:        nop
                     87:        fbge,a  L(251)
                     88:        fsubd   %f2,%f4,%f2
                     89:        fdtoi   %f2,%f2
                     90:        st      %f2,[%fp-8]
                     91:        b       L(252)
                     92:        ld      [%fp-8],%i4
                     93: L(251):
                     94:        fdtoi   %f2,%f2
                     95:        st      %f2,[%fp-8]
                     96:        ld      [%fp-8],%i4
                     97:        sethi   %hi(-2147483648),%g2
                     98:        xor     %i4,%g2,%i4
                     99: L(252):
                    100:        wr      %g0,%i4,%y
                    101:        sra     %i3,31,%g2
                    102:        and     %i4,%g2,%g2
                    103:        andcc   %g0,0,%g1
                    104:        mulscc  %g1,%i3,%g1
                    105:        mulscc  %g1,%i3,%g1
                    106:        mulscc  %g1,%i3,%g1
                    107:        mulscc  %g1,%i3,%g1
                    108:        mulscc  %g1,%i3,%g1
                    109:        mulscc  %g1,%i3,%g1
                    110:        mulscc  %g1,%i3,%g1
                    111:        mulscc  %g1,%i3,%g1
                    112:        mulscc  %g1,%i3,%g1
                    113:        mulscc  %g1,%i3,%g1
                    114:        mulscc  %g1,%i3,%g1
                    115:        mulscc  %g1,%i3,%g1
                    116:        mulscc  %g1,%i3,%g1
                    117:        mulscc  %g1,%i3,%g1
                    118:        mulscc  %g1,%i3,%g1
                    119:        mulscc  %g1,%i3,%g1
                    120:        mulscc  %g1,%i3,%g1
                    121:        mulscc  %g1,%i3,%g1
                    122:        mulscc  %g1,%i3,%g1
                    123:        mulscc  %g1,%i3,%g1
                    124:        mulscc  %g1,%i3,%g1
                    125:        mulscc  %g1,%i3,%g1
                    126:        mulscc  %g1,%i3,%g1
                    127:        mulscc  %g1,%i3,%g1
                    128:        mulscc  %g1,%i3,%g1
                    129:        mulscc  %g1,%i3,%g1
                    130:        mulscc  %g1,%i3,%g1
                    131:        mulscc  %g1,%i3,%g1
                    132:        mulscc  %g1,%i3,%g1
                    133:        mulscc  %g1,%i3,%g1
                    134:        mulscc  %g1,%i3,%g1
                    135:        mulscc  %g1,%i3,%g1
                    136:        mulscc  %g1,0,%g1
                    137:        add     %g1,%g2,%i0
                    138:        rd      %y,%g3
                    139:        subcc   %i2,%g3,%o7
                    140:        subxcc  %i1,%i0,%g0
                    141:        be      L(253)
                    142:        cmp     %o7,%i3
                    143:
                    144:        add     %i4,-1,%i0
                    145:        add     %o7,%i3,%o7
                    146:        st      %o7,[%i5]
                    147:        ret
                    148:        restore
                    149: L(253):
                    150:        blu     L(246)
                    151:        mov     %i4,%i0
                    152:        add     %i4,1,%i0
                    153:        sub     %o7,%i3,%o7
                    154: L(246):
                    155:        st      %o7,[%i5]
                    156:        ret
                    157:        restore
                    158: EPILOGUE(mpn_udiv_qrnnd)

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>