11 #ifndef __SYS_MemoryOrder__
12 #define __SYS_MemoryOrder__
18 #if defined(FORCE_NON_SIMD)
19 #define SYSloadFence()
20 #define SYSstoreFence()
21 #define SYSmemoryFence()
23 #if defined(LINUX) && SYS_IS_GCC_GE(3, 4) && defined(__SSE2__)
24 #include <emmintrin.h>
25 #include <xmmintrin.h>
26 #elif defined(LINUX) && SYS_IS_GCC_GE(3, 4) && defined(__SSE__)
27 #include <xmmintrin.h>
28 #define SYSloadFence()
29 #define SYSmemoryFence()
31 #include <emmintrin.h>
32 #include <xmmintrin.h>
33 #elif defined(MBSD_INTEL)
34 #include <emmintrin.h>
35 #include <xmmintrin.h>
39 #define SYSloadFence()
40 #define SYSstoreFence()
41 #define SYSmemoryFence()
109 #ifndef SYSstoreFence
121 #ifndef SYSmemoryFence
constexpr SYS_MemoryOrder SYS_MEMORY_ORDER_SEQ_CST
constexpr SYS_MemoryOrder SYS_MEMORY_ORDER_RELEASE
#define SYS_DEPRECATED_REPLACE(__V__, __R__)
constexpr SYS_MemoryOrder SYS_MEMORY_ORDER_ACQ_REL
constexpr SYS_MemoryOrder SYS_MEMORY_ORDER_RELAXED
Any reordering the compiler or hardware chooses to do is okay.
std::memory_order SYS_MemoryOrder
constexpr SYS_MemoryOrder SYS_MEMORY_ORDER_LOAD
constexpr SYS_MemoryOrder SYS_MEMORY_ORDER_ACQUIRE
constexpr SYS_MemoryOrder SYS_MEMORY_ORDER_STORE