6 #ifndef EASTL_ATOMIC_INTERNAL_ATOMIC_MACROS_H
7 #define EASTL_ATOMIC_INTERNAL_ATOMIC_MACROS_H
9 #if defined(EA_PRAGMA_ONCE_SUPPORTED)
14 #include "atomic_macros_base.h"
16 #include "atomic_macros_fetch_add.h"
17 #include "atomic_macros_fetch_sub.h"
19 #include "atomic_macros_fetch_and.h"
20 #include "atomic_macros_fetch_xor.h"
21 #include "atomic_macros_fetch_or.h"
23 #include "atomic_macros_add_fetch.h"
24 #include "atomic_macros_sub_fetch.h"
26 #include "atomic_macros_and_fetch.h"
27 #include "atomic_macros_xor_fetch.h"
28 #include "atomic_macros_or_fetch.h"
30 #include "atomic_macros_exchange.h"
32 #include "atomic_macros_cmpxchg_weak.h"
33 #include "atomic_macros_cmpxchg_strong.h"
35 #include "atomic_macros_load.h"
36 #include "atomic_macros_store.h"
38 #include "atomic_macros_compiler_barrier.h"
40 #include "atomic_macros_cpu_pause.h"
42 #include "atomic_macros_memory_barrier.h"
44 #include "atomic_macros_signal_fence.h"
46 #include "atomic_macros_thread_fence.h"
52 #if defined(EASTL_COMPILER_ATOMIC_HAS_8BIT) || defined(EASTL_ARCH_ATOMIC_HAS_8BIT)
54 #define EASTL_ATOMIC_HAS_8BIT
59 #if defined(EASTL_COMPILER_ATOMIC_HAS_16BIT) || defined(EASTL_ARCH_ATOMIC_HAS_16BIT)
61 #define EASTL_ATOMIC_HAS_16BIT
66 #if defined(EASTL_COMPILER_ATOMIC_HAS_32BIT) || defined(EASTL_ARCH_ATOMIC_HAS_32BIT)
68 #define EASTL_ATOMIC_HAS_32BIT
73 #if defined(EASTL_COMPILER_ATOMIC_HAS_64BIT) || defined(EASTL_ARCH_ATOMIC_HAS_64BIT)
75 #define EASTL_ATOMIC_HAS_64BIT
80 #if defined(EASTL_COMPILER_ATOMIC_HAS_128BIT) || defined(EASTL_ARCH_ATOMIC_HAS_128BIT)
82 #define EASTL_ATOMIC_HAS_128BIT
90 #if defined(EASTL_ARCH_ATOMIC_FIXED_WIDTH_TYPE_8)
92 #define EASTL_ATOMIC_FIXED_WIDTH_TYPE_8 EASTL_ARCH_ATOMIC_FIXED_WIDTH_TYPE_8
94 #elif defined(EASTL_COMPILER_ATOMIC_FIXED_WIDTH_TYPE_8)
96 #define EASTL_ATOMIC_FIXED_WIDTH_TYPE_8 EASTL_COMPILER_ATOMIC_FIXED_WIDTH_TYPE_8
101 #if defined(EASTL_ARCH_ATOMIC_FIXED_WIDTH_TYPE_16)
103 #define EASTL_ATOMIC_FIXED_WIDTH_TYPE_16 EASTL_ARCH_ATOMIC_FIXED_WIDTH_TYPE_16
105 #elif defined(EASTL_COMPILER_ATOMIC_FIXED_WIDTH_TYPE_16)
107 #define EASTL_ATOMIC_FIXED_WIDTH_TYPE_16 EASTL_COMPILER_ATOMIC_FIXED_WIDTH_TYPE_16
112 #if defined(EASTL_ARCH_ATOMIC_FIXED_WIDTH_TYPE_32)
114 #define EASTL_ATOMIC_FIXED_WIDTH_TYPE_32 EASTL_ARCH_ATOMIC_FIXED_WIDTH_TYPE_32
116 #elif defined(EASTL_COMPILER_ATOMIC_FIXED_WIDTH_TYPE_32)
118 #define EASTL_ATOMIC_FIXED_WIDTH_TYPE_32 EASTL_COMPILER_ATOMIC_FIXED_WIDTH_TYPE_32
123 #if defined(EASTL_ARCH_ATOMIC_FIXED_WIDTH_TYPE_64)
125 #define EASTL_ATOMIC_FIXED_WIDTH_TYPE_64 EASTL_ARCH_ATOMIC_FIXED_WIDTH_TYPE_64
127 #elif defined(EASTL_COMPILER_ATOMIC_FIXED_WIDTH_TYPE_64)
129 #define EASTL_ATOMIC_FIXED_WIDTH_TYPE_64 EASTL_COMPILER_ATOMIC_FIXED_WIDTH_TYPE_64
134 #if defined(EASTL_ARCH_ATOMIC_FIXED_WIDTH_TYPE_128)
136 #define EASTL_ATOMIC_FIXED_WIDTH_TYPE_128 EASTL_ARCH_ATOMIC_FIXED_WIDTH_TYPE_128
138 #elif defined(EASTL_COMPILER_ATOMIC_FIXED_WIDTH_TYPE_128)
140 #define EASTL_ATOMIC_FIXED_WIDTH_TYPE_128 EASTL_COMPILER_ATOMIC_FIXED_WIDTH_TYPE_128