mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-29 16:21:07 +00:00
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:
parent
ad39cce0da
commit
36870482d2
22
ChangeLog
22
ChangeLog
@ -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>
|
||||
|
||||
[BZ #16526]
|
||||
|
@ -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_sin4_core svml_d_sin8_core svml_d_trig_data \
|
||||
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_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_sincos4_core svml_d_sincos8_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_s_powf8_core svml_s_powf16_core svml_s_powf_data \
|
||||
svml_s_sincosf4_core svml_s_sincosf8_core_avx \
|
||||
svml_s_sincosf8_core svml_s_sincosf16_core \
|
||||
svml_s_sincosf_data init-arch
|
||||
svml_s_sincosf8_core svml_s_sincosf16_core init-arch
|
||||
endif
|
||||
|
||||
# Variables for libmvec tests.
|
||||
|
@ -17,7 +17,7 @@
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <sysdep.h>
|
||||
#include "svml_s_cosf_data.h"
|
||||
#include "svml_s_trig_data.h"
|
||||
#include "svml_s_wrapper_impl.h"
|
||||
|
||||
.text
|
||||
@ -54,7 +54,7 @@ WRAPPER_IMPL_AVX512 _ZGVdN8v_cosf
|
||||
cfi_def_cfa_register (%rbp)
|
||||
andq $-64, %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:
|
||||
@ -271,7 +271,7 @@ WRAPPER_IMPL_AVX512 _ZGVdN8v_cosf
|
||||
cfi_def_cfa_register (%rbp)
|
||||
andq $-64, %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:
|
||||
|
@ -17,7 +17,7 @@
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <sysdep.h>
|
||||
#include "svml_s_cosf_data.h"
|
||||
#include "svml_s_trig_data.h"
|
||||
|
||||
.text
|
||||
ENTRY (_ZGVbN4v_cosf_sse4)
|
||||
@ -51,7 +51,7 @@ ENTRY (_ZGVbN4v_cosf_sse4)
|
||||
andq $-64, %rsp
|
||||
subq $320, %rsp
|
||||
movaps %xmm0, %xmm4
|
||||
movq __svml_scos_data@GOTPCREL(%rip), %rax
|
||||
movq __svml_s_trig_data@GOTPCREL(%rip), %rax
|
||||
movups __sHalfPI(%rax), %xmm1
|
||||
movups __sRShifter(%rax), %xmm5
|
||||
|
||||
|
@ -18,7 +18,7 @@
|
||||
|
||||
|
||||
#include <sysdep.h>
|
||||
#include "svml_s_cosf_data.h"
|
||||
#include "svml_s_trig_data.h"
|
||||
|
||||
.text
|
||||
ENTRY (_ZGVdN8v_cosf_avx2)
|
||||
@ -51,7 +51,7 @@ ENTRY (_ZGVdN8v_cosf_avx2)
|
||||
cfi_def_cfa_register (%rbp)
|
||||
andq $-64, %rsp
|
||||
subq $448, %rsp
|
||||
movq __svml_scos_data@GOTPCREL(%rip), %rax
|
||||
movq __svml_s_trig_data@GOTPCREL(%rip), %rax
|
||||
vmovaps %ymm0, %ymm2
|
||||
vmovups __sRShifter(%rax), %ymm5
|
||||
vmovups __sPI1_FMA(%rax), %ymm7
|
||||
|
@ -17,7 +17,7 @@
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <sysdep.h>
|
||||
#include "svml_s_sincosf_data.h"
|
||||
#include "svml_s_trig_data.h"
|
||||
#include "svml_s_wrapper_impl.h"
|
||||
|
||||
/*
|
||||
@ -60,7 +60,7 @@ WRAPPER_IMPL_AVX512_fFF _ZGVdN8vvv_sincosf
|
||||
cfi_def_cfa_register (%rbp)
|
||||
andq $-64, %rsp
|
||||
subq $1344, %rsp
|
||||
movq __svml_ssincos_data@GOTPCREL(%rip), %rax
|
||||
movq __svml_s_trig_data@GOTPCREL(%rip), %rax
|
||||
vmovaps %zmm0, %zmm2
|
||||
movl $-1, %edx
|
||||
vmovups __sAbsMask(%rax), %zmm0
|
||||
@ -280,7 +280,7 @@ WRAPPER_IMPL_AVX512_fFF _ZGVdN8vvv_sincosf
|
||||
cfi_def_cfa_register (%rbp)
|
||||
andq $-64, %rsp
|
||||
subq $1344, %rsp
|
||||
movq __svml_ssincos_data@GOTPCREL(%rip), %rax
|
||||
movq __svml_s_trig_data@GOTPCREL(%rip), %rax
|
||||
vmovaps %zmm0, %zmm4
|
||||
vmovups __sAbsMask(%rax), %zmm3
|
||||
vmovups __sInvPI(%rax), %zmm5
|
||||
|
@ -17,7 +17,7 @@
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <sysdep.h>
|
||||
#include "svml_s_sincosf_data.h"
|
||||
#include "svml_s_trig_data.h"
|
||||
|
||||
.text
|
||||
ENTRY (_ZGVbN4vvv_sincosf_sse4)
|
||||
@ -56,7 +56,7 @@ ENTRY (_ZGVbN4vvv_sincosf_sse4)
|
||||
cfi_def_cfa_register (%rbp)
|
||||
andq $-64, %rsp
|
||||
subq $320, %rsp
|
||||
movq __svml_ssincos_data@GOTPCREL(%rip), %rax
|
||||
movq __svml_s_trig_data@GOTPCREL(%rip), %rax
|
||||
movups %xmm12, 176(%rsp)
|
||||
movups %xmm9, 160(%rsp)
|
||||
movups __sAbsMask(%rax), %xmm12
|
||||
|
@ -17,7 +17,7 @@
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <sysdep.h>
|
||||
#include "svml_s_sincosf_data.h"
|
||||
#include "svml_s_trig_data.h"
|
||||
|
||||
.text
|
||||
ENTRY(_ZGVdN8vvv_sincosf_avx2)
|
||||
@ -56,7 +56,7 @@ ENTRY(_ZGVdN8vvv_sincosf_avx2)
|
||||
cfi_def_cfa_register (%rbp)
|
||||
andq $-64, %rsp
|
||||
subq $448, %rsp
|
||||
movq __svml_ssincos_data@GOTPCREL(%rip), %rax
|
||||
movq __svml_s_trig_data@GOTPCREL(%rip), %rax
|
||||
vmovdqa %ymm0, %ymm5
|
||||
vmovups %ymm13, 352(%rsp)
|
||||
vmovups __sAbsMask(%rax), %ymm2
|
||||
|
@ -17,7 +17,7 @@
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <sysdep.h>
|
||||
#include "svml_s_sinf_data.h"
|
||||
#include "svml_s_trig_data.h"
|
||||
#include "svml_s_wrapper_impl.h"
|
||||
|
||||
.text
|
||||
@ -55,7 +55,7 @@ WRAPPER_IMPL_AVX512 _ZGVdN8v_sinf
|
||||
cfi_def_cfa_register (%rbp)
|
||||
andq $-64, %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 */
|
||||
movl $-1, %edx
|
||||
@ -277,7 +277,7 @@ WRAPPER_IMPL_AVX512 _ZGVdN8v_sinf
|
||||
cfi_def_cfa_register (%rbp)
|
||||
andq $-64, %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 */
|
||||
vmovups .L_2il0floatpacket.11(%rip), %zmm14
|
||||
|
@ -18,7 +18,7 @@
|
||||
|
||||
|
||||
#include <sysdep.h>
|
||||
#include "svml_s_sinf_data.h"
|
||||
#include "svml_s_trig_data.h"
|
||||
|
||||
.text
|
||||
ENTRY(_ZGVbN4v_sinf_sse4)
|
||||
@ -53,7 +53,7 @@ ENTRY(_ZGVbN4v_sinf_sse4)
|
||||
andq $-64, %rsp
|
||||
subq $320, %rsp
|
||||
movaps %xmm0, %xmm5
|
||||
movq __svml_ssin_data@GOTPCREL(%rip), %rax
|
||||
movq __svml_s_trig_data@GOTPCREL(%rip), %rax
|
||||
movups __sAbsMask(%rax), %xmm2
|
||||
|
||||
/* b) Remove sign using AND operation */
|
||||
|
@ -17,7 +17,7 @@
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <sysdep.h>
|
||||
#include "svml_s_sinf_data.h"
|
||||
#include "svml_s_trig_data.h"
|
||||
|
||||
.text
|
||||
ENTRY(_ZGVdN8v_sinf_avx2)
|
||||
@ -51,7 +51,7 @@ ENTRY(_ZGVdN8v_sinf_avx2)
|
||||
cfi_def_cfa_register (%rbp)
|
||||
andq $-64, %rsp
|
||||
subq $448, %rsp
|
||||
movq __svml_ssin_data@GOTPCREL(%rip), %rax
|
||||
movq __svml_s_trig_data@GOTPCREL(%rip), %rax
|
||||
vmovdqa %ymm0, %ymm5
|
||||
vmovups __sAbsMask(%rax), %ymm3
|
||||
vmovups __sInvPI(%rax), %ymm7
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -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
@ -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
@ -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
|
111
sysdeps/x86_64/fpu/svml_s_trig_data.S
Normal file
111
sysdeps/x86_64/fpu/svml_s_trig_data.S
Normal 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
|
62
sysdeps/x86_64/fpu/svml_s_trig_data.h
Normal file
62
sysdeps/x86_64/fpu/svml_s_trig_data.h
Normal 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
|
Loading…
Reference in New Issue
Block a user