[5/N,v2,x86_64] Vectorized math functions

Message ID CAMXFM3u8pBaP5xPOgZtac7-OT7Nw0aUM3NKn8gnm4dhht=3Gug@mail.gmail.com
State Superseded
Headers

Commit Message

Andrew Senkevich Dec. 2, 2014, 4:47 p.m. UTC
  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.




--
WBR,
Andrew
  

Comments

Joseph Myers Dec. 3, 2014, 6:06 p.m. UTC | #1
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.
  

Patch

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