This commit is contained in:
Ulrich Drepper 2010-03-04 09:16:16 -08:00
commit 356af22323
4 changed files with 10 additions and 385 deletions

View File

@ -1,7 +1,14 @@
2010-03-03 Ulrich Drepper <drepper@redhat.com> 2010-03-03 Ulrich Drepper <drepper@redhat.com>
* sysdeps/unix/sysv/linux/bits/in.h: Add a few more defintions from the * sysdeps/unix/sysv/linux/bits/in.h: Add a few more definitions from
kernel headers. the kernel headers.
2010-03-04 David S. Miller <davem@davemloft.net>
* sysdeps/sparc/sparc64/Implies: Add ieee754/dbl-64/wordsize-64 entry.
* sysdeps/sparc/sparc32/sparcv8/udiv_qrnnd.S: Delete.
* sysdeps/sparc/sparc32/udiv_qrnnd.S: Delete.
2010-03-03 David S. Miller <davem@davemloft.net> 2010-03-03 David S. Miller <davem@davemloft.net>

View File

@ -1,215 +0,0 @@
! SPARC __udiv_qrnnd division support, used from longlong.h.
! Copyright (C) 1993, 1994 Free Software Foundation, Inc.
! This file is part of the GNU MP Library.
! The GNU MP Library is free software; you can redistribute it and/or modify
! it under the terms of the GNU Lesser General Public License as published by
! the Free Software Foundation; either version 2.1 of the License, or (at your
! option) any later version.
! The GNU MP Library is distributed in the hope that it will be useful, but
! WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
! or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
! License for more details.
! You should have received a copy of the GNU Lesser General Public License
! along with the GNU MP Library; see the file COPYING.LIB. If not, write to
! the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
! INPUT PARAMETERS
! rem_ptr o0
! n1 o1
! n0 o2
! d o3
#include "sysdep.h"
ENTRY(__udiv_qrnnd)
tst %o3
bneg LOC(largedivisor)
mov 8,%g1
b LOC(p1)
addxcc %o2,%o2,%o2
LOC(plop):
bcc LOC(n1)
addxcc %o2,%o2,%o2
LOC(p1):
addx %o1,%o1,%o1
subcc %o1,%o3,%o4
bcc LOC(n2)
addxcc %o2,%o2,%o2
LOC(p2):
addx %o1,%o1,%o1
subcc %o1,%o3,%o4
bcc LOC(n3)
addxcc %o2,%o2,%o2
LOC(p3):
addx %o1,%o1,%o1
subcc %o1,%o3,%o4
bcc LOC(n4)
addxcc %o2,%o2,%o2
LOC(p4):
addx %o1,%o1,%o1
addcc %g1,-1,%g1
bne LOC(plop)
subcc %o1,%o3,%o4
bcc LOC(n5)
addxcc %o2,%o2,%o2
LOC(p5):
st %o1,[%o0]
retl
xnor %g0,%o2,%o0
LOC(nlop):
bcc LOC(p1)
addxcc %o2,%o2,%o2
LOC(n1):
addx %o4,%o4,%o4
subcc %o4,%o3,%o1
bcc LOC(p2)
addxcc %o2,%o2,%o2
LOC(n2):
addx %o4,%o4,%o4
subcc %o4,%o3,%o1
bcc LOC(p3)
addxcc %o2,%o2,%o2
LOC(n3):
addx %o4,%o4,%o4
subcc %o4,%o3,%o1
bcc LOC(p4)
addxcc %o2,%o2,%o2
LOC(n4):
addx %o4,%o4,%o4
addcc %g1,-1,%g1
bne LOC(nlop)
subcc %o4,%o3,%o1
bcc LOC(p5)
addxcc %o2,%o2,%o2
LOC(n5):
st %o4,[%o0]
retl
xnor %g0,%o2,%o0
LOC(largedivisor):
and %o2,1,%o5 ! %o5 = n0 & 1
srl %o2,1,%o2
sll %o1,31,%g2
or %g2,%o2,%o2 ! %o2 = lo(n1n0 >> 1)
srl %o1,1,%o1 ! %o1 = hi(n1n0 >> 1)
and %o3,1,%g2
srl %o3,1,%g3 ! %g3 = floor(d / 2)
add %g3,%g2,%g3 ! %g3 = ceil(d / 2)
b LOC(Lp1)
addxcc %o2,%o2,%o2
LOC(Lplop):
bcc LOC(Ln1)
addxcc %o2,%o2,%o2
LOC(Lp1):
addx %o1,%o1,%o1
subcc %o1,%g3,%o4
bcc LOC(Ln2)
addxcc %o2,%o2,%o2
LOC(Lp2):
addx %o1,%o1,%o1
subcc %o1,%g3,%o4
bcc LOC(Ln3)
addxcc %o2,%o2,%o2
LOC(Lp3):
addx %o1,%o1,%o1
subcc %o1,%g3,%o4
bcc LOC(Ln4)
addxcc %o2,%o2,%o2
LOC(Lp4):
addx %o1,%o1,%o1
addcc %g1,-1,%g1
bne LOC(Lplop)
subcc %o1,%g3,%o4
bcc LOC(Ln5)
addxcc %o2,%o2,%o2
LOC(Lp5):
add %o1,%o1,%o1 ! << 1
tst %g2
bne LOC(Oddp)
add %o5,%o1,%o1
st %o1,[%o0]
retl
xnor %g0,%o2,%o0
LOC(Lnlop):
bcc LOC(Lp1)
addxcc %o2,%o2,%o2
LOC(Ln1):
addx %o4,%o4,%o4
subcc %o4,%g3,%o1
bcc LOC(Lp2)
addxcc %o2,%o2,%o2
LOC(Ln2):
addx %o4,%o4,%o4
subcc %o4,%g3,%o1
bcc LOC(Lp3)
addxcc %o2,%o2,%o2
LOC(Ln3):
addx %o4,%o4,%o4
subcc %o4,%g3,%o1
bcc LOC(Lp4)
addxcc %o2,%o2,%o2
LOC(Ln4):
addx %o4,%o4,%o4
addcc %g1,-1,%g1
bne LOC(Lnlop)
subcc %o4,%g3,%o1
bcc LOC(Lp5)
addxcc %o2,%o2,%o2
LOC(Ln5):
add %o4,%o4,%o4 ! << 1
tst %g2
bne LOC(Oddn)
add %o5,%o4,%o4
st %o4,[%o0]
retl
xnor %g0,%o2,%o0
LOC(Oddp):
xnor %g0,%o2,%o2
! q' in %o2. r' in %o1
addcc %o1,%o2,%o1
bcc LOC(Lp6)
addx %o2,0,%o2
sub %o1,%o3,%o1
LOC(Lp6):
subcc %o1,%o3,%g0
bcs LOC(Lp7)
subx %o2,-1,%o2
sub %o1,%o3,%o1
LOC(Lp7):
st %o1,[%o0]
retl
mov %o2,%o0
LOC(Oddn):
xnor %g0,%o2,%o2
! q' in %o2. r' in %o4
addcc %o4,%o2,%o4
bcc LOC(Ln6)
addx %o2,0,%o2
sub %o4,%o3,%o4
LOC(Ln6):
subcc %o4,%o3,%g0
bcs LOC(Ln7)
subx %o2,-1,%o2
sub %o4,%o3,%o4
LOC(Ln7):
st %o4,[%o0]
retl
mov %o2,%o0
END(__udiv_qrnnd)

View File

@ -1,168 +0,0 @@
! SPARC __udiv_qrnnd division support, used from longlong.h.
!
! Copyright (C) 1993, 1994, 1997 Free Software Foundation, Inc.
!
! This file is part of the GNU MP Library.
!
! The GNU MP Library is free software; you can redistribute it and/or modify
! it under the terms of the GNU Lesser General Public License as published by
! the Free Software Foundation; either version 2.1 of the License, or (at your
! option) any later version.
!
! The GNU MP Library is distributed in the hope that it will be useful, but
! WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
! or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
! License for more details.
!
! You should have received a copy of the GNU Lesser General Public License
! along with the GNU MP Library; see the file COPYING.LIB. If not, write to
! the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
!
! Added PIC support - May/96, Miguel de Icaza
!
! INPUT PARAMETERS
! rem_ptr i0
! n1 i1
! n0 i2
! d i3
#include <sysdep.h>
#undef ret /* Kludge for glibc */
#ifdef PIC
.text
#else
.section .rodata,#alloc
#endif
.align 8
.type two_to_32,@object
.size two_to_32,8
two_to_32:
.double 0r4294967296
.type two_to_31,@object
.size two_to_31,8
two_to_31:
.double 0r2147483648
.text
ENTRY(__udiv_qrnnd)
!#PROLOGUE# 0
save %sp,-104,%sp
!#PROLOGUE# 1
st %i1,[%fp-8]
ld [%fp-8],%f10
#ifdef PIC
LOC(base):
call 1f
fitod %f10,%f4
1: ldd [%o7-(LOC(base)-two_to_32)],%f8
#else
sethi %hi(two_to_32),%o7
fitod %f10,%f4
ldd [%o7+%lo(two_to_32)],%f8
#endif
cmp %i1,0
bge LOC(248)
mov %i0,%i5
faddd %f4,%f8,%f4
LOC(248):
st %i2,[%fp-8]
ld [%fp-8],%f10
fmuld %f4,%f8,%f6
cmp %i2,0
bge LOC(249)
fitod %f10,%f2
faddd %f2,%f8,%f2
LOC(249):
st %i3,[%fp-8]
faddd %f6,%f2,%f2
ld [%fp-8],%f10
cmp %i3,0
bge LOC(250)
fitod %f10,%f4
faddd %f4,%f8,%f4
LOC(250):
fdivd %f2,%f4,%f2
#ifdef PIC
ldd [%o7-(LOC(base)-two_to_31)],%f4
#else
sethi %hi(two_to_31),%o7
ldd [%o7+%lo(two_to_31)],%f4
#endif
fcmped %f2,%f4
nop
fbge,a LOC(251)
fsubd %f2,%f4,%f2
fdtoi %f2,%f2
st %f2,[%fp-8]
b LOC(252)
ld [%fp-8],%i4
LOC(251):
fdtoi %f2,%f2
st %f2,[%fp-8]
ld [%fp-8],%i4
sethi %hi(-2147483648),%g2
xor %i4,%g2,%i4
LOC(252):
wr %g0,%i4,%y
sra %i3,31,%g2
and %i4,%g2,%g2
andcc %g0,0,%g1
mulscc %g1,%i3,%g1
mulscc %g1,%i3,%g1
mulscc %g1,%i3,%g1
mulscc %g1,%i3,%g1
mulscc %g1,%i3,%g1
mulscc %g1,%i3,%g1
mulscc %g1,%i3,%g1
mulscc %g1,%i3,%g1
mulscc %g1,%i3,%g1
mulscc %g1,%i3,%g1
mulscc %g1,%i3,%g1
mulscc %g1,%i3,%g1
mulscc %g1,%i3,%g1
mulscc %g1,%i3,%g1
mulscc %g1,%i3,%g1
mulscc %g1,%i3,%g1
mulscc %g1,%i3,%g1
mulscc %g1,%i3,%g1
mulscc %g1,%i3,%g1
mulscc %g1,%i3,%g1
mulscc %g1,%i3,%g1
mulscc %g1,%i3,%g1
mulscc %g1,%i3,%g1
mulscc %g1,%i3,%g1
mulscc %g1,%i3,%g1
mulscc %g1,%i3,%g1
mulscc %g1,%i3,%g1
mulscc %g1,%i3,%g1
mulscc %g1,%i3,%g1
mulscc %g1,%i3,%g1
mulscc %g1,%i3,%g1
mulscc %g1,%i3,%g1
mulscc %g1,0,%g1
add %g1,%g2,%i0
rd %y,%g3
subcc %i2,%g3,%o7
subxcc %i1,%i0,%g0
be LOC(253)
cmp %o7,%i3
add %i4,-1,%i0
add %o7,%i3,%o7
st %o7,[%i5]
ret
restore
LOC(253):
blu LOC(246)
mov %i4,%i0
add %i4,1,%i0
sub %o7,%i3,%o7
LOC(246):
st %o7,[%i5]
ret
restore
END(__udiv_qrnnd)

View File

@ -1,6 +1,7 @@
wordsize-64 wordsize-64
# SPARC uses IEEE 754 floating point. # SPARC uses IEEE 754 floating point.
ieee754/ldbl-128 ieee754/ldbl-128
ieee754/dbl-64/wordsize-64
ieee754/dbl-64 ieee754/dbl-64
ieee754/flt-32 ieee754/flt-32
sparc/sparc64/soft-fp sparc/sparc64/soft-fp