* [PATCH 5/N v2] [x86_64] Vectorized math functions
@ 2014-12-02 16:48 Andrew Senkevich
2014-12-03 18:06 ` Joseph Myers
0 siblings, 1 reply; 6+ messages in thread
From: Andrew Senkevich @ 2014-12-02 16:48 UTC (permalink / raw)
To: libc-alpha
[-- Attachment #1: Type: text/plain, Size: 5498 bytes --]
This is infrastructure update for configure / build of vector math library.
2014-12-02 Andrew Senkevich <andrew.n.senkevich@gmail.com>
* Makeconfig: Added mathvec folder.
* configure.ac: Added option for mathvec build.
* configure: Regenerated.
* mathvec/Depend: New file.
* mathvec/Makefile: New file.
* shlib-versions: Added libmvec.
diff --git a/Makeconfig b/Makeconfig
index bbf5460..c08e4ee 100644
--- a/Makeconfig
+++ b/Makeconfig
@@ -476,7 +476,7 @@ link-libc = $(link-libc-rpath-link)
$(link-libc-before-gnulib) $(gnulib)
link-libc-tests = $(link-libc-tests-rpath-link) \
$(link-libc-before-gnulib) $(gnulib-tests)
# This is how to find at build-time things that will be installed there.
-rpath-dirs = math elf dlfcn nss nis rt resolv crypt
+rpath-dirs = math elf dlfcn nss nis rt resolv crypt mathvec
rpath-link = \
$(common-objdir):$(subst $(empty) ,:,$(patsubst
../$(subdir),.,$(rpath-dirs:%=$(common-objpfx)%)))
else
@@ -1059,7 +1059,7 @@ all-subdirs = csu assert ctype locale intl
catgets math setjmp signal \
stdlib stdio-common libio malloc string wcsmbs time dirent \
grp pwd posix io termios resource misc socket sysvipc gmon \
gnulib iconv iconvdata wctype manual shadow gshadow po argp \
- crypt localedata timezone rt conform debug \
+ crypt localedata timezone rt conform debug mathvec \
$(add-on-subdirs) dlfcn elf
ifndef avoid-generated
diff --git a/configure b/configure
index 0cb54ec..a3ea531 100755
--- a/configure
+++ b/configure
@@ -774,6 +774,7 @@ enable_systemtap
enable_build_nscd
enable_nscd
enable_pt_chown
+enable_mathvec
with_cpu
'
ac_precious_vars='build_alias
@@ -1437,6 +1438,8 @@ Optional Features:
--disable-build-nscd disable building and installing the nscd daemon
--disable-nscd library functions will not contact the nscd daemon
--enable-pt_chown Enable building and installing pt_chown
+ --enable-mathvec Enable building and installing mathvec [default
+ depends on architecture]
Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
@@ -3730,6 +3733,14 @@ if test "$build_pt_chown" = yes; then
fi
+# Check whether --enable-mathvec was given.
+if test "${enable_mathvec+set}" = set; then :
+ enableval=$enable_mathvec; build_mathvec=$enableval
+else
+ build_mathvec=notset
+fi
+
+
# We keep the original values in `$config_*' and never modify them, so we
# can write them unchanged into config.make. Everything else uses
# $machine, $vendor, and $os, and changes them whenever convenient.
@@ -7039,6 +7050,12 @@ $as_echo "running configure fragment for $dir" >&6; }
fi
done
+if test x"$build_mathvec" = xnotset; then
+ build_mathvec=no
+fi
+config_vars="$config_vars
+build-mathvec = $build_mathvec"
+
diff --git a/configure.ac b/configure.ac
index b2c4b1f..f6805aa 100644
--- a/configure.ac
+++ b/configure.ac
@@ -353,6 +353,12 @@ if test "$build_pt_chown" = yes; then
AC_DEFINE(HAVE_PT_CHOWN)
fi
+AC_ARG_ENABLE([mathvec],
+ [AS_HELP_STRING([--enable-mathvec],
+ [Enable building and installing mathvec @<:@default depends on
architecture@:>@])],
+ [build_mathvec=$enableval],
+ [build_mathvec=notset])
+
# We keep the original values in `$config_*' and never modify them, so we
# can write them unchanged into config.make. Everything else uses
# $machine, $vendor, and $os, and changes them whenever convenient.
@@ -1939,6 +1945,11 @@ for dir in $sysnames; do
fi
done
+if test x"$build_mathvec" = xnotset; then
+ build_mathvec=no
+fi
+LIBC_CONFIG_VAR([build-mathvec], [$build_mathvec])
+
AC_SUBST(libc_extra_cflags)
AC_SUBST(libc_extra_cppflags)
diff --git a/mathvec/Depend b/mathvec/Depend
new file mode 100644
index 0000000..ede10ab
--- /dev/null
+++ b/mathvec/Depend
@@ -0,0 +1 @@
+math
diff --git a/mathvec/Makefile b/mathvec/Makefile
new file mode 100644
index 0000000..3b670e9
--- /dev/null
+++ b/mathvec/Makefile
@@ -0,0 +1,35 @@
+# Copyright (C) 2014 Free Software Foundation, Inc.
+# 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/>.
+
+# Makefile for the vector math library.
+
+subdir := mathvec
+
+include ../Makeconfig
+
+ifeq ($(build-mathvec),yes)
+extra-libs := libmvec
+extra-libs-others = $(extra-libs)
+
+libmvec-routines = $(strip $(libmvec-support))
+
+$(objpfx)libmvec.so: $(libm)
+endif
+
+# Rules for the test suite are in math directory.
+
+include ../Rules
diff --git a/shlib-versions b/shlib-versions
index e05b248..fa3cf1d 100644
--- a/shlib-versions
+++ b/shlib-versions
@@ -71,3 +71,6 @@ libanl=1
# This defines the libgcc soname version this glibc is to load for
# asynchronous cancellation to work correctly.
libgcc_s=1
+
+# The vector math library
+libmvec=1
--
WBR,
Andrew
[-- Attachment #2: libmvec_5_of_N_v2.patch --]
[-- Type: application/octet-stream, Size: 5119 bytes --]
diff --git a/Makeconfig b/Makeconfig
index bbf5460..c08e4ee 100644
--- a/Makeconfig
+++ b/Makeconfig
@@ -476,7 +476,7 @@ link-libc = $(link-libc-rpath-link) $(link-libc-before-gnulib) $(gnulib)
link-libc-tests = $(link-libc-tests-rpath-link) \
$(link-libc-before-gnulib) $(gnulib-tests)
# This is how to find at build-time things that will be installed there.
-rpath-dirs = math elf dlfcn nss nis rt resolv crypt
+rpath-dirs = math elf dlfcn nss nis rt resolv crypt mathvec
rpath-link = \
$(common-objdir):$(subst $(empty) ,:,$(patsubst ../$(subdir),.,$(rpath-dirs:%=$(common-objpfx)%)))
else
@@ -1059,7 +1059,7 @@ all-subdirs = csu assert ctype locale intl catgets math setjmp signal \
stdlib stdio-common libio malloc string wcsmbs time dirent \
grp pwd posix io termios resource misc socket sysvipc gmon \
gnulib iconv iconvdata wctype manual shadow gshadow po argp \
- crypt localedata timezone rt conform debug \
+ crypt localedata timezone rt conform debug mathvec \
$(add-on-subdirs) dlfcn elf
ifndef avoid-generated
diff --git a/configure b/configure
index 0cb54ec..a3ea531 100755
--- a/configure
+++ b/configure
@@ -774,6 +774,7 @@ enable_systemtap
enable_build_nscd
enable_nscd
enable_pt_chown
+enable_mathvec
with_cpu
'
ac_precious_vars='build_alias
@@ -1437,6 +1438,8 @@ Optional Features:
--disable-build-nscd disable building and installing the nscd daemon
--disable-nscd library functions will not contact the nscd daemon
--enable-pt_chown Enable building and installing pt_chown
+ --enable-mathvec Enable building and installing mathvec [default
+ depends on architecture]
Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
@@ -3730,6 +3733,14 @@ if test "$build_pt_chown" = yes; then
fi
+# Check whether --enable-mathvec was given.
+if test "${enable_mathvec+set}" = set; then :
+ enableval=$enable_mathvec; build_mathvec=$enableval
+else
+ build_mathvec=notset
+fi
+
+
# We keep the original values in `$config_*' and never modify them, so we
# can write them unchanged into config.make. Everything else uses
# $machine, $vendor, and $os, and changes them whenever convenient.
@@ -7039,6 +7050,12 @@ $as_echo "running configure fragment for $dir" >&6; }
fi
done
+if test x"$build_mathvec" = xnotset; then
+ build_mathvec=no
+fi
+config_vars="$config_vars
+build-mathvec = $build_mathvec"
+
diff --git a/configure.ac b/configure.ac
index b2c4b1f..f6805aa 100644
--- a/configure.ac
+++ b/configure.ac
@@ -353,6 +353,12 @@ if test "$build_pt_chown" = yes; then
AC_DEFINE(HAVE_PT_CHOWN)
fi
+AC_ARG_ENABLE([mathvec],
+ [AS_HELP_STRING([--enable-mathvec],
+ [Enable building and installing mathvec @<:@default depends on architecture@:>@])],
+ [build_mathvec=$enableval],
+ [build_mathvec=notset])
+
# We keep the original values in `$config_*' and never modify them, so we
# can write them unchanged into config.make. Everything else uses
# $machine, $vendor, and $os, and changes them whenever convenient.
@@ -1939,6 +1945,11 @@ for dir in $sysnames; do
fi
done
+if test x"$build_mathvec" = xnotset; then
+ build_mathvec=no
+fi
+LIBC_CONFIG_VAR([build-mathvec], [$build_mathvec])
+
AC_SUBST(libc_extra_cflags)
AC_SUBST(libc_extra_cppflags)
diff --git a/mathvec/Depend b/mathvec/Depend
new file mode 100644
index 0000000..ede10ab
--- /dev/null
+++ b/mathvec/Depend
@@ -0,0 +1 @@
+math
diff --git a/mathvec/Makefile b/mathvec/Makefile
new file mode 100644
index 0000000..3b670e9
--- /dev/null
+++ b/mathvec/Makefile
@@ -0,0 +1,35 @@
+# Copyright (C) 2014 Free Software Foundation, Inc.
+# 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/>.
+
+# Makefile for the vector math library.
+
+subdir := mathvec
+
+include ../Makeconfig
+
+ifeq ($(build-mathvec),yes)
+extra-libs := libmvec
+extra-libs-others = $(extra-libs)
+
+libmvec-routines = $(strip $(libmvec-support))
+
+$(objpfx)libmvec.so: $(libm)
+endif
+
+# Rules for the test suite are in math directory.
+
+include ../Rules
diff --git a/shlib-versions b/shlib-versions
index e05b248..fa3cf1d 100644
--- a/shlib-versions
+++ b/shlib-versions
@@ -71,3 +71,6 @@ libanl=1
# This defines the libgcc soname version this glibc is to load for
# asynchronous cancellation to work correctly.
libgcc_s=1
+
+# The vector math library
+libmvec=1
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 5/N v2] [x86_64] Vectorized math functions
2014-12-02 16:48 [PATCH 5/N v2] [x86_64] Vectorized math functions Andrew Senkevich
@ 2014-12-03 18:06 ` Joseph Myers
2014-12-08 18:33 ` Andrew Senkevich
0 siblings, 1 reply; 6+ messages in thread
From: Joseph Myers @ 2014-12-03 18:06 UTC (permalink / raw)
To: Andrew Senkevich; +Cc: libc-alpha
On Tue, 2 Dec 2014, Andrew Senkevich wrote:
> This is infrastructure update for configure / build of vector math library.
>
> 2014-12-02 Andrew Senkevich <andrew.n.senkevich@gmail.com>
>
> * Makeconfig: Added mathvec folder.
> * configure.ac: Added option for mathvec build.
> * configure: Regenerated.
> * mathvec/Depend: New file.
> * mathvec/Makefile: New file.
> * shlib-versions: Added libmvec.
I don't have any comments on the content of this patch beyond that it
should be combined with patch 6 so that a single patch enables both build
and install of this library.
--
Joseph S. Myers
joseph@codesourcery.com
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 5/N v2] [x86_64] Vectorized math functions
2014-12-03 18:06 ` Joseph Myers
@ 2014-12-08 18:33 ` Andrew Senkevich
2014-12-11 16:44 ` Joseph Myers
0 siblings, 1 reply; 6+ messages in thread
From: Andrew Senkevich @ 2014-12-08 18:33 UTC (permalink / raw)
To: Joseph Myers; +Cc: libc-alpha
2014-12-03 21:06 GMT+03:00 Joseph Myers <joseph@codesourcery.com>:
> I don't have any comments on the content of this patch beyond that it
> should be combined with patch 6 so that a single patch enables both build
> and install of this library.
Here is updated patch 5/N.
* Makeconfig (rpath-dirs, all-subdirs): Added mathvec folder.
(libmvec): New variable.
* configure.ac: Added option for mathvec build.
* configure: Regenerated.
* mathvec/Depend: New file.
* mathvec/Makefile: New file.
* shlib-versions: Added libmvec.
* math/Makefile: Added rule for libm.so installation.
diff --git a/Makeconfig b/Makeconfig
index bbf5460..57d2ad8 100644
--- a/Makeconfig
+++ b/Makeconfig
@@ -476,7 +476,7 @@ link-libc = $(link-libc-rpath-link)
$(link-libc-before-gnulib) $(gnulib)
link-libc-tests = $(link-libc-tests-rpath-link) \
$(link-libc-before-gnulib) $(gnulib-tests)
# This is how to find at build-time things that will be installed there.
-rpath-dirs = math elf dlfcn nss nis rt resolv crypt
+rpath-dirs = math elf dlfcn nss nis rt resolv crypt mathvec
rpath-link = \
$(common-objdir):$(subst $(empty) ,:,$(patsubst
../$(subdir),.,$(rpath-dirs:%=$(common-objpfx)%)))
else
@@ -1048,8 +1048,10 @@ endif
ifeq ($(build-shared),yes)
libm = $(common-objpfx)math/libm.so$(libm.so-version)
+libmvec = $(common-objpfx)mathvec/libmvec.so$(libmvec.so-version)
else
libm = $(common-objpfx)math/libm.a
+libmvec = $(common-objpfx)mathvec/libmvec.a
endif
# These are the subdirectories containing the library source. The order
@@ -1059,7 +1061,7 @@ all-subdirs = csu assert ctype locale intl
catgets math setjmp signal \
stdlib stdio-common libio malloc string wcsmbs time dirent \
grp pwd posix io termios resource misc socket sysvipc gmon \
gnulib iconv iconvdata wctype manual shadow gshadow po argp \
- crypt localedata timezone rt conform debug \
+ crypt localedata timezone rt conform debug mathvec \
$(add-on-subdirs) dlfcn elf
ifndef avoid-generated
diff --git a/configure b/configure
index 0cb54ec..a3ea531 100755
--- a/configure
+++ b/configure
@@ -774,6 +774,7 @@ enable_systemtap
enable_build_nscd
enable_nscd
enable_pt_chown
+enable_mathvec
with_cpu
'
ac_precious_vars='build_alias
@@ -1437,6 +1438,8 @@ Optional Features:
--disable-build-nscd disable building and installing the nscd daemon
--disable-nscd library functions will not contact the nscd daemon
--enable-pt_chown Enable building and installing pt_chown
+ --enable-mathvec Enable building and installing mathvec [default
+ depends on architecture]
Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
@@ -3730,6 +3733,14 @@ if test "$build_pt_chown" = yes; then
fi
+# Check whether --enable-mathvec was given.
+if test "${enable_mathvec+set}" = set; then :
+ enableval=$enable_mathvec; build_mathvec=$enableval
+else
+ build_mathvec=notset
+fi
+
+
# We keep the original values in `$config_*' and never modify them, so we
# can write them unchanged into config.make. Everything else uses
# $machine, $vendor, and $os, and changes them whenever convenient.
@@ -7039,6 +7050,12 @@ $as_echo "running configure fragment for $dir" >&6; }
fi
done
+if test x"$build_mathvec" = xnotset; then
+ build_mathvec=no
+fi
+config_vars="$config_vars
+build-mathvec = $build_mathvec"
+
diff --git a/configure.ac b/configure.ac
index b2c4b1f..f6805aa 100644
--- a/configure.ac
+++ b/configure.ac
@@ -353,6 +353,12 @@ if test "$build_pt_chown" = yes; then
AC_DEFINE(HAVE_PT_CHOWN)
fi
+AC_ARG_ENABLE([mathvec],
+ [AS_HELP_STRING([--enable-mathvec],
+ [Enable building and installing mathvec @<:@default depends on
architecture@:>@])],
+ [build_mathvec=$enableval],
+ [build_mathvec=notset])
+
# We keep the original values in `$config_*' and never modify them, so we
# can write them unchanged into config.make. Everything else uses
# $machine, $vendor, and $os, and changes them whenever convenient.
@@ -1939,6 +1945,11 @@ for dir in $sysnames; do
fi
done
+if test x"$build_mathvec" = xnotset; then
+ build_mathvec=no
+fi
+LIBC_CONFIG_VAR([build-mathvec], [$build_mathvec])
+
AC_SUBST(libc_extra_cflags)
AC_SUBST(libc_extra_cppflags)
diff --git a/math/Makefile b/math/Makefile
index 4a06c74..e6285e9 100644
--- a/math/Makefile
+++ b/math/Makefile
@@ -86,6 +86,22 @@ generated += $(foreach s,.c .S l.c l.S f.c
f.S,$(calls:s_%=m_%$s))
routines = $(calls) $(calls:=f) $(long-c-$(long-double-fcts))
long-c-yes = $(calls:=l)
+ifeq ($(build-mathvec),yes)
+# We need to install libm.so as linker script
+# for more comfortable use of vector math library.
+install-lib-ldscripts := libm.so
+install_subdir: $(inst_libdir)/libm.so
+$(inst_libdir)/libm.so: $(common-objpfx)format.lds \
+ $(libm) \
+ $(libmvec) \
+ $(+force)
+ (echo '/* GNU ld script'; echo '*/';\
+ cat $<; \
+ echo 'GROUP ( $(slibdir)/libm.so$(libm.so-version) ' \
+ 'AS_NEEDED ( $(slibdir)/libmvec.so$(libmvec.so-version) ) )' \
+ ) > $@
+endif
+
# Rules for the test suite.
tests = test-matherr test-fenv atest-exp atest-sincos atest-exp2 basic-test \
test-misc test-fpucw test-fpucw-ieee tst-definitions test-tgmath \
diff --git a/mathvec/Depend b/mathvec/Depend
new file mode 100644
index 0000000..ede10ab
--- /dev/null
+++ b/mathvec/Depend
@@ -0,0 +1 @@
+math
diff --git a/mathvec/Makefile b/mathvec/Makefile
new file mode 100644
index 0000000..3b670e9
--- /dev/null
+++ b/mathvec/Makefile
@@ -0,0 +1,35 @@
+# Copyright (C) 2014 Free Software Foundation, Inc.
+# 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/>.
+
+# Makefile for the vector math library.
+
+subdir := mathvec
+
+include ../Makeconfig
+
+ifeq ($(build-mathvec),yes)
+extra-libs := libmvec
+extra-libs-others = $(extra-libs)
+
+libmvec-routines = $(strip $(libmvec-support))
+
+$(objpfx)libmvec.so: $(libm)
+endif
+
+# Rules for the test suite are in math directory.
+
+include ../Rules
diff --git a/shlib-versions b/shlib-versions
index e05b248..fa3cf1d 100644
--- a/shlib-versions
+++ b/shlib-versions
@@ -71,3 +71,6 @@ libanl=1
# This defines the libgcc soname version this glibc is to load for
# asynchronous cancellation to work correctly.
libgcc_s=1
+
+# The vector math library
+libmvec=1
--
WBR,
Andrew
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 5/N v2] [x86_64] Vectorized math functions
2014-12-08 18:33 ` Andrew Senkevich
@ 2014-12-11 16:44 ` Joseph Myers
2014-12-11 17:09 ` Andrew Senkevich
0 siblings, 1 reply; 6+ messages in thread
From: Joseph Myers @ 2014-12-11 16:44 UTC (permalink / raw)
To: Andrew Senkevich; +Cc: libc-alpha
On Mon, 8 Dec 2014, Andrew Senkevich wrote:
> 2014-12-03 21:06 GMT+03:00 Joseph Myers <joseph@codesourcery.com>:
> > I don't have any comments on the content of this patch beyond that it
> > should be combined with patch 6 so that a single patch enables both build
> > and install of this library.
>
> Here is updated patch 5/N.
>
> * Makeconfig (rpath-dirs, all-subdirs): Added mathvec folder.
> (libmvec): New variable.
> * configure.ac: Added option for mathvec build.
> * configure: Regenerated.
> * mathvec/Depend: New file.
> * mathvec/Makefile: New file.
> * shlib-versions: Added libmvec.
> * math/Makefile: Added rule for libm.so installation.
Can you provide an attached version of this patch? It looks like
whitespace has got messed up by cut-and-paste (and some of the review
comments on the previous patch 6 were about formatting).
--
Joseph S. Myers
joseph@codesourcery.com
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 5/N v2] [x86_64] Vectorized math functions
2014-12-11 16:44 ` Joseph Myers
@ 2014-12-11 17:09 ` Andrew Senkevich
2014-12-11 17:52 ` Joseph Myers
0 siblings, 1 reply; 6+ messages in thread
From: Andrew Senkevich @ 2014-12-11 17:09 UTC (permalink / raw)
To: Joseph Myers; +Cc: libc-alpha
[-- Attachment #1: Type: text/plain, Size: 238 bytes --]
> Can you provide an attached version of this patch? It looks like
> whitespace has got messed up by cut-and-paste (and some of the review
> comments on the previous patch 6 were about formatting).
Of course, attached.
--
WBR,
Andrew
[-- Attachment #2: libmvec-5-of-N.patch --]
[-- Type: application/octet-stream, Size: 6438 bytes --]
diff --git a/Makeconfig b/Makeconfig
index bbf5460..57d2ad8 100644
--- a/Makeconfig
+++ b/Makeconfig
@@ -476,7 +476,7 @@ link-libc = $(link-libc-rpath-link) $(link-libc-before-gnulib) $(gnulib)
link-libc-tests = $(link-libc-tests-rpath-link) \
$(link-libc-before-gnulib) $(gnulib-tests)
# This is how to find at build-time things that will be installed there.
-rpath-dirs = math elf dlfcn nss nis rt resolv crypt
+rpath-dirs = math elf dlfcn nss nis rt resolv crypt mathvec
rpath-link = \
$(common-objdir):$(subst $(empty) ,:,$(patsubst ../$(subdir),.,$(rpath-dirs:%=$(common-objpfx)%)))
else
@@ -1048,8 +1048,10 @@ endif
ifeq ($(build-shared),yes)
libm = $(common-objpfx)math/libm.so$(libm.so-version)
+libmvec = $(common-objpfx)mathvec/libmvec.so$(libmvec.so-version)
else
libm = $(common-objpfx)math/libm.a
+libmvec = $(common-objpfx)mathvec/libmvec.a
endif
# These are the subdirectories containing the library source. The order
@@ -1059,7 +1061,7 @@ all-subdirs = csu assert ctype locale intl catgets math setjmp signal \
stdlib stdio-common libio malloc string wcsmbs time dirent \
grp pwd posix io termios resource misc socket sysvipc gmon \
gnulib iconv iconvdata wctype manual shadow gshadow po argp \
- crypt localedata timezone rt conform debug \
+ crypt localedata timezone rt conform debug mathvec \
$(add-on-subdirs) dlfcn elf
ifndef avoid-generated
diff --git a/configure b/configure
index 0cb54ec..a3ea531 100755
--- a/configure
+++ b/configure
@@ -774,6 +774,7 @@ enable_systemtap
enable_build_nscd
enable_nscd
enable_pt_chown
+enable_mathvec
with_cpu
'
ac_precious_vars='build_alias
@@ -1437,6 +1438,8 @@ Optional Features:
--disable-build-nscd disable building and installing the nscd daemon
--disable-nscd library functions will not contact the nscd daemon
--enable-pt_chown Enable building and installing pt_chown
+ --enable-mathvec Enable building and installing mathvec [default
+ depends on architecture]
Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
@@ -3730,6 +3733,14 @@ if test "$build_pt_chown" = yes; then
fi
+# Check whether --enable-mathvec was given.
+if test "${enable_mathvec+set}" = set; then :
+ enableval=$enable_mathvec; build_mathvec=$enableval
+else
+ build_mathvec=notset
+fi
+
+
# We keep the original values in `$config_*' and never modify them, so we
# can write them unchanged into config.make. Everything else uses
# $machine, $vendor, and $os, and changes them whenever convenient.
@@ -7039,6 +7050,12 @@ $as_echo "running configure fragment for $dir" >&6; }
fi
done
+if test x"$build_mathvec" = xnotset; then
+ build_mathvec=no
+fi
+config_vars="$config_vars
+build-mathvec = $build_mathvec"
+
diff --git a/configure.ac b/configure.ac
index b2c4b1f..f6805aa 100644
--- a/configure.ac
+++ b/configure.ac
@@ -353,6 +353,12 @@ if test "$build_pt_chown" = yes; then
AC_DEFINE(HAVE_PT_CHOWN)
fi
+AC_ARG_ENABLE([mathvec],
+ [AS_HELP_STRING([--enable-mathvec],
+ [Enable building and installing mathvec @<:@default depends on architecture@:>@])],
+ [build_mathvec=$enableval],
+ [build_mathvec=notset])
+
# We keep the original values in `$config_*' and never modify them, so we
# can write them unchanged into config.make. Everything else uses
# $machine, $vendor, and $os, and changes them whenever convenient.
@@ -1939,6 +1945,11 @@ for dir in $sysnames; do
fi
done
+if test x"$build_mathvec" = xnotset; then
+ build_mathvec=no
+fi
+LIBC_CONFIG_VAR([build-mathvec], [$build_mathvec])
+
AC_SUBST(libc_extra_cflags)
AC_SUBST(libc_extra_cppflags)
diff --git a/math/Makefile b/math/Makefile
index 4a06c74..e6285e9 100644
--- a/math/Makefile
+++ b/math/Makefile
@@ -86,6 +86,22 @@ generated += $(foreach s,.c .S l.c l.S f.c f.S,$(calls:s_%=m_%$s))
routines = $(calls) $(calls:=f) $(long-c-$(long-double-fcts))
long-c-yes = $(calls:=l)
+ifeq ($(build-mathvec),yes)
+# We need to install libm.so as linker script
+# for more comfortable use of vector math library.
+install-lib-ldscripts := libm.so
+install_subdir: $(inst_libdir)/libm.so
+$(inst_libdir)/libm.so: $(common-objpfx)format.lds \
+ $(libm) \
+ $(libmvec) \
+ $(+force)
+ (echo '/* GNU ld script'; echo '*/';\
+ cat $<; \
+ echo 'GROUP ( $(slibdir)/libm.so$(libm.so-version) ' \
+ 'AS_NEEDED ( $(slibdir)/libmvec.so$(libmvec.so-version) ) )' \
+ ) > $@
+endif
+
# Rules for the test suite.
tests = test-matherr test-fenv atest-exp atest-sincos atest-exp2 basic-test \
test-misc test-fpucw test-fpucw-ieee tst-definitions test-tgmath \
diff --git a/mathvec/Depend b/mathvec/Depend
new file mode 100644
index 0000000..ede10ab
--- /dev/null
+++ b/mathvec/Depend
@@ -0,0 +1 @@
+math
diff --git a/mathvec/Makefile b/mathvec/Makefile
new file mode 100644
index 0000000..3b670e9
--- /dev/null
+++ b/mathvec/Makefile
@@ -0,0 +1,35 @@
+# Copyright (C) 2014 Free Software Foundation, Inc.
+# 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/>.
+
+# Makefile for the vector math library.
+
+subdir := mathvec
+
+include ../Makeconfig
+
+ifeq ($(build-mathvec),yes)
+extra-libs := libmvec
+extra-libs-others = $(extra-libs)
+
+libmvec-routines = $(strip $(libmvec-support))
+
+$(objpfx)libmvec.so: $(libm)
+endif
+
+# Rules for the test suite are in math directory.
+
+include ../Rules
diff --git a/shlib-versions b/shlib-versions
index e05b248..fa3cf1d 100644
--- a/shlib-versions
+++ b/shlib-versions
@@ -71,3 +71,6 @@ libanl=1
# This defines the libgcc soname version this glibc is to load for
# asynchronous cancellation to work correctly.
libgcc_s=1
+
+# The vector math library
+libmvec=1
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 5/N v2] [x86_64] Vectorized math functions
2014-12-11 17:09 ` Andrew Senkevich
@ 2014-12-11 17:52 ` Joseph Myers
0 siblings, 0 replies; 6+ messages in thread
From: Joseph Myers @ 2014-12-11 17:52 UTC (permalink / raw)
To: Andrew Senkevich; +Cc: libc-alpha
On Thu, 11 Dec 2014, Andrew Senkevich wrote:
> > Can you provide an attached version of this patch? It looks like
> > whitespace has got messed up by cut-and-paste (and some of the review
> > comments on the previous patch 6 were about formatting).
>
> Of course, attached.
OK once the assignment has been sorted out.
--
Joseph S. Myers
joseph@codesourcery.com
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2014-12-11 17:52 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-12-02 16:48 [PATCH 5/N v2] [x86_64] Vectorized math functions Andrew Senkevich
2014-12-03 18:06 ` Joseph Myers
2014-12-08 18:33 ` Andrew Senkevich
2014-12-11 16:44 ` Joseph Myers
2014-12-11 17:09 ` Andrew Senkevich
2014-12-11 17:52 ` Joseph Myers
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).