ReactOS 0.4.16-dev-1946-g52006dd
libm_sse2.c File Reference
#include <emmintrin.h>
#include <math.h>
Include dependency graph for libm_sse2.c:

Go to the source code of this file.

Macros

#define __ATTRIBUTE_SSE2__   __attribute__((__target__("sse2")))
 

Functions

__ATTRIBUTE_SSE2__ __m128d __libm_sse2_acos (__m128d Xmm0)
 
__ATTRIBUTE_SSE2__ __m128 __libm_sse2_acosf (__m128 Xmm0)
 
__ATTRIBUTE_SSE2__ __m128d __libm_sse2_asin (__m128d Xmm0)
 
__ATTRIBUTE_SSE2__ __m128 __libm_sse2_asinf (__m128 Xmm0)
 
__ATTRIBUTE_SSE2__ __m128d __libm_sse2_atan (__m128d Xmm0)
 
__ATTRIBUTE_SSE2__ __m128 __libm_sse2_atanf (__m128 Xmm0)
 
__ATTRIBUTE_SSE2__ __m128d __libm_sse2_atan2 (__m128d Xmm0, __m128d Xmm1)
 
__ATTRIBUTE_SSE2__ __m128d __libm_sse2_cos (__m128d Xmm0)
 
__ATTRIBUTE_SSE2__ __m128 __libm_sse2_cosf (__m128 Xmm0)
 
__ATTRIBUTE_SSE2__ __m128d __libm_sse2_exp (__m128d Xmm0)
 
__ATTRIBUTE_SSE2__ __m128 __libm_sse2_expf (__m128 Xmm0)
 
__ATTRIBUTE_SSE2__ __m128d __libm_sse2_log (__m128d Xmm0)
 
__ATTRIBUTE_SSE2__ __m128 __libm_sse2_logf (__m128 Xmm0)
 
__ATTRIBUTE_SSE2__ __m128d __libm_sse2_log10 (__m128d Xmm0)
 
__ATTRIBUTE_SSE2__ __m128 __libm_sse2_log10f (__m128 Xmm0)
 
__ATTRIBUTE_SSE2__ __m128d __libm_sse2_pow (__m128d Xmm0, __m128d Xmm1)
 
__ATTRIBUTE_SSE2__ __m128 __libm_sse2_powf (__m128 Xmm0, __m128 Xmm1)
 
__ATTRIBUTE_SSE2__ __m128d __libm_sse2_sin (__m128d Xmm0)
 
__ATTRIBUTE_SSE2__ __m128 __libm_sse2_sinf (__m128 Xmm0)
 
__ATTRIBUTE_SSE2__ __m128d __libm_sse2_tan (__m128d Xmm0)
 
__ATTRIBUTE_SSE2__ __m128 __libm_sse2_tanf (__m128 Xmm0)
 
__ATTRIBUTE_SSE2__ __m128d _libm_sse2_acos_precise (__m128d Xmm0)
 
__ATTRIBUTE_SSE2__ __m128d _libm_sse2_asin_precise (__m128d Xmm0)
 
__ATTRIBUTE_SSE2__ __m128d _libm_sse2_atan_precise (__m128d Xmm0)
 
__ATTRIBUTE_SSE2__ __m128d _libm_sse2_cos_precise (__m128d Xmm0)
 
__ATTRIBUTE_SSE2__ __m128d _libm_sse2_exp_precise (__m128d Xmm0)
 
__ATTRIBUTE_SSE2__ __m128d _libm_sse2_log_precise (__m128d Xmm0)
 
__ATTRIBUTE_SSE2__ __m128d _libm_sse2_log10_precise (__m128d Xmm0)
 
__ATTRIBUTE_SSE2__ __m128d _libm_sse2_pow_precise (__m128d Xmm0, __m128d Xmm1)
 
__ATTRIBUTE_SSE2__ __m128d _libm_sse2_sin_precise (__m128d Xmm0)
 
__ATTRIBUTE_SSE2__ __m128d _libm_sse2_sqrt_precise (__m128d Xmm0)
 
__ATTRIBUTE_SSE2__ __m128d _libm_sse2_tan_precise (__m128d Xmm0)
 

Macro Definition Documentation

◆ __ATTRIBUTE_SSE2__

#define __ATTRIBUTE_SSE2__   __attribute__((__target__("sse2")))

Definition at line 16 of file libm_sse2.c.

Function Documentation

◆ __libm_sse2_acos()

__ATTRIBUTE_SSE2__ __m128d __libm_sse2_acos ( __m128d  Xmm0)

Definition at line 23 of file libm_sse2.c.

24{
25 double x = _mm_cvtsd_f64(Xmm0);
26 double result = acos(x);
27 return _mm_set_sd(result);
28}
valarray< _Tp > acos(const valarray< _Tp > &__x)
Definition: _valarray.h:901
__m128d _mm_set_sd(double w)
Definition: emmintrin.h:1037
double _mm_cvtsd_f64(__m128d a)
Definition: emmintrin.h:931
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
GLuint64EXT * result
Definition: glext.h:11304

◆ __libm_sse2_acosf()

__ATTRIBUTE_SSE2__ __m128 __libm_sse2_acosf ( __m128  Xmm0)

Definition at line 30 of file libm_sse2.c.

31{
32 __m128d Xmm0d = _mm_cvtss_sd(Xmm0d, Xmm0);
33 double x = _mm_cvtsd_f64(Xmm0d);
34 double result = acos(x);
35 __m128d result128 = _mm_set_sd(result);
36 return _mm_cvtpd_ps(result128);
37}
__m128 _mm_cvtpd_ps(__m128d a)
Definition: emmintrin.h:855
__m128d _mm_cvtss_sd(__m128d a, __m128 b)
Definition: emmintrin.h:900

◆ __libm_sse2_asin()

__ATTRIBUTE_SSE2__ __m128d __libm_sse2_asin ( __m128d  Xmm0)

Definition at line 39 of file libm_sse2.c.

40{
41 double x = _mm_cvtsd_f64(Xmm0);
42 double result = asin(x);
43 return _mm_set_sd(result);
44}
valarray< _Tp > asin(const valarray< _Tp > &__x)
Definition: _valarray.h:910

◆ __libm_sse2_asinf()

__ATTRIBUTE_SSE2__ __m128 __libm_sse2_asinf ( __m128  Xmm0)

Definition at line 46 of file libm_sse2.c.

47{
48 __m128d Xmm0d = _mm_cvtss_sd(Xmm0d, Xmm0);
49 double x = _mm_cvtsd_f64(Xmm0d);
50 double result = asin(x);
51 __m128d result128 = _mm_set_sd(result);
52 return _mm_cvtpd_ps(result128);
53}

◆ __libm_sse2_atan()

__ATTRIBUTE_SSE2__ __m128d __libm_sse2_atan ( __m128d  Xmm0)

Definition at line 55 of file libm_sse2.c.

56{
57 double x = _mm_cvtsd_f64(Xmm0);
58 double result = atan(x);
59 return _mm_set_sd(result);
60}
valarray< _Tp > atan(const valarray< _Tp > &__x)
Definition: _valarray.h:919

◆ __libm_sse2_atan2()

__ATTRIBUTE_SSE2__ __m128d __libm_sse2_atan2 ( __m128d  Xmm0,
__m128d  Xmm1 
)

Definition at line 71 of file libm_sse2.c.

72{
73 double x = _mm_cvtsd_f64(Xmm0);
74 double y = _mm_cvtsd_f64(Xmm1);
75 double result = atan2(x, y);
76 return _mm_set_sd(result);
77}
valarray< _Tp > atan2(const valarray< _Tp > &__x, const valarray< _Tp > &__y)
Definition: _valarray.h:928
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548

◆ __libm_sse2_atanf()

__ATTRIBUTE_SSE2__ __m128 __libm_sse2_atanf ( __m128  Xmm0)

Definition at line 62 of file libm_sse2.c.

63{
64 __m128d Xmm0d = _mm_cvtss_sd(Xmm0d, Xmm0);
65 double x = _mm_cvtsd_f64(Xmm0d);
66 double result = atan(x);
67 __m128d result128 = _mm_set_sd(result);
68 return _mm_cvtpd_ps(result128);
69}

◆ __libm_sse2_cos()

__ATTRIBUTE_SSE2__ __m128d __libm_sse2_cos ( __m128d  Xmm0)

Definition at line 79 of file libm_sse2.c.

80{
81 double x = _mm_cvtsd_f64(Xmm0);
82 double result = cos(x);
83 return _mm_set_sd(result);
84}
_STLP_DECLSPEC complex< float > _STLP_CALL cos(const complex< float > &)

◆ __libm_sse2_cosf()

__ATTRIBUTE_SSE2__ __m128 __libm_sse2_cosf ( __m128  Xmm0)

Definition at line 86 of file libm_sse2.c.

87{
88 __m128d Xmm0d = _mm_cvtss_sd(Xmm0d, Xmm0);
89 double x = _mm_cvtsd_f64(Xmm0d);
90 double result = cos(x);
91 __m128d result128 = _mm_set_sd(result);
92 return _mm_cvtpd_ps(result128);
93}

◆ __libm_sse2_exp()

__ATTRIBUTE_SSE2__ __m128d __libm_sse2_exp ( __m128d  Xmm0)

Definition at line 95 of file libm_sse2.c.

96{
97 double x = _mm_cvtsd_f64(Xmm0);
98 double result = exp(x);
99 return _mm_set_sd(result);
100}
DWORD exp
Definition: msg.c:16058

◆ __libm_sse2_expf()

__ATTRIBUTE_SSE2__ __m128 __libm_sse2_expf ( __m128  Xmm0)

Definition at line 102 of file libm_sse2.c.

103{
104 __m128d Xmm0d = _mm_cvtss_sd(Xmm0d, Xmm0);
105 double x = _mm_cvtsd_f64(Xmm0d);
106 double result = exp(x);
107 __m128d result128 = _mm_set_sd(result);
108 return _mm_cvtpd_ps(result128);
109}

◆ __libm_sse2_log()

__ATTRIBUTE_SSE2__ __m128d __libm_sse2_log ( __m128d  Xmm0)

Definition at line 111 of file libm_sse2.c.

112{
113 double x = _mm_cvtsd_f64(Xmm0);
114 double result = log(x);
115 return _mm_set_sd(result);
116}
#define log(outFile, fmt,...)
Definition: util.h:15

◆ __libm_sse2_log10()

__ATTRIBUTE_SSE2__ __m128d __libm_sse2_log10 ( __m128d  Xmm0)

Definition at line 127 of file libm_sse2.c.

128{
129 double x = _mm_cvtsd_f64(Xmm0);
130 double result = log10(x);
131 return _mm_set_sd(result);
132}
double log10(double x)
Definition: freeldr.c:190

◆ __libm_sse2_log10f()

__ATTRIBUTE_SSE2__ __m128 __libm_sse2_log10f ( __m128  Xmm0)

Definition at line 134 of file libm_sse2.c.

135{
136 __m128d Xmm0d = _mm_cvtss_sd(Xmm0d, Xmm0);
137 double x = _mm_cvtsd_f64(Xmm0d);
138 double result = log10(x);
139 __m128d result128 = _mm_set_sd(result);
140 return _mm_cvtpd_ps(result128);
141}

◆ __libm_sse2_logf()

__ATTRIBUTE_SSE2__ __m128 __libm_sse2_logf ( __m128  Xmm0)

Definition at line 118 of file libm_sse2.c.

119{
120 __m128d Xmm0d = _mm_cvtss_sd(Xmm0d, Xmm0);
121 double x = _mm_cvtsd_f64(Xmm0d);
122 double result = log(x);
123 __m128d result128 = _mm_set_sd(result);
124 return _mm_cvtpd_ps(result128);
125}

◆ __libm_sse2_pow()

__ATTRIBUTE_SSE2__ __m128d __libm_sse2_pow ( __m128d  Xmm0,
__m128d  Xmm1 
)

Definition at line 143 of file libm_sse2.c.

144{
145 double x = _mm_cvtsd_f64(Xmm0);
146 double y = _mm_cvtsd_f64(Xmm1);
147 double result = pow(x, y);
148 return _mm_set_sd(result);
149}
double pow(double x, double y)
Definition: freeldr.c:178

◆ __libm_sse2_powf()

__ATTRIBUTE_SSE2__ __m128 __libm_sse2_powf ( __m128  Xmm0,
__m128  Xmm1 
)

Definition at line 151 of file libm_sse2.c.

152{
153 float x = _mm_cvtss_f32(Xmm0);
154 float y = _mm_cvtss_f32(Xmm1);
155 float result = powf(x, y);
156 return _mm_set_ss(result);
157}
_Check_return_ float __cdecl powf(_In_ float b, _In_ float e)
Definition: math.h:246
float _mm_cvtss_f32(__m128 a)
Definition: xmmintrin.h:921
__m128 _mm_set_ss(float a)
Definition: xmmintrin.h:1000

◆ __libm_sse2_sin()

__ATTRIBUTE_SSE2__ __m128d __libm_sse2_sin ( __m128d  Xmm0)

Definition at line 159 of file libm_sse2.c.

160{
161 double x = _mm_cvtsd_f64(Xmm0);
162 double result = sin(x);
163 return _mm_set_sd(result);
164}
_STLP_DECLSPEC complex< float > _STLP_CALL sin(const complex< float > &)

◆ __libm_sse2_sinf()

__ATTRIBUTE_SSE2__ __m128 __libm_sse2_sinf ( __m128  Xmm0)

Definition at line 166 of file libm_sse2.c.

167{
168 __m128d Xmm0d = _mm_cvtss_sd(Xmm0d, Xmm0);
169 double x = _mm_cvtsd_f64(Xmm0d);
170 double result = sin(x);
171 __m128d result128 = _mm_set_sd(result);
172 return _mm_cvtpd_ps(result128);
173}

◆ __libm_sse2_tan()

__ATTRIBUTE_SSE2__ __m128d __libm_sse2_tan ( __m128d  Xmm0)

Definition at line 175 of file libm_sse2.c.

176{
177 double x = _mm_cvtsd_f64(Xmm0);
178 double result = tan(x);
179 return _mm_set_sd(result);
180}
_STLP_DECLSPEC complex< float > _STLP_CALL tan(const complex< float > &)

◆ __libm_sse2_tanf()

__ATTRIBUTE_SSE2__ __m128 __libm_sse2_tanf ( __m128  Xmm0)

Definition at line 182 of file libm_sse2.c.

183{
184 __m128d Xmm0d = _mm_cvtss_sd(Xmm0d, Xmm0);
185 double x = _mm_cvtsd_f64(Xmm0d);
186 double result = tan(x);
187 __m128d result128 = _mm_set_sd(result);
188 return _mm_cvtpd_ps(result128);
189}

◆ _libm_sse2_acos_precise()

__ATTRIBUTE_SSE2__ __m128d _libm_sse2_acos_precise ( __m128d  Xmm0)

Definition at line 191 of file libm_sse2.c.

192{
193 double x = _mm_cvtsd_f64(Xmm0);
194 double result = acos(x);
195 return _mm_set_sd(result);
196}

◆ _libm_sse2_asin_precise()

__ATTRIBUTE_SSE2__ __m128d _libm_sse2_asin_precise ( __m128d  Xmm0)

Definition at line 198 of file libm_sse2.c.

199{
200 double x = _mm_cvtsd_f64(Xmm0);
201 double result = asin(x);
202 return _mm_set_sd(result);
203}

◆ _libm_sse2_atan_precise()

__ATTRIBUTE_SSE2__ __m128d _libm_sse2_atan_precise ( __m128d  Xmm0)

Definition at line 205 of file libm_sse2.c.

206{
207 double x = _mm_cvtsd_f64(Xmm0);
208 double result = atan(x);
209 return _mm_set_sd(result);
210}

◆ _libm_sse2_cos_precise()

__ATTRIBUTE_SSE2__ __m128d _libm_sse2_cos_precise ( __m128d  Xmm0)

Definition at line 212 of file libm_sse2.c.

213{
214 double x = _mm_cvtsd_f64(Xmm0);
215 double result = cos(x);
216 return _mm_set_sd(result);
217}

◆ _libm_sse2_exp_precise()

__ATTRIBUTE_SSE2__ __m128d _libm_sse2_exp_precise ( __m128d  Xmm0)

Definition at line 219 of file libm_sse2.c.

220{
221 double x = _mm_cvtsd_f64(Xmm0);
222 double result = exp(x);
223 return _mm_set_sd(result);
224}

◆ _libm_sse2_log10_precise()

__ATTRIBUTE_SSE2__ __m128d _libm_sse2_log10_precise ( __m128d  Xmm0)

Definition at line 233 of file libm_sse2.c.

234{
235 double x = _mm_cvtsd_f64(Xmm0);
236 double result = log10(x);
237 return _mm_set_sd(result);
238}

◆ _libm_sse2_log_precise()

__ATTRIBUTE_SSE2__ __m128d _libm_sse2_log_precise ( __m128d  Xmm0)

Definition at line 226 of file libm_sse2.c.

227{
228 double x = _mm_cvtsd_f64(Xmm0);
229 double result = log(x);
230 return _mm_set_sd(result);
231}

◆ _libm_sse2_pow_precise()

__ATTRIBUTE_SSE2__ __m128d _libm_sse2_pow_precise ( __m128d  Xmm0,
__m128d  Xmm1 
)

Definition at line 240 of file libm_sse2.c.

241{
242 double x = _mm_cvtsd_f64(Xmm0);
243 double y = _mm_cvtsd_f64(Xmm1);
244 double result = pow(x, y);
245 return _mm_set_sd(result);
246}

◆ _libm_sse2_sin_precise()

__ATTRIBUTE_SSE2__ __m128d _libm_sse2_sin_precise ( __m128d  Xmm0)

Definition at line 248 of file libm_sse2.c.

249{
250 double x = _mm_cvtsd_f64(Xmm0);
251 double result = sin(x);
252 return _mm_set_sd(result);
253}

◆ _libm_sse2_sqrt_precise()

__ATTRIBUTE_SSE2__ __m128d _libm_sse2_sqrt_precise ( __m128d  Xmm0)

Definition at line 255 of file libm_sse2.c.

256{
257 double x = _mm_cvtsd_f64(Xmm0);
258 double result = sqrt(x);
259 return _mm_set_sd(result);
260}
_STLP_DECLSPEC complex< float > _STLP_CALL sqrt(const complex< float > &)
Definition: complex.cpp:188

◆ _libm_sse2_tan_precise()

__ATTRIBUTE_SSE2__ __m128d _libm_sse2_tan_precise ( __m128d  Xmm0)

Definition at line 262 of file libm_sse2.c.

263{
264 double x = _mm_cvtsd_f64(Xmm0);
265 double result = tan(x);
266 return _mm_set_sd(result);
267}