This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH 1/14] [x86_64] Vector math functions (vector cos)
- From: Andrew Senkevich <andrew dot n dot senkevich at gmail dot com>
- To: Joseph Myers <joseph at codesourcery dot com>
- Cc: libc-alpha <libc-alpha at sourceware dot org>
- Date: Wed, 3 Jun 2015 14:55:01 +0300
- Subject: Re: [PATCH 1/14] [x86_64] Vector math functions (vector cos)
- Authentication-results: sourceware.org; auth=none
- References: <CAMXFM3t+v7zYEmvWQxV9aRmJB6Ag2hQgQ56cZJTDy=siRBszDw at mail dot gmail dot com> <alpine dot DEB dot 2 dot 10 dot 1504301541120 dot 23221 at digraph dot polyomino dot org dot uk> <CAMXFM3sVJ6vkEF7RqrrHczJSdF_-gr9Xog-zFcG3rjhOqgqjDw at mail dot gmail dot com> <alpine dot DEB dot 2 dot 10 dot 1505151616460 dot 21212 at digraph dot polyomino dot org dot uk> <CAMXFM3tfZKDJtjhJ1d=LQ=WALJBBx5ABJXoS5ycBORii78FkEg at mail dot gmail dot com> <alpine dot DEB dot 2 dot 10 dot 1505181711240 dot 20209 at digraph dot polyomino dot org dot uk> <CAMXFM3vG=5KVLuG4HJ6StDp13YcpeRLqPkd=3BJhGt1mu5AWPA at mail dot gmail dot com> <alpine dot DEB dot 2 dot 10 dot 1505201529070 dot 23246 at digraph dot polyomino dot org dot uk> <CAMXFM3u57e==ySd8TF7+qFwmrswcT1jqzcN-n_JDPF45+77Z0g at mail dot gmail dot com> <CAMXFM3uuDy3f2hb3Xg+MNmseqjmBFqUF1euRF_g5XW+wo7JSSQ at mail dot gmail dot com> <alpine dot DEB dot 2 dot 10 dot 1505221523570 dot 16611 at digraph dot polyomino dot org dot uk> <CAMXFM3sXNLR3_HPpkUBp_9Ue=-RYZYoidbCwP23Cp9HX_X+t5A at mail dot gmail dot com>
2015-05-25 21:26 GMT+03:00 Andrew Senkevich <andrew.n.senkevich@gmail.com>:
> 2015-05-22 18:31 GMT+03:00 Joseph Myers <joseph@codesourcery.com>:
>> On Thu, 21 May 2015, Andrew Senkevich wrote:
>>
>>> diff --git a/sysdeps/x86_64/fpu/multiarch/Makefile b/sysdeps/x86_64/fpu/multiarch/Makefile
>>> index 12b0526..5ccf97b 100644
>>> --- a/sysdeps/x86_64/fpu/multiarch/Makefile
>>> +++ b/sysdeps/x86_64/fpu/multiarch/Makefile
>>> @@ -51,3 +51,7 @@ CFLAGS-slowexp-avx.c = -msse2avx -DSSE2AVX
>>> CFLAGS-s_tan-avx.c = -msse2avx -DSSE2AVX
>>> endif
>>> endif
>>> +
>>> +ifeq ($(subdir),mathvec)
>>> +libmvec-support += svml_d_cos2_core svml_d_cos8_core
>>> +endif
>>
>> As far as I can tell, if you use --disable-multi-arch, then these files
>> won't be built into libmvec, and nothing else will provide the
>> _ZGVbN2v_cos and _ZGVeN8v_cos symbols. See other multiarch code for
>> examples of how such things are handled - typically, the file outside the
>> multiarch directory implements things for an always-supported architecture
>> variant (in this case, that would be a variant guaranteed to be supported
>> if the given entry point gets called), then, in the multiarch directory,
>> there are the implementations for other variants, and a file with the same
>> name as that outside the multiarch directory, that (a) provides the IFUNC
>> resolver and (b) defines some macros before #including the file in the
>> directory above, so that the basic version of the function gets defined
>> under a different name.
>
> Hi, Joseph, updated patch is attached. Is it ok?
>
> 2015-05-25 Andrew Senkevich <andrew.senkevich@intel.com>
>
> * sysdeps/x86_64/fpu/Makefile: New file.
> * sysdeps/x86_64/fpu/Versions: New file.
> * sysdeps/x86_64/fpu/svml_d_cos_data.S: New file.
> * sysdeps/x86_64/fpu/svml_d_cos_data.h: New file.
> * sysdeps/x86_64/fpu/svml_d_cos2_core.S: New file.
> * sysdeps/x86_64/fpu/svml_d_cos4_core.S: New file.
> * sysdeps/x86_64/fpu/svml_d_cos4_core_avx.S: New file.
> * sysdeps/x86_64/fpu/svml_d_cos8_core.S: New file.
> * sysdeps/x86_64/fpu/svml_d_wrapper_impl.h: New file.
> * sysdeps/x86_64/fpu/multiarch/svml_d_cos2_core.S: New file.
> * sysdeps/x86_64/fpu/multiarch/svml_d_cos2_core_sse4.S: New file.
> * sysdeps/x86_64/fpu/multiarch/svml_d_cos4_core.S: New file.
> * sysdeps/x86_64/fpu/multiarch/svml_d_cos4_core_avx2.S: New file.
> * sysdeps/x86_64/fpu/multiarch/svml_d_cos8_core.S: New file.
> * sysdeps/x86_64/fpu/multiarch/svml_d_cos8_core_avx512.S: New file.
> * sysdeps/x86_64/fpu/multiarch/Makefile (libmvec-sysdep_routines): Added
> build of SSE, AVX2 and AVX512 versions which are IFUNC.
> * sysdeps/x86/fpu/bits/math-vector.h: Added SIMD declaration for cos.
> * math/bits/mathcalls.h: Added cos declaration with __MATHCALL_VEC.
> * sysdeps/x86_64/configure.ac: Options for libmvec build.
> * sysdeps/x86_64/configure: Regenerated.
> * sysdeps/x86_64/sysdep.h (cfi_offset_rel_rsp): New macro.
> * sysdeps/unix/sysv/linux/x86_64/libmvec.abilist: New file.
Ping.
--
WBR,
Andrew