This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [RFC] How to add vector math functions to Glibc
- From: "Joseph S. Myers" <joseph at codesourcery dot com>
- To: Andrew Senkevich <andrew dot n dot senkevich at gmail dot com>
- Cc: Carlos O'Donell <carlos at redhat dot com>, libc-alpha <libc-alpha at sourceware dot org>
- Date: Tue, 30 Sep 2014 20:03:34 +0000
- Subject: Re: [RFC] How to add vector math functions to Glibc
- Authentication-results: sourceware.org; auth=none
- References: <CAMXFM3tjquzniXP1weqxSVFJyhXqsf2PHuyrrrmqp7K0ZzORqA at mail dot gmail dot com> <Pine dot LNX dot 4 dot 64 dot 1409181551370 dot 31607 at digraph dot polyomino dot org dot uk> <CAMXFM3tO7MTYCq8-YFZacdbLvR4iAab_n04AuB+rp2Phs4BvQg at mail dot gmail dot com> <Pine dot LNX dot 4 dot 64 dot 1409242011260 dot 7597 at digraph dot polyomino dot org dot uk> <CAMXFM3tqiqUNuSU2KXvAFM-QescX3+6xUO9=z5X0Ac6C9qJ7zg at mail dot gmail dot com> <CAMe9rOq7bZHb8R=opUzSmAMGWjLpX21mR=Sx96cuBph=TTtDXA at mail dot gmail dot com> <54246CB5 dot 7020908 at redhat dot com> <CAMe9rOoLmJ2jHWmERoB0M83WNKovJOgh0--Kquw9O86A1tPU0g at mail dot gmail dot com> <5424733D dot 6010305 at redhat dot com> <CAMe9rOpacze055qyBFzz3M-b-GNtXCqZzMmkScBL9a94zVj28g at mail dot gmail dot com> <54247FAB dot 6050002 at redhat dot com> <CAMXFM3v8narOLMHC5U=fvyTFWV6s4ZACN-UrAC4fAcUs9SOFfA at mail dot gmail dot com> <54257507 dot 9070508 at redhat dot com> <CAMXFM3vOLspQtHxgJfD_Emht480w2RMbiwnEH6A_LhoS-JZFag at mail dot gmail dot com> <Pine dot LNX dot 4 dot 64 dot 1409301620020 dot 15186 at digraph dot polyomino dot org dot uk> <CAMXFM3sjjaAn5gudXq8TDL1xaDHhzc7k1SySFV-aX2H=648kRQ at mail dot gmail dot com>
On Tue, 30 Sep 2014, Andrew Senkevich wrote:
> 2014-09-30 20:35 GMT+04:00 Joseph S. Myers <joseph@codesourcery.com>:
> > On Tue, 30 Sep 2014, Andrew Senkevich wrote:
> >
> >> diff --git a/configure.ac b/configure.ac
> >> index 82d0896..c5c1758 100644
> >> --- a/configure.ac
> >> +++ b/configure.ac
> >> @@ -903,7 +903,7 @@ LIBC_PROG_BINUTILS
> >> # Accept binutils 2.20 or newer.
> >> AC_CHECK_PROG_VER(AS, $AS, --version,
> >> [GNU assembler.* \([0-9]*\.[0-9.]*\)],
> >> - [2.1[0-9][0-9]*|2.[2-9][0-9]*|[3-9].*|[1-9][0-9]*], AS=:
> >> critic_missing="$critic_missing as")
> >> + [2.1[0-9][0-9]*|2.[2-9][2-9]*|[3-9].*|[1-9][0-9]*], AS=:
> >> critic_missing="$critic_missing as")
> >> AC_CHECK_PROG_VER(LD, $LD, --version,
> >> [GNU ld.* \([0-9][0-9]*\.[0-9.]*\)],
> >> [2.1[0-9][0-9]*|2.[2-9][0-9]*|[3-9].*|[1-9][0-9]*], LD=:
> >> critic_missing="$critic_missing ld")
> >
> > Any change to required versions needs to include an update to install.texi
> > (and the generated INSTALL file). It should also be proposed in a
> > separate thread whose subject describes what is being proposed.
>
> I thought it is already agreed in
> https://sourceware.org/ml/libc-alpha/2014-09/msg00586.html
> But if separate thread is required I can start it.
In general, patch submissions should be minimal (subject to bisectability)
- if pieces can sensibly be separated out, they should be, and each piece
should be given a meaningful subject (which will be the summary line of
the git commit message) describing what that piece does. It's entirely
plausible there are people concerned about a change to build requirements
who aren't concerned about vector functions.
> > Do you need to link libmvec against libm (and if so, I'd expect associated
> > Makefile rules, and maybe a Depend file to ensure the directories are
> > built in the right order)?
>
> Libmvec contains calls to scalar version from libm, but not supposed
> to be used directly.
> Is it ok not to link libmvec against libm in this case?
No. To have proper versioned undefined references, if a library A has an
undefined reference to a function from another library B then A must be
linked against B; otherwise you get an undefined reference without symbol
version specified.
> Is it OK to add configure option enabled by default on x86_64 and
> disabled on unsupported architectures?
I think that would be appropriate.
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libmvec.abilist
> b/sysdeps/unix/sysv/linux/x86_64/64/libmvec.abilist
Unless and until there is a reason for the set of symbols in this library
to differ between -mx32 and -m64, I think the ABI baseline should go
directly in sysdeps/unix/sysv/linux/x86_64/ rather than the 64/
subdirectory.
--
Joseph S. Myers
joseph@codesourcery.com