Nugget
arch_x86_thread_fence.h
1 // Copyright (c) Electronic Arts Inc. All rights reserved.
4 
5 
6 #ifndef EASTL_ATOMIC_INTERNAL_ARCH_X86_THREAD_FENCE_H
7 #define EASTL_ATOMIC_INTERNAL_ARCH_X86_THREAD_FENCE_H
8 
9 #if defined(EA_PRAGMA_ONCE_SUPPORTED)
10  #pragma once
11 #endif
12 
13 
15 //
16 // void EASTL_ARCH_ATOMIC_THREAD_FENCE_*()
17 //
18 #if defined(EA_COMPILER_MSVC)
19 
20  #define EASTL_ARCH_ATOMIC_THREAD_FENCE_RELAXED()
21 
22  #define EASTL_ARCH_ATOMIC_THREAD_FENCE_ACQUIRE() \
23  EASTL_ATOMIC_COMPILER_BARRIER()
24 
25  #define EASTL_ARCH_ATOMIC_THREAD_FENCE_RELEASE() \
26  EASTL_ATOMIC_COMPILER_BARRIER()
27 
28  #define EASTL_ARCH_ATOMIC_THREAD_FENCE_ACQ_REL() \
29  EASTL_ATOMIC_COMPILER_BARRIER()
30 
31 #endif
32 
33 
34 #if defined(EA_COMPILER_MSVC) || defined(__clang__) || defined(EA_COMPILER_GNUC)
35 
36  #define EASTL_ARCH_ATOMIC_THREAD_FENCE_SEQ_CST() \
37  EASTL_ATOMIC_CPU_MB()
38 
39 #endif
40 
41 
42 #endif /* EASTL_ATOMIC_INTERNAL_ARCH_X86_THREAD_FENCE_H */