Commit 6f4afd63 authored by M-HT's avatar M-HT Committed by GitHub

Fix issues related to MXCSR register (#1060)

parent 82be3395
...@@ -262,6 +262,14 @@ enum { ...@@ -262,6 +262,14 @@ enum {
SIMDE_MM_ROUND_TOWARD_ZERO = 0x6000 SIMDE_MM_ROUND_TOWARD_ZERO = 0x6000
#endif #endif
}; };
#if defined(_MM_ROUND_MASK)
# define SIMDE_MM_ROUND_MASK _MM_ROUND_MASK
#else
# define SIMDE_MM_ROUND_MASK (0x6000)
#endif
#if defined(SIMDE_X86_SSE_ENABLE_NATIVE_ALIASES)
#define _MM_ROUND_MASK SIMDE_MM_ROUND_MASK
#endif
#if defined(_MM_FROUND_TO_NEAREST_INT) #if defined(_MM_FROUND_TO_NEAREST_INT)
# define SIMDE_MM_FROUND_TO_NEAREST_INT _MM_FROUND_TO_NEAREST_INT # define SIMDE_MM_FROUND_TO_NEAREST_INT _MM_FROUND_TO_NEAREST_INT
...@@ -429,7 +437,7 @@ enum { ...@@ -429,7 +437,7 @@ enum {
#endif #endif
SIMDE_FUNCTION_ATTRIBUTES SIMDE_FUNCTION_ATTRIBUTES
unsigned int uint32_t
SIMDE_MM_GET_ROUNDING_MODE(void) { SIMDE_MM_GET_ROUNDING_MODE(void) {
#if defined(SIMDE_X86_SSE_NATIVE) #if defined(SIMDE_X86_SSE_NATIVE)
return _MM_GET_ROUNDING_MODE(); return _MM_GET_ROUNDING_MODE();
...@@ -477,7 +485,7 @@ SIMDE_MM_GET_ROUNDING_MODE(void) { ...@@ -477,7 +485,7 @@ SIMDE_MM_GET_ROUNDING_MODE(void) {
SIMDE_FUNCTION_ATTRIBUTES SIMDE_FUNCTION_ATTRIBUTES
void void
SIMDE_MM_SET_ROUNDING_MODE(unsigned int a) { SIMDE_MM_SET_ROUNDING_MODE(uint32_t a) {
#if defined(SIMDE_X86_SSE_NATIVE) #if defined(SIMDE_X86_SSE_NATIVE)
_MM_SET_ROUNDING_MODE(a); _MM_SET_ROUNDING_MODE(a);
#elif defined(SIMDE_HAVE_FENV_H) #elif defined(SIMDE_HAVE_FENV_H)
...@@ -531,7 +539,7 @@ SIMDE_MM_GET_FLUSH_ZERO_MODE (void) { ...@@ -531,7 +539,7 @@ SIMDE_MM_GET_FLUSH_ZERO_MODE (void) {
#endif #endif
} }
#if defined(SIMDE_X86_SSE_ENABLE_NATIVE_ALIASES) #if defined(SIMDE_X86_SSE_ENABLE_NATIVE_ALIASES)
#define _MM_SET_FLUSH_ZERO_MODE(a) SIMDE_MM_SET_FLUSH_ZERO_MODE(a) #define _MM_GET_FLUSH_ZERO_MODE(a) SIMDE_MM_GET_FLUSH_ZERO_MODE(a)
#endif #endif
SIMDE_FUNCTION_ATTRIBUTES SIMDE_FUNCTION_ATTRIBUTES
...@@ -566,7 +574,7 @@ simde_mm_setcsr (uint32_t a) { ...@@ -566,7 +574,7 @@ simde_mm_setcsr (uint32_t a) {
#if defined(SIMDE_X86_SSE_NATIVE) #if defined(SIMDE_X86_SSE_NATIVE)
_mm_setcsr(a); _mm_setcsr(a);
#else #else
SIMDE_MM_SET_ROUNDING_MODE(HEDLEY_STATIC_CAST(unsigned int, a)); SIMDE_MM_SET_ROUNDING_MODE(HEDLEY_STATIC_CAST(uint32_t, a & SIMDE_MM_ROUND_MASK));
#endif #endif
} }
#if defined(SIMDE_X86_SSE_ENABLE_NATIVE_ALIASES) #if defined(SIMDE_X86_SSE_ENABLE_NATIVE_ALIASES)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment