3 // This header should be included AFTER <cds/cxx11_atomic.h> if needed
7 static inline atomics::memory_order convert_to_store_order( atomics::memory_order order )
10 case atomics::memory_order_acquire:
11 case atomics::memory_order_consume:
12 return atomics::memory_order_relaxed;
13 case atomics::memory_order_acq_rel:
14 return atomics::memory_order_release;
20 static inline atomics::memory_order convert_to_load_order( atomics::memory_order order )
23 case atomics::memory_order_release:
24 return atomics::memory_order_relaxed;
25 case atomics::memory_order_acq_rel:
26 return atomics::memory_order_acquire;
32 #if CDS_COMPILER == CDS_COMPILER_INTEL
33 static inline atomics::memory_order convert_to_exchange_order( atomics::memory_order order )
35 return order == atomics::memory_order_consume ? atomics::memory_order_relaxed : order;
38 static inline atomics::memory_order convert_to_exchange_order( atomics::memory_order order )
44 template <typename T, bool Volatile>
48 struct add_volatile<T, false>
54 struct add_volatile<T, true>
56 typedef T volatile type;