This is the mail archive of the
glibc-cvs@sourceware.org
mailing list for the glibc project.
GNU C Library master sources branch, master, updated. glibc-2.11-380-g94a27fa
- From: drepper at sourceware dot org
- To: glibc-cvs at sourceware dot org
- Date: 15 Apr 2010 05:30:06 -0000
- Subject: GNU C Library master sources branch, master, updated. glibc-2.11-380-g94a27fa
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".
The branch, master has been updated
via 94a27fabebf851f4722654aa118a7d5f29a9c2ee (commit)
via a11ec63713ea3903c482dc907a108be404191a02 (commit)
via df87f54923da6cb94e1a7d65c3f2349c95d49700 (commit)
from 18a26b301b6ab0d68474fbfffb0d17adf69e8824 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=94a27fabebf851f4722654aa118a7d5f29a9c2ee
commit 94a27fabebf851f4722654aa118a7d5f29a9c2ee
Author: Ulrich Drepper <drepper@redhat.com>
Date: Wed Apr 14 22:29:51 2010 -0700
Whitespace fix.
diff --git a/sysdeps/x86_64/elf/configure b/sysdeps/x86_64/elf/configure
index 50cf2fc..f722b9e 100644
--- a/sysdeps/x86_64/elf/configure
+++ b/sysdeps/x86_64/elf/configure
@@ -46,4 +46,3 @@ fi
cat >>confdefs.h <<\_ACEOF
#define PI_STATIC_AND_HIDDEN 1
_ACEOF
-
http://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=a11ec63713ea3903c482dc907a108be404191a02
commit a11ec63713ea3903c482dc907a108be404191a02
Author: H.J. Lu <hongjiu.lu@intel.com>
Date: Wed Apr 14 22:27:59 2010 -0700
Add x86-32 FMA support
diff --git a/ChangeLog b/ChangeLog
index a780308..da0dc3f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,16 @@
2010-04-14 H.J. Lu <hongjiu.lu@intel.com>
+ * sysdeps/x86_64/elf/configure.in: Move AVX test to ....
+ * sysdeps/i386/configure.in: ...here.
+ * sysdeps/i386/i686/multiarch/Makefile (libm-sysdep_routines): Define.
+ (CFLAGS-s_fma-fma.c): Define.
+ (CFLAGS-s_fmaf-fma.c): Define.
+ * sysdeps/i386/i686/multiarch/Versions: New file.
+ * sysdeps/i386/i686/multiarch/s_fma-fma.c: New file.
+ * sysdeps/i386/i686/multiarch/s_fma.c: New file.
+ * sysdeps/i386/i686/multiarch/s_fmaf-fma.c: New file.
+ * sysdeps/i386/i686/multiarch/s_fmaf.c: New file.
+
* sysdeps/x86_64/multiarch/memcmp-sse4.S: Check
DATA_CACHE_SIZE_HALF instead of SHARED_CACHE_SIZE_HALF.
diff --git a/sysdeps/i386/configure b/sysdeps/i386/configure
index 7814b3b..21225cd 100644
--- a/sysdeps/i386/configure
+++ b/sysdeps/i386/configure
@@ -656,3 +656,28 @@ fi
fi
{ $as_echo "$as_me:$LINENO: result: $libc_cv_as_i686" >&5
$as_echo "$libc_cv_as_i686" >&6; }
+
+{ $as_echo "$as_me:$LINENO: checking for AVX support" >&5
+$as_echo_n "checking for AVX support... " >&6; }
+if test "${libc_cv_cc_avx+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if { ac_try='${CC-cc} -mavx -xc /dev/null -S -o /dev/null'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ libc_cv_cc_avx=yes
+else
+ libc_cv_cc_avx=no
+fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_cc_avx" >&5
+$as_echo "$libc_cv_cc_avx" >&6; }
+if test $libc_cv_cc_avx = yes; then
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_AVX_SUPPORT 1
+_ACEOF
+
+fi
diff --git a/sysdeps/i386/configure.in b/sysdeps/i386/configure.in
index 9fc7fa5..d8dd648 100644
--- a/sysdeps/i386/configure.in
+++ b/sysdeps/i386/configure.in
@@ -55,3 +55,14 @@ if AC_TRY_COMMAND([${CC-cc} -Wa,-mtune=i686 -xc /dev/null -S -o /dev/null]); the
else
libc_cv_as_i686=no
fi])
+
+dnl Check if -mavx works.
+AC_CACHE_CHECK(for AVX support, libc_cv_cc_avx, [dnl
+if AC_TRY_COMMAND([${CC-cc} -mavx -xc /dev/null -S -o /dev/null]); then
+ libc_cv_cc_avx=yes
+else
+ libc_cv_cc_avx=no
+fi])
+if test $libc_cv_cc_avx = yes; then
+ AC_DEFINE(HAVE_AVX_SUPPORT)
+fi
diff --git a/sysdeps/i386/i686/multiarch/Makefile b/sysdeps/i386/i686/multiarch/Makefile
index e8847d6..1245950 100644
--- a/sysdeps/i386/i686/multiarch/Makefile
+++ b/sysdeps/i386/i686/multiarch/Makefile
@@ -19,3 +19,9 @@ CFLAGS-strstr.c += -msse4
CFLAGS-strcasestr.c += -msse4
endif
endif
+
+ifeq (mathyes,$(subdir)$(config-cflags-avx))
+libm-sysdep_routines += s_fma-fma s_fmaf-fma
+CFLAGS-s_fma-fma.c += -mavx -mfpmath=sse
+CFLAGS-s_fmaf-fma.c += -mavx -mfpmath=sse
+endif
diff --git a/sysdeps/i386/i686/multiarch/Versions b/sysdeps/i386/i686/multiarch/Versions
new file mode 100644
index 0000000..59b185a
--- /dev/null
+++ b/sysdeps/i386/i686/multiarch/Versions
@@ -0,0 +1,5 @@
+libc {
+ GLIBC_PRIVATE {
+ __get_cpu_features;
+ }
+}
diff --git a/sysdeps/i386/i686/multiarch/s_fma-fma.c b/sysdeps/i386/i686/multiarch/s_fma-fma.c
new file mode 100644
index 0000000..e6f77ae
--- /dev/null
+++ b/sysdeps/i386/i686/multiarch/s_fma-fma.c
@@ -0,0 +1,30 @@
+/* FMA version of fma.
+ Copyright (C) 2010 Free Software Foundation, Inc.
+ Contributed by Intel Corporation.
+ 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <config.h>
+
+#ifdef HAVE_AVX_SUPPORT
+double
+__fma_fma (double x, double y, double z)
+{
+ asm ("vfmadd213sd %3, %2, %0" : "=x" (x) : "0" (x), "x" (y), "xm" (z));
+ return x;
+}
+#endif
diff --git a/sysdeps/i386/i686/multiarch/s_fma.c b/sysdeps/i386/i686/multiarch/s_fma.c
new file mode 100644
index 0000000..d9291b0
--- /dev/null
+++ b/sysdeps/i386/i686/multiarch/s_fma.c
@@ -0,0 +1,36 @@
+/* Multiple versions of fma.
+ Copyright (C) 2010 Free Software Foundation, Inc.
+ Contributed by Intel Corporation.
+ 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <config.h>
+
+#ifdef HAVE_AVX_SUPPORT
+#include <math.h>
+#include <init-arch.h>
+
+extern double __fma_ia32 (double x, double y, double z) attribute_hidden;
+extern double __fma_fma (double x, double y, double z) attribute_hidden;
+
+libm_ifunc (__fma, HAS_FMA ? __fma_fma : __fma_ia32);
+weak_alias (__fma, fma)
+
+# define __fma __fma_ia32
+#endif
+
+#include <math/s_fma.c>
diff --git a/sysdeps/i386/i686/multiarch/s_fmaf-fma.c b/sysdeps/i386/i686/multiarch/s_fmaf-fma.c
new file mode 100644
index 0000000..887e9c3
--- /dev/null
+++ b/sysdeps/i386/i686/multiarch/s_fmaf-fma.c
@@ -0,0 +1,30 @@
+/* FMA version of fmaf.
+ Copyright (C) 2010 Free Software Foundation, Inc.
+ Contributed by Intel Corporation.
+ 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <config.h>
+
+#ifdef HAVE_AVX_SUPPORT
+float
+__fmaf_fma (float x, float y, float z)
+{
+ asm ("vfmadd213ss %3, %2, %0" : "=x" (x) : "0" (x), "x" (y), "xm" (z));
+ return x;
+}
+#endif
diff --git a/sysdeps/i386/i686/multiarch/s_fmaf.c b/sysdeps/i386/i686/multiarch/s_fmaf.c
new file mode 100644
index 0000000..4ea9be4
--- /dev/null
+++ b/sysdeps/i386/i686/multiarch/s_fmaf.c
@@ -0,0 +1,36 @@
+/* Multiple versions of fmaf.
+ Copyright (C) 2010 Free Software Foundation, Inc.
+ Contributed by Intel Corporation.
+ 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <config.h>
+
+#ifdef HAVE_AVX_SUPPORT
+#include <math.h>
+#include <init-arch.h>
+
+extern float __fmaf_ia32 (float x, float y, float z) attribute_hidden;
+extern float __fmaf_fma (float x, float y, float z) attribute_hidden;
+
+libm_ifunc (__fmaf, HAS_FMA ? __fmaf_fma : __fmaf_ia32);
+weak_alias (__fmaf, fmaf)
+
+# define __fmaf __fmaf_ia32
+#endif
+
+#include <math/s_fmaf.c>
diff --git a/sysdeps/x86_64/elf/configure b/sysdeps/x86_64/elf/configure
index 0b93b04..50cf2fc 100644
--- a/sysdeps/x86_64/elf/configure
+++ b/sysdeps/x86_64/elf/configure
@@ -47,28 +47,3 @@ cat >>confdefs.h <<\_ACEOF
#define PI_STATIC_AND_HIDDEN 1
_ACEOF
-
-{ $as_echo "$as_me:$LINENO: checking for AVX support" >&5
-$as_echo_n "checking for AVX support... " >&6; }
-if test "${libc_cv_cc_avx+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if { ac_try='${CC-cc} -mavx -xc /dev/null -S -o /dev/null'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- libc_cv_cc_avx=yes
-else
- libc_cv_cc_avx=no
-fi
-fi
-{ $as_echo "$as_me:$LINENO: result: $libc_cv_cc_avx" >&5
-$as_echo "$libc_cv_cc_avx" >&6; }
-if test $libc_cv_cc_avx = yes; then
- cat >>confdefs.h <<\_ACEOF
-#define HAVE_AVX_SUPPORT 1
-_ACEOF
-
-fi
diff --git a/sysdeps/x86_64/elf/configure.in b/sysdeps/x86_64/elf/configure.in
index 14d1875..9cb59d0 100644
--- a/sysdeps/x86_64/elf/configure.in
+++ b/sysdeps/x86_64/elf/configure.in
@@ -32,14 +32,3 @@ fi
dnl It is always possible to access static and hidden symbols in an
dnl position independent way.
AC_DEFINE(PI_STATIC_AND_HIDDEN)
-
-dnl Check if -mavx works.
-AC_CACHE_CHECK(for AVX support, libc_cv_cc_avx, [dnl
-if AC_TRY_COMMAND([${CC-cc} -mavx -xc /dev/null -S -o /dev/null]); then
- libc_cv_cc_avx=yes
-else
- libc_cv_cc_avx=no
-fi])
-if test $libc_cv_cc_avx = yes; then
- AC_DEFINE(HAVE_AVX_SUPPORT)
-fi
http://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=df87f54923da6cb94e1a7d65c3f2349c95d49700
commit df87f54923da6cb94e1a7d65c3f2349c95d49700
Author: H.J. Lu <hongjiu.lu@intel.com>
Date: Wed Apr 14 22:18:27 2010 -0700
Check DATA_CACHE_SIZE_HALF
diff --git a/ChangeLog b/ChangeLog
index 9b23fd9..a780308 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2010-04-14 H.J. Lu <hongjiu.lu@intel.com>
+
+ * sysdeps/x86_64/multiarch/memcmp-sse4.S: Check
+ DATA_CACHE_SIZE_HALF instead of SHARED_CACHE_SIZE_HALF.
+
2010-04-14 Andreas Schwab <schwab@redhat.com>
* elf/dl-version.c (_dl_check_map_versions): Avoid index overflow
diff --git a/sysdeps/x86_64/multiarch/memcmp-sse4.S b/sysdeps/x86_64/multiarch/memcmp-sse4.S
index 25dba86..fc439bb 100644
--- a/sysdeps/x86_64/multiarch/memcmp-sse4.S
+++ b/sysdeps/x86_64/multiarch/memcmp-sse4.S
@@ -34,7 +34,7 @@
#define JMPTBL(I, B) (I - B)
#define BRANCH_TO_JMPTBL_ENTRY(TABLE, INDEX, SCALE) \
- lea TABLE(%rip), %r11; \
+ lea TABLE(%rip), %r11; \
movslq (%r11, INDEX, SCALE), %rcx; \
add %r11, %rcx; \
jmp *%rcx; \
@@ -624,7 +624,7 @@ L(less32bytesin256in2alinged):
ALIGN (4)
L(512bytesormorein2aligned):
-#ifdef SHARED_CACHE_SIZE_HALF
+#ifdef DATA_CACHE_SIZE_HALF
mov $DATA_CACHE_SIZE_HALF, %r8
#else
mov __x86_64_data_cache_size_half(%rip), %r8
-----------------------------------------------------------------------
Summary of changes:
ChangeLog | 16 ++++++++++
sysdeps/i386/configure | 25 +++++++++++++++
sysdeps/i386/configure.in | 11 +++++++
sysdeps/i386/i686/multiarch/Makefile | 6 ++++
sysdeps/{x86_64 => i386/i686}/multiarch/Versions | 0
sysdeps/i386/i686/multiarch/s_fma-fma.c | 30 ++++++++++++++++++
sysdeps/i386/i686/multiarch/s_fma.c | 36 ++++++++++++++++++++++
sysdeps/i386/i686/multiarch/s_fmaf-fma.c | 30 ++++++++++++++++++
sysdeps/i386/i686/multiarch/s_fmaf.c | 36 ++++++++++++++++++++++
sysdeps/x86_64/elf/configure | 26 ----------------
sysdeps/x86_64/elf/configure.in | 11 -------
sysdeps/x86_64/multiarch/memcmp-sse4.S | 4 +-
12 files changed, 192 insertions(+), 39 deletions(-)
copy sysdeps/{x86_64 => i386/i686}/multiarch/Versions (100%)
create mode 100644 sysdeps/i386/i686/multiarch/s_fma-fma.c
create mode 100644 sysdeps/i386/i686/multiarch/s_fma.c
create mode 100644 sysdeps/i386/i686/multiarch/s_fmaf-fma.c
create mode 100644 sysdeps/i386/i686/multiarch/s_fmaf.c
hooks/post-receive
--
GNU C Library master sources