1 #ifndef BOOST_DETAIL_ATOMIC_GCC_PPC_HPP 2 #define BOOST_DETAIL_ATOMIC_GCC_PPC_HPP 54 #define BOOST_ATOMIC_CHAR_LOCK_FREE 2 55 #define BOOST_ATOMIC_CHAR16_T_LOCK_FREE 2 56 #define BOOST_ATOMIC_CHAR32_T_LOCK_FREE 2 57 #define BOOST_ATOMIC_WCHAR_T_LOCK_FREE 2 58 #define BOOST_ATOMIC_SHORT_LOCK_FREE 2 59 #define BOOST_ATOMIC_INT_LOCK_FREE 2 60 #define BOOST_ATOMIC_LONG_LOCK_FREE 2 61 #define BOOST_ATOMIC_ADDRESS_LOCK_FREE 2 62 #if defined(__powerpc64__) 63 #define BOOST_ATOMIC_LLONG_LOCK_FREE 2 65 #define BOOST_ATOMIC_LLONG_LOCK_FREE 0 67 #define BOOST_ATOMIC_BOOL_LOCK_FREE 2 77 #if !defined(__APPLE__) 79 #define BOOST_ATOMIC_ASM_SLOWPATH_CLEAR \ 88 #define BOOST_ATOMIC_ASM_SLOWPATH_CLEAR \ 105 #if defined(__powerpc64__) 106 __asm__ __volatile__ (
"lwsync" :::
"memory");
110 __asm__ __volatile__ (
"sync" :::
"memory");
122 __asm__ __volatile__ (
"isync");
124 __asm__ __volatile__ (
"" :::
"memory");
134 __asm__ __volatile__ (
"sync");
167 __asm__ __volatile__ (
189 :
"=&b" (original),
"+Z"(
v_)
199 value_type & expected,
215 :
"=&b" (expected),
"=&b" (success),
"+Z"(
v_)
216 :
"b" (expected),
"b" (desired)
228 value_type & expected,
245 :
"=&b" (expected),
"=&b" (success),
"+Z"(
v_)
246 :
"b" (expected),
"b" (desired)
259 value_type original, tmp;
268 :
"=&b" (original),
"=&b" (tmp),
"+Z"(
v_)
278 value_type original, tmp;
287 :
"=&b" (original),
"=&b" (tmp),
"+Z"(
v_)
297 value_type original, tmp;
305 :
"=&b" (original),
"=&b" (tmp),
"+Z"(
v_)
315 value_type original, tmp;
323 :
"=&b" (original),
"=&b" (tmp),
"+Z"(
v_)
333 value_type original, tmp;
341 :
"=&b" (original),
"=&b" (tmp),
"+Z"(
v_)
387 __asm__ __volatile__ (
409 :
"=&b" (original),
"+Z"(
v_)
419 value_type & expected,
436 :
"=&b" (expected),
"=&b" (success),
"+Z"(
v_)
437 :
"b" (expected),
"b" (desired)
449 value_type & expected,
466 :
"=&b" (expected),
"=&b" (success),
"+Z"(
v_)
467 :
"b" (expected),
"b" (desired)
480 value_type original, tmp;
486 "rlwinm %1, %1, 0, 0xff\n" 489 :
"=&b" (original),
"=&b" (tmp),
"+Z"(
v_)
499 value_type original, tmp;
505 "rlwinm %1, %1, 0, 0xff\n" 508 :
"=&b" (original),
"=&b" (tmp),
"+Z"(
v_)
518 value_type original, tmp;
526 :
"=&b" (original),
"=&b" (tmp),
"+Z"(
v_)
536 value_type original, tmp;
544 :
"=&b" (original),
"=&b" (tmp),
"+Z"(
v_)
554 value_type original, tmp;
562 :
"=&b" (original),
"=&b" (tmp),
"+Z"(
v_)
608 __asm__ __volatile__ (
630 :
"=&b" (original),
"+Z"(
v_)
640 value_type & expected,
657 :
"=&b" (expected),
"=&b" (success),
"+Z"(
v_)
658 :
"b" (expected),
"b" (desired)
670 value_type & expected,
687 :
"=&b" (expected),
"=&b" (success),
"+Z"(
v_)
688 :
"b" (expected),
"b" (desired)
701 value_type original, tmp;
710 :
"=&b" (original),
"=&b" (tmp),
"+Z"(
v_)
720 value_type original, tmp;
729 :
"=&b" (original),
"=&b" (tmp),
"+Z"(
v_)
739 value_type original, tmp;
747 :
"=&b" (original),
"=&b" (tmp),
"+Z"(
v_)
757 value_type original, tmp;
765 :
"=&b" (original),
"=&b" (tmp),
"+Z"(
v_)
775 value_type original, tmp;
783 :
"=&b" (original),
"=&b" (tmp),
"+Z"(
v_)
829 __asm__ __volatile__ (
851 :
"=&b" (original),
"+Z"(
v_)
861 value_type & expected,
878 :
"=&b" (expected),
"=&b" (success),
"+Z"(
v_)
879 :
"b" (expected),
"b" (desired)
891 value_type & expected,
908 :
"=&b" (expected),
"=&b" (success),
"+Z"(
v_)
909 :
"b" (expected),
"b" (desired)
922 value_type original, tmp;
928 "rlwinm %1, %1, 0, 0xffff\n" 931 :
"=&b" (original),
"=&b" (tmp),
"+Z"(
v_)
941 value_type original, tmp;
947 "rlwinm %1, %1, 0, 0xffff\n" 950 :
"=&b" (original),
"=&b" (tmp),
"+Z"(
v_)
960 value_type original, tmp;
968 :
"=&b" (original),
"=&b" (tmp),
"+Z"(
v_)
978 value_type original, tmp;
986 :
"=&b" (original),
"=&b" (tmp),
"+Z"(
v_)
996 value_type original, tmp;
1004 :
"=&b" (original),
"=&b" (tmp),
"+Z"(
v_)
1024 template<
typename T,
bool Sign>
1037 const_cast<volatile value_type &
>(
v_) = v;
1044 value_type v =
const_cast<const volatile value_type &
>(
v_);
1045 __asm__ __volatile__ (
1060 value_type original;
1067 :
"=&b" (original),
"+Z"(
v_)
1077 value_type & expected,
1094 :
"=&b" (expected),
"=&b" (success),
"+Z"(
v_)
1095 :
"b" (expected),
"b" (desired)
1107 value_type & expected,
1124 :
"=&b" (expected),
"=&b" (success),
"+Z"(
v_)
1125 :
"b" (expected),
"b" (desired)
1138 value_type original, tmp;
1146 :
"=&b" (original),
"=&b" (tmp),
"+Z"(
v_)
1156 value_type original, tmp;
1164 :
"=&b" (original),
"=&b" (tmp),
"+Z"(
v_)
1174 value_type original, tmp;
1182 :
"=&b" (original),
"=&b" (tmp),
"+Z"(
v_)
1192 value_type original, tmp;
1200 :
"=&b" (original),
"=&b" (tmp),
"+Z"(
v_)
1210 value_type original, tmp;
1218 :
"=&b" (original),
"=&b" (tmp),
"+Z"(
v_)
1238 #if defined(__powerpc64__) 1240 template<
typename T,
bool Sign>
1253 const_cast<volatile value_type &
>(
v_) = v;
1260 value_type v =
const_cast<const volatile value_type &
>(
v_);
1261 __asm__ __volatile__ (
1276 value_type original;
1283 :
"=&b" (original),
"+Z"(
v_)
1293 value_type & expected,
1310 :
"=&b" (expected),
"=&b" (success),
"+Z"(
v_)
1311 :
"b" (expected),
"b" (desired)
1323 value_type & expected,
1340 :
"=&b" (expected),
"=&b" (success),
"+Z"(
v_)
1341 :
"b" (expected),
"b" (desired)
1354 value_type original, tmp;
1362 :
"=&b" (original),
"=&b" (tmp),
"+Z"(
v_)
1372 value_type original, tmp;
1380 :
"=&b" (original),
"=&b" (tmp),
"+Z"(
v_)
1390 value_type original, tmp;
1398 :
"=&b" (original),
"=&b" (tmp),
"+Z"(
v_)
1408 value_type original, tmp;
1416 :
"=&b" (original),
"=&b" (tmp),
"+Z"(
v_)
1426 value_type original, tmp;
1434 :
"=&b" (original),
"=&b" (tmp),
"+Z"(
v_)
1458 #if !defined(__powerpc64__) 1500 value_type original;
1507 :
"=&b" (original),
"+Z"(
v_)
1517 value_type & expected,
1534 :
"=&b" (expected),
"=&b" (success),
"+Z"(
v_)
1535 :
"b" (expected),
"b" (desired)
1547 value_type & expected,
1564 :
"=&b" (expected),
"=&b" (success),
"+Z"(
v_)
1565 :
"b" (expected),
"b" (desired)
1588 template<
typename T,
bool Sign>
1629 value_type original;
1636 :
"=&b" (original),
"+Z"(
v_)
1646 value_type & expected,
1663 :
"=&b" (expected),
"=&b" (success),
"+Z"(
v_)
1664 :
"b" (expected),
"b" (desired)
1676 value_type & expected,
1693 :
"=&b" (expected),
"=&b" (success),
"+Z"(
v_)
1694 :
"b" (expected),
"b" (desired)
1707 v = v *
sizeof(*v_);
1708 value_type original, tmp;
1716 :
"=&b" (original),
"=&b" (tmp),
"+Z"(v_)
1726 v = v *
sizeof(*v_);
1727 value_type original, tmp;
1735 :
"=&b" (original),
"=&b" (tmp),
"+Z"(v_)
1797 value_type original;
1804 :
"=&b" (original),
"+Z"(
v_)
1814 value_type & expected,
1831 :
"=&b" (expected),
"=&b" (success),
"+Z"(
v_)
1832 :
"b" (expected),
"b" (desired)
1844 value_type & expected,
1861 :
"=&b" (expected),
"=&b" (success),
"+Z"(
v_)
1862 :
"b" (expected),
"b" (desired)
1885 template<
typename T,
bool Sign>
1926 value_type original;
1933 :
"=&b" (original),
"+Z"(
v_)
1943 value_type & expected,
1960 :
"=&b" (expected),
"=&b" (success),
"+Z"(
v_)
1961 :
"b" (expected),
"b" (desired)
1973 value_type & expected,
1990 :
"=&b" (expected),
"=&b" (success),
"+Z"(
v_)
1991 :
"b" (expected),
"b" (desired)
2004 v = v *
sizeof(*v_);
2005 value_type original, tmp;
2013 :
"=&b" (original),
"=&b" (tmp),
"+Z"(v_)
2023 v = v *
sizeof(*v_);
2024 value_type original, tmp;
2032 :
"=&b" (original),
"=&b" (tmp),
"+Z"(v_)
2056 template<
typename T,
bool Sign>
2064 memcpy(&
v_, &v,
sizeof(value_type));
2071 storage_type tmp = 0;
2072 memcpy(&tmp, &v,
sizeof(value_type));
2086 __asm__ __volatile__ (
2098 memcpy(&v, &tmp,
sizeof(value_type));
2105 storage_type tmp = 0, original;
2106 memcpy(&tmp, &v,
sizeof(value_type));
2113 :
"=&b" (original),
"+Z"(
v_)
2118 memcpy(&v, &original,
sizeof(value_type));
2124 value_type & expected,
2129 storage_type expected_s = 0, desired_s = 0;
2130 memcpy(&expected_s, &expected,
sizeof(value_type));
2131 memcpy(&desired_s, &desired,
sizeof(value_type));
2145 :
"=&b" (expected_s),
"=&b" (success),
"+Z"(
v_)
2146 :
"b" (expected_s),
"b" (desired_s)
2153 memcpy(&expected, &expected_s,
sizeof(value_type));
2159 value_type & expected,
2164 storage_type expected_s = 0, desired_s = 0;
2165 memcpy(&expected_s, &expected,
sizeof(value_type));
2166 memcpy(&desired_s, &desired,
sizeof(value_type));
2180 :
"=&b" (expected_s),
"=&b" (success),
"+Z"(
v_)
2181 :
"b" (expected_s),
"b" (desired_s)
2188 memcpy(&expected, &expected_s,
sizeof(value_type));
2205 template<
typename T,
bool Sign>
2213 memcpy(&
v_, &v,
sizeof(value_type));
2220 storage_type tmp = 0;
2221 memcpy(&tmp, &v,
sizeof(value_type));
2235 __asm__ __volatile__ (
2247 memcpy(&v, &tmp,
sizeof(value_type));
2254 storage_type tmp = 0, original;
2255 memcpy(&tmp, &v,
sizeof(value_type));
2262 :
"=&b" (original),
"+Z"(
v_)
2267 memcpy(&v, &original,
sizeof(value_type));
2273 value_type & expected,
2278 storage_type expected_s = 0, desired_s = 0;
2279 memcpy(&expected_s, &expected,
sizeof(value_type));
2280 memcpy(&desired_s, &desired,
sizeof(value_type));
2294 :
"=&b" (expected_s),
"=&b" (success),
"+Z"(
v_)
2295 :
"b" (expected_s),
"b" (desired_s)
2302 memcpy(&expected, &expected_s,
sizeof(value_type));
2308 value_type & expected,
2313 storage_type expected_s = 0, desired_s = 0;
2314 memcpy(&expected_s, &expected,
sizeof(value_type));
2315 memcpy(&desired_s, &desired,
sizeof(value_type));
2329 :
"=&b" (expected_s),
"=&b" (success),
"+Z"(
v_)
2330 :
"b" (expected_s),
"b" (desired_s)
2337 memcpy(&expected, &expected_s,
sizeof(value_type));
2354 template<
typename T,
bool Sign>
2362 memcpy(&
v_, &v,
sizeof(value_type));
2369 storage_type tmp = 0;
2370 memcpy(&tmp, &v,
sizeof(value_type));
2384 __asm__ __volatile__ (
2396 memcpy(&v, &tmp,
sizeof(value_type));
2403 storage_type tmp = 0, original;
2404 memcpy(&tmp, &v,
sizeof(value_type));
2411 :
"=&b" (original),
"+Z"(
v_)
2416 memcpy(&v, &original,
sizeof(value_type));
2422 value_type & expected,
2427 storage_type expected_s = 0, desired_s = 0;
2428 memcpy(&expected_s, &expected,
sizeof(value_type));
2429 memcpy(&desired_s, &desired,
sizeof(value_type));
2443 :
"=&b" (expected_s),
"=&b" (success),
"+Z"(
v_)
2444 :
"b" (expected_s),
"b" (desired_s)
2451 memcpy(&expected, &expected_s,
sizeof(value_type));
2457 value_type & expected,
2462 storage_type expected_s = 0, desired_s = 0;
2463 memcpy(&expected_s, &expected,
sizeof(value_type));
2464 memcpy(&desired_s, &desired,
sizeof(value_type));
2478 :
"=&b" (expected_s),
"=&b" (success),
"+Z"(
v_)
2479 :
"b" (expected_s),
"b" (desired_s)
2486 memcpy(&expected, &expected_s,
sizeof(value_type));
2503 #if defined(__powerpc64__) 2505 template<
typename T,
bool Sign>
2513 memcpy(&
v_, &v,
sizeof(value_type));
2521 memcpy(&tmp, &v,
sizeof(value_type));
2535 __asm__ __volatile__ (
2547 memcpy(&v, &tmp,
sizeof(value_type));
2554 storage_type tmp = 0, original;
2555 memcpy(&tmp, &v,
sizeof(value_type));
2562 :
"=&b" (original),
"+Z"(
v_)
2567 memcpy(&v, &original,
sizeof(value_type));
2573 value_type & expected,
2578 storage_type expected_s, desired_s;
2579 memcpy(&expected_s, &expected,
sizeof(value_type));
2580 memcpy(&desired_s, &desired,
sizeof(value_type));
2594 :
"=&b" (expected_s),
"=&b" (success),
"+Z"(
v_)
2595 :
"b" (expected_s),
"b" (desired_s)
2602 memcpy(&expected, &expected_s,
sizeof(value_type));
2608 value_type & expected,
2613 storage_type expected_s, desired_s;
2614 memcpy(&expected_s, &expected,
sizeof(value_type));
2615 memcpy(&desired_s, &desired,
sizeof(value_type));
2629 :
"=&b" (expected_s),
"=&b" (success),
"+Z"(
v_)
2630 :
"b" (expected_s),
"b" (desired_s)
2637 memcpy(&expected, &expected_s,
sizeof(value_type));
2658 #define BOOST_ATOMIC_THREAD_FENCE 2 2664 __asm__ __volatile__ (
"isync" :::
"memory");
2667 #if defined(__powerpc64__) 2668 __asm__ __volatile__ (
"lwsync" :::
"memory");
2673 __asm__ __volatile__ (
"sync" :::
"memory");
2678 #define BOOST_ATOMIC_SIGNAL_FENCE 2 2687 __asm__ __volatile__ (
"" :::
"memory");
bool compare_exchange_weak(value_type &expected, value_type desired, memory_order success_order, memory_order failure_order) volatile
value_type exchange(value_type v, memory_order order=memory_order_seq_cst) volatile
static void ppc_fence_after(memory_order order)
value_type fetch_sub(value_type v, memory_order order=memory_order_seq_cst) volatile
value_type fetch_sub(value_type v, memory_order order=memory_order_seq_cst) volatile
value_type fetch_and(value_type v, memory_order order=memory_order_seq_cst) volatile
bool compare_exchange_strong(value_type &expected, value_type desired, memory_order success_order, memory_order failure_order) volatile
bool compare_exchange_strong(value_type &expected, value_type desired, memory_order, memory_order) volatile
value_type fetch_or(value_type v, memory_order order=memory_order_seq_cst) volatile
value_type fetch_sub(value_type v, memory_order order=memory_order_seq_cst) volatile
bool is_lock_free(void) const volatile
void store(value_type v, memory_order order=memory_order_seq_cst) volatile
bool compare_exchange_strong(value_type &expected, value_type desired, memory_order success_order, memory_order failure_order) volatile
static void atomic_signal_fence(memory_order)
static void atomic_thread_fence(memory_order order)
value_type load(memory_order order=memory_order_seq_cst) const volatile
value_type fetch_add(value_type v, memory_order order=memory_order_seq_cst) volatile
base_atomic(value_type v)
value_type exchange(value_type v, memory_order order=memory_order_seq_cst) volatile
bool is_lock_free(void) const volatile
base_atomic(value_type v)
bool is_lock_free(void) const volatile
bool compare_exchange_strong(value_type &expected, value_type desired, memory_order success_order, memory_order failure_order) volatile
base_atomic(value_type v)
value_type load(memory_order order=memory_order_seq_cst) const volatile
bool compare_exchange_strong(value_type &expected, value_type desired, memory_order success_order, memory_order failure_order) volatile
void store(value_type v, memory_order order=memory_order_seq_cst) volatile
value_type fetch_and(value_type v, memory_order order=memory_order_seq_cst) volatile
value_type load(memory_order order=memory_order_seq_cst) const volatile
bool compare_exchange_weak(value_type &expected, value_type desired, memory_order success_order, memory_order failure_order) volatile
base_atomic(value_type v)
void store(value_type v, memory_order order=memory_order_seq_cst) volatile
static void ppc_fence_after_store(memory_order order)
bool is_lock_free(void) const volatile
void store(value_type v, memory_order order=memory_order_seq_cst) volatile
bool is_lock_free(void) const volatile
value_type fetch_and(value_type v, memory_order order=memory_order_seq_cst) volatile
value_type load(memory_order order=memory_order_seq_cst) const volatile
bool compare_exchange_strong(value_type &expected, value_type desired, memory_order success_order, memory_order failure_order) volatile
#define BOOST_ATOMIC_DECLARE_POINTER_OPERATORS
value_type fetch_add(value_type v, memory_order order=memory_order_seq_cst) volatile
value_type exchange(value_type v, memory_order order=memory_order_seq_cst) volatile
value_type exchange(value_type v, memory_order order=memory_order_seq_cst) volatile
value_type exchange(value_type v, memory_order order=memory_order_seq_cst) volatile
static void ppc_fence_before(memory_order order)
#define BOOST_ATOMIC_ASM_SLOWPATH_CLEAR
value_type exchange(value_type v, memory_order order=memory_order_seq_cst) volatile
value_type fetch_xor(value_type v, memory_order order=memory_order_seq_cst) volatile
value_type fetch_or(value_type v, memory_order order=memory_order_seq_cst) volatile
base_atomic(value_type v)
value_type load(memory_order=memory_order_seq_cst) volatileconst
value_type fetch_and(value_type v, memory_order order=memory_order_seq_cst) volatile
value_type load(memory_order order=memory_order_seq_cst) const volatile
void store(value_type v, memory_order order=memory_order_seq_cst) volatile
bool compare_exchange_weak(value_type &expected, value_type desired, memory_order success_order, memory_order failure_order) volatile
bool compare_exchange_strong(value_type &expected, value_type desired, memory_order success_order, memory_order failure_order) volatile
bool compare_exchange_strong(value_type &expected, value_type desired, memory_order success_order, memory_order failure_order) volatile
value_type fetch_sub(difference_type v, memory_order order=memory_order_seq_cst) volatile
value_type fetch_sub(value_type v, memory_order order=memory_order_seq_cst) volatile
value_type fetch_or(value_type v, memory_order order=memory_order_seq_cst) volatile
value_type load(memory_order order=memory_order_seq_cst) const volatile
#define BOOST_ATOMIC_DECLARE_BASE_OPERATORS
base_atomic(value_type v)
bool compare_exchange_weak(value_type &expected, value_type desired, memory_order success_order, memory_order failure_order) volatile
void store(value_type v, memory_order=memory_order_seq_cst) volatile
ptrdiff_t difference_type
bool compare_exchange_weak(value_type &expected, value_type desired, memory_order success_order, memory_order failure_order) volatile
bool is_lock_free(void) const volatile
value_type fetch_or(value_type v, memory_order order=memory_order_seq_cst) volatile
bool is_lock_free(void) const volatile
bool compare_exchange_weak(value_type &expected, value_type desired, memory_order success_order, memory_order failure_order) volatile
bool compare_exchange_strong(value_type &expected, value_type desired, memory_order success_order, memory_order failure_order) volatile
void store(value_type v, memory_order order=memory_order_seq_cst) volatile
value_type exchange(value_type v, memory_order order=memory_order_seq_cst) volatile
value_type fetch_or(value_type v, memory_order order=memory_order_seq_cst) volatile
value_type fetch_xor(value_type v, memory_order order=memory_order_seq_cst) volatile
value_type fetch_xor(value_type v, memory_order order=memory_order_seq_cst) volatile
bool is_lock_free(void) const volatile
bool compare_exchange_weak(value_type &expected, value_type desired, memory_order success_order, memory_order failure_order) volatile
bool compare_exchange_weak(value_type &expected, value_type desired, memory_order success_order, memory_order failure_order) volatile
void store(value_type v, memory_order order=memory_order_seq_cst) volatile
base_atomic(value_type v)
base_atomic(value_type v)
bool compare_exchange_weak(value_type &expected, value_type desired, memory_order success_order, memory_order failure_order) volatile
base_atomic(value_type v)
value_type fetch_xor(value_type v, memory_order order=memory_order_seq_cst) volatile
value_type load(memory_order order=memory_order_seq_cst) const volatile
bool is_lock_free(void) const volatile
bool compare_exchange_weak(value_type &expected, value_type desired, memory_order success_order, memory_order failure_order) volatile
value_type exchange(value_type v, memory_order order=memory_order_seq_cst) volatile
bool compare_exchange_strong(value_type &expected, value_type desired, memory_order success_order, memory_order failure_order) volatile
bool compare_exchange_weak(value_type &expected, value_type desired, memory_order success_order, memory_order failure_order) volatile
void store(value_type v, memory_order order=memory_order_seq_cst) volatile
value_type exchange(value_type v, memory_order=memory_order_seq_cst) volatile
void store(value_type v, memory_order order=memory_order_seq_cst) volatile
#define BOOST_ATOMIC_DECLARE_INTEGRAL_OPERATORS
bool is_lock_free(void) const volatile
bool is_lock_free(void) const volatile
bool compare_exchange_strong(value_type &expected, value_type desired, memory_order success_order, memory_order failure_order) volatile
value_type load(memory_order order=memory_order_seq_cst) const volatile
value_type load(memory_order order=memory_order_seq_cst) const volatile
value_type fetch_add(value_type v, memory_order order=memory_order_seq_cst) volatile
value_type fetch_add(value_type v, memory_order order=memory_order_seq_cst) volatile
value_type fetch_add(value_type v, memory_order order=memory_order_seq_cst) volatile
value_type fetch_sub(value_type v, memory_order order=memory_order_seq_cst) volatile
value_type exchange(value_type v, memory_order order=memory_order_seq_cst) volatile
value_type load(memory_order order=memory_order_seq_cst) const volatile
base_atomic(value_type v)
void store(value_type v, memory_order order=memory_order_seq_cst) volatile
value_type fetch_add(difference_type v, memory_order order=memory_order_seq_cst) volatile
value_type exchange(value_type v, memory_order order=memory_order_seq_cst) volatile
void operator=(const base_atomic &)
value_type fetch_and(value_type v, memory_order order=memory_order_seq_cst) volatile
value_type fetch_xor(value_type v, memory_order order=memory_order_seq_cst) volatile