[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commits] r22193 - in /fsf/trunk/libc: ./ math/ nptl/ sysdeps/sparc/sparc32/sparcv9/ sysdeps/sparc/sparc32/sparcv9/fpu/unix/ sysdeps/s...
- To: commits@xxxxxxxxxx
- Subject: [Commits] r22193 - in /fsf/trunk/libc: ./ math/ nptl/ sysdeps/sparc/sparc32/sparcv9/ sysdeps/sparc/sparc32/sparcv9/fpu/unix/ sysdeps/s...
- From: eglibc@xxxxxxxxxx
- Date: Sun, 13 Jan 2013 00:02:05 -0000
Author: eglibc
Date: Sun Jan 13 00:02:04 2013
New Revision: 22193
Log:
Import glibc-mainline for 2013-01-13
Added:
fsf/trunk/libc/sysdeps/sparc/sparc64/multiarch/add_n-vis3.S
fsf/trunk/libc/sysdeps/sparc/sparc64/multiarch/add_n.S
fsf/trunk/libc/sysdeps/sparc/sparc64/multiarch/addmul_1-vis3.S
fsf/trunk/libc/sysdeps/sparc/sparc64/multiarch/addmul_1.S
fsf/trunk/libc/sysdeps/sparc/sparc64/multiarch/mul_1-vis3.S
fsf/trunk/libc/sysdeps/sparc/sparc64/multiarch/mul_1.S
fsf/trunk/libc/sysdeps/sparc/sparc64/multiarch/sub_n-vis3.S
fsf/trunk/libc/sysdeps/sparc/sparc64/multiarch/sub_n.S
fsf/trunk/libc/sysdeps/sparc/sparc64/multiarch/submul_1-vis3.S
fsf/trunk/libc/sysdeps/sparc/sparc64/multiarch/submul_1.S
fsf/trunk/libc/sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/fpu/multiarch/
fsf/trunk/libc/sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/fpu/multiarch/Implies
Removed:
fsf/trunk/libc/sysdeps/sparc/sparc32/sparcv9/fpu/unix/
Modified:
fsf/trunk/libc/ChangeLog
fsf/trunk/libc/configure
fsf/trunk/libc/configure.in
fsf/trunk/libc/math/Makefile
fsf/trunk/libc/nptl/ChangeLog
fsf/trunk/libc/nptl/allocatestack.c
fsf/trunk/libc/sysdeps/sparc/sparc32/sparcv9/addmul_1.S
fsf/trunk/libc/sysdeps/sparc/sparc32/sparcv9/mul_1.S
fsf/trunk/libc/sysdeps/sparc/sparc32/sparcv9/submul_1.S
fsf/trunk/libc/sysdeps/sparc/sparc64/multiarch/Makefile
Modified: fsf/trunk/libc/ChangeLog
==============================================================================
--- fsf/trunk/libc/ChangeLog (original)
+++ fsf/trunk/libc/ChangeLog Sun Jan 13 00:02:04 2013
@@ -1,3 +1,35 @@
+2013-01-11 David S. Miller <davem@xxxxxxxxxxxxx>
+
+ * math/Makefile: Recognize gmp-sysdep_routines.
+ * sysdeps/sparc/sparc64/multiarch/Makefile: Add VIS3 optimized GMP routines
+ to sysdeps.
+ * sysdeps/sparc/sparc64/multiarch/add_n-vis3.S: New file.
+ * sysdeps/sparc/sparc64/multiarch/add_n.S: New file.
+ * sysdeps/sparc/sparc64/multiarch/addmul_1-vis3.S: New file.
+ * sysdeps/sparc/sparc64/multiarch/addmul_1.S: New file.
+ * sysdeps/sparc/sparc64/multiarch/mul_1-vis3.S: New file.
+ * sysdeps/sparc/sparc64/multiarch/mul_1.S: New file.
+ * sysdeps/sparc/sparc64/multiarch/sub_n-vis3.S: New file.
+ * sysdeps/sparc/sparc64/multiarch/sub_n.S: New file.
+ * sysdeps/sparc/sparc64/multiarch/submul_1-vis3.S: New file.
+ * sysdeps/sparc/sparc64/multiarch/submul_1.S: New file.
+
+ * sysdeps/sparc/sparc32/sparcv9/mul_1.S: Properly optimize for 32-bit
+ sparc V9 rather than using V8 code.
+ * sysdeps/sparc/sparc32/sparcv9/addmul_1.S: Likewise.
+ * sysdeps/sparc/sparc32/sparcv9/submul_1.S: Likewise.
+
+ * sysdeps/sparc/sparc32/sparcv9/fpu/unix/sysv/linux/multiarch/Implies:
+ Move to...
+ * sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/fpu/multiarch/Implies:
+ Here.
+
+2013-01-11 Roland McGrath <roland@xxxxxxxxxxxxx>
+
+ * configure.in (sysnames): Use $multi_arch_d in setting up $mach list,
+ not in the main loop.
+ * configure: Regenerated.
+
2013-01-11 Joseph Myers <joseph@xxxxxxxxxxxxxxxx>
* include/features.h (__GLIBC_HAVE_LONG_LONG): Remove.
Modified: fsf/trunk/libc/configure
==============================================================================
--- fsf/trunk/libc/configure (original)
+++ fsf/trunk/libc/configure Sun Jan 13 00:02:04 2013
@@ -4295,6 +4295,7 @@
multi_arch=no
fi
fi
+multi_arch_d=
if test x"$multi_arch" != xno; then
multi_arch_d=/multiarch
fi
@@ -4347,11 +4348,16 @@
set $m
# Prepend the machine's FPU directory unless --without-fp.
if test "$with_fp" = yes; then
- mach="$mach /$1/fpu"
+ maybe_fpu=/fpu
else
- mach="$mach /$1/nofpu"
- fi
- mach="$mach /$1"
+ maybe_fpu=/nofpu
+ fi
+ # For each machine term, try it with and then without /multiarch.
+ for try_fpu in $maybe_fpu ''; do
+ for try_multi in $multi_arch_d ''; do
+ mach="$mach /$1$try_fpu$try_multi"
+ done
+ done
tail="$2"
done
@@ -4365,7 +4371,7 @@
test "$v" = / && continue
for o in /$ostry ''; do
test "$o" = / && continue
- for m in $multi_arch_d $mach ''; do
+ for m in $mach ''; do
for d in $add_ons_pfx ''; do
for a in $add_ons_sfx ''; do
try_suffix="$m0$b$v$o$m"
Modified: fsf/trunk/libc/configure.in
==============================================================================
--- fsf/trunk/libc/configure.in (original)
+++ fsf/trunk/libc/configure.in Sun Jan 13 00:02:04 2013
@@ -633,6 +633,7 @@
multi_arch=no
fi
fi
+multi_arch_d=
if test x"$multi_arch" != xno; then
multi_arch_d=/multiarch
fi
@@ -686,11 +687,16 @@
set $m
# Prepend the machine's FPU directory unless --without-fp.
if test "$with_fp" = yes; then
- mach="$mach /$1/fpu"
+ maybe_fpu=/fpu
else
- mach="$mach /$1/nofpu"
- fi
- mach="$mach /$1"
+ maybe_fpu=/nofpu
+ fi
+ # For each machine term, try it with and then without /multiarch.
+ for try_fpu in $maybe_fpu ''; do
+ for try_multi in $multi_arch_d ''; do
+ mach="$mach /$1$try_fpu$try_multi"
+ done
+ done
tail="$2"
done
@@ -706,7 +712,7 @@
test "$v" = / && continue
for o in /$ostry ''; do
test "$o" = / && continue
- for m in $multi_arch_d $mach ''; do
+ for m in $mach ''; do
for d in $add_ons_pfx ''; do
for a in $add_ons_sfx ''; do
try_suffix="$m0$b$v$o$m"
Modified: fsf/trunk/libc/math/Makefile
==============================================================================
--- fsf/trunk/libc/math/Makefile (original)
+++ fsf/trunk/libc/math/Makefile Sun Jan 13 00:02:04 2013
@@ -199,7 +199,8 @@
gmp-objs = $(patsubst %,$(common-objpfx)stdlib/%.o,\
add_n sub_n cmp addmul_1 mul_1 mul_n divmod_1 \
- lshift rshift mp_clz_tab udiv_qrnnd inlines)
+ lshift rshift mp_clz_tab udiv_qrnnd inlines \
+ $(gmp-sysdep_routines))
$(objpfx)atest-exp: $(gmp-objs)
$(objpfx)atest-sincos: $(gmp-objs)
$(objpfx)atest-exp2: $(gmp-objs)
Modified: fsf/trunk/libc/nptl/ChangeLog
==============================================================================
--- fsf/trunk/libc/nptl/ChangeLog (original)
+++ fsf/trunk/libc/nptl/ChangeLog Sun Jan 13 00:02:04 2013
@@ -1,3 +1,8 @@
+2013-01-11 Carlos O'Donell <codonell@xxxxxxxxxx>
+
+ * allocatestack.c (allocate_stack): Add comment. Remove assert
+ on attr.
+
2013-01-11 H.J. Lu <hongjiu.lu@xxxxxxxxx>
* Makefile (tst-cancel7-ARGS: Replace $(host-built-program-cmd)
Modified: fsf/trunk/libc/nptl/allocatestack.c
==============================================================================
--- fsf/trunk/libc/nptl/allocatestack.c (original)
+++ fsf/trunk/libc/nptl/allocatestack.c Sun Jan 13 00:02:04 2013
@@ -340,6 +340,10 @@
}
+/* Returns a usable stack for a new thread either by allocating a
+ new stack or reusing a cached stack of sufficient size.
+ ATTR must be non-NULL and point to a valid pthread_attr.
+ PDP must be non-NULL. */
static int
allocate_stack (const struct pthread_attr *attr, struct pthread **pdp,
ALLOCATE_STACK_PARMS)
@@ -349,7 +353,6 @@
size_t pagesize_m1 = __getpagesize () - 1;
void *stacktop;
- assert (attr != NULL);
assert (powerof2 (pagesize_m1 + 1));
assert (TCB_ALIGNMENT >= STACK_ALIGN);
Modified: fsf/trunk/libc/sysdeps/sparc/sparc32/sparcv9/addmul_1.S
==============================================================================
--- fsf/trunk/libc/sysdeps/sparc/sparc32/sparcv9/addmul_1.S (original)
+++ fsf/trunk/libc/sysdeps/sparc/sparc32/sparcv9/addmul_1.S Sun Jan 13 00:02:04 2013
@@ -1,1 +1,81 @@
-#include <sparcv8/addmul_1.S>
+! SPARC v9 32-bit __mpn_addmul_1 -- Multiply a limb vector with a limb
+! and add the result to a second limb vector.
+!
+! Copyright (C) 2013 Free Software Foundation, Inc.
+! This file is part of the GNU C Library.
+! Contributed by David S. Miller <davem@xxxxxxxxxxxxx>
+!
+! The GNU C 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 C 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 C Library; if not, see
+! <http://www.gnu.org/licenses/>.
+
+#include <sysdep.h>
+
+#define res_ptr %i0
+#define s1_ptr %i1
+#define sz_arg %i2
+#define s2l_arg %i3
+#define sz %o4
+#define carry %o5
+#define s2_limb %g1
+#define tmp1 %l0
+#define tmp2 %l1
+#define tmp3 %l2
+#define tmp4 %l3
+#define tmp64_1 %g3
+#define tmp64_2 %o3
+
+ENTRY(__mpn_addmul_1)
+ save %sp, -96, %sp
+ srl sz_arg, 0, sz
+ srl s2l_arg, 0, s2_limb
+ subcc sz, 1, sz
+ be,pn %icc, .Lfinal_limb
+ clr carry
+
+.Lloop:
+ lduw [s1_ptr + 0x00], tmp1
+ lduw [res_ptr + 0x00], tmp3
+ lduw [s1_ptr + 0x04], tmp2
+ lduw [res_ptr + 0x04], tmp4
+ mulx tmp1, s2_limb, tmp64_1
+ add s1_ptr, 8, s1_ptr
+ mulx tmp2, s2_limb, tmp64_2
+ sub sz, 2, sz
+ add res_ptr, 8, res_ptr
+ add tmp3, tmp64_1, tmp64_1
+ add carry, tmp64_1, tmp64_1
+ stw tmp64_1, [res_ptr - 0x08]
+ srlx tmp64_1, 32, carry
+ add tmp4, tmp64_2, tmp64_2
+ add carry, tmp64_2, tmp64_2
+ stw tmp64_2, [res_ptr - 0x04]
+ brgz sz, .Lloop
+ srlx tmp64_2, 32, carry
+
+ brlz,pt sz, .Lfinish
+ nop
+
+.Lfinal_limb:
+ lduw [s1_ptr + 0x00], tmp1
+ lduw [res_ptr + 0x00], tmp3
+ mulx tmp1, s2_limb, tmp64_1
+ add tmp3, tmp64_1, tmp64_1
+ add carry, tmp64_1, tmp64_1
+ stw tmp64_1, [res_ptr + 0x00]
+ srlx tmp64_1, 32, carry
+
+.Lfinish:
+ jmpl %i7 + 0x8, %g0
+ restore carry, 0, %o0
+END(__mpn_addmul_1)
Modified: fsf/trunk/libc/sysdeps/sparc/sparc32/sparcv9/mul_1.S
==============================================================================
--- fsf/trunk/libc/sysdeps/sparc/sparc32/sparcv9/mul_1.S (original)
+++ fsf/trunk/libc/sysdeps/sparc/sparc32/sparcv9/mul_1.S Sun Jan 13 00:02:04 2013
@@ -1,1 +1,70 @@
-#include <sparcv8/mul_1.S>
+! SPARC v9 32-bit __mpn_mul_1 -- Multiply a limb vector with a single
+! limb and store the product in a second limb vector.
+!
+! Copyright (C) 2013 Free Software Foundation, Inc.
+! This file is part of the GNU C Library.
+! Contributed by David S. Miller <davem@xxxxxxxxxxxxx>
+!
+! The GNU C 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 C 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 C Library; if not, see
+! <http://www.gnu.org/licenses/>.
+
+#include <sysdep.h>
+
+#define res_ptr %o0
+#define s1_ptr %o1
+#define sz %o2
+#define s2_limb %o3
+#define carry %o5
+#define tmp1 %g1
+#define tmp2 %g2
+#define tmp3 %g3
+#define tmp4 %o4
+
+ENTRY(__mpn_mul_1)
+ srl sz, 0, sz
+ srl s2_limb, 0, s2_limb
+ subcc sz, 1, sz
+ be,pn %icc, .Lfinal_limb
+ clr carry
+
+.Lloop:
+ lduw [s1_ptr + 0x00], tmp1
+ lduw [s1_ptr + 0x04], tmp2
+ mulx tmp1, s2_limb, tmp3
+ add s1_ptr, 8, s1_ptr
+ mulx tmp2, s2_limb, tmp4
+ sub sz, 2, sz
+ add res_ptr, 8, res_ptr
+ add carry, tmp3, tmp3
+ stw tmp3, [res_ptr - 0x08]
+ srlx tmp3, 32, carry
+ add carry, tmp4, tmp4
+ stw tmp4, [res_ptr - 0x04]
+ brgz sz, .Lloop
+ srlx tmp4, 32, carry
+
+ brlz,pt sz, .Lfinish
+ nop
+
+.Lfinal_limb:
+ lduw [s1_ptr + 0x00], tmp1
+ mulx tmp1, s2_limb, tmp3
+ add carry, tmp3, tmp3
+ stw tmp3, [res_ptr + 0x00]
+ srlx tmp3, 32, carry
+
+.Lfinish:
+ retl
+ mov carry, %o0
+END(__mpn_mul_1)
Modified: fsf/trunk/libc/sysdeps/sparc/sparc32/sparcv9/submul_1.S
==============================================================================
--- fsf/trunk/libc/sysdeps/sparc/sparc32/sparcv9/submul_1.S (original)
+++ fsf/trunk/libc/sysdeps/sparc/sparc32/sparcv9/submul_1.S Sun Jan 13 00:02:04 2013
@@ -1,1 +1,82 @@
-#include <sparcv8/submul_1.S>
+! SPARC v9 32-bit __mpn_submul_1 -- Multiply a limb vector with a limb
+! and subtract the result from a second limb vector.
+!
+! Copyright (C) 2013 Free Software Foundation, Inc.
+! This file is part of the GNU C Library.
+! Contributed by David S. Miller <davem@xxxxxxxxxxxxx>
+!
+! The GNU C 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 C 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 C Library; if not, see
+! <http://www.gnu.org/licenses/>.
+
+#include <sysdep.h>
+
+#define res_ptr %i0
+#define s1_ptr %i1
+#define sz_arg %i2
+#define s2l_arg %i3
+#define sz %o4
+#define carry %o5
+#define s2_limb %g1
+#define tmp1 %l0
+#define tmp2 %l1
+#define tmp3 %l2
+#define tmp4 %l3
+#define tmp64_1 %g3
+#define tmp64_2 %o3
+
+ENTRY(__mpn_submul_1)
+ save %sp, -96, %sp
+ srl sz_arg, 0, sz
+ srl s2l_arg, 0, s2_limb
+ subcc sz, 1, sz
+ be,pn %icc, .Lfinal_limb
+ subcc %g0, 0, carry
+
+.Lloop:
+ lduw [s1_ptr + 0x00], tmp1
+ lduw [res_ptr + 0x00], tmp3
+ lduw [s1_ptr + 0x04], tmp2
+ lduw [res_ptr + 0x04], tmp4
+ mulx tmp1, s2_limb, tmp64_1
+ add s1_ptr, 8, s1_ptr
+ mulx tmp2, s2_limb, tmp64_2
+ sub sz, 2, sz
+ add res_ptr, 8, res_ptr
+ addx carry, tmp64_1, tmp64_1
+ srlx tmp64_1, 32, carry
+ subcc tmp3, tmp64_1, tmp64_1
+ stw tmp64_1, [res_ptr - 0x08]
+ addx carry, tmp64_2, tmp64_2
+ srlx tmp64_2, 32, carry
+ subcc tmp4, tmp64_2, tmp64_2
+ brgz sz, .Lloop
+ stw tmp64_2, [res_ptr - 0x04]
+
+ brlz,pt sz, .Lfinish
+ nop
+
+.Lfinal_limb:
+ lduw [s1_ptr + 0x00], tmp1
+ lduw [res_ptr + 0x00], tmp3
+ mulx tmp1, s2_limb, tmp64_1
+ addx carry, tmp64_1, tmp64_1
+ srlx tmp64_1, 32, carry
+ subcc tmp3, tmp64_1, tmp64_1
+ stw tmp64_1, [res_ptr + 0x00]
+
+.Lfinish:
+ addx carry, 0, carry
+ jmpl %i7 + 0x8, %g0
+ restore carry, 0, %o0
+END(__mpn_submul_1)
Modified: fsf/trunk/libc/sysdeps/sparc/sparc64/multiarch/Makefile
==============================================================================
--- fsf/trunk/libc/sysdeps/sparc/sparc64/multiarch/Makefile (original)
+++ fsf/trunk/libc/sysdeps/sparc/sparc64/multiarch/Makefile Sun Jan 13 00:02:04 2013
@@ -10,3 +10,11 @@
sysdep_routines += memcpy-ultra3 memcpy-niagara1 memcpy-niagara2 \
memset-niagara1 memcpy-niagara4 memset-niagara4
endif
+
+ifeq ($(subdir),stdlib)
+sysdep_routines += mul_1-vis3 addmul_1-vis3 submul_1-vis3 add_n-vis3 sub_n-vis3
+endif
+
+ifeq ($(subdir),math)
+gmp-sysdep_routines = mul_1-vis3 addmul_1-vis3 submul_1-vis3 add_n-vis3 sub_n-vis3
+endif
Added: fsf/trunk/libc/sysdeps/sparc/sparc64/multiarch/add_n-vis3.S
==============================================================================
--- fsf/trunk/libc/sysdeps/sparc/sparc64/multiarch/add_n-vis3.S (added)
+++ fsf/trunk/libc/sysdeps/sparc/sparc64/multiarch/add_n-vis3.S Sun Jan 13 00:02:04 2013
@@ -1,0 +1,67 @@
+! SPARC v9 64-bit VIS3 __mpn_add_n -- Add two limb vectors of the same length > 0 and
+! store sum in a third limb vector.
+!
+! Copyright (C) 2013 Free Software Foundation, Inc.
+! This file is part of the GNU C Library.
+! Contributed by David S. Miller <davem@xxxxxxxxxxxxx>
+!
+! The GNU C 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 C 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 C Library; if not, see
+! <http://www.gnu.org/licenses/>.
+
+#include <sysdep.h>
+
+#define res_ptr %o0
+#define s1_ptr %o1
+#define s2_ptr %o2
+#define sz %o3
+#define tmp1 %g1
+#define tmp2 %g2
+#define tmp3 %g3
+#define tmp4 %o4
+
+ .register %g2,#scratch
+ .register %g3,#scratch
+ENTRY(__mpn_add_n_vis3)
+ subcc sz, 1, sz
+ be .Lfinal_limb
+ cmp %g0, 0
+
+.Lloop:
+ ldx [s2_ptr + 0x00], tmp1
+ add s2_ptr, 0x10, s2_ptr
+ ldx [s1_ptr + 0x00], tmp2
+ add s1_ptr, 0x10, s1_ptr
+ ldx [s2_ptr - 0x08], tmp3
+ add res_ptr, 0x10, res_ptr
+ ldx [s1_ptr - 0x08], tmp4
+ sub sz, 2, sz
+ addxccc tmp1, tmp2, tmp1
+ stx tmp1, [res_ptr - 0x10]
+ addxccc tmp3, tmp4, tmp3
+ brgz sz, .Lloop
+ stx tmp3, [res_ptr - 0x08]
+
+ brlz,pt sz, .Lfinish
+ nop
+
+.Lfinal_limb:
+ ldx [s2_ptr + 0x00], tmp1
+ ldx [s1_ptr + 0x00], tmp2
+ addxccc tmp1, tmp2, tmp1
+ stx tmp1, [res_ptr + 0x00]
+
+.Lfinish:
+ retl
+ addxc %g0, %g0, %o0
+END(__mpn_add_n_vis3)
Added: fsf/trunk/libc/sysdeps/sparc/sparc64/multiarch/add_n.S
==============================================================================
--- fsf/trunk/libc/sysdeps/sparc/sparc64/multiarch/add_n.S (added)
+++ fsf/trunk/libc/sysdeps/sparc/sparc64/multiarch/add_n.S Sun Jan 13 00:02:04 2013
@@ -1,0 +1,56 @@
+/* Multiple versions of add_n
+
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ Contributed by David S. Miller (davem@xxxxxxxxxxxxx)
+ This file is part of the GNU C Library.
+
+ The GNU C 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 C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <sysdep.h>
+
+ENTRY(__mpn_add_n)
+ .type __mpn_add_n, @gnu_indirect_function
+# ifdef SHARED
+ SETUP_PIC_REG_LEAF(o3, o5)
+# endif
+ set HWCAP_SPARC_VIS3, %o1
+ andcc %o0, %o1, %g0
+ be 1f
+ nop
+# ifdef SHARED
+ sethi %gdop_hix22(__mpn_add_n_vis3), %o1
+ xor %o1, %gdop_lox10(__mpn_add_n_vis3), %o1
+# else
+ set __mpn_add_n_vis3, %o1
+# endif
+ ba 10f
+ nop
+1:
+# ifdef SHARED
+ sethi %gdop_hix22(__mpn_add_n_generic), %o1
+ xor %o1, %gdop_lox10(__mpn_add_n_generic), %o1
+# else
+ set __mpn_add_n_vis3, %o1
+# endif
+10:
+# ifdef SHARED
+ add %o3, %o1, %o1
+# endif
+ retl
+ mov %o1, %o0
+END(__mpn_add_n)
+
+#define __mpn_add_n __mpn_add_n_generic
+#include "../add_n.S"
Added: fsf/trunk/libc/sysdeps/sparc/sparc64/multiarch/addmul_1-vis3.S
==============================================================================
--- fsf/trunk/libc/sysdeps/sparc/sparc64/multiarch/addmul_1-vis3.S (added)
+++ fsf/trunk/libc/sysdeps/sparc/sparc64/multiarch/addmul_1-vis3.S Sun Jan 13 00:02:04 2013
@@ -1,0 +1,87 @@
+! SPARC v9 64-bit VIS3 __mpn_addmul_1 -- Multiply a limb vector with a
+! limb and add the result to a second limb vector.
+!
+! Copyright (C) 2013 Free Software Foundation, Inc.
+! This file is part of the GNU C Library.
+! Contributed by David S. Miller <davem@xxxxxxxxxxxxx>
+!
+! The GNU C 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 C 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 C Library; if not, see
+! <http://www.gnu.org/licenses/>.
+
+#include <sysdep.h>
+
+#define res_ptr %i0
+#define s1_ptr %i1
+#define sz %i2
+#define s2_limb %i3
+#define carry %o5
+#define tmp1 %g1
+#define tmp2 %g2
+#define tmp3 %g3
+#define tmp4 %o4
+#define tmp5 %l0
+#define tmp6 %l1
+#define tmp7 %l2
+#define tmp8 %l3
+
+ .register %g2,#scratch
+ .register %g3,#scratch
+ENTRY(__mpn_addmul_1_vis3)
+ save %sp, -176, %sp
+ subcc sz, 1, sz
+ be .Lfinal_limb
+ clr carry
+
+.Lloop:
+ ldx [s1_ptr + 0x00], tmp1
+ ldx [res_ptr + 0x00], tmp3
+ ldx [s1_ptr + 0x08], tmp2
+ ldx [res_ptr + 0x08], tmp4
+ mulx tmp1, s2_limb, tmp5
+ add s1_ptr, 0x10, s1_ptr
+ umulxhi tmp1, s2_limb, tmp6
+ add res_ptr, 0x10, res_ptr
+ mulx tmp2, s2_limb, tmp7
+ sub sz, 2, sz
+ umulxhi tmp2, s2_limb, tmp8
+ addcc carry, tmp5, tmp5
+ addxc %g0, tmp6, carry
+ addcc tmp3, tmp5, tmp5
+ addxc %g0, carry, carry
+ stx tmp5, [res_ptr - 0x10]
+ addcc carry, tmp7, tmp7
+ addxc %g0, tmp8, carry
+ addcc tmp4, tmp7, tmp7
+ addxc %g0, carry, carry
+ brgz sz, .Lloop
+ stx tmp7, [res_ptr - 0x08]
+
+ brlz,pt sz, .Lfinish
+ nop
+
+.Lfinal_limb:
+ ldx [s1_ptr + 0x00], tmp1
+ ldx [res_ptr + 0x00], tmp3
+ mulx tmp1, s2_limb, tmp5
+ umulxhi tmp1, s2_limb, tmp6
+ addcc carry, tmp5, tmp5
+ addxc %g0, tmp6, carry
+ addcc tmp3, tmp5, tmp5
+ addxc %g0, carry, carry
+ stx tmp5, [res_ptr + 0x00]
+
+.Lfinish:
+ jmpl %i7 + 8, %g0
+ restore carry, 0, %o0
+END(__mpn_addmul_1_vis3)
Added: fsf/trunk/libc/sysdeps/sparc/sparc64/multiarch/addmul_1.S
==============================================================================
--- fsf/trunk/libc/sysdeps/sparc/sparc64/multiarch/addmul_1.S (added)
+++ fsf/trunk/libc/sysdeps/sparc/sparc64/multiarch/addmul_1.S Sun Jan 13 00:02:04 2013
@@ -1,0 +1,56 @@
+/* Multiple versions of addmul_1
+
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ Contributed by David S. Miller (davem@xxxxxxxxxxxxx)
+ This file is part of the GNU C Library.
+
+ The GNU C 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 C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <sysdep.h>
+
+ENTRY(__mpn_addmul_1)
+ .type __mpn_addmul_1, @gnu_indirect_function
+# ifdef SHARED
+ SETUP_PIC_REG_LEAF(o3, o5)
+# endif
+ set HWCAP_SPARC_VIS3, %o1
+ andcc %o0, %o1, %g0
+ be 1f
+ nop
+# ifdef SHARED
+ sethi %gdop_hix22(__mpn_addmul_1_vis3), %o1
+ xor %o1, %gdop_lox10(__mpn_addmul_1_vis3), %o1
+# else
+ set __mpn_addmul_1_vis3, %o1
+# endif
+ ba 10f
+ nop
+1:
+# ifdef SHARED
+ sethi %gdop_hix22(__mpn_addmul_1_generic), %o1
+ xor %o1, %gdop_lox10(__mpn_addmul_1_generic), %o1
+# else
+ set __mpn_addmul_1_vis3, %o1
+# endif
+10:
+# ifdef SHARED
+ add %o3, %o1, %o1
+# endif
+ retl
+ mov %o1, %o0
+END(__mpn_addmul_1)
+
+#define __mpn_addmul_1 __mpn_addmul_1_generic
+#include "../addmul_1.S"
Added: fsf/trunk/libc/sysdeps/sparc/sparc64/multiarch/mul_1-vis3.S
==============================================================================
--- fsf/trunk/libc/sysdeps/sparc/sparc64/multiarch/mul_1-vis3.S (added)
+++ fsf/trunk/libc/sysdeps/sparc/sparc64/multiarch/mul_1-vis3.S Sun Jan 13 00:02:04 2013
@@ -1,0 +1,73 @@
+! SPARC v9 64-bit VIS3 __mpn_mul_1 -- Multiply a limb vector with a single
+! limb and store the product in a second limb vector.
+!
+! Copyright (C) 2013 Free Software Foundation, Inc.
+! This file is part of the GNU C Library.
+! Contributed by David S. Miller <davem@xxxxxxxxxxxxx>
+!
+! The GNU C 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 C 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 C Library; if not, see
+! <http://www.gnu.org/licenses/>.
+
+#include <sysdep.h>
+
+#define res_ptr %o0
+#define s1_ptr %o1
+#define sz %o2
+#define s2_limb %o3
+#define carry %o5
+#define tmp1 %g1
+#define tmp2 %g2
+#define tmp3 %g3
+#define tmp4 %o4
+
+ .register %g2,#scratch
+ .register %g3,#scratch
+ENTRY(__mpn_mul_1_vis3)
+ subcc sz, 1, sz
+ be .Lfinal_limb
+ clr carry
+
+.Lloop:
+ ldx [s1_ptr + 0x00], tmp1
+ ldx [s1_ptr + 0x08], tmp4
+ mulx tmp1, s2_limb, tmp3
+ add s1_ptr, 0x10, s1_ptr
+ umulxhi tmp1, s2_limb, tmp2
+ sub sz, 2, sz
+ mulx tmp4, s2_limb, tmp1
+ add res_ptr, 0x10, res_ptr
+ umulxhi tmp4, s2_limb, tmp4
+ addcc carry, tmp3, tmp3
+ stx tmp3, [res_ptr - 0x10]
+ addxc %g0, tmp2, carry
+ addcc carry, tmp1, tmp1
+ addxc %g0, tmp4, carry
+ brgz sz, .Lloop
+ stx tmp1, [res_ptr - 0x08]
+
+ brlz,pt sz, .Lfinish
+ nop
+
+.Lfinal_limb:
+ ldx [s1_ptr + 0x00], tmp1
+ mulx tmp1, s2_limb, tmp3
+ umulxhi tmp1, s2_limb, tmp2
+ addcc carry, tmp3, tmp3
+ addxc %g0, tmp2, carry
+ stx tmp3, [res_ptr + 0x00]
+
+.Lfinish:
+ retl
+ mov carry, %o0
+END(__mpn_mul_1_vis3)
Added: fsf/trunk/libc/sysdeps/sparc/sparc64/multiarch/mul_1.S
==============================================================================
--- fsf/trunk/libc/sysdeps/sparc/sparc64/multiarch/mul_1.S (added)
+++ fsf/trunk/libc/sysdeps/sparc/sparc64/multiarch/mul_1.S Sun Jan 13 00:02:04 2013
@@ -1,0 +1,56 @@
+/* Multiple versions of mul_1
+
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ Contributed by David S. Miller (davem@xxxxxxxxxxxxx)
+ This file is part of the GNU C Library.
+
+ The GNU C 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 C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <sysdep.h>
+
+ENTRY(__mpn_mul_1)
+ .type __mpn_mul_1, @gnu_indirect_function
+# ifdef SHARED
+ SETUP_PIC_REG_LEAF(o3, o5)
+# endif
+ set HWCAP_SPARC_VIS3, %o1
+ andcc %o0, %o1, %g0
+ be 1f
+ nop
+# ifdef SHARED
+ sethi %gdop_hix22(__mpn_mul_1_vis3), %o1
+ xor %o1, %gdop_lox10(__mpn_mul_1_vis3), %o1
+# else
+ set __mpn_mul_1_vis3, %o1
+# endif
+ ba 10f
+ nop
+1:
+# ifdef SHARED
+ sethi %gdop_hix22(__mpn_mul_1_generic), %o1
+ xor %o1, %gdop_lox10(__mpn_mul_1_generic), %o1
+# else
+ set __mpn_mul_1_vis3, %o1
+# endif
+10:
+# ifdef SHARED
+ add %o3, %o1, %o1
+# endif
+ retl
+ mov %o1, %o0
+END(__mpn_mul_1)
+
+#define __mpn_mul_1 __mpn_mul_1_generic
+#include "../mul_1.S"
Added: fsf/trunk/libc/sysdeps/sparc/sparc64/multiarch/sub_n-vis3.S
==============================================================================
--- fsf/trunk/libc/sysdeps/sparc/sparc64/multiarch/sub_n-vis3.S (added)
+++ fsf/trunk/libc/sysdeps/sparc/sparc64/multiarch/sub_n-vis3.S Sun Jan 13 00:02:04 2013
@@ -1,0 +1,71 @@
+! SPARC v9 64-bit VIS3 __mpn_sub_n -- Subtract two limb vectors of the same length > 0
+! and store difference in a third limb vector.
+!
+! Copyright (C) 2013 Free Software Foundation, Inc.
+! This file is part of the GNU C Library.
+! Contributed by David S. Miller <davem@xxxxxxxxxxxxx>
+!
+! The GNU C 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 C 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 C Library; if not, see
+! <http://www.gnu.org/licenses/>.
+
+#include <sysdep.h>
+
+#define res_ptr %o0
+#define s1_ptr %o1
+#define s2_ptr %o2
+#define sz %o3
+#define tmp1 %g1
+#define tmp2 %g2
+#define tmp3 %g3
+#define tmp4 %o4
+
+ .register %g2,#scratch
+ .register %g3,#scratch
+ENTRY(__mpn_sub_n_vis3)
+ subcc sz, 1, sz
+ be .Lfinal_limb
+ cmp %g0, 1
+
+.Lloop:
+ ldx [s2_ptr + 0x00], tmp1
+ add s2_ptr, 0x10, s2_ptr
+ ldx [s1_ptr + 0x00], tmp2
+ add s1_ptr, 0x10, s1_ptr
+ ldx [s2_ptr - 0x08], tmp3
+ add res_ptr, 0x10, res_ptr
+ ldx [s1_ptr - 0x08], tmp4
+ sub sz, 2, sz
+ xnor tmp1, %g0, tmp1
+ addxccc tmp1, tmp2, tmp1
+ stx tmp1, [res_ptr - 0x10]
+ xnor tmp3, %g0, tmp3
+ addxccc tmp3, tmp4, tmp3
+ brgz sz, .Lloop
+ stx tmp3, [res_ptr - 0x08]
+
+ brlz,pt sz, .Lfinish
+ nop
+
+.Lfinal_limb:
+ ldx [s2_ptr + 0x00], tmp1
+ ldx [s1_ptr + 0x00], tmp2
+ xnor tmp1, %g0, tmp1
+ addxccc tmp1, tmp2, tmp1
+ stx tmp1, [res_ptr + 0x00]
+
+.Lfinish:
+ clr %o0
+ retl
+ movcc %xcc, 1, %o0
+END(__mpn_sub_n_vis3)
Added: fsf/trunk/libc/sysdeps/sparc/sparc64/multiarch/sub_n.S
==============================================================================
--- fsf/trunk/libc/sysdeps/sparc/sparc64/multiarch/sub_n.S (added)
+++ fsf/trunk/libc/sysdeps/sparc/sparc64/multiarch/sub_n.S Sun Jan 13 00:02:04 2013
@@ -1,0 +1,56 @@
+/* Multiple versions of sub_n
+
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ Contributed by David S. Miller (davem@xxxxxxxxxxxxx)
+ This file is part of the GNU C Library.
+
+ The GNU C 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 C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <sysdep.h>
+
+ENTRY(__mpn_sub_n)
+ .type __mpn_sub_n, @gnu_indirect_function
+# ifdef SHARED
+ SETUP_PIC_REG_LEAF(o3, o5)
+# endif
+ set HWCAP_SPARC_VIS3, %o1
+ andcc %o0, %o1, %g0
+ be 1f
+ nop
+# ifdef SHARED
+ sethi %gdop_hix22(__mpn_sub_n_vis3), %o1
+ xor %o1, %gdop_lox10(__mpn_sub_n_vis3), %o1
+# else
+ set __mpn_sub_n_vis3, %o1
+# endif
+ ba 10f
+ nop
+1:
+# ifdef SHARED
+ sethi %gdop_hix22(__mpn_sub_n_generic), %o1
+ xor %o1, %gdop_lox10(__mpn_sub_n_generic), %o1
+# else
+ set __mpn_sub_n_vis3, %o1
+# endif
+10:
+# ifdef SHARED
+ add %o3, %o1, %o1
+# endif
+ retl
+ mov %o1, %o0
+END(__mpn_sub_n)
+
+#define __mpn_sub_n __mpn_sub_n_generic
+#include "../sub_n.S"
Added: fsf/trunk/libc/sysdeps/sparc/sparc64/multiarch/submul_1-vis3.S
==============================================================================
--- fsf/trunk/libc/sysdeps/sparc/sparc64/multiarch/submul_1-vis3.S (added)
+++ fsf/trunk/libc/sysdeps/sparc/sparc64/multiarch/submul_1-vis3.S Sun Jan 13 00:02:04 2013
@@ -1,0 +1,87 @@
+! SPARC v9 64-bit VIS3 __mpn_submul_1 -- Multiply a limb vector with a
+! limb and subtract the result from a second limb vector.
+!
+! Copyright (C) 2013 Free Software Foundation, Inc.
+! This file is part of the GNU C Library.
+! Contributed by David S. Miller <davem@xxxxxxxxxxxxx>
+!
+! The GNU C 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 C 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 C Library; if not, see
+! <http://www.gnu.org/licenses/>.
+
+#include <sysdep.h>
+
+#define res_ptr %i0
+#define s1_ptr %i1
+#define sz %i2
+#define s2_limb %i3
+#define carry %o5
+#define tmp1 %g1
+#define tmp2 %g2
+#define tmp3 %g3
+#define tmp4 %o4
+#define tmp5 %l0
+#define tmp6 %l1
+#define tmp7 %l2
+#define tmp8 %l3
+
+ .register %g2,#scratch
+ .register %g3,#scratch
+ENTRY(__mpn_submul_1_vis3)
+ save %sp, -176, %sp
+ subcc sz, 1, sz
+ be .Lfinal_limb
+ clr carry
+
+.Lloop:
+ ldx [s1_ptr + 0x00], tmp1
+ ldx [res_ptr + 0x00], tmp3
+ ldx [s1_ptr + 0x08], tmp2
+ ldx [res_ptr + 0x08], tmp4
+ mulx tmp1, s2_limb, tmp5
+ add s1_ptr, 0x10, s1_ptr
+ umulxhi tmp1, s2_limb, tmp6
+ add res_ptr, 0x10, res_ptr
+ mulx tmp2, s2_limb, tmp7
+ sub sz, 2, sz
+ umulxhi tmp2, s2_limb, tmp8
+ addcc carry, tmp5, tmp5
+ addxc %g0, tmp6, carry
+ subcc tmp3, tmp5, tmp5
+ addxc %g0, carry, carry
+ stx tmp5, [res_ptr - 0x10]
+ addcc carry, tmp7, tmp7
+ addxc %g0, tmp8, carry
+ subcc tmp4, tmp7, tmp7
+ addxc %g0, carry, carry
+ brgz sz, .Lloop
+ stx tmp7, [res_ptr - 0x08]
+
+ brlz,pt sz, .Lfinish
+ nop
+
+.Lfinal_limb:
+ ldx [s1_ptr + 0x00], tmp1
+ ldx [res_ptr + 0x00], tmp3
+ mulx tmp1, s2_limb, tmp5
+ umulxhi tmp1, s2_limb, tmp6
+ addcc carry, tmp5, tmp5
+ addxc %g0, tmp6, carry
+ subcc tmp3, tmp5, tmp5
+ addxc %g0, carry, carry
+ stx tmp5, [res_ptr + 0x00]
+
+.Lfinish:
+ jmpl %i7 + 8, %g0
+ restore carry, 0, %o0
+END(__mpn_submul_1_vis3)
Added: fsf/trunk/libc/sysdeps/sparc/sparc64/multiarch/submul_1.S
==============================================================================
--- fsf/trunk/libc/sysdeps/sparc/sparc64/multiarch/submul_1.S (added)
+++ fsf/trunk/libc/sysdeps/sparc/sparc64/multiarch/submul_1.S Sun Jan 13 00:02:04 2013
@@ -1,0 +1,56 @@
+/* Multiple versions of submul_1
+
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ Contributed by David S. Miller (davem@xxxxxxxxxxxxx)
+ This file is part of the GNU C Library.
+
+ The GNU C 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 C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <sysdep.h>
+
+ENTRY(__mpn_submul_1)
+ .type __mpn_submul_1, @gnu_indirect_function
+# ifdef SHARED
+ SETUP_PIC_REG_LEAF(o3, o5)
+# endif
+ set HWCAP_SPARC_VIS3, %o1
+ andcc %o0, %o1, %g0
+ be 1f
+ nop
+# ifdef SHARED
+ sethi %gdop_hix22(__mpn_submul_1_vis3), %o1
+ xor %o1, %gdop_lox10(__mpn_submul_1_vis3), %o1
+# else
+ set __mpn_submul_1_vis3, %o1
+# endif
+ ba 10f
+ nop
+1:
+# ifdef SHARED
+ sethi %gdop_hix22(__mpn_submul_1_generic), %o1
+ xor %o1, %gdop_lox10(__mpn_submul_1_generic), %o1
+# else
+ set __mpn_submul_1_vis3, %o1
+# endif
+10:
+# ifdef SHARED
+ add %o3, %o1, %o1
+# endif
+ retl
+ mov %o1, %o0
+END(__mpn_submul_1)
+
+#define __mpn_submul_1 __mpn_submul_1_generic
+#include "../submul_1.S"
Added: fsf/trunk/libc/sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/fpu/multiarch/Implies
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/fpu/multiarch/Implies (added)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/fpu/multiarch/Implies Sun Jan 13 00:02:04 2013
@@ -1,0 +1,4 @@
+# We must list this here to move it ahead of the ldbl-opt code.
+sparc/sparc32/sparcv9/fpu/multiarch
+sparc/sparc32/sparcv9/fpu
+sparc/sparc32/fpu
_______________________________________________
Commits mailing list
Commits@xxxxxxxxxx
http://eglibc.org/cgi-bin/mailman/listinfo/commits