Nugget
atomic_macros.h
1 // Copyright (c) Electronic Arts Inc. All rights reserved.
4 
5 
6 #ifndef EASTL_ATOMIC_INTERNAL_ATOMIC_MACROS_H
7 #define EASTL_ATOMIC_INTERNAL_ATOMIC_MACROS_H
8 
9 #if defined(EA_PRAGMA_ONCE_SUPPORTED)
10  #pragma once
11 #endif
12 
13 
14 #include "atomic_macros_base.h"
15 
16 #include "atomic_macros_fetch_add.h"
17 #include "atomic_macros_fetch_sub.h"
18 
19 #include "atomic_macros_fetch_and.h"
20 #include "atomic_macros_fetch_xor.h"
21 #include "atomic_macros_fetch_or.h"
22 
23 #include "atomic_macros_add_fetch.h"
24 #include "atomic_macros_sub_fetch.h"
25 
26 #include "atomic_macros_and_fetch.h"
27 #include "atomic_macros_xor_fetch.h"
28 #include "atomic_macros_or_fetch.h"
29 
30 #include "atomic_macros_exchange.h"
31 
32 #include "atomic_macros_cmpxchg_weak.h"
33 #include "atomic_macros_cmpxchg_strong.h"
34 
35 #include "atomic_macros_load.h"
36 #include "atomic_macros_store.h"
37 
38 #include "atomic_macros_compiler_barrier.h"
39 
40 #include "atomic_macros_cpu_pause.h"
41 
42 #include "atomic_macros_memory_barrier.h"
43 
44 #include "atomic_macros_signal_fence.h"
45 
46 #include "atomic_macros_thread_fence.h"
47 
48 
50 
51 
52 #if defined(EASTL_COMPILER_ATOMIC_HAS_8BIT) || defined(EASTL_ARCH_ATOMIC_HAS_8BIT)
53 
54  #define EASTL_ATOMIC_HAS_8BIT
55 
56 #endif
57 
58 
59 #if defined(EASTL_COMPILER_ATOMIC_HAS_16BIT) || defined(EASTL_ARCH_ATOMIC_HAS_16BIT)
60 
61  #define EASTL_ATOMIC_HAS_16BIT
62 
63 #endif
64 
65 
66 #if defined(EASTL_COMPILER_ATOMIC_HAS_32BIT) || defined(EASTL_ARCH_ATOMIC_HAS_32BIT)
67 
68  #define EASTL_ATOMIC_HAS_32BIT
69 
70 #endif
71 
72 
73 #if defined(EASTL_COMPILER_ATOMIC_HAS_64BIT) || defined(EASTL_ARCH_ATOMIC_HAS_64BIT)
74 
75  #define EASTL_ATOMIC_HAS_64BIT
76 
77 #endif
78 
79 
80 #if defined(EASTL_COMPILER_ATOMIC_HAS_128BIT) || defined(EASTL_ARCH_ATOMIC_HAS_128BIT)
81 
82  #define EASTL_ATOMIC_HAS_128BIT
83 
84 #endif
85 
86 
88 
89 
90 #if defined(EASTL_ARCH_ATOMIC_FIXED_WIDTH_TYPE_8)
91 
92  #define EASTL_ATOMIC_FIXED_WIDTH_TYPE_8 EASTL_ARCH_ATOMIC_FIXED_WIDTH_TYPE_8
93 
94 #elif defined(EASTL_COMPILER_ATOMIC_FIXED_WIDTH_TYPE_8)
95 
96  #define EASTL_ATOMIC_FIXED_WIDTH_TYPE_8 EASTL_COMPILER_ATOMIC_FIXED_WIDTH_TYPE_8
97 
98 #endif
99 
100 
101 #if defined(EASTL_ARCH_ATOMIC_FIXED_WIDTH_TYPE_16)
102 
103  #define EASTL_ATOMIC_FIXED_WIDTH_TYPE_16 EASTL_ARCH_ATOMIC_FIXED_WIDTH_TYPE_16
104 
105 #elif defined(EASTL_COMPILER_ATOMIC_FIXED_WIDTH_TYPE_16)
106 
107  #define EASTL_ATOMIC_FIXED_WIDTH_TYPE_16 EASTL_COMPILER_ATOMIC_FIXED_WIDTH_TYPE_16
108 
109 #endif
110 
111 
112 #if defined(EASTL_ARCH_ATOMIC_FIXED_WIDTH_TYPE_32)
113 
114  #define EASTL_ATOMIC_FIXED_WIDTH_TYPE_32 EASTL_ARCH_ATOMIC_FIXED_WIDTH_TYPE_32
115 
116 #elif defined(EASTL_COMPILER_ATOMIC_FIXED_WIDTH_TYPE_32)
117 
118  #define EASTL_ATOMIC_FIXED_WIDTH_TYPE_32 EASTL_COMPILER_ATOMIC_FIXED_WIDTH_TYPE_32
119 
120 #endif
121 
122 
123 #if defined(EASTL_ARCH_ATOMIC_FIXED_WIDTH_TYPE_64)
124 
125  #define EASTL_ATOMIC_FIXED_WIDTH_TYPE_64 EASTL_ARCH_ATOMIC_FIXED_WIDTH_TYPE_64
126 
127 #elif defined(EASTL_COMPILER_ATOMIC_FIXED_WIDTH_TYPE_64)
128 
129  #define EASTL_ATOMIC_FIXED_WIDTH_TYPE_64 EASTL_COMPILER_ATOMIC_FIXED_WIDTH_TYPE_64
130 
131 #endif
132 
133 
134 #if defined(EASTL_ARCH_ATOMIC_FIXED_WIDTH_TYPE_128)
135 
136  #define EASTL_ATOMIC_FIXED_WIDTH_TYPE_128 EASTL_ARCH_ATOMIC_FIXED_WIDTH_TYPE_128
137 
138 #elif defined(EASTL_COMPILER_ATOMIC_FIXED_WIDTH_TYPE_128)
139 
140  #define EASTL_ATOMIC_FIXED_WIDTH_TYPE_128 EASTL_COMPILER_ATOMIC_FIXED_WIDTH_TYPE_128
141 
142 #endif
143 
144 
145 #endif /* EASTL_ATOMIC_INTERNAL_ATOMIC_MACROS_H */