14 #pragma pack(push,_CRT_PACKING)
15 #pragma warning(push,3)
16 #pragma push_macro("new")
20 #pragma push_macro("and")
21 #pragma push_macro("or")
22 #pragma push_macro("xor")
27 #pragma warning (disable: 4100 4390 4793 6326)
29 #define _Compiler_barrier() _ReadWriteBarrier()
32 #define _Memory_barrier() __dmb(_ARM_BARRIER_ISH)
36 #define _CONCATX(x, y) x ## y
37 #define _CONCAT(x, y) _CONCATX(x, y)
40 #define ATOMIC_BOOL_LOCK_FREE \
41 (1 <= _ATOMIC_MAXBYTES_LOCK_FREE ? 2 : 0)
42 #define _ATOMIC_CHAR_LOCK_FREE \
43 (1 <= _ATOMIC_MAXBYTES_LOCK_FREE ? 2 : 0)
44 #define _ATOMIC_CHAR16_T_LOCK_FREE \
45 (2 <= _ATOMIC_MAXBYTES_LOCK_FREE ? 2 : 0)
46 #define _ATOMIC_CHAR32_T_LOCK_FREE \
47 (2 <= _ATOMIC_MAXBYTES_LOCK_FREE ? 2 : 0)
48 #define _ATOMIC_WCHAR_T_LOCK_FREE \
49 (_WCHAR_T_SIZE <= _ATOMIC_MAXBYTES_LOCK_FREE ? 2 : 0)
50 #define _ATOMIC_SHORT_LOCK_FREE \
51 (_SHORT_SIZE <= _ATOMIC_MAXBYTES_LOCK_FREE ? 2 : 0)
52 #define _ATOMIC_INT_LOCK_FREE \
53 (_INT_SIZE <= _ATOMIC_MAXBYTES_LOCK_FREE ? 2 : 0)
54 #define _ATOMIC_LONG_LOCK_FREE \
55 (_LONG_SIZE <= _ATOMIC_MAXBYTES_LOCK_FREE ? 2 : 0)
56 #define _ATOMIC_LLONG_LOCK_FREE \
57 (_LONGLONG_SIZE <= _ATOMIC_MAXBYTES_LOCK_FREE ? 2 : 0)
58 #define ATOMIC_POINTER_LOCK_FREE \
59 (_ADDR_SIZE <= _ATOMIC_MAXBYTES_LOCK_FREE ? 2 : 0)
64 #define _INTRIN_RELAXED(x) _CONCAT(x, _nf)
65 #define _INTRIN_ACQUIRE(x) _CONCAT(x, _acq)
66 #define _INTRIN_RELEASE(x) _CONCAT(x, _rel)
67 #define _INTRIN_SEQ_CST(x) x
70 #define _INTRIN_RELAXED(x) x
71 #define _INTRIN_ACQUIRE(x) x
72 #define _INTRIN_RELEASE(x) x
73 #define _INTRIN_SEQ_CST(x) x
77 #pragma push_macro("_InterlockedExchange64")
78 #pragma push_macro("_InterlockedExchangeAdd64")
79 #pragma push_macro("_InterlockedAnd64")
80 #pragma push_macro("_InterlockedOr64")
81 #pragma push_macro("_InterlockedXor64")
83 #undef _InterlockedExchange64
84 #undef _InterlockedExchangeAdd64
85 #undef _InterlockedAnd64
86 #undef _InterlockedOr64
87 #undef _InterlockedXor64
89 #define _InterlockedExchange64 _InterlockedExchange64_ASM
90 #define _InterlockedExchangeAdd64 _InterlockedExchangeAdd64_ASM
91 #define _InterlockedAnd64 _InterlockedAnd64_ASM
92 #define _InterlockedOr64 _InterlockedOr64_ASM
93 #define _InterlockedXor64 _InterlockedXor64_ASM
101 mov ecx, dword ptr _Value[4];
102 mov ebx, dword ptr
_Value;
104 lock cmpxchg8b [esi];
106 mov dword ptr _Value[4], edx;
107 mov dword ptr
_Value, eax;
125 add ebx, dword ptr
_Value;
126 adc ecx, dword ptr _Value[4];
127 lock cmpxchg8b [esi];
129 mov dword ptr
_Value, eax;
130 mov dword ptr _Value[4], edx;
149 and ecx, dword ptr _Value[4];
150 lock cmpxchg8b [esi];
152 mov dword ptr
_Value, eax;
153 mov dword ptr _Value[4], edx;
172 or ecx, dword ptr _Value[4];
173 lock cmpxchg8b [esi];
175 mov dword ptr
_Value, eax;
176 mov dword ptr _Value[4], edx;
195 xor ecx, dword ptr _Value[4];
196 lock cmpxchg8b [esi];
198 mov dword ptr
_Value, eax;
199 mov dword ptr _Value[4], edx;
214 #define _ATOMIC_FLAG_TEST_AND_SET _Atomic_flag_test_and_set
215 #define _ATOMIC_FLAG_CLEAR _Atomic_flag_clear
217 #define _ATOMIC_THREAD_FENCE _Atomic_thread_fence
218 #define _ATOMIC_SIGNAL_FENCE _Atomic_signal_fence
220 #ifndef _INVALID_MEMORY_ORDER
222 #if _ITERATOR_DEBUG_LEVEL == 2
223 #define _INVALID_MEMORY_ORDER \
224 {_DEBUG_ERROR("Invalid memory_order"); \
225 _SCL_SECURE_INVALID_ARGUMENT}
227 #elif _ITERATOR_DEBUG_LEVEL == 1
228 #define _INVALID_MEMORY_ORDER \
229 _SCL_SECURE_VALIDATE("Invalid memory_order" && 0)
231 #elif _ITERATOR_DEBUG_LEVEL == 0
232 #define _INVALID_MEMORY_ORDER
269 if ((_Order1 < 0) || (6 <= _Order1)
270 || (_Order2 < 0) || (6 <= _Order2))
275 return (_Upper[_Order1][_Order2]);
314 __iso_volatile_store8((
volatile char *)_Tgt, _Value);
325 __iso_volatile_store8((
volatile char *)_Tgt, _Value);
339 __iso_volatile_store8((
volatile char *)_Tgt, _Value);
348 volatile _Uint1_t *_Tgt, _Uint1_t _Value,
memory_order _Order)
377 _Value = __iso_volatile_load8((
volatile char *)_Tgt);
394 _Value = __iso_volatile_load8((
volatile char *)_Tgt);
436 return (
_INTRIN_SEQ_CST(_InterlockedExchange8)((
volatile char *)_Tgt, _Value));
443 return (
_INTRIN_RELAXED(_InterlockedExchange8)((
volatile char *)_Tgt, _Value));
450 return (
_INTRIN_ACQUIRE(_InterlockedExchange8)((
volatile char *)_Tgt, _Value));
457 return (
_INTRIN_RELEASE(_InterlockedExchange8)((
volatile char *)_Tgt, _Value));
461 volatile _Uint1_t *_Tgt, _Uint1_t _Value,
memory_order _Order)
487 _Uint1_t *
_Exp, _Uint1_t _Value)
493 _Uint1_t _Prev =
_INTRIN_SEQ_CST(_InterlockedCompareExchange8)((
volatile char *)_Tgt,
508 _Uint1_t *
_Exp, _Uint1_t _Value)
513 _Uint1_t _Prev =
_INTRIN_RELAXED(_InterlockedCompareExchange8)((
volatile char *)_Tgt,
528 _Uint1_t *
_Exp, _Uint1_t _Value)
533 _Uint1_t _Prev =
_INTRIN_ACQUIRE(_InterlockedCompareExchange8)((
volatile char *)_Tgt,
548 _Uint1_t *
_Exp, _Uint1_t _Value)
553 _Uint1_t _Prev =
_INTRIN_RELEASE(_InterlockedCompareExchange8)((
volatile char *)_Tgt,
568 volatile _Uint1_t *_Tgt, _Uint1_t *
_Exp, _Uint1_t _Value,
596 volatile _Uint1_t *_Tgt, _Uint1_t *
_Exp, _Uint1_t _Value,
610 return (
_INTRIN_SEQ_CST(_InterlockedExchangeAdd8)((
volatile char *)_Tgt, _Value));
617 return (
_INTRIN_RELAXED(_InterlockedExchangeAdd8)((
volatile char *)_Tgt, _Value));
624 return (
_INTRIN_ACQUIRE(_InterlockedExchangeAdd8)((
volatile char *)_Tgt, _Value));
631 return (
_INTRIN_RELEASE(_InterlockedExchangeAdd8)((
volatile char *)_Tgt, _Value));
635 volatile _Uint1_t *_Tgt, _Uint1_t _Value,
memory_order _Order)
660 volatile _Uint1_t *_Tgt, _Uint1_t _Value,
memory_order _Order)
670 return (
_INTRIN_SEQ_CST(_InterlockedAnd8)((
volatile char *)_Tgt, _Value));
677 return (
_INTRIN_RELAXED(_InterlockedAnd8)((
volatile char *)_Tgt, _Value));
684 return (
_INTRIN_ACQUIRE(_InterlockedAnd8)((
volatile char *)_Tgt, _Value));
691 return (
_INTRIN_RELEASE(_InterlockedAnd8)((
volatile char *)_Tgt, _Value));
695 volatile _Uint1_t *_Tgt, _Uint1_t _Value,
memory_order _Order)
724 return (
_INTRIN_SEQ_CST(_InterlockedOr8)((
volatile char *)_Tgt, _Value));
731 return (
_INTRIN_RELAXED(_InterlockedOr8)((
volatile char *)_Tgt, _Value));
738 return (
_INTRIN_ACQUIRE(_InterlockedOr8)((
volatile char *)_Tgt, _Value));
745 return (
_INTRIN_RELEASE(_InterlockedOr8)((
volatile char *)_Tgt, _Value));
749 volatile _Uint1_t *_Tgt, _Uint1_t _Value,
memory_order _Order)
778 return (
_INTRIN_SEQ_CST(_InterlockedXor8)((
volatile char *)_Tgt, _Value));
785 return (
_INTRIN_RELAXED(_InterlockedXor8)((
volatile char *)_Tgt, _Value));
792 return (
_INTRIN_ACQUIRE(_InterlockedXor8)((
volatile char *)_Tgt, _Value));
799 return (
_INTRIN_RELEASE(_InterlockedXor8)((
volatile char *)_Tgt, _Value));
803 volatile _Uint1_t *_Tgt, _Uint1_t _Value,
memory_order _Order)
831 __iso_volatile_store16((
volatile short *)_Tgt, _Value);
842 __iso_volatile_store16((
volatile short *)_Tgt, _Value);
856 __iso_volatile_store16((
volatile short *)_Tgt, _Value);
860 _INTRIN_SEQ_CST(_InterlockedExchange16)((
volatile short *)_Tgt, _Value);
865 volatile _Uint2_t *_Tgt, _Uint2_t _Value,
memory_order _Order)
894 _Value = __iso_volatile_load16((
volatile short *)_Tgt);
911 _Value = __iso_volatile_load16((
volatile short *)_Tgt);
953 return (
_INTRIN_SEQ_CST(_InterlockedExchange16)((
volatile short *)_Tgt, _Value));
960 return (
_INTRIN_RELAXED(_InterlockedExchange16)((
volatile short *)_Tgt, _Value));
967 return (
_INTRIN_ACQUIRE(_InterlockedExchange16)((
volatile short *)_Tgt, _Value));
974 return (
_INTRIN_RELEASE(_InterlockedExchange16)((
volatile short *)_Tgt, _Value));
978 volatile _Uint2_t *_Tgt, _Uint2_t _Value,
memory_order _Order)
1004 _Uint2_t *
_Exp, _Uint2_t _Value)
1010 _Uint2_t _Prev =
_INTRIN_SEQ_CST(_InterlockedCompareExchange16)((
volatile short *)_Tgt,
1025 _Uint2_t *
_Exp, _Uint2_t _Value)
1030 _Uint2_t _Prev =
_INTRIN_RELAXED(_InterlockedCompareExchange16)((
volatile short *)_Tgt,
1045 _Uint2_t *
_Exp, _Uint2_t _Value)
1050 _Uint2_t _Prev =
_INTRIN_ACQUIRE(_InterlockedCompareExchange16)((
volatile short *)_Tgt,
1065 _Uint2_t *
_Exp, _Uint2_t _Value)
1070 _Uint2_t _Prev =
_INTRIN_RELEASE(_InterlockedCompareExchange16)((
volatile short *)_Tgt,
1085 volatile _Uint2_t *_Tgt, _Uint2_t *
_Exp, _Uint2_t _Value,
1113 volatile _Uint2_t *_Tgt, _Uint2_t *
_Exp, _Uint2_t _Value,
1127 return (
_INTRIN_SEQ_CST(_InterlockedExchangeAdd16)((
volatile short *)_Tgt, _Value));
1134 return (
_INTRIN_RELAXED(_InterlockedExchangeAdd16)((
volatile short *)_Tgt, _Value));
1141 return (
_INTRIN_ACQUIRE(_InterlockedExchangeAdd16)((
volatile short *)_Tgt, _Value));
1148 return (
_INTRIN_RELEASE(_InterlockedExchangeAdd16)((
volatile short *)_Tgt, _Value));
1152 volatile _Uint2_t *_Tgt, _Uint2_t _Value,
memory_order _Order)
1177 volatile _Uint2_t *_Tgt, _Uint2_t _Value,
memory_order _Order)
1187 return (
_INTRIN_SEQ_CST(_InterlockedAnd16)((
volatile short *)_Tgt, _Value));
1194 return (
_INTRIN_RELAXED(_InterlockedAnd16)((
volatile short *)_Tgt, _Value));
1201 return (
_INTRIN_ACQUIRE(_InterlockedAnd16)((
volatile short *)_Tgt, _Value));
1208 return (
_INTRIN_RELEASE(_InterlockedAnd16)((
volatile short *)_Tgt, _Value));
1212 volatile _Uint2_t *_Tgt, _Uint2_t _Value,
memory_order _Order)
1241 return (
_INTRIN_SEQ_CST(_InterlockedOr16)((
volatile short *)_Tgt, _Value));
1248 return (
_INTRIN_RELAXED(_InterlockedOr16)((
volatile short *)_Tgt, _Value));
1255 return (
_INTRIN_ACQUIRE(_InterlockedOr16)((
volatile short *)_Tgt, _Value));
1262 return (
_INTRIN_RELEASE(_InterlockedOr16)((
volatile short *)_Tgt, _Value));
1266 volatile _Uint2_t *_Tgt, _Uint2_t _Value,
memory_order _Order)
1295 return (
_INTRIN_SEQ_CST(_InterlockedXor16)((
volatile short *)_Tgt, _Value));
1302 return (
_INTRIN_RELAXED(_InterlockedXor16)((
volatile short *)_Tgt, _Value));
1309 return (
_INTRIN_ACQUIRE(_InterlockedXor16)((
volatile short *)_Tgt, _Value));
1316 return (
_INTRIN_RELEASE(_InterlockedXor16)((
volatile short *)_Tgt, _Value));
1320 volatile _Uint2_t *_Tgt, _Uint2_t _Value,
memory_order _Order)
1348 __iso_volatile_store32((
volatile int *)_Tgt, _Value);
1359 __iso_volatile_store32((
volatile int *)_Tgt, _Value);
1373 __iso_volatile_store32((
volatile int *)_Tgt, _Value);
1411 _Value = __iso_volatile_load32((
volatile int *)_Tgt);
1428 _Value = __iso_volatile_load32((
volatile int *)_Tgt);
1470 return (
_INTRIN_SEQ_CST(_InterlockedExchange)((
volatile long *)_Tgt, _Value));
1477 return (
_INTRIN_RELAXED(_InterlockedExchange)((
volatile long *)_Tgt, _Value));
1484 return (
_INTRIN_ACQUIRE(_InterlockedExchange)((
volatile long *)_Tgt, _Value));
1491 return (
_INTRIN_RELEASE(_InterlockedExchange)((
volatile long *)_Tgt, _Value));
1644 return (
_INTRIN_SEQ_CST(_InterlockedExchangeAdd)((
volatile long *)_Tgt, _Value));
1651 return (
_INTRIN_RELAXED(_InterlockedExchangeAdd)((
volatile long *)_Tgt, _Value));
1658 return (
_INTRIN_ACQUIRE(_InterlockedExchangeAdd)((
volatile long *)_Tgt, _Value));
1665 return (
_INTRIN_RELEASE(_InterlockedExchangeAdd)((
volatile long *)_Tgt, _Value));
1704 return (
_INTRIN_SEQ_CST(_InterlockedAnd)((
volatile long *)_Tgt, _Value));
1711 return (
_INTRIN_RELAXED(_InterlockedAnd)((
volatile long *)_Tgt, _Value));
1718 return (
_INTRIN_ACQUIRE(_InterlockedAnd)((
volatile long *)_Tgt, _Value));
1725 return (
_INTRIN_RELEASE(_InterlockedAnd)((
volatile long *)_Tgt, _Value));
1758 return (
_INTRIN_SEQ_CST(_InterlockedOr)((
volatile long *)_Tgt, _Value));
1765 return (
_INTRIN_RELAXED(_InterlockedOr)((
volatile long *)_Tgt, _Value));
1772 return (
_INTRIN_ACQUIRE(_InterlockedOr)((
volatile long *)_Tgt, _Value));
1779 return (
_INTRIN_RELEASE(_InterlockedOr)((
volatile long *)_Tgt, _Value));
1812 return (
_INTRIN_SEQ_CST(_InterlockedXor)((
volatile long *)_Tgt, _Value));
1819 return (
_INTRIN_RELAXED(_InterlockedXor)((
volatile long *)_Tgt, _Value));
1826 return (
_INTRIN_ACQUIRE(_InterlockedXor)((
volatile long *)_Tgt, _Value));
1833 return (
_INTRIN_RELEASE(_InterlockedXor)((
volatile long *)_Tgt, _Value));
1890 volatile _Uint8_t *_Tgt, _Uint8_t _Value,
memory_order _Order)
1922 #elif defined(_M_ARM)
1923 _Value = __ldrexd((
volatile _LONGLONG *)_Tgt);
1927 _Value = _InterlockedOr64((
volatile _LONGLONG *)_Tgt, 0);
1941 #elif defined(_M_ARM)
1942 _Value = __ldrexd((
volatile _LONGLONG *)_Tgt);
1945 _Value = _InterlockedOr64((
volatile _LONGLONG *)_Tgt, 0);
2009 volatile _Uint8_t *_Tgt, _Uint8_t _Value,
memory_order _Order)
2035 _Uint8_t *
_Exp, _Uint8_t _Value)
2056 _Uint8_t *
_Exp, _Uint8_t _Value)
2076 _Uint8_t *
_Exp, _Uint8_t _Value)
2096 _Uint8_t *
_Exp, _Uint8_t _Value)
2116 volatile _Uint8_t *_Tgt, _Uint8_t *
_Exp, _Uint8_t _Value,
2144 volatile _Uint8_t *_Tgt, _Uint8_t *
_Exp, _Uint8_t _Value,
2183 volatile _Uint8_t *_Tgt, _Uint8_t _Value,
memory_order _Order)
2208 volatile _Uint8_t *_Tgt, _Uint8_t _Value,
memory_order _Order)
2243 volatile _Uint8_t *_Tgt, _Uint8_t _Value,
memory_order _Order)
2297 volatile _Uint8_t *_Tgt, _Uint8_t _Value,
memory_order _Order)
2351 volatile _Uint8_t *_Tgt, _Uint8_t _Value,
memory_order _Order)
2404 "Unexpected _Atomic_flag_t size");
2445 #define _YIELD_PROCESSOR __yield()
2448 #define _YIELD_PROCESSOR
2473 volatile void *_Tgt,
volatile const void *
_Src,
2477 memcpy((
void *)_Tgt, (
void *)_Src, _Size);
2483 volatile void *_Tgt,
volatile void *
_Src,
2486 unsigned char *_Left = (
unsigned char *)_Tgt;
2487 unsigned char *
_Right = (
unsigned char *)_Src;
2492 unsigned char _Tmp = *_Left;
2501 volatile void *_Tgt,
volatile void *
_Exp,
const volatile void *
_Src,
2507 _Result =
memcmp((
const void *)_Tgt, (
const void *)_Exp, _Size) == 0;
2509 memcpy((
void *)_Tgt, (
void *)_Src, _Size);
2511 memcpy((
void *)_Exp, (
void *)_Tgt, _Size);
2518 volatile void *_Tgt,
volatile void *
_Exp,
const volatile void *
_Src,
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("and")
2556 #pragma pop_macro("or")
2557 #pragma pop_macro("xor")
2558 #pragma pop_macro("new")
2559 #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:567
_Uint1_t _Atomic_fetch_add_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value, memory_order _Order)
Definition: xatomic.h:634
void _Atomic_store_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value, memory_order _Order)
Definition: xatomic.h:1889
_Uint1_t _Fetch_and_relaxed_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:673
_Uint4_t _Fetch_or_relaxed_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1761
_Uint1_t _Fetch_add_release_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:627
int _Compare_exchange_seq_cst_2(volatile _Uint2_t *_Tgt, _Uint2_t *_Exp, _Uint2_t _Value)
Definition: xatomic.h:1003
_Uint1_t _Fetch_or_release_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:741
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:1601
_Uint2_t _Atomic_load_2(volatile _Uint2_t *_Tgt, memory_order _Order)
Definition: xatomic.h:927
int _Atomic_is_lock_free_2(void)
Definition: xatomic.h:2531
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
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:2115
_Uint4_t _Atomic_fetch_sub_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value, memory_order _Order)
Definition: xatomic.h:1693
void _Atomic_store_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value, memory_order _Order)
Definition: xatomic.h:347
_Uint1_t _Fetch_and_acquire_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:680
_Uint8_t _Load_relaxed_8(volatile _Uint8_t *_Tgt)
Definition: xatomic.h:1933
_Uint1_t _Exchange_acquire_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:446
#define _STD_BEGIN
Definition: yvals.h:553
_Uint4_t _Fetch_or_release_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1775
_CRTIMP2_PURE short __CLRCALL_PURE_OR_CDECL _Exp(double *, double, short)
#define _ATOMIC_MAXBYTES_LOCK_FREE
Definition: xatomic0.h:72
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:1084
_Uint1_t _Fetch_and_release_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:687
_Uint2_t _Load_relaxed_2(volatile _Uint2_t *_Tgt)
Definition: xatomic.h:905
#define _ATOMIC_FLAG_TEST_AND_SET
Definition: xatomic.h:214
_Uint2_t _Fetch_or_acquire_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:1251
void _Store_relaxed_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1345
_Uint4_t _Atomic_exchange_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value, memory_order _Order)
Definition: xatomic.h:1494
void _Atomic_store_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value, memory_order _Order)
Definition: xatomic.h:1381
_Uint1_t _Fetch_or_acquire_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:734
#define _INTRIN_SEQ_CST(x)
Definition: xatomic.h:73
int _Compare_exchange_release_2(volatile _Uint2_t *_Tgt, _Uint2_t *_Exp, _Uint2_t _Value)
Definition: xatomic.h:1064
_Uint8_t _Atomic_fetch_or_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value, memory_order _Order)
Definition: xatomic.h:2296
_Uint4_t _Fetch_xor_release_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1829
int _Compare_exchange_relaxed_2(volatile _Uint2_t *_Tgt, _Uint2_t *_Exp, _Uint2_t _Value)
Definition: xatomic.h:1024
void _Atomic_exchange(volatile _Atomic_flag_t *_Flag, size_t _Size, volatile void *_Tgt, volatile void *_Src, memory_order _Order)
Definition: xatomic.h:2481
#define _INTRIN_RELEASE(x)
Definition: xatomic.h:72
_Uint4_t _Fetch_xor_seq_cst_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1808
_Uint8_t _Exchange_acquire_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:1994
#define _ATOMIC_FLAG_CLEAR
Definition: xatomic.h:215
void _Atomic_thread_fence(memory_order _Order)
Definition: xatomic.h:2420
_Uint1_t _Fetch_add_relaxed_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:613
_Uint2_t _Fetch_and_relaxed_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:1190
_Uint1_t _Fetch_add_acquire_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:620
_Uint8_t _Fetch_or_seq_cst_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:2268
#define _INVALID_MEMORY_ORDER
Definition: xatomic.h:232
_Uint4_t _Atomic_fetch_and_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value, memory_order _Order)
Definition: xatomic.h:1728
_Uint2_t _Fetch_and_seq_cst_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:1183
_Uint1_t _Load_acquire_1(volatile _Uint1_t *_Tgt)
Definition: xatomic.h:403
_Uint4_t _Fetch_and_seq_cst_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1700
int _Compare_exchange_seq_cst_1(volatile _Uint1_t *_Tgt, _Uint1_t *_Exp, _Uint1_t _Value)
Definition: xatomic.h:486
_Uint8_t _Fetch_add_acquire_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:2168
_Uint8_t _Fetch_xor_relaxed_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:2329
int _Atomic_is_lock_free_8(void)
Definition: xatomic.h:2541
_Uint4_t _Atomic_fetch_or_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value, memory_order _Order)
Definition: xatomic.h:1782
void _Atomic_flag_clear(volatile _Atomic_flag_t *_Flag, memory_order _Order)
Definition: xatomic.h:2400
void _Store_release_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1355
_Uint4_t _Atomic_fetch_add_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value, memory_order _Order)
Definition: xatomic.h:1668
_Uint1_t _Atomic_load_1(volatile _Uint1_t *_Tgt, memory_order _Order)
Definition: xatomic.h:410
_Uint4_t _Fetch_xor_acquire_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1822
_Uint8_t _Fetch_add_release_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:2175
long _Atomic_flag_t
Definition: xatomic0.h:70
int _Compare_exchange_acquire_4(volatile _Uint4_t *_Tgt, _Uint4_t *_Exp, _Uint4_t _Value)
Definition: xatomic.h:1561
_Uint1_t _Exchange_relaxed_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:439
_Uint2_t _Atomic_fetch_add_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value, memory_order _Order)
Definition: xatomic.h:1151
memory_order _Memory_order_upper_bound(memory_order _Order1, memory_order _Order2)
Definition: xatomic.h:236
_Uint2_t _Fetch_xor_seq_cst_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:1291
_Uint8_t _Fetch_add_relaxed_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:2161
_Uint8_t _Fetch_and_acquire_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:2228
_Uint1_t _Fetch_xor_relaxed_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:781
_Uint32t _Uint4_t
Definition: xatomic0.h:28
_Uint2_t _Fetch_or_relaxed_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:1244
int _Compare_exchange_seq_cst_8(volatile _Uint8_t *_Tgt, _Uint8_t *_Exp, _Uint8_t _Value)
Definition: xatomic.h:2034
_Uint1_t _Fetch_xor_seq_cst_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:774
void _Atomic_copy(volatile _Atomic_flag_t *_Flag, size_t _Size, volatile void *_Tgt, volatile const void *_Src, memory_order _Order)
Definition: xatomic.h:2471
int _Compare_exchange_acquire_2(volatile _Uint2_t *_Tgt, _Uint2_t *_Exp, _Uint2_t _Value)
Definition: xatomic.h:1044
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:2516
_Uint2_t _Atomic_fetch_or_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value, memory_order _Order)
Definition: xatomic.h:1265
void _Store_release_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:321
_In_ size_t _In_z_ const unsigned char * _Src
Definition: mbstring.h:95
void _Store_release_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:1872
_Uint2_t _Atomic_fetch_and_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value, memory_order _Order)
Definition: xatomic.h:1211
_Uint2_t _Atomic_exchange_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value, memory_order _Order)
Definition: xatomic.h:977
_Uint4_t _Exchange_seq_cst_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1466
void lock(_Lock0 &_Lk0, _Lock1 &_Lk1, _LockN &..._LkN)
Definition: mutex:417
void _Store_release_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:838
_Uint8_t _Fetch_and_relaxed_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:2221
_Uint8_t _Atomic_exchange_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value, memory_order _Order)
Definition: xatomic.h:2008
_Uint1_t _Load_seq_cst_1(volatile _Uint1_t *_Tgt)
Definition: xatomic.h:371
_Uint4_t _Fetch_add_release_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1661
_Uint1_t _Fetch_xor_release_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:795
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:1629
#define _INTRIN_ACQUIRE(x)
Definition: xatomic.h:71
_Uint4_t _Atomic_fetch_xor_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value, memory_order _Order)
Definition: xatomic.h:1836
_Uint2_t _Fetch_add_acquire_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:1137
_Uint4_t _Atomic_load_4(volatile _Uint4_t *_Tgt, memory_order _Order)
Definition: xatomic.h:1444
_Uint1_t _Load_relaxed_1(volatile _Uint1_t *_Tgt)
Definition: xatomic.h:388
_Uint8_t _Fetch_or_relaxed_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:2275
_Uint4_t _Fetch_xor_relaxed_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1815
void _Store_seq_cst_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:850
int _Atomic_is_lock_free_1(void)
Definition: xatomic.h:2526
_Uint8_t _Fetch_or_acquire_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:2282
_Uint8_t _Atomic_fetch_and_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value, memory_order _Order)
Definition: xatomic.h:2242
_Uint4_t _Fetch_or_seq_cst_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1754
_Uint2_t _Exchange_release_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:970
_Uint2_t _Fetch_and_release_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:1204
_Uint1_t _Fetch_or_relaxed_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:727
_Uint4_t _Load_relaxed_4(volatile _Uint4_t *_Tgt)
Definition: xatomic.h:1422
void _Atomic_signal_fence(memory_order _Order)
Definition: xatomic.h:2439
_Uint8_t _Load_seq_cst_8(volatile _Uint8_t *_Tgt)
Definition: xatomic.h:1913
#define or
Definition: iso646.h:15
#define _LONGLONG
Definition: yvals.h:574
int _Compare_exchange_release_4(volatile _Uint4_t *_Tgt, _Uint4_t *_Exp, _Uint4_t _Value)
Definition: xatomic.h:1581
int _Compare_exchange_seq_cst_4(volatile _Uint4_t *_Tgt, _Uint4_t *_Exp, _Uint4_t _Value)
Definition: xatomic.h:1520
void _Store_relaxed_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:311
_Uint8_t _Fetch_xor_seq_cst_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:2322
int _Compare_exchange_release_8(volatile _Uint8_t *_Tgt, _Uint8_t *_Exp, _Uint8_t _Value)
Definition: xatomic.h:2095
int _Compare_exchange_relaxed_4(volatile _Uint4_t *_Tgt, _Uint4_t *_Exp, _Uint4_t _Value)
Definition: xatomic.h:1541
_Uint1_t _Atomic_exchange_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value, memory_order _Order)
Definition: xatomic.h:460
_Uint4_t _Exchange_release_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1487
unsigned _LONGLONG _Uint8_t
Definition: xatomic.h:212
_Uint8_t _Atomic_fetch_sub_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value, memory_order _Order)
Definition: xatomic.h:2207
_Uint4_t _Load_seq_cst_4(volatile _Uint4_t *_Tgt)
Definition: xatomic.h:1405
int _Atomic_flag_test_and_set(volatile _Atomic_flag_t *_Flag, memory_order _Order)
Definition: xatomic.h:2375
memory_order
Definition: xatomic0.h:19
unsigned short _Uint2_t
Definition: xatomic.h:210
int _Compare_exchange_release_1(volatile _Uint1_t *_Tgt, _Uint1_t *_Exp, _Uint1_t _Value)
Definition: xatomic.h:547
#define _YIELD_PROCESSOR
Definition: xatomic.h:2448
void _Store_seq_cst_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:333
#define xor
Definition: iso646.h:17
_Uint1_t _Atomic_fetch_or_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value, memory_order _Order)
Definition: xatomic.h:748
_Uint2_t _Exchange_acquire_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:963
_Uint4_t _Exchange_relaxed_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1473
_Uint1_t _Atomic_fetch_xor_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value, memory_order _Order)
Definition: xatomic.h:802
Definition: xatomic0.h:24
_Uint8_t _Exchange_release_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:2001
_Uint4_t _Fetch_add_seq_cst_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1640
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:2499
_Uint1_t _Fetch_or_seq_cst_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:720
_Uint1_t _Exchange_release_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:453
_Uint2_t _Fetch_add_relaxed_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:1130
#define _STD_END
Definition: yvals.h:554
_Uint4_t _Fetch_or_acquire_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1768
_Uint8_t _Fetch_and_release_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:2235
_Uint8_t _Atomic_fetch_add_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value, memory_order _Order)
Definition: xatomic.h:2182
int _Atomic_is_lock_free_4(void)
Definition: xatomic.h:2536
_Uint2_t _Atomic_fetch_xor_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value, memory_order _Order)
Definition: xatomic.h:1319
Definition: xatomic0.h:21
void _Store_seq_cst_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1367
_Uint8_t _Fetch_and_seq_cst_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:2214
void _Lock_spin_lock(volatile _Atomic_flag_t *_Flag)
Definition: xatomic.h:2456
_Uint2_t _Atomic_fetch_sub_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value, memory_order _Order)
Definition: xatomic.h:1176
void _Store_relaxed_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:828
_Uint2_t _Fetch_add_seq_cst_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:1123
_Uint2_t _Fetch_xor_acquire_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:1305
_Uint2_t _Exchange_seq_cst_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:949
_Uint4_t _Exchange_acquire_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1480
_Uint8_t _Fetch_or_release_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:2289
_Uint1_t _Fetch_add_seq_cst_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:606
_Uint1_t _Atomic_fetch_and_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value, memory_order _Order)
Definition: xatomic.h:694
_Uint8_t _Fetch_xor_acquire_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:2336
_Uint8_t _Fetch_xor_release_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:2343
void _Store_relaxed_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:1862
Definition: xatomic0.h:20
_Uint4_t _Fetch_and_release_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1721
_Uint1_t _Exchange_seq_cst_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:432
_Uint2_t _Fetch_add_release_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:1144
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:595
Definition: xatomic0.h:25
_Uint8_t _Atomic_load_8(volatile _Uint8_t *_Tgt, memory_order _Order)
Definition: xatomic.h:1958
void _Atomic_store_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value, memory_order _Order)
Definition: xatomic.h:864
Definition: xatomic0.h:23
_Uint2_t _Exchange_relaxed_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:956
_Uint8_t _Load_acquire_8(volatile _Uint8_t *_Tgt)
Definition: xatomic.h:1951
#define _Compiler_barrier()
Definition: xatomic.h:29
Definition: xatomic0.h:22
_Uint4_t _Fetch_and_acquire_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1714
void _Unlock_spin_lock(volatile _Atomic_flag_t *_Flag)
Definition: xatomic.h:2463
_Uint8_t _Atomic_fetch_xor_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value, memory_order _Order)
Definition: xatomic.h:2350
_Uint8_t _Exchange_relaxed_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:1987
_Uint1_t _Atomic_fetch_sub_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value, memory_order _Order)
Definition: xatomic.h:659
_STD_BEGIN typedef unsigned char _Uint1_t
Definition: xatomic.h:209
_Uint4_t _Fetch_add_acquire_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1654
_Uint2_t _Fetch_and_acquire_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:1197
_Uint4_t _Load_acquire_4(volatile _Uint4_t *_Tgt)
Definition: xatomic.h:1437
#define _INTRIN_RELAXED(x)
Definition: xatomic.h:70
_Uint4_t _Fetch_add_relaxed_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1647
_Uint2_t _Fetch_or_release_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:1258
_Uint8_t _Exchange_seq_cst_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:1980
void _Store_seq_cst_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:1883
_Uint1_t _Fetch_xor_acquire_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:788
int _Compare_exchange_relaxed_8(volatile _Uint8_t *_Tgt, _Uint8_t *_Exp, _Uint8_t _Value)
Definition: xatomic.h:2055
_Check_return_ _In_ long _Size
Definition: io.h:325
_Uint2_t _Fetch_xor_relaxed_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:1298
_Uint4_t _Fetch_and_relaxed_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1707
#define and
Definition: iso646.h:8
int _Compare_exchange_relaxed_1(volatile _Uint1_t *_Tgt, _Uint1_t *_Exp, _Uint1_t _Value)
Definition: xatomic.h:507
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:2143
_Uint2_t _Load_acquire_2(volatile _Uint2_t *_Tgt)
Definition: xatomic.h:920
long __cdecl _InterlockedCompareExchange(long volatile *, long, long)
_Uint2_t _Load_seq_cst_2(volatile _Uint2_t *_Tgt)
Definition: xatomic.h:888
int _Compare_exchange_acquire_1(volatile _Uint1_t *_Tgt, _Uint1_t *_Exp, _Uint1_t _Value)
Definition: xatomic.h:527
_Uint2_t _Fetch_or_seq_cst_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:1237
_Uint2_t _Fetch_xor_release_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:1312
_Check_return_ int __cdecl memcmp(_In_reads_bytes_(_Size) const void *_Buf1, _In_reads_bytes_(_Size) const void *_Buf2, _In_ size_t _Size)
const _Ty & _Right
Definition: algorithm:4087
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:1112
int _Compare_exchange_acquire_8(volatile _Uint8_t *_Tgt, _Uint8_t *_Exp, _Uint8_t _Value)
Definition: xatomic.h:2075
_Uint8_t _Fetch_add_seq_cst_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:2154
_Uint1_t _Fetch_and_seq_cst_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:666
void _Validate_compare_exchange_memory_order(memory_order _Success, memory_order _Failure)
Definition: xatomic.h:278