about summary refs log tree commit diff
path: root/sysdeps/x86/fpu/bits/math-vector.h
blob: 9a55e2e54230a63ebfe39fe2d9244ba431d092cc (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
/* Platform-specific SIMD declarations of math functions.
   Copyright (C) 2014-2021 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
   <https://www.gnu.org/licenses/>.  */

#ifndef _MATH_H
# error "Never include <bits/math-vector.h> directly;\
 include <math.h> instead."
#endif

/* Get default empty definitions for simd declarations.  */
#include <bits/libm-simd-decl-stubs.h>

#if defined __x86_64__ && defined __FAST_MATH__
# if defined _OPENMP && _OPENMP >= 201307
/* OpenMP case.  */
#  define __DECL_SIMD_x86_64 _Pragma ("omp declare simd notinbranch")
# elif __GNUC_PREREQ (6,0)
/* W/o OpenMP use GCC 6.* __attribute__ ((__simd__)).  */
#  define __DECL_SIMD_x86_64 __attribute__ ((__simd__ ("notinbranch")))
# endif

# ifdef __DECL_SIMD_x86_64
#  undef __DECL_SIMD_cos
#  define __DECL_SIMD_cos __DECL_SIMD_x86_64
#  undef __DECL_SIMD_cosf
#  define __DECL_SIMD_cosf __DECL_SIMD_x86_64
#  undef __DECL_SIMD_sin
#  define __DECL_SIMD_sin __DECL_SIMD_x86_64
#  undef __DECL_SIMD_sinf
#  define __DECL_SIMD_sinf __DECL_SIMD_x86_64
#  undef __DECL_SIMD_sincos
#  define __DECL_SIMD_sincos __DECL_SIMD_x86_64
#  undef __DECL_SIMD_sincosf
#  define __DECL_SIMD_sincosf __DECL_SIMD_x86_64
#  undef __DECL_SIMD_log
#  define __DECL_SIMD_log __DECL_SIMD_x86_64
#  undef __DECL_SIMD_logf
#  define __DECL_SIMD_logf __DECL_SIMD_x86_64
#  undef __DECL_SIMD_exp
#  define __DECL_SIMD_exp __DECL_SIMD_x86_64
#  undef __DECL_SIMD_expf
#  define __DECL_SIMD_expf __DECL_SIMD_x86_64
#  undef __DECL_SIMD_pow
#  define __DECL_SIMD_pow __DECL_SIMD_x86_64
#  undef __DECL_SIMD_powf
#  define __DECL_SIMD_powf __DECL_SIMD_x86_64
#  undef __DECL_SIMD_acos
#  define __DECL_SIMD_acos __DECL_SIMD_x86_64
#  undef __DECL_SIMD_acosf
#  define __DECL_SIMD_acosf __DECL_SIMD_x86_64
#  undef __DECL_SIMD_atan
#  define __DECL_SIMD_atan __DECL_SIMD_x86_64
#  undef __DECL_SIMD_atanf
#  define __DECL_SIMD_atanf __DECL_SIMD_x86_64
#  undef __DECL_SIMD_asin
#  define __DECL_SIMD_asin __DECL_SIMD_x86_64
#  undef __DECL_SIMD_asinf
#  define __DECL_SIMD_asinf __DECL_SIMD_x86_64
#  undef __DECL_SIMD_hypot
#  define __DECL_SIMD_hypot __DECL_SIMD_x86_64
#  undef __DECL_SIMD_hypotf
#  define __DECL_SIMD_hypotf __DECL_SIMD_x86_64
#  undef __DECL_SIMD_exp2
#  define __DECL_SIMD_exp2 __DECL_SIMD_x86_64
#  undef __DECL_SIMD_exp2f
#  define __DECL_SIMD_exp2f __DECL_SIMD_x86_64
#  undef __DECL_SIMD_exp10
#  define __DECL_SIMD_exp10 __DECL_SIMD_x86_64
#  undef __DECL_SIMD_exp10f
#  define __DECL_SIMD_exp10f __DECL_SIMD_x86_64
#  undef __DECL_SIMD_cosh
#  define __DECL_SIMD_cosh __DECL_SIMD_x86_64
#  undef __DECL_SIMD_coshf
#  define __DECL_SIMD_coshf __DECL_SIMD_x86_64
#  undef __DECL_SIMD_expm1
#  define __DECL_SIMD_expm1 __DECL_SIMD_x86_64
#  undef __DECL_SIMD_expm1f
#  define __DECL_SIMD_expm1f __DECL_SIMD_x86_64
#  undef __DECL_SIMD_sinh
#  define __DECL_SIMD_sinh __DECL_SIMD_x86_64
#  undef __DECL_SIMD_sinhf
#  define __DECL_SIMD_sinhf __DECL_SIMD_x86_64
#  undef __DECL_SIMD_cbrt
#  define __DECL_SIMD_cbrt __DECL_SIMD_x86_64
#  undef __DECL_SIMD_cbrtf
#  define __DECL_SIMD_cbrtf __DECL_SIMD_x86_64
#  undef __DECL_SIMD_atan2
#  define __DECL_SIMD_atan2 __DECL_SIMD_x86_64
#  undef __DECL_SIMD_atan2f
#  define __DECL_SIMD_atan2f __DECL_SIMD_x86_64
#  undef __DECL_SIMD_log10
#  define __DECL_SIMD_log10 __DECL_SIMD_x86_64
#  undef __DECL_SIMD_log10f
#  define __DECL_SIMD_log10f __DECL_SIMD_x86_64
#  undef __DECL_SIMD_log2
#  define __DECL_SIMD_log2 __DECL_SIMD_x86_64
#  undef __DECL_SIMD_log2f
#  define __DECL_SIMD_log2f __DECL_SIMD_x86_64
#  undef __DECL_SIMD_log1p
#  define __DECL_SIMD_log1p __DECL_SIMD_x86_64
#  undef __DECL_SIMD_log1pf
#  define __DECL_SIMD_log1pf __DECL_SIMD_x86_64
#  undef __DECL_SIMD_atanh
#  define __DECL_SIMD_atanh __DECL_SIMD_x86_64
#  undef __DECL_SIMD_atanhf
#  define __DECL_SIMD_atanhf __DECL_SIMD_x86_64
#  undef __DECL_SIMD_acosh
#  define __DECL_SIMD_acosh __DECL_SIMD_x86_64
#  undef __DECL_SIMD_acoshf
#  define __DECL_SIMD_acoshf __DECL_SIMD_x86_64
#  undef __DECL_SIMD_erf
#  define __DECL_SIMD_erf __DECL_SIMD_x86_64
#  undef __DECL_SIMD_erff
#  define __DECL_SIMD_erff __DECL_SIMD_x86_64
#  undef __DECL_SIMD_tanh
#  define __DECL_SIMD_tanh __DECL_SIMD_x86_64
#  undef __DECL_SIMD_tanhf
#  define __DECL_SIMD_tanhf __DECL_SIMD_x86_64
#  undef __DECL_SIMD_asinh
#  define __DECL_SIMD_asinh __DECL_SIMD_x86_64
#  undef __DECL_SIMD_asinhf
#  define __DECL_SIMD_asinhf __DECL_SIMD_x86_64
#  undef __DECL_SIMD_erfc
#  define __DECL_SIMD_erfc __DECL_SIMD_x86_64
#  undef __DECL_SIMD_erfcf
#  define __DECL_SIMD_erfcf __DECL_SIMD_x86_64

# endif
#endif