14 #pragma pack(push,_CRT_PACKING)
15 #pragma warning(push,3)
16 #pragma push_macro("new")
19 #pragma warning (disable: 4100 4390 4793 6326)
21 #define _Compiler_barrier() _ReadWriteBarrier()
24 #define _Memory_barrier() __dmb(_ARM_BARRIER_ISH)
28 #define _Memory_barrier() __dmb(_ARM64_BARRIER_ISH)
32 #define _CONCATX(x, y) x ## y
33 #define _CONCAT(x, y) _CONCATX(x, y)
36 #define ATOMIC_BOOL_LOCK_FREE \
37 (1 <= _ATOMIC_MAXBYTES_LOCK_FREE ? 2 : 0)
38 #define _ATOMIC_CHAR_LOCK_FREE \
39 (1 <= _ATOMIC_MAXBYTES_LOCK_FREE ? 2 : 0)
40 #define _ATOMIC_CHAR16_T_LOCK_FREE \
41 (2 <= _ATOMIC_MAXBYTES_LOCK_FREE ? 2 : 0)
42 #define _ATOMIC_CHAR32_T_LOCK_FREE \
43 (2 <= _ATOMIC_MAXBYTES_LOCK_FREE ? 2 : 0)
44 #define _ATOMIC_WCHAR_T_LOCK_FREE \
45 (_WCHAR_T_SIZE <= _ATOMIC_MAXBYTES_LOCK_FREE ? 2 : 0)
46 #define _ATOMIC_SHORT_LOCK_FREE \
47 (_SHORT_SIZE <= _ATOMIC_MAXBYTES_LOCK_FREE ? 2 : 0)
48 #define _ATOMIC_INT_LOCK_FREE \
49 (_INT_SIZE <= _ATOMIC_MAXBYTES_LOCK_FREE ? 2 : 0)
50 #define _ATOMIC_LONG_LOCK_FREE \
51 (_LONG_SIZE <= _ATOMIC_MAXBYTES_LOCK_FREE ? 2 : 0)
52 #define _ATOMIC_LLONG_LOCK_FREE \
53 (_LONGLONG_SIZE <= _ATOMIC_MAXBYTES_LOCK_FREE ? 2 : 0)
54 #define ATOMIC_POINTER_LOCK_FREE \
55 (_ADDR_SIZE <= _ATOMIC_MAXBYTES_LOCK_FREE ? 2 : 0)
58 #if defined(_M_ARM) || defined(_M_ARM64)
59 #define _INTRIN_RELAXED(x) _CONCAT(x, _nf)
60 #define _INTRIN_ACQUIRE(x) _CONCAT(x, _acq)
61 #define _INTRIN_RELEASE(x) _CONCAT(x, _rel)
62 #define _INTRIN_SEQ_CST(x) x
64 #define _INTRIN_RELAXED(x) x
65 #define _INTRIN_ACQUIRE(x) x
66 #define _INTRIN_RELEASE(x) x
67 #define _INTRIN_SEQ_CST(x) x
71 #pragma push_macro("_InterlockedExchange64")
72 #pragma push_macro("_InterlockedExchangeAdd64")
73 #pragma push_macro("_InterlockedAnd64")
74 #pragma push_macro("_InterlockedOr64")
75 #pragma push_macro("_InterlockedXor64")
77 #undef _InterlockedExchange64
78 #undef _InterlockedExchangeAdd64
79 #undef _InterlockedAnd64
80 #undef _InterlockedOr64
81 #undef _InterlockedXor64
83 #define _InterlockedExchange64 _InterlockedExchange64_INLINE
84 #define _InterlockedExchangeAdd64 _InterlockedExchangeAdd64_INLINE
85 #define _InterlockedAnd64 _InterlockedAnd64_INLINE
86 #define _InterlockedOr64 _InterlockedOr64_INLINE
87 #define _InterlockedXor64 _InterlockedXor64_INLINE
96 }
while (_Oldval != _InterlockedCompareExchange64(_Tgt, _Value, _Oldval));
109 _Newval = _Oldval +
_Value;
110 }
while (_Oldval != _InterlockedCompareExchange64(_Tgt, _Newval, _Oldval));
123 _Newval = _Oldval &
_Value;
124 }
while (_Oldval != _InterlockedCompareExchange64(_Tgt, _Newval, _Oldval));
137 _Newval = _Oldval |
_Value;
138 }
while (_Oldval != _InterlockedCompareExchange64(_Tgt, _Newval, _Oldval));
151 _Newval = _Oldval ^
_Value;
152 }
while (_Oldval != _InterlockedCompareExchange64(_Tgt, _Newval, _Oldval));
166 #define _ATOMIC_FLAG_TEST_AND_SET _Atomic_flag_test_and_set
167 #define _ATOMIC_FLAG_CLEAR _Atomic_flag_clear
169 #define _ATOMIC_THREAD_FENCE _Atomic_thread_fence
170 #define _ATOMIC_SIGNAL_FENCE _Atomic_signal_fence
172 #ifndef _INVALID_MEMORY_ORDER
174 #if _ITERATOR_DEBUG_LEVEL == 2
175 #define _INVALID_MEMORY_ORDER \
176 {_DEBUG_ERROR("Invalid memory_order"); \
177 _SCL_SECURE_INVALID_ARGUMENT}
179 #elif _ITERATOR_DEBUG_LEVEL == 1
180 #define _INVALID_MEMORY_ORDER \
181 _SCL_SECURE_VALIDATE("Invalid memory_order" && 0)
183 #elif _ITERATOR_DEBUG_LEVEL == 0
184 #define _INVALID_MEMORY_ORDER
221 if ((_Order1 < 0) || (6 <= _Order1)
222 || (_Order2 < 0) || (6 <= _Order2))
227 return (_Upper[_Order1][_Order2]);
267 #if defined(_M_ARM) || defined(_M_ARM64)
268 __iso_volatile_store8((
volatile char *)_Tgt, _Value);
278 #if defined(_M_ARM) || defined(_M_ARM64)
280 __iso_volatile_store8((
volatile char *)_Tgt, _Value);
292 #if defined(_M_ARM) || defined(_M_ARM64)
294 __iso_volatile_store8((
volatile char *)_Tgt, _Value);
303 volatile _Uint1_t *_Tgt, _Uint1_t _Value,
memory_order _Order)
331 #if defined(_M_ARM) || defined(_M_ARM64)
332 _Value = __iso_volatile_load8((
volatile char *)_Tgt);
348 #if defined(_M_ARM) || defined(_M_ARM64)
349 _Value = __iso_volatile_load8((
volatile char *)_Tgt);
391 return (
_INTRIN_SEQ_CST(_InterlockedExchange8)((
volatile char *)_Tgt, _Value));
398 return (
_INTRIN_RELAXED(_InterlockedExchange8)((
volatile char *)_Tgt, _Value));
405 return (
_INTRIN_ACQUIRE(_InterlockedExchange8)((
volatile char *)_Tgt, _Value));
412 return (
_INTRIN_RELEASE(_InterlockedExchange8)((
volatile char *)_Tgt, _Value));
416 volatile _Uint1_t *_Tgt, _Uint1_t _Value,
memory_order _Order)
442 _Uint1_t *
_Exp, _Uint1_t _Value)
445 _Uint1_t _Old_exp = *
_Exp;
447 _Uint1_t _Prev =
_INTRIN_SEQ_CST(_InterlockedCompareExchange8)((
volatile char *)_Tgt,
450 if (_Prev == _Old_exp)
460 _Uint1_t *
_Exp, _Uint1_t _Value)
463 _Uint1_t _Old_exp = *
_Exp;
465 _Uint1_t _Prev =
_INTRIN_RELAXED(_InterlockedCompareExchange8)((
volatile char *)_Tgt,
468 if (_Prev == _Old_exp)
478 _Uint1_t *
_Exp, _Uint1_t _Value)
481 _Uint1_t _Old_exp = *
_Exp;
483 _Uint1_t _Prev =
_INTRIN_ACQUIRE(_InterlockedCompareExchange8)((
volatile char *)_Tgt,
486 if (_Prev == _Old_exp)
496 _Uint1_t *
_Exp, _Uint1_t _Value)
499 _Uint1_t _Old_exp = *
_Exp;
501 _Uint1_t _Prev =
_INTRIN_RELEASE(_InterlockedCompareExchange8)((
volatile char *)_Tgt,
504 if (_Prev == _Old_exp)
514 volatile _Uint1_t *_Tgt, _Uint1_t *
_Exp, _Uint1_t _Value,
542 volatile _Uint1_t *_Tgt, _Uint1_t *
_Exp, _Uint1_t _Value,
556 return (
_INTRIN_SEQ_CST(_InterlockedExchangeAdd8)((
volatile char *)_Tgt, _Value));
563 return (
_INTRIN_RELAXED(_InterlockedExchangeAdd8)((
volatile char *)_Tgt, _Value));
570 return (
_INTRIN_ACQUIRE(_InterlockedExchangeAdd8)((
volatile char *)_Tgt, _Value));
577 return (
_INTRIN_RELEASE(_InterlockedExchangeAdd8)((
volatile char *)_Tgt, _Value));
581 volatile _Uint1_t *_Tgt, _Uint1_t _Value,
memory_order _Order)
606 volatile _Uint1_t *_Tgt, _Uint1_t _Value,
memory_order _Order)
616 return (
_INTRIN_SEQ_CST(_InterlockedAnd8)((
volatile char *)_Tgt, _Value));
623 return (
_INTRIN_RELAXED(_InterlockedAnd8)((
volatile char *)_Tgt, _Value));
630 return (
_INTRIN_ACQUIRE(_InterlockedAnd8)((
volatile char *)_Tgt, _Value));
637 return (
_INTRIN_RELEASE(_InterlockedAnd8)((
volatile char *)_Tgt, _Value));
641 volatile _Uint1_t *_Tgt, _Uint1_t _Value,
memory_order _Order)
670 return (
_INTRIN_SEQ_CST(_InterlockedOr8)((
volatile char *)_Tgt, _Value));
677 return (
_INTRIN_RELAXED(_InterlockedOr8)((
volatile char *)_Tgt, _Value));
684 return (
_INTRIN_ACQUIRE(_InterlockedOr8)((
volatile char *)_Tgt, _Value));
691 return (
_INTRIN_RELEASE(_InterlockedOr8)((
volatile char *)_Tgt, _Value));
695 volatile _Uint1_t *_Tgt, _Uint1_t _Value,
memory_order _Order)
724 return (
_INTRIN_SEQ_CST(_InterlockedXor8)((
volatile char *)_Tgt, _Value));
731 return (
_INTRIN_RELAXED(_InterlockedXor8)((
volatile char *)_Tgt, _Value));
738 return (
_INTRIN_ACQUIRE(_InterlockedXor8)((
volatile char *)_Tgt, _Value));
745 return (
_INTRIN_RELEASE(_InterlockedXor8)((
volatile char *)_Tgt, _Value));
749 volatile _Uint1_t *_Tgt, _Uint1_t _Value,
memory_order _Order)
777 #if defined(_M_ARM) || defined(_M_ARM64)
778 __iso_volatile_store16((
volatile short *)_Tgt, _Value);
788 #if defined(_M_ARM) || defined(_M_ARM64)
790 __iso_volatile_store16((
volatile short *)_Tgt, _Value);
802 #if defined(_M_ARM) || defined(_M_ARM64)
804 __iso_volatile_store16((
volatile short *)_Tgt, _Value);
808 _INTRIN_SEQ_CST(_InterlockedExchange16)((
volatile short *)_Tgt, _Value);
813 volatile _Uint2_t *_Tgt, _Uint2_t _Value,
memory_order _Order)
841 #if defined(_M_ARM) || defined(_M_ARM64)
842 _Value = __iso_volatile_load16((
volatile short *)_Tgt);
858 #if defined(_M_ARM) || defined(_M_ARM64)
859 _Value = __iso_volatile_load16((
volatile short *)_Tgt);
901 return (
_INTRIN_SEQ_CST(_InterlockedExchange16)((
volatile short *)_Tgt, _Value));
908 return (
_INTRIN_RELAXED(_InterlockedExchange16)((
volatile short *)_Tgt, _Value));
915 return (
_INTRIN_ACQUIRE(_InterlockedExchange16)((
volatile short *)_Tgt, _Value));
922 return (
_INTRIN_RELEASE(_InterlockedExchange16)((
volatile short *)_Tgt, _Value));
926 volatile _Uint2_t *_Tgt, _Uint2_t _Value,
memory_order _Order)
952 _Uint2_t *
_Exp, _Uint2_t _Value)
955 _Uint2_t _Old_exp = *
_Exp;
957 _Uint2_t _Prev =
_INTRIN_SEQ_CST(_InterlockedCompareExchange16)((
volatile short *)_Tgt,
960 if (_Prev == _Old_exp)
970 _Uint2_t *
_Exp, _Uint2_t _Value)
973 _Uint2_t _Old_exp = *
_Exp;
975 _Uint2_t _Prev =
_INTRIN_RELAXED(_InterlockedCompareExchange16)((
volatile short *)_Tgt,
978 if (_Prev == _Old_exp)
988 _Uint2_t *
_Exp, _Uint2_t _Value)
991 _Uint2_t _Old_exp = *
_Exp;
993 _Uint2_t _Prev =
_INTRIN_ACQUIRE(_InterlockedCompareExchange16)((
volatile short *)_Tgt,
996 if (_Prev == _Old_exp)
1006 _Uint2_t *
_Exp, _Uint2_t _Value)
1009 _Uint2_t _Old_exp = *
_Exp;
1011 _Uint2_t _Prev =
_INTRIN_RELEASE(_InterlockedCompareExchange16)((
volatile short *)_Tgt,
1014 if (_Prev == _Old_exp)
1024 volatile _Uint2_t *_Tgt, _Uint2_t *
_Exp, _Uint2_t _Value,
1052 volatile _Uint2_t *_Tgt, _Uint2_t *
_Exp, _Uint2_t _Value,
1066 return (
_INTRIN_SEQ_CST(_InterlockedExchangeAdd16)((
volatile short *)_Tgt, _Value));
1073 return (
_INTRIN_RELAXED(_InterlockedExchangeAdd16)((
volatile short *)_Tgt, _Value));
1080 return (
_INTRIN_ACQUIRE(_InterlockedExchangeAdd16)((
volatile short *)_Tgt, _Value));
1087 return (
_INTRIN_RELEASE(_InterlockedExchangeAdd16)((
volatile short *)_Tgt, _Value));
1091 volatile _Uint2_t *_Tgt, _Uint2_t _Value,
memory_order _Order)
1116 volatile _Uint2_t *_Tgt, _Uint2_t _Value,
memory_order _Order)
1126 return (
_INTRIN_SEQ_CST(_InterlockedAnd16)((
volatile short *)_Tgt, _Value));
1133 return (
_INTRIN_RELAXED(_InterlockedAnd16)((
volatile short *)_Tgt, _Value));
1140 return (
_INTRIN_ACQUIRE(_InterlockedAnd16)((
volatile short *)_Tgt, _Value));
1147 return (
_INTRIN_RELEASE(_InterlockedAnd16)((
volatile short *)_Tgt, _Value));
1151 volatile _Uint2_t *_Tgt, _Uint2_t _Value,
memory_order _Order)
1180 return (
_INTRIN_SEQ_CST(_InterlockedOr16)((
volatile short *)_Tgt, _Value));
1187 return (
_INTRIN_RELAXED(_InterlockedOr16)((
volatile short *)_Tgt, _Value));
1194 return (
_INTRIN_ACQUIRE(_InterlockedOr16)((
volatile short *)_Tgt, _Value));
1201 return (
_INTRIN_RELEASE(_InterlockedOr16)((
volatile short *)_Tgt, _Value));
1205 volatile _Uint2_t *_Tgt, _Uint2_t _Value,
memory_order _Order)
1234 return (
_INTRIN_SEQ_CST(_InterlockedXor16)((
volatile short *)_Tgt, _Value));
1241 return (
_INTRIN_RELAXED(_InterlockedXor16)((
volatile short *)_Tgt, _Value));
1248 return (
_INTRIN_ACQUIRE(_InterlockedXor16)((
volatile short *)_Tgt, _Value));
1255 return (
_INTRIN_RELEASE(_InterlockedXor16)((
volatile short *)_Tgt, _Value));
1259 volatile _Uint2_t *_Tgt, _Uint2_t _Value,
memory_order _Order)
1287 #if defined(_M_ARM) || defined(_M_ARM64)
1288 __iso_volatile_store32((
volatile int *)_Tgt, _Value);
1298 #if defined(_M_ARM) || defined(_M_ARM64)
1300 __iso_volatile_store32((
volatile int *)_Tgt, _Value);
1312 #if defined(_M_ARM) || defined(_M_ARM64)
1314 __iso_volatile_store32((
volatile int *)_Tgt, _Value);
1351 #if defined(_M_ARM) || defined(_M_ARM64)
1352 _Value = __iso_volatile_load32((
volatile int *)_Tgt);
1368 #if defined(_M_ARM) || defined(_M_ARM64)
1369 _Value = __iso_volatile_load32((
volatile int *)_Tgt);
1411 return (
_INTRIN_SEQ_CST(_InterlockedExchange)((
volatile long *)_Tgt, _Value));
1418 return (
_INTRIN_RELAXED(_InterlockedExchange)((
volatile long *)_Tgt, _Value));
1425 return (
_INTRIN_ACQUIRE(_InterlockedExchange)((
volatile long *)_Tgt, _Value));
1432 return (
_INTRIN_RELEASE(_InterlockedExchange)((
volatile long *)_Tgt, _Value));
1470 if (_Prev == _Old_exp)
1488 if (_Prev == _Old_exp)
1506 if (_Prev == _Old_exp)
1524 if (_Prev == _Old_exp)
1576 return (
_INTRIN_SEQ_CST(_InterlockedExchangeAdd)((
volatile long *)_Tgt, _Value));
1583 return (
_INTRIN_RELAXED(_InterlockedExchangeAdd)((
volatile long *)_Tgt, _Value));
1590 return (
_INTRIN_ACQUIRE(_InterlockedExchangeAdd)((
volatile long *)_Tgt, _Value));
1597 return (
_INTRIN_RELEASE(_InterlockedExchangeAdd)((
volatile long *)_Tgt, _Value));
1636 return (
_INTRIN_SEQ_CST(_InterlockedAnd)((
volatile long *)_Tgt, _Value));
1643 return (
_INTRIN_RELAXED(_InterlockedAnd)((
volatile long *)_Tgt, _Value));
1650 return (
_INTRIN_ACQUIRE(_InterlockedAnd)((
volatile long *)_Tgt, _Value));
1657 return (
_INTRIN_RELEASE(_InterlockedAnd)((
volatile long *)_Tgt, _Value));
1690 return (
_INTRIN_SEQ_CST(_InterlockedOr)((
volatile long *)_Tgt, _Value));
1697 return (
_INTRIN_RELAXED(_InterlockedOr)((
volatile long *)_Tgt, _Value));
1704 return (
_INTRIN_ACQUIRE(_InterlockedOr)((
volatile long *)_Tgt, _Value));
1711 return (
_INTRIN_RELEASE(_InterlockedOr)((
volatile long *)_Tgt, _Value));
1744 return (
_INTRIN_SEQ_CST(_InterlockedXor)((
volatile long *)_Tgt, _Value));
1751 return (
_INTRIN_RELAXED(_InterlockedXor)((
volatile long *)_Tgt, _Value));
1758 return (
_INTRIN_ACQUIRE(_InterlockedXor)((
volatile long *)_Tgt, _Value));
1765 return (
_INTRIN_RELEASE(_InterlockedXor)((
volatile long *)_Tgt, _Value));
1800 #elif defined(_M_ARM64)
1801 __iso_volatile_store64((
volatile _LONGLONG *)_Tgt, _Value);
1815 #elif defined(_M_ARM64)
1817 __iso_volatile_store64((
volatile _LONGLONG *)_Tgt, _Value);
1828 #if defined(_M_ARM64)
1830 __iso_volatile_store64((
volatile _LONGLONG *)_Tgt, _Value);
1839 volatile _Uint8_t *_Tgt, _Uint8_t _Value,
memory_order _Order)
1871 #elif defined(_M_ARM)
1872 _Value = __ldrexd((
volatile _LONGLONG *)_Tgt);
1875 #elif defined(_M_ARM64)
1876 _Value = __iso_volatile_load64((
volatile _LONGLONG *)_Tgt);
1880 _Value = _InterlockedOr64((
volatile _LONGLONG *)_Tgt, 0);
1894 #elif defined(_M_ARM)
1895 _Value = __ldrexd((
volatile _LONGLONG *)_Tgt);
1897 #elif defined(_M_ARM64)
1898 _Value = __iso_volatile_load64((
volatile _LONGLONG *)_Tgt);
1901 _Value = _InterlockedOr64((
volatile _LONGLONG *)_Tgt, 0);
1965 volatile _Uint8_t *_Tgt, _Uint8_t _Value,
memory_order _Order)
1991 _Uint8_t *
_Exp, _Uint8_t _Value)
1994 _Uint8_t _Old_exp = *
_Exp;
1999 if (_Prev == _Old_exp)
2009 _Uint8_t *
_Exp, _Uint8_t _Value)
2012 _Uint8_t _Old_exp = *
_Exp;
2017 if (_Prev == _Old_exp)
2027 _Uint8_t *
_Exp, _Uint8_t _Value)
2030 _Uint8_t _Old_exp = *
_Exp;
2035 if (_Prev == _Old_exp)
2045 _Uint8_t *
_Exp, _Uint8_t _Value)
2048 _Uint8_t _Old_exp = *
_Exp;
2053 if (_Prev == _Old_exp)
2063 volatile _Uint8_t *_Tgt, _Uint8_t *
_Exp, _Uint8_t _Value,
2091 volatile _Uint8_t *_Tgt, _Uint8_t *
_Exp, _Uint8_t _Value,
2130 volatile _Uint8_t *_Tgt, _Uint8_t _Value,
memory_order _Order)
2155 volatile _Uint8_t *_Tgt, _Uint8_t _Value,
memory_order _Order)
2190 volatile _Uint8_t *_Tgt, _Uint8_t _Value,
memory_order _Order)
2244 volatile _Uint8_t *_Tgt, _Uint8_t _Value,
memory_order _Order)
2298 volatile _Uint8_t *_Tgt, _Uint8_t _Value,
memory_order _Order)
2351 "Unexpected _Atomic_flag_t size");
2369 #if defined(_M_ARM) || defined(_M_ARM64)
2391 #if defined(_M_ARM) || defined(_M_ARM64)
2392 #define _YIELD_PROCESSOR __yield()
2395 #define _YIELD_PROCESSOR
2420 volatile void *_Tgt,
volatile const void *_Src,
2424 _CSTD memcpy((
void *)_Tgt, (
void *)_Src, _Size);
2430 volatile void *_Tgt,
volatile void *_Src,
2433 unsigned char *
_Left = (
unsigned char *)_Tgt;
2434 unsigned char *
_Right = (
unsigned char *)_Src;
2439 unsigned char _Tmp = *
_Left;
2448 volatile void *_Tgt,
volatile void *
_Exp,
const volatile void *_Src,
2454 _Result =
_CSTD memcmp((
const void *)_Tgt, (
const void *)_Exp, _Size) == 0;
2456 _CSTD memcpy((
void *)_Tgt, (
void *)_Src, _Size);
2458 _CSTD memcpy((
void *)_Exp, (
void *)_Tgt, _Size);
2465 volatile void *_Tgt,
volatile void *
_Exp,
const volatile void *_Src,
2493 #if _USE_INTERLOCKED_REFCOUNTING == 0
2534 &_Counter, &_Expected, _Expected + 1,
2547 #if defined(_M_IX86)
2548 #pragma pop_macro("_InterlockedExchange64")
2549 #pragma pop_macro("_InterlockedExchangeAdd64")
2550 #pragma pop_macro("_InterlockedAnd64")
2551 #pragma pop_macro("_InterlockedOr64")
2552 #pragma pop_macro("_InterlockedXor64")
2555 #pragma pop_macro("new")
2556 #pragma warning(pop)
int _Atomic_compare_exchange_strong_1(volatile _Uint1_t *_Tgt, _Uint1_t *_Exp, _Uint1_t _Value, memory_order _Order1, memory_order _Order2)
Definition: xatomic.h:513
_Uint1_t _Atomic_fetch_add_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value, memory_order _Order)
Definition: xatomic.h:580
void _Atomic_store_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value, memory_order _Order)
Definition: xatomic.h:1838
_Uint1_t _Fetch_and_relaxed_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:619
_Uint4_t _Fetch_or_relaxed_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1693
_Uint1_t _Fetch_add_release_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:573
int _Compare_exchange_seq_cst_2(volatile _Uint2_t *_Tgt, _Uint2_t *_Exp, _Uint2_t _Value)
Definition: xatomic.h:951
_Uint1_t _Fetch_or_release_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:687
int _Atomic_compare_exchange_strong_4(volatile _Uint4_t *_Tgt, _Uint4_t *_Exp, _Uint4_t _Value, memory_order _Order1, memory_order _Order2)
Definition: xatomic.h:1533
_Uint2_t _Atomic_load_2(volatile _Uint2_t *_Tgt, memory_order _Order)
Definition: xatomic.h:875
constexpr const _Ty &() _Left
Definition: algorithm:3590
int _Atomic_is_lock_free_2(void)
Definition: xatomic.h:2478
int _Atomic_compare_exchange_strong_8(volatile _Uint8_t *_Tgt, _Uint8_t *_Exp, _Uint8_t _Value, memory_order _Order1, memory_order _Order2)
Definition: xatomic.h:2062
_Uint4_t _Atomic_fetch_sub_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value, memory_order _Order)
Definition: xatomic.h:1625
void _Atomic_store_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value, memory_order _Order)
Definition: xatomic.h:302
_Uint1_t _Fetch_and_acquire_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:626
_Uint8_t _Load_relaxed_8(volatile _Uint8_t *_Tgt)
Definition: xatomic.h:1886
_Uint1_t _Exchange_acquire_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:401
#define _STD_BEGIN
Definition: yvals.h:564
_Uint4_t _Fetch_or_release_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1707
_CRTIMP2_PURE short __CLRCALL_PURE_OR_CDECL _Exp(double *, double, short)
#define _ATOMIC_MAXBYTES_LOCK_FREE
Definition: xatomic0.h:49
int _Atomic_compare_exchange_strong_2(volatile _Uint2_t *_Tgt, _Uint2_t *_Exp, _Uint2_t _Value, memory_order _Order1, memory_order _Order2)
Definition: xatomic.h:1023
_Uint1_t _Fetch_and_release_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:633
_Uint2_t _Load_relaxed_2(volatile _Uint2_t *_Tgt)
Definition: xatomic.h:853
_Check_return_ int __cdecl memcmp(_In_reads_bytes_(_Size) void const *_Buf1, _In_reads_bytes_(_Size) void const *_Buf2, _In_ size_t _Size)
#define _ATOMIC_FLAG_TEST_AND_SET
Definition: xatomic.h:166
_Uint2_t _Fetch_or_acquire_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:1190
void _Store_relaxed_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1284
_Uint4_t _Atomic_exchange_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value, memory_order _Order)
Definition: xatomic.h:1435
void _Atomic_store_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value, memory_order _Order)
Definition: xatomic.h:1322
_Uint1_t _Fetch_or_acquire_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:680
#define _INTRIN_SEQ_CST(x)
Definition: xatomic.h:67
int _Compare_exchange_release_2(volatile _Uint2_t *_Tgt, _Uint2_t *_Exp, _Uint2_t _Value)
Definition: xatomic.h:1005
_Uint8_t _Atomic_fetch_or_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value, memory_order _Order)
Definition: xatomic.h:2243
_Uint4_t _Fetch_xor_release_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1761
int _Compare_exchange_relaxed_2(volatile _Uint2_t *_Tgt, _Uint2_t *_Exp, _Uint2_t _Value)
Definition: xatomic.h:969
void _Atomic_exchange(volatile _Atomic_flag_t *_Flag, size_t _Size, volatile void *_Tgt, volatile void *_Src, memory_order _Order)
Definition: xatomic.h:2428
#define _INTRIN_RELEASE(x)
Definition: xatomic.h:66
_Uint4_t _Fetch_xor_seq_cst_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1740
_Atomic_integral_t _Inc_atomic_counter_explicit(_Atomic_counter_t &_Counter, memory_order _Order)
Definition: xatomic.h:2495
_Uint8_t _Exchange_acquire_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:1950
#define _ATOMIC_FLAG_CLEAR
Definition: xatomic.h:167
void _Atomic_thread_fence(memory_order _Order)
Definition: xatomic.h:2367
_Uint1_t _Fetch_add_relaxed_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:559
_Uint2_t _Fetch_and_relaxed_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:1129
_Uint1_t _Fetch_add_acquire_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:566
_Uint8_t _Fetch_or_seq_cst_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:2215
#define _INVALID_MEMORY_ORDER
Definition: xatomic.h:184
_Uint4_t _Atomic_fetch_and_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value, memory_order _Order)
Definition: xatomic.h:1660
_Uint2_t _Fetch_and_seq_cst_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:1122
_Uint1_t _Load_acquire_1(volatile _Uint1_t *_Tgt)
Definition: xatomic.h:358
_Uint4_t _Fetch_and_seq_cst_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1632
int _Compare_exchange_seq_cst_1(volatile _Uint1_t *_Tgt, _Uint1_t *_Exp, _Uint1_t _Value)
Definition: xatomic.h:441
_Uint8_t _Fetch_add_acquire_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:2115
_Uint8_t _Fetch_xor_relaxed_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:2276
int _Atomic_is_lock_free_8(void)
Definition: xatomic.h:2488
_Uint4_t _Atomic_fetch_or_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value, memory_order _Order)
Definition: xatomic.h:1714
_Atomic_integral_t _Load_atomic_counter_explicit(_Atomic_counter_t &_Counter, memory_order _Order)
Definition: xatomic.h:2517
_Atomic_integral_t _Dec_atomic_counter_explicit(_Atomic_counter_t &_Counter, memory_order _Order)
Definition: xatomic.h:2506
void _Atomic_flag_clear(volatile _Atomic_flag_t *_Flag, memory_order _Order)
Definition: xatomic.h:2347
void _Store_release_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1295
_Uint4_t _Atomic_fetch_add_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value, memory_order _Order)
Definition: xatomic.h:1600
_Uint1_t _Atomic_load_1(volatile _Uint1_t *_Tgt, memory_order _Order)
Definition: xatomic.h:365
_Uint4_t _Fetch_xor_acquire_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1754
_Uint8_t _Fetch_add_release_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:2122
long _Atomic_flag_t
Definition: xatomic0.h:47
int _Compare_exchange_acquire_4(volatile _Uint4_t *_Tgt, _Uint4_t *_Exp, _Uint4_t _Value)
Definition: xatomic.h:1497
_Uint1_t _Exchange_relaxed_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:394
_Uint2_t _Atomic_fetch_add_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value, memory_order _Order)
Definition: xatomic.h:1090
memory_order _Memory_order_upper_bound(memory_order _Order1, memory_order _Order2)
Definition: xatomic.h:188
_Uint2_t _Fetch_xor_seq_cst_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:1230
_Uint8_t _Fetch_add_relaxed_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:2108
_Uint8_t _Fetch_and_acquire_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:2175
_Uint1_t _Fetch_xor_relaxed_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:727
_Uint32t _Uint4_t
Definition: xatomic0.h:24
_Uint2_t _Fetch_or_relaxed_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:1183
_Atomic_integral_t _Inc_atomic_counter(_Atomic_counter_t &_Counter)
Definition: xatomic.h:2501
int _Compare_exchange_seq_cst_8(volatile _Uint8_t *_Tgt, _Uint8_t *_Exp, _Uint8_t _Value)
Definition: xatomic.h:1990
_Uint1_t _Fetch_xor_seq_cst_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:720
void _Atomic_copy(volatile _Atomic_flag_t *_Flag, size_t _Size, volatile void *_Tgt, volatile const void *_Src, memory_order _Order)
Definition: xatomic.h:2418
int _Compare_exchange_acquire_2(volatile _Uint2_t *_Tgt, _Uint2_t *_Exp, _Uint2_t _Value)
Definition: xatomic.h:987
int _Atomic_compare_exchange_strong(volatile _Atomic_flag_t *_Flag, size_t _Size, volatile void *_Tgt, volatile void *_Exp, const volatile void *_Src, memory_order _Order1, memory_order _Order2)
Definition: xatomic.h:2463
_Uint2_t _Atomic_fetch_or_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value, memory_order _Order)
Definition: xatomic.h:1204
void _Store_release_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:275
void _Store_release_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:1808
_Uint2_t _Atomic_fetch_and_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value, memory_order _Order)
Definition: xatomic.h:1150
_Uint2_t _Atomic_exchange_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value, memory_order _Order)
Definition: xatomic.h:925
_Uint4_t _Exchange_seq_cst_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1407
void _Store_release_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:785
_Uint8_t _Fetch_and_relaxed_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:2168
_Atomic_integral_t _Compare_increment_atomic_counter(_Atomic_counter_t &_Counter, _Atomic_integral_t _Expected)
Definition: xatomic.h:2538
_Uint8_t _Atomic_exchange_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value, memory_order _Order)
Definition: xatomic.h:1964
_Uint1_t _Load_seq_cst_1(volatile _Uint1_t *_Tgt)
Definition: xatomic.h:326
_Uint4_t _Fetch_add_release_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1593
_Uint1_t _Fetch_xor_release_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:741
int _Atomic_compare_exchange_weak_4(volatile _Uint4_t *_Tgt, _Uint4_t *_Exp, _Uint4_t _Value, memory_order _Order1, memory_order _Order2)
Definition: xatomic.h:1561
#define _INTRIN_ACQUIRE(x)
Definition: xatomic.h:65
_Uint4_t _Atomic_fetch_xor_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value, memory_order _Order)
Definition: xatomic.h:1768
_Uint2_t _Fetch_add_acquire_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:1076
_Uint4_t _Atomic_load_4(volatile _Uint4_t *_Tgt, memory_order _Order)
Definition: xatomic.h:1385
_Uint1_t _Load_relaxed_1(volatile _Uint1_t *_Tgt)
Definition: xatomic.h:343
_Uint8_t _Fetch_or_relaxed_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:2222
_Uint4_t _Fetch_xor_relaxed_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1747
void _Store_seq_cst_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:798
int _Atomic_is_lock_free_1(void)
Definition: xatomic.h:2473
_Uint4_t _Atomic_integral_t
Definition: xatomic0.h:25
_Uint8_t _Fetch_or_acquire_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:2229
_Uint8_t _Atomic_fetch_and_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value, memory_order _Order)
Definition: xatomic.h:2189
_Uint4_t _Fetch_or_seq_cst_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1686
_Uint2_t _Exchange_release_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:918
_Uint2_t _Fetch_and_release_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:1143
_Uint1_t _Fetch_or_relaxed_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:673
_Uint4_t _Load_relaxed_4(volatile _Uint4_t *_Tgt)
Definition: xatomic.h:1363
void _Atomic_signal_fence(memory_order _Order)
Definition: xatomic.h:2386
_Uint8_t _Load_seq_cst_8(volatile _Uint8_t *_Tgt)
Definition: xatomic.h:1862
#define _LONGLONG
Definition: yvals.h:579
int _Compare_exchange_release_4(volatile _Uint4_t *_Tgt, _Uint4_t *_Exp, _Uint4_t _Value)
Definition: xatomic.h:1515
int _Compare_exchange_seq_cst_4(volatile _Uint4_t *_Tgt, _Uint4_t *_Exp, _Uint4_t _Value)
Definition: xatomic.h:1461
void _Store_relaxed_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:264
_Uint8_t _Fetch_xor_seq_cst_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:2269
int _Compare_exchange_release_8(volatile _Uint8_t *_Tgt, _Uint8_t *_Exp, _Uint8_t _Value)
Definition: xatomic.h:2044
int _Compare_exchange_relaxed_4(volatile _Uint4_t *_Tgt, _Uint4_t *_Exp, _Uint4_t _Value)
Definition: xatomic.h:1479
_Uint1_t _Atomic_exchange_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value, memory_order _Order)
Definition: xatomic.h:415
_Uint4_t _Exchange_release_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1428
unsigned _LONGLONG _Uint8_t
Definition: xatomic.h:164
_Uint8_t _Atomic_fetch_sub_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value, memory_order _Order)
Definition: xatomic.h:2154
_Uint4_t _Load_seq_cst_4(volatile _Uint4_t *_Tgt)
Definition: xatomic.h:1346
int _Atomic_flag_test_and_set(volatile _Atomic_flag_t *_Flag, memory_order _Order)
Definition: xatomic.h:2322
memory_order
Definition: xatomic0.h:15
unsigned short _Uint2_t
Definition: xatomic.h:162
int _Compare_exchange_release_1(volatile _Uint1_t *_Tgt, _Uint1_t *_Exp, _Uint1_t _Value)
Definition: xatomic.h:495
#define _YIELD_PROCESSOR
Definition: xatomic.h:2395
void _Store_seq_cst_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:288
_Uint1_t _Atomic_fetch_or_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value, memory_order _Order)
Definition: xatomic.h:694
_Uint2_t _Exchange_acquire_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:911
_Uint4_t _Exchange_relaxed_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1414
_Uint1_t _Atomic_fetch_xor_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value, memory_order _Order)
Definition: xatomic.h:748
Definition: xatomic0.h:20
_Uint8_t _Exchange_release_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:1957
_Uint4_t _Fetch_add_seq_cst_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1572
int _Atomic_compare_exchange_weak(volatile _Atomic_flag_t *_Flag, size_t _Size, volatile void *_Tgt, volatile void *_Exp, const volatile void *_Src, memory_order _Order1, memory_order _Order2)
Definition: xatomic.h:2446
_Uint1_t _Fetch_or_seq_cst_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:666
_Uint1_t _Exchange_release_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:408
_Uint2_t _Fetch_add_relaxed_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:1069
#define _STD_END
Definition: yvals.h:565
_Uint4_t _Fetch_or_acquire_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1700
_Uint8_t _Fetch_and_release_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:2182
_Uint8_t _Atomic_fetch_add_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value, memory_order _Order)
Definition: xatomic.h:2129
int _Atomic_is_lock_free_4(void)
Definition: xatomic.h:2483
_Uint2_t _Atomic_fetch_xor_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value, memory_order _Order)
Definition: xatomic.h:1258
_Atomic_integral_t _Dec_atomic_counter(_Atomic_counter_t &_Counter)
Definition: xatomic.h:2512
Definition: xatomic0.h:17
void _Store_seq_cst_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1308
_Uint8_t _Fetch_and_seq_cst_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:2161
void _Lock_spin_lock(volatile _Atomic_flag_t *_Flag)
Definition: xatomic.h:2403
_Uint2_t _Atomic_fetch_sub_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value, memory_order _Order)
Definition: xatomic.h:1115
void _Store_relaxed_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:774
_Uint2_t _Fetch_add_seq_cst_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:1062
_Uint2_t _Fetch_xor_acquire_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:1244
_Uint2_t _Exchange_seq_cst_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:897
_Uint4_t _Exchange_acquire_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1421
_Uint8_t _Fetch_or_release_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:2236
_Uint1_t _Fetch_add_seq_cst_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:552
_Uint1_t _Atomic_fetch_and_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value, memory_order _Order)
Definition: xatomic.h:640
_Uint8_t _Fetch_xor_acquire_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:2283
_Uint8_t _Fetch_xor_release_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:2290
void _Store_relaxed_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:1794
Definition: xatomic0.h:16
_Uint4_t _Fetch_and_release_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1653
_Uint1_t _Exchange_seq_cst_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:387
_Atomic_integral_t _Compare_increment_atomic_counter_explicit(_Atomic_counter_t &_Counter, _Atomic_integral_t _Expected, memory_order _Order)
Definition: xatomic.h:2528
_Uint2_t _Fetch_add_release_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:1083
int _Atomic_compare_exchange_weak_1(volatile _Uint1_t *_Tgt, _Uint1_t *_Exp, _Uint1_t _Value, memory_order _Order1, memory_order _Order2)
Definition: xatomic.h:541
Definition: xatomic0.h:21
_Uint8_t _Atomic_load_8(volatile _Uint8_t *_Tgt, memory_order _Order)
Definition: xatomic.h:1914
void _Atomic_store_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value, memory_order _Order)
Definition: xatomic.h:812
Definition: xatomic0.h:19
_Uint2_t _Exchange_relaxed_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:904
_Uint8_t _Load_acquire_8(volatile _Uint8_t *_Tgt)
Definition: xatomic.h:1907
#define _CSTD
Definition: yvals.h:570
#define _Compiler_barrier()
Definition: xatomic.h:21
Definition: xatomic0.h:18
_Uint4_t _Fetch_and_acquire_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1646
void _Unlock_spin_lock(volatile _Atomic_flag_t *_Flag)
Definition: xatomic.h:2410
_Uint8_t _Atomic_fetch_xor_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value, memory_order _Order)
Definition: xatomic.h:2297
_Uint8_t _Exchange_relaxed_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:1943
_Uint1_t _Atomic_fetch_sub_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value, memory_order _Order)
Definition: xatomic.h:605
_STD_BEGIN typedef unsigned char _Uint1_t
Definition: xatomic.h:161
_Uint4_t _Fetch_add_acquire_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1586
_Atomic_integral_t _Load_atomic_counter(_Atomic_counter_t &_Counter)
Definition: xatomic.h:2523
_Uint2_t _Fetch_and_acquire_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:1136
_Uint4_t _Load_acquire_4(volatile _Uint4_t *_Tgt)
Definition: xatomic.h:1378
#define _INTRIN_RELAXED(x)
Definition: xatomic.h:64
_Uint4_t _Fetch_add_relaxed_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1579
_Uint2_t _Fetch_or_release_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:1197
_Uint8_t _Exchange_seq_cst_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:1936
void _Store_seq_cst_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:1824
_Uint1_t _Fetch_xor_acquire_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:734
int _Compare_exchange_relaxed_8(volatile _Uint8_t *_Tgt, _Uint8_t *_Exp, _Uint8_t _Value)
Definition: xatomic.h:2008
_Uint2_t _Fetch_xor_relaxed_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:1237
_Uint4_t _Fetch_and_relaxed_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1639
int _Compare_exchange_relaxed_1(volatile _Uint1_t *_Tgt, _Uint1_t *_Exp, _Uint1_t _Value)
Definition: xatomic.h:459
int _Atomic_compare_exchange_weak_8(volatile _Uint8_t *_Tgt, _Uint8_t *_Exp, _Uint8_t _Value, memory_order _Order1, memory_order _Order2)
Definition: xatomic.h:2090
_In_ int _Value
Definition: setjmp.h:173
_Uint2_t _Load_acquire_2(volatile _Uint2_t *_Tgt)
Definition: xatomic.h:868
long __cdecl _InterlockedCompareExchange(long volatile *, long, long)
_Uint2_t _Load_seq_cst_2(volatile _Uint2_t *_Tgt)
Definition: xatomic.h:836
int _Compare_exchange_acquire_1(volatile _Uint1_t *_Tgt, _Uint1_t *_Exp, _Uint1_t _Value)
Definition: xatomic.h:477
_Uint2_t _Fetch_or_seq_cst_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:1176
_Uint2_t _Fetch_xor_release_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:1251
_Size
Definition: vcruntime_string.h:36
_Atomic_integral_t _Atomic_counter_t
Definition: xatomic0.h:52
constexpr const _Ty &() _Right
Definition: algorithm:3591
int _Atomic_compare_exchange_weak_2(volatile _Uint2_t *_Tgt, _Uint2_t *_Exp, _Uint2_t _Value, memory_order _Order1, memory_order _Order2)
Definition: xatomic.h:1051
int _Compare_exchange_acquire_8(volatile _Uint8_t *_Tgt, _Uint8_t *_Exp, _Uint8_t _Value)
Definition: xatomic.h:2026
_Uint8_t _Fetch_add_seq_cst_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:2101
_Uint1_t _Fetch_and_seq_cst_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:612
void _Validate_compare_exchange_memory_order(memory_order _Success, memory_order _Failure)
Definition: xatomic.h:230