This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH 1/N] x86_64 vectorization support: vectorized math functions addition to Glibc
- From: "Joseph S. Myers" <joseph at codesourcery dot com>
- To: Jakub Jelinek <jakub at redhat dot com>
- Cc: Andi Kleen <andi at firstfloor dot org>, Rich Felker <dalias at libc dot org>, Matthew Fortune <Matthew dot Fortune at imgtec dot com>, Andrew Senkevich <andrew dot n dot senkevich at gmail dot com>, libc-alpha <libc-alpha at sourceware dot org>, "igor dot zamyatin at intel dot com" <igor dot zamyatin at intel dot com>, "Melik-Adamyan, Areg" <areg dot melik-adamyan at intel dot com>
- Date: Fri, 12 Sep 2014 17:03:06 +0000
- Subject: Re: [PATCH 1/N] x86_64 vectorization support: vectorized math functions addition to Glibc
- Authentication-results: sourceware.org; auth=none
- References: <CAMXFM3t=ppndDUBzHzSus7xyuF5hTaLFZ5b273jD39NtddSvsw at mail dot gmail dot com> <Pine dot LNX dot 4 dot 64 dot 1409101549490 dot 12853 at digraph dot polyomino dot org dot uk> <6D39441BF12EF246A7ABCE6654B0235320F09D65 at LEMAIL01 dot le dot imgtec dot org> <20140911210246 dot GN23797 at brightrain dot aerifal dot cx> <87a9655rnu dot fsf at tassilo dot jf dot intel dot com> <20140912074251 dot GZ17454 at tucnak dot redhat dot com>
On Fri, 12 Sep 2014, Jakub Jelinek wrote:
> Because GCC supports even another flavor, which presumably the patches
> implement. The two you are mentioning are for compatibility with existing
> math libraries. The third one is used by #pragma omp declare simd
> functions and Cilk+ elemental functions. So, to use those you don't
> need any extra gcc support, glibc headers could just add
> #if defined(__OPENMP) && __OPENMP >= 201307
> #pragma omp declare simd
> #endif
> on the prototypes (of course maybe with some clauses if needed).
That's what this patch does - but we need a way for the headers to declare
to GCC which vector ISAs have such versions of a given function available,
in a way that works both for (new GCC, old glibc) (GCC knows about newer
vector ISAs without function versions in that glibc, and mustn't try to
generate calls to functions that glibc doesn't have) and (old GCC, new
glibc) (glibc is declaring availability of vector versions the old GCC
doesn't know how to use, so the references to those vector versions need
to be quietly ignored or conditional on GCC version).
--
Joseph S. Myers
joseph@codesourcery.com