Author: jgardou Date: Sat Apr 6 19:13:01 2013 New Revision: 58691
URL: http://svn.reactos.org/svn/reactos?rev=58691&view=rev Log: [CRT] - Add definition and GCC implementation of _mm_setcsr and _mm_getcsr
Modified: trunk/reactos/include/crt/xmmintrin.h
Modified: trunk/reactos/include/crt/xmmintrin.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/crt/xmmintrin.h?rev... ============================================================================== --- trunk/reactos/include/crt/xmmintrin.h [iso-8859-1] (original) +++ trunk/reactos/include/crt/xmmintrin.h [iso-8859-1] Sat Apr 6 19:13:01 2013 @@ -28,6 +28,29 @@ extern __m128 _mm_load_ss(float const*); extern int _mm_cvt_ss2si(__m128);
+#ifdef _MSC_VER +unsigned int _mm_getcsr(void); +#pragma intrinsic(_mm_getcsr) +void _mm_setcsr(unsigned int); +#pragma intrinsic(_mm_setcsr) +#else +/* + * We can't use __builtin_ia32_* functions, + * are they are only available with the -msse2 compiler switch + */ +__INTRIN_INLINE unsigned int _mm_getcsr(void) +{ + unsigned int retval; + __asm__ __volatile__("stmxcsr %0" : "=m"(retval)); + return retval; +} + +__INTRIN_INLINE void _mm_setcsr(unsigned int val) +{ + __asm__ __volatile__("ldmxcsr %0" : : "m"(val)); +} +#endif + /* Alternate names */ #define _mm_cvtss_si32 _mm_cvt_ss2si