Combination of data tables for x86_64 vector functions sinf, cosf and sincosf.

* sysdeps/x86_64/fpu/Makefile (libmvec-support): Fixed files list.
    * sysdeps/x86_64/fpu/multiarch/svml_s_cosf4_core_sse4.S: Renamed variable
    and included header.
    * sysdeps/x86_64/fpu/multiarch/svml_s_cosf8_core_avx2.S: Likewise.
    * sysdeps/x86_64/fpu/multiarch/svml_s_cosf16_core_avx512.S: Likewise.
    * sysdeps/x86_64/fpu/multiarch/svml_s_sinf4_core_sse4.S: Likewise.
    * sysdeps/x86_64/fpu/multiarch/svml_s_sinf8_core_avx2.S: Likewise.
    * sysdeps/x86_64/fpu/multiarch/svml_s_sinf16_core_avx512.S: Likewise.
    * sysdeps/x86_64/fpu/multiarch/svml_s_sincosf4_core_sse4.S: Likewise.
    * sysdeps/x86_64/fpu/multiarch/svml_s_sincosf8_core_avx2.S: Likewise.
    * sysdeps/x86_64/fpu/multiarch/svml_s_sincosf16_core_avx512.S: Likewise.
    * sysdeps/x86_64/fpu/svml_s_trig_data.S: New file.
    * sysdeps/x86_64/fpu/svml_s_trig_data.h: Likewise.
    * sysdeps/x86_64/fpu/svml_s_cosf_data.S: Removed file.
    * sysdeps/x86_64/fpu/svml_s_cosf_data.h: Likewise.
    * sysdeps/x86_64/fpu/svml_s_sinf_data.S: Likewise.
    * sysdeps/x86_64/fpu/svml_s_sinf_data.h: Likewise.
    * sysdeps/x86_64/fpu/svml_s_sincosf_data.S: Likewise.
    * sysdeps/x86_64/fpu/svml_s_sincosf_data.h: Likewise.
This commit is contained in:
Andrew Senkevich 2015-06-24 17:44:35 +03:00
parent ad39cce0da
commit 36870482d2
19 changed files with 219 additions and 3586 deletions

View File

@ -1,3 +1,25 @@
2015-06-24 Andrew Senkevich <andrew.senkevich@intel.com>
* sysdeps/x86_64/fpu/Makefile (libmvec-support): Fixed files list.
* sysdeps/x86_64/fpu/multiarch/svml_s_cosf4_core_sse4.S: Renamed variable
and included header.
* sysdeps/x86_64/fpu/multiarch/svml_s_cosf8_core_avx2.S: Likewise.
* sysdeps/x86_64/fpu/multiarch/svml_s_cosf16_core_avx512.S: Likewise.
* sysdeps/x86_64/fpu/multiarch/svml_s_sinf4_core_sse4.S: Likewise.
* sysdeps/x86_64/fpu/multiarch/svml_s_sinf8_core_avx2.S: Likewise.
* sysdeps/x86_64/fpu/multiarch/svml_s_sinf16_core_avx512.S: Likewise.
* sysdeps/x86_64/fpu/multiarch/svml_s_sincosf4_core_sse4.S: Likewise.
* sysdeps/x86_64/fpu/multiarch/svml_s_sincosf8_core_avx2.S: Likewise.
* sysdeps/x86_64/fpu/multiarch/svml_s_sincosf16_core_avx512.S: Likewise.
* sysdeps/x86_64/fpu/svml_s_trig_data.S: New file.
* sysdeps/x86_64/fpu/svml_s_trig_data.h: Likewise.
* sysdeps/x86_64/fpu/svml_s_cosf_data.S: Removed file.
* sysdeps/x86_64/fpu/svml_s_cosf_data.h: Likewise.
* sysdeps/x86_64/fpu/svml_s_sinf_data.S: Likewise.
* sysdeps/x86_64/fpu/svml_s_sinf_data.h: Likewise.
* sysdeps/x86_64/fpu/svml_s_sincosf_data.S: Likewise.
* sysdeps/x86_64/fpu/svml_s_sincosf_data.h: Likewise.
2015-06-23 Joseph Myers <joseph@codesourcery.com> 2015-06-23 Joseph Myers <joseph@codesourcery.com>
[BZ #16526] [BZ #16526]

View File

@ -4,9 +4,9 @@ libmvec-support += svml_d_cos2_core svml_d_cos4_core_avx \
svml_d_sin2_core svml_d_sin4_core_avx \ svml_d_sin2_core svml_d_sin4_core_avx \
svml_d_sin4_core svml_d_sin8_core svml_d_trig_data \ svml_d_sin4_core svml_d_sin8_core svml_d_trig_data \
svml_s_cosf4_core svml_s_cosf8_core_avx \ svml_s_cosf4_core svml_s_cosf8_core_avx \
svml_s_cosf8_core svml_s_cosf16_core svml_s_cosf_data \ svml_s_cosf8_core svml_s_cosf16_core svml_s_trig_data \
svml_s_sinf4_core svml_s_sinf8_core_avx \ svml_s_sinf4_core svml_s_sinf8_core_avx \
svml_s_sinf8_core svml_s_sinf16_core svml_s_sinf_data \ svml_s_sinf8_core svml_s_sinf16_core \
svml_d_sincos2_core svml_d_sincos4_core_avx \ svml_d_sincos2_core svml_d_sincos4_core_avx \
svml_d_sincos4_core svml_d_sincos8_core \ svml_d_sincos4_core svml_d_sincos8_core \
svml_d_log2_core svml_d_log4_core_avx svml_d_log4_core \ svml_d_log2_core svml_d_log4_core_avx svml_d_log4_core \
@ -20,8 +20,7 @@ libmvec-support += svml_d_cos2_core svml_d_cos4_core_avx \
svml_d_pow_data svml_s_powf4_core svml_s_powf8_core_avx \ svml_d_pow_data svml_s_powf4_core svml_s_powf8_core_avx \
svml_s_powf8_core svml_s_powf16_core svml_s_powf_data \ svml_s_powf8_core svml_s_powf16_core svml_s_powf_data \
svml_s_sincosf4_core svml_s_sincosf8_core_avx \ svml_s_sincosf4_core svml_s_sincosf8_core_avx \
svml_s_sincosf8_core svml_s_sincosf16_core \ svml_s_sincosf8_core svml_s_sincosf16_core init-arch
svml_s_sincosf_data init-arch
endif endif
# Variables for libmvec tests. # Variables for libmvec tests.

View File

@ -17,7 +17,7 @@
<http://www.gnu.org/licenses/>. */ <http://www.gnu.org/licenses/>. */
#include <sysdep.h> #include <sysdep.h>
#include "svml_s_cosf_data.h" #include "svml_s_trig_data.h"
#include "svml_s_wrapper_impl.h" #include "svml_s_wrapper_impl.h"
.text .text
@ -54,7 +54,7 @@ WRAPPER_IMPL_AVX512 _ZGVdN8v_cosf
cfi_def_cfa_register (%rbp) cfi_def_cfa_register (%rbp)
andq $-64, %rsp andq $-64, %rsp
subq $1280, %rsp subq $1280, %rsp
movq __svml_scos_data@GOTPCREL(%rip), %rdx movq __svml_s_trig_data@GOTPCREL(%rip), %rdx
/* /*
h) Subtract Y*PI from X argument, where PI divided to 4 parts: h) Subtract Y*PI from X argument, where PI divided to 4 parts:
@ -271,7 +271,7 @@ WRAPPER_IMPL_AVX512 _ZGVdN8v_cosf
cfi_def_cfa_register (%rbp) cfi_def_cfa_register (%rbp)
andq $-64, %rsp andq $-64, %rsp
subq $1280, %rsp subq $1280, %rsp
movq __svml_scos_data@GOTPCREL(%rip), %rax movq __svml_s_trig_data@GOTPCREL(%rip), %rax
/* /*
h) Subtract Y*PI from X argument, where PI divided to 4 parts: h) Subtract Y*PI from X argument, where PI divided to 4 parts:

View File

@ -17,7 +17,7 @@
<http://www.gnu.org/licenses/>. */ <http://www.gnu.org/licenses/>. */
#include <sysdep.h> #include <sysdep.h>
#include "svml_s_cosf_data.h" #include "svml_s_trig_data.h"
.text .text
ENTRY (_ZGVbN4v_cosf_sse4) ENTRY (_ZGVbN4v_cosf_sse4)
@ -51,7 +51,7 @@ ENTRY (_ZGVbN4v_cosf_sse4)
andq $-64, %rsp andq $-64, %rsp
subq $320, %rsp subq $320, %rsp
movaps %xmm0, %xmm4 movaps %xmm0, %xmm4
movq __svml_scos_data@GOTPCREL(%rip), %rax movq __svml_s_trig_data@GOTPCREL(%rip), %rax
movups __sHalfPI(%rax), %xmm1 movups __sHalfPI(%rax), %xmm1
movups __sRShifter(%rax), %xmm5 movups __sRShifter(%rax), %xmm5

View File

@ -18,7 +18,7 @@
#include <sysdep.h> #include <sysdep.h>
#include "svml_s_cosf_data.h" #include "svml_s_trig_data.h"
.text .text
ENTRY (_ZGVdN8v_cosf_avx2) ENTRY (_ZGVdN8v_cosf_avx2)
@ -51,7 +51,7 @@ ENTRY (_ZGVdN8v_cosf_avx2)
cfi_def_cfa_register (%rbp) cfi_def_cfa_register (%rbp)
andq $-64, %rsp andq $-64, %rsp
subq $448, %rsp subq $448, %rsp
movq __svml_scos_data@GOTPCREL(%rip), %rax movq __svml_s_trig_data@GOTPCREL(%rip), %rax
vmovaps %ymm0, %ymm2 vmovaps %ymm0, %ymm2
vmovups __sRShifter(%rax), %ymm5 vmovups __sRShifter(%rax), %ymm5
vmovups __sPI1_FMA(%rax), %ymm7 vmovups __sPI1_FMA(%rax), %ymm7

View File

@ -17,7 +17,7 @@
<http://www.gnu.org/licenses/>. */ <http://www.gnu.org/licenses/>. */
#include <sysdep.h> #include <sysdep.h>
#include "svml_s_sincosf_data.h" #include "svml_s_trig_data.h"
#include "svml_s_wrapper_impl.h" #include "svml_s_wrapper_impl.h"
/* /*
@ -60,7 +60,7 @@ WRAPPER_IMPL_AVX512_fFF _ZGVdN8vvv_sincosf
cfi_def_cfa_register (%rbp) cfi_def_cfa_register (%rbp)
andq $-64, %rsp andq $-64, %rsp
subq $1344, %rsp subq $1344, %rsp
movq __svml_ssincos_data@GOTPCREL(%rip), %rax movq __svml_s_trig_data@GOTPCREL(%rip), %rax
vmovaps %zmm0, %zmm2 vmovaps %zmm0, %zmm2
movl $-1, %edx movl $-1, %edx
vmovups __sAbsMask(%rax), %zmm0 vmovups __sAbsMask(%rax), %zmm0
@ -280,7 +280,7 @@ WRAPPER_IMPL_AVX512_fFF _ZGVdN8vvv_sincosf
cfi_def_cfa_register (%rbp) cfi_def_cfa_register (%rbp)
andq $-64, %rsp andq $-64, %rsp
subq $1344, %rsp subq $1344, %rsp
movq __svml_ssincos_data@GOTPCREL(%rip), %rax movq __svml_s_trig_data@GOTPCREL(%rip), %rax
vmovaps %zmm0, %zmm4 vmovaps %zmm0, %zmm4
vmovups __sAbsMask(%rax), %zmm3 vmovups __sAbsMask(%rax), %zmm3
vmovups __sInvPI(%rax), %zmm5 vmovups __sInvPI(%rax), %zmm5

View File

@ -17,7 +17,7 @@
<http://www.gnu.org/licenses/>. */ <http://www.gnu.org/licenses/>. */
#include <sysdep.h> #include <sysdep.h>
#include "svml_s_sincosf_data.h" #include "svml_s_trig_data.h"
.text .text
ENTRY (_ZGVbN4vvv_sincosf_sse4) ENTRY (_ZGVbN4vvv_sincosf_sse4)
@ -56,7 +56,7 @@ ENTRY (_ZGVbN4vvv_sincosf_sse4)
cfi_def_cfa_register (%rbp) cfi_def_cfa_register (%rbp)
andq $-64, %rsp andq $-64, %rsp
subq $320, %rsp subq $320, %rsp
movq __svml_ssincos_data@GOTPCREL(%rip), %rax movq __svml_s_trig_data@GOTPCREL(%rip), %rax
movups %xmm12, 176(%rsp) movups %xmm12, 176(%rsp)
movups %xmm9, 160(%rsp) movups %xmm9, 160(%rsp)
movups __sAbsMask(%rax), %xmm12 movups __sAbsMask(%rax), %xmm12

View File

@ -17,7 +17,7 @@
<http://www.gnu.org/licenses/>. */ <http://www.gnu.org/licenses/>. */
#include <sysdep.h> #include <sysdep.h>
#include "svml_s_sincosf_data.h" #include "svml_s_trig_data.h"
.text .text
ENTRY(_ZGVdN8vvv_sincosf_avx2) ENTRY(_ZGVdN8vvv_sincosf_avx2)
@ -56,7 +56,7 @@ ENTRY(_ZGVdN8vvv_sincosf_avx2)
cfi_def_cfa_register (%rbp) cfi_def_cfa_register (%rbp)
andq $-64, %rsp andq $-64, %rsp
subq $448, %rsp subq $448, %rsp
movq __svml_ssincos_data@GOTPCREL(%rip), %rax movq __svml_s_trig_data@GOTPCREL(%rip), %rax
vmovdqa %ymm0, %ymm5 vmovdqa %ymm0, %ymm5
vmovups %ymm13, 352(%rsp) vmovups %ymm13, 352(%rsp)
vmovups __sAbsMask(%rax), %ymm2 vmovups __sAbsMask(%rax), %ymm2

View File

@ -17,7 +17,7 @@
<http://www.gnu.org/licenses/>. */ <http://www.gnu.org/licenses/>. */
#include <sysdep.h> #include <sysdep.h>
#include "svml_s_sinf_data.h" #include "svml_s_trig_data.h"
#include "svml_s_wrapper_impl.h" #include "svml_s_wrapper_impl.h"
.text .text
@ -55,7 +55,7 @@ WRAPPER_IMPL_AVX512 _ZGVdN8v_sinf
cfi_def_cfa_register (%rbp) cfi_def_cfa_register (%rbp)
andq $-64, %rsp andq $-64, %rsp
subq $1280, %rsp subq $1280, %rsp
movq __svml_ssin_data@GOTPCREL(%rip), %rax movq __svml_s_trig_data@GOTPCREL(%rip), %rax
/* Check for large and special values */ /* Check for large and special values */
movl $-1, %edx movl $-1, %edx
@ -277,7 +277,7 @@ WRAPPER_IMPL_AVX512 _ZGVdN8v_sinf
cfi_def_cfa_register (%rbp) cfi_def_cfa_register (%rbp)
andq $-64, %rsp andq $-64, %rsp
subq $1280, %rsp subq $1280, %rsp
movq __svml_ssin_data@GOTPCREL(%rip), %rax movq __svml_s_trig_data@GOTPCREL(%rip), %rax
/* Check for large and special values */ /* Check for large and special values */
vmovups .L_2il0floatpacket.11(%rip), %zmm14 vmovups .L_2il0floatpacket.11(%rip), %zmm14

View File

@ -18,7 +18,7 @@
#include <sysdep.h> #include <sysdep.h>
#include "svml_s_sinf_data.h" #include "svml_s_trig_data.h"
.text .text
ENTRY(_ZGVbN4v_sinf_sse4) ENTRY(_ZGVbN4v_sinf_sse4)
@ -53,7 +53,7 @@ ENTRY(_ZGVbN4v_sinf_sse4)
andq $-64, %rsp andq $-64, %rsp
subq $320, %rsp subq $320, %rsp
movaps %xmm0, %xmm5 movaps %xmm0, %xmm5
movq __svml_ssin_data@GOTPCREL(%rip), %rax movq __svml_s_trig_data@GOTPCREL(%rip), %rax
movups __sAbsMask(%rax), %xmm2 movups __sAbsMask(%rax), %xmm2
/* b) Remove sign using AND operation */ /* b) Remove sign using AND operation */

View File

@ -17,7 +17,7 @@
<http://www.gnu.org/licenses/>. */ <http://www.gnu.org/licenses/>. */
#include <sysdep.h> #include <sysdep.h>
#include "svml_s_sinf_data.h" #include "svml_s_trig_data.h"
.text .text
ENTRY(_ZGVdN8v_sinf_avx2) ENTRY(_ZGVdN8v_sinf_avx2)
@ -51,7 +51,7 @@ ENTRY(_ZGVdN8v_sinf_avx2)
cfi_def_cfa_register (%rbp) cfi_def_cfa_register (%rbp)
andq $-64, %rsp andq $-64, %rsp
subq $448, %rsp subq $448, %rsp
movq __svml_ssin_data@GOTPCREL(%rip), %rax movq __svml_s_trig_data@GOTPCREL(%rip), %rax
vmovdqa %ymm0, %ymm5 vmovdqa %ymm0, %ymm5
vmovups __sAbsMask(%rax), %ymm3 vmovups __sAbsMask(%rax), %ymm3
vmovups __sInvPI(%rax), %ymm7 vmovups __sInvPI(%rax), %ymm7

File diff suppressed because it is too large Load Diff

View File

@ -1,58 +0,0 @@
/* Offsets for data table for vectorized cosf.
Copyright (C) 2014-2015 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/>. */
#ifndef S_COSF_DATA_H
#define S_COSF_DATA_H
.macro float_vector offset value
.if .-__svml_scos_data != \offset
.err
.endif
.rept 16
.long \value
.endr
.endm
#define __dT 0
#define __sAbsMask 4096
#define __sRangeReductionVal 4160
#define __sRangeVal 4224
#define __sS1 4288
#define __sS2 4352
#define __sC1 4416
#define __sC2 4480
#define __sPI1 4544
#define __sPI2 4608
#define __sPI3 4672
#define __sPI4 4736
#define __sPI1_FMA 4800
#define __sPI2_FMA 4864
#define __sPI3_FMA 4928
#define __sA3 4992
#define __sA5 5056
#define __sA7 5120
#define __sA9 5184
#define __sA5_FMA 5248
#define __sA7_FMA 5312
#define __sA9_FMA 5376
#define __sInvPI 5440
#define __sRShifter 5504
#define __sHalfPI 5568
#define __sOneHalf 5632
#endif

File diff suppressed because it is too large Load Diff

View File

@ -1,61 +0,0 @@
/* Offsets for data table for function sincosf.
Copyright (C) 2014-2015 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/>. */
#ifndef S_SINCOSF_DATA_H
#define S_SINCOSF_DATA_H
#define __dT 0
#define __sAbsMask 4096
#define __sRangeReductionVal 4160
#define __sRangeVal 4224
#define __sS1 4288
#define __sS2 4352
#define __sC1 4416
#define __sC2 4480
#define __iIndexMask 4544
#define __i2pK_1 4608
#define __sSignMask 4672
#define __sPI1 4736
#define __sPI2 4800
#define __sPI3 4864
#define __sPI4 4928
#define __sPI1_FMA 4992
#define __sPI2_FMA 5056
#define __sPI3_FMA 5120
#define __sA3 5184
#define __sA5 5248
#define __sA7 5312
#define __sA9 5376
#define __sA5_FMA 5440
#define __sA7_FMA 5504
#define __sA9_FMA 5568
#define __sInvPI 5632
#define __sRShifter 5696
#define __sHalfPI 5760
#define __sOneHalf 5824
.macro float_vector offset value
.if .-__svml_ssincos_data != \offset
.err
.endif
.rept 16
.long \value
.endr
.endm
#endif

File diff suppressed because it is too large Load Diff

View File

@ -1,54 +0,0 @@
/* Offsets for data table for vector sinf.
Copyright (C) 2014-2015 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/>. */
#ifndef S_SINF_DATA_H
#define S_SINF_DATA_H
/* Offsets for data table */
#define __dT 0
#define __sAbsMask 4096
#define __sRangeReductionVal 4160
#define __sRangeVal 4224
#define __sS1 4288
#define __sS2 4352
#define __sC1 4416
#define __sC2 4480
#define __sPI1 4544
#define __sPI2 4608
#define __sPI3 4672
#define __sPI4 4736
#define __sPI1_FMA 4800
#define __sPI2_FMA 4864
#define __sPI3_FMA 4928
#define __sA3 4992
#define __sA5 5056
#define __sA7 5120
#define __sA9 5184
#define __sInvPI 5248
#define __sRShifter 5312
.macro float_vector offset value
.if .-__svml_ssin_data != \offset
.err
.endif
.rept 16
.long \value
.endr
.endm
#endif

View File

@ -0,0 +1,111 @@
/* Data for function cosf.
Copyright (C) 2014-2015 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/>. */
#include "svml_s_trig_data.h"
.section .rodata, "a"
.align 64
/* Data table for vector implementations of function cosf.
The table may contain polynomial, reduction, lookup coefficients
and other macro_names obtained through different methods
of research and experimental work. */
.globl __svml_s_trig_data
__svml_s_trig_data:
/* General purpose constants:
absolute value mask */
float_vector __sAbsMask 0x7fffffff
/* threshold for out-of-range values */
float_vector __sRangeReductionVal 0x461c4000
/* +INF */
float_vector __sRangeVal 0x7f800000
/* High Accuracy version polynomial coefficients:
S1 = -1.66666666664728165763e-01 */
float_vector __sS1 0xbe2aaaab
/* S2 = 8.33329173045453069014e-03 */
float_vector __sS2 0x3c08885c
/* C1 = -5.00000000000000000000e-01 */
float_vector __sC1 0xbf000000
/* C2 = 4.16638942914469202550e-02 */
float_vector __sC2 0x3d2aaa7c
/* Range reduction PI-based constants:
PI high part */
float_vector __sPI1 0x40490000
/* PI mid part 1 */
float_vector __sPI2 0x3a7da000
/* PI mid part 2 */
float_vector __sPI3 0x34222000
/* PI low part */
float_vector __sPI4 0x2cb4611a
/* PI1, PI2, and PI3 when FMA is available
PI high part (when FMA available) */
float_vector __sPI1_FMA 0x40490fdb
/* PI mid part (when FMA available) */
float_vector __sPI2_FMA 0xb3bbbd2e
/* PI low part (when FMA available) */
float_vector __sPI3_FMA 0xa7772ced
/* Polynomial constants for work w/o FMA, relative error ~ 2^(-26.625) */
float_vector __sA3 0xbe2aaaa6
float_vector __sA5 0x3c08876a
float_vector __sA7 0xb94fb7ff
float_vector __sA9 0x362edef8
/* Polynomial constants, work with FMA, relative error ~ 2^(-26.417) */
float_vector __sA5_FMA 0x3c088768
float_vector __sA7_FMA 0xb94fb6cf
float_vector __sA9_FMA 0x362ec335
/* 1/PI */
float_vector __sInvPI 0x3ea2f983
/* right-shifter constant */
float_vector __sRShifter 0x4b400000
/* PI/2 */
float_vector __sHalfPI 0x3fc90fdb
/* 1/2 */
float_vector __sOneHalf 0x3f000000
/* high accuracy table index mask */
float_vector __iIndexMask 0x000000ff
/* 2^(k-1) */
float_vector __i2pK_1 0x00000040
/* sign field mask */
float_vector __sSignMask 0x80000000
.type __svml_s_trig_data,@object
.size __svml_s_trig_data,.-__svml_s_trig_data

View File

@ -0,0 +1,62 @@
/* Offsets for data table for vectorized sinf, cosf, sincosf.
Copyright (C) 2014-2015 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/>. */
#ifndef S_TRIG_DATA_H
#define S_TRIG_DATA_H
.macro float_vector offset value
.if .-__svml_s_trig_data != \offset
.err
.endif
.rept 16
.long \value
.endr
.endm
#define __sAbsMask 0
#define __sRangeReductionVal 64
#define __sRangeVal 64*2
#define __sS1 64*3
#define __sS2 64*4
#define __sC1 64*5
#define __sC2 64*6
#define __sPI1 64*7
#define __sPI2 64*8
#define __sPI3 64*9
#define __sPI4 64*10
#define __sPI1_FMA 64*11
#define __sPI2_FMA 64*12
#define __sPI3_FMA 64*13
#define __sA3 64*14
#define __sA5 64*15
#define __sA7 64*16
#define __sA9 64*17
#define __sA5_FMA 64*18
#define __sA7_FMA 64*19
#define __sA9_FMA 64*20
#define __sInvPI 64*21
#define __sRShifter 64*22
#define __sHalfPI 64*23
#define __sOneHalf 64*24
#define __iIndexMask 64*25
#define __i2pK_1 64*26
#define __sSignMask 64*27
#define __dT_cosf 64*28
#define __dT 64*92
#endif