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?re…
==============================================================================
--- 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