14 #pragma pack(push,_CRT_PACKING)
15 #pragma warning(push,_STL_WARNING_LEVEL)
16 #pragma warning(disable: _STL_DISABLED_WARNINGS)
17 #pragma push_macro("new")
20 #pragma warning(disable: 4793) // function compiled as native
22 #define _Compiler_barrier() _ReadWriteBarrier()
25 #define _Memory_barrier() __dmb(0xB )
29 #define _Memory_barrier() __dmb(0xB )
33 #if defined(_M_ARM) || defined(_M_ARM64)
34 #define _INTRIN_RELAXED(x) _CONCAT(x, _nf)
35 #define _INTRIN_ACQUIRE(x) _CONCAT(x, _acq)
36 #define _INTRIN_RELEASE(x) _CONCAT(x, _rel)
37 #define _INTRIN_SEQ_CST(x) x
39 #define _INTRIN_RELAXED(x) x
40 #define _INTRIN_ACQUIRE(x) x
41 #define _INTRIN_RELEASE(x) x
42 #define _INTRIN_SEQ_CST(x) x
46 #pragma push_macro("_InterlockedExchange64")
47 #pragma push_macro("_InterlockedExchangeAdd64")
48 #pragma push_macro("_InterlockedAnd64")
49 #pragma push_macro("_InterlockedOr64")
50 #pragma push_macro("_InterlockedXor64")
52 #undef _InterlockedExchange64
53 #undef _InterlockedExchangeAdd64
54 #undef _InterlockedAnd64
55 #undef _InterlockedOr64
56 #undef _InterlockedXor64
58 #define _InterlockedExchange64 _InterlockedExchange64_INLINE
59 #define _InterlockedExchangeAdd64 _InterlockedExchangeAdd64_INLINE
60 #define _InterlockedAnd64 _InterlockedAnd64_INLINE
61 #define _InterlockedOr64 _InterlockedOr64_INLINE
62 #define _InterlockedXor64 _InterlockedXor64_INLINE
64 inline long long _InterlockedExchange64(
volatile long long *_Tgt,
long long _Value)
71 }
while (_Oldval != _InterlockedCompareExchange64(_Tgt, _Value, _Oldval));
77 inline long long _InterlockedExchangeAdd64(
volatile long long *_Tgt,
long long _Value)
79 long long _Oldval, _Newval;
84 _Newval = _Oldval +
_Value;
85 }
while (_Oldval != _InterlockedCompareExchange64(_Tgt, _Newval, _Oldval));
91 inline long long _InterlockedAnd64(
volatile long long *_Tgt,
long long _Value)
93 long long _Oldval, _Newval;
98 _Newval = _Oldval &
_Value;
99 }
while (_Oldval != _InterlockedCompareExchange64(_Tgt, _Newval, _Oldval));
105 inline long long _InterlockedOr64(
volatile long long *_Tgt,
long long _Value)
107 long long _Oldval, _Newval;
112 _Newval = _Oldval |
_Value;
113 }
while (_Oldval != _InterlockedCompareExchange64(_Tgt, _Newval, _Oldval));
119 inline long long _InterlockedXor64(
volatile long long *_Tgt,
long long _Value)
121 long long _Oldval, _Newval;
126 _Newval = _Oldval ^
_Value;
127 }
while (_Oldval != _InterlockedCompareExchange64(_Tgt, _Newval, _Oldval));
144 #ifndef _INVALID_MEMORY_ORDER
145 #if _ITERATOR_DEBUG_LEVEL == 2
146 #define _INVALID_MEMORY_ORDER _DEBUG_ERROR("Invalid memory_order")
147 #elif _ITERATOR_DEBUG_LEVEL == 1
148 #define _INVALID_MEMORY_ORDER _SCL_SECURE_VALIDATE("Invalid memory_order" && 0)
149 #elif _ITERATOR_DEBUG_LEVEL == 0
150 #define _INVALID_MEMORY_ORDER static_cast<void>(0)
187 if ((_Order1 < 0) || (6 <= _Order1)
188 || (_Order2 < 0) || (6 <= _Order2))
193 return (_Upper[_Order1][_Order2]);
233 #if defined(_M_ARM) || defined(_M_ARM64)
234 __iso_volatile_store8((
volatile char *)_Tgt, _Value);
244 #if defined(_M_ARM) || defined(_M_ARM64)
246 __iso_volatile_store8((
volatile char *)_Tgt, _Value);
258 #if defined(_M_ARM) || defined(_M_ARM64)
260 __iso_volatile_store8((
volatile char *)_Tgt, _Value);
269 volatile _Uint1_t *_Tgt, _Uint1_t _Value,
memory_order _Order)
297 #if defined(_M_ARM) || defined(_M_ARM64)
298 _Value = __iso_volatile_load8((
volatile char *)_Tgt);
314 #if defined(_M_ARM) || defined(_M_ARM64)
315 _Value = __iso_volatile_load8((
volatile char *)_Tgt);
357 return (
_INTRIN_SEQ_CST(_InterlockedExchange8)((
volatile char *)_Tgt, _Value));
364 return (
_INTRIN_RELAXED(_InterlockedExchange8)((
volatile char *)_Tgt, _Value));
371 return (
_INTRIN_ACQUIRE(_InterlockedExchange8)((
volatile char *)_Tgt, _Value));
378 return (
_INTRIN_RELEASE(_InterlockedExchange8)((
volatile char *)_Tgt, _Value));
382 volatile _Uint1_t *_Tgt, _Uint1_t _Value,
memory_order _Order)
408 _Uint1_t *
_Exp, _Uint1_t _Value)
411 _Uint1_t _Old_exp = *
_Exp;
413 _Uint1_t _Prev =
_INTRIN_SEQ_CST(_InterlockedCompareExchange8)((
volatile char *)_Tgt,
416 if (_Prev == _Old_exp)
426 _Uint1_t *
_Exp, _Uint1_t _Value)
429 _Uint1_t _Old_exp = *
_Exp;
431 _Uint1_t _Prev =
_INTRIN_RELAXED(_InterlockedCompareExchange8)((
volatile char *)_Tgt,
434 if (_Prev == _Old_exp)
444 _Uint1_t *
_Exp, _Uint1_t _Value)
447 _Uint1_t _Old_exp = *
_Exp;
449 _Uint1_t _Prev =
_INTRIN_ACQUIRE(_InterlockedCompareExchange8)((
volatile char *)_Tgt,
452 if (_Prev == _Old_exp)
462 _Uint1_t *
_Exp, _Uint1_t _Value)
465 _Uint1_t _Old_exp = *
_Exp;
467 _Uint1_t _Prev =
_INTRIN_RELEASE(_InterlockedCompareExchange8)((
volatile char *)_Tgt,
470 if (_Prev == _Old_exp)
480 volatile _Uint1_t *_Tgt, _Uint1_t *
_Exp, _Uint1_t _Value,
508 volatile _Uint1_t *_Tgt, _Uint1_t *
_Exp, _Uint1_t _Value,
522 return (
_INTRIN_SEQ_CST(_InterlockedExchangeAdd8)((
volatile char *)_Tgt, _Value));
529 return (
_INTRIN_RELAXED(_InterlockedExchangeAdd8)((
volatile char *)_Tgt, _Value));
536 return (
_INTRIN_ACQUIRE(_InterlockedExchangeAdd8)((
volatile char *)_Tgt, _Value));
543 return (
_INTRIN_RELEASE(_InterlockedExchangeAdd8)((
volatile char *)_Tgt, _Value));
547 volatile _Uint1_t *_Tgt, _Uint1_t _Value,
memory_order _Order)
572 volatile _Uint1_t *_Tgt, _Uint1_t _Value,
memory_order _Order)
582 return (
_INTRIN_SEQ_CST(_InterlockedAnd8)((
volatile char *)_Tgt, _Value));
589 return (
_INTRIN_RELAXED(_InterlockedAnd8)((
volatile char *)_Tgt, _Value));
596 return (
_INTRIN_ACQUIRE(_InterlockedAnd8)((
volatile char *)_Tgt, _Value));
603 return (
_INTRIN_RELEASE(_InterlockedAnd8)((
volatile char *)_Tgt, _Value));
607 volatile _Uint1_t *_Tgt, _Uint1_t _Value,
memory_order _Order)
636 return (
_INTRIN_SEQ_CST(_InterlockedOr8)((
volatile char *)_Tgt, _Value));
643 return (
_INTRIN_RELAXED(_InterlockedOr8)((
volatile char *)_Tgt, _Value));
650 return (
_INTRIN_ACQUIRE(_InterlockedOr8)((
volatile char *)_Tgt, _Value));
657 return (
_INTRIN_RELEASE(_InterlockedOr8)((
volatile char *)_Tgt, _Value));
661 volatile _Uint1_t *_Tgt, _Uint1_t _Value,
memory_order _Order)
690 return (
_INTRIN_SEQ_CST(_InterlockedXor8)((
volatile char *)_Tgt, _Value));
697 return (
_INTRIN_RELAXED(_InterlockedXor8)((
volatile char *)_Tgt, _Value));
704 return (
_INTRIN_ACQUIRE(_InterlockedXor8)((
volatile char *)_Tgt, _Value));
711 return (
_INTRIN_RELEASE(_InterlockedXor8)((
volatile char *)_Tgt, _Value));
715 volatile _Uint1_t *_Tgt, _Uint1_t _Value,
memory_order _Order)
743 #if defined(_M_ARM) || defined(_M_ARM64)
744 __iso_volatile_store16((
volatile short *)_Tgt, _Value);
754 #if defined(_M_ARM) || defined(_M_ARM64)
756 __iso_volatile_store16((
volatile short *)_Tgt, _Value);
768 #if defined(_M_ARM) || defined(_M_ARM64)
770 __iso_volatile_store16((
volatile short *)_Tgt, _Value);
774 _INTRIN_SEQ_CST(_InterlockedExchange16)((
volatile short *)_Tgt, _Value);
779 volatile _Uint2_t *_Tgt, _Uint2_t _Value,
memory_order _Order)
807 #if defined(_M_ARM) || defined(_M_ARM64)
808 _Value = __iso_volatile_load16((
volatile short *)_Tgt);
824 #if defined(_M_ARM) || defined(_M_ARM64)
825 _Value = __iso_volatile_load16((
volatile short *)_Tgt);
867 return (
_INTRIN_SEQ_CST(_InterlockedExchange16)((
volatile short *)_Tgt, _Value));
874 return (
_INTRIN_RELAXED(_InterlockedExchange16)((
volatile short *)_Tgt, _Value));
881 return (
_INTRIN_ACQUIRE(_InterlockedExchange16)((
volatile short *)_Tgt, _Value));
888 return (
_INTRIN_RELEASE(_InterlockedExchange16)((
volatile short *)_Tgt, _Value));
892 volatile _Uint2_t *_Tgt, _Uint2_t _Value,
memory_order _Order)
918 _Uint2_t *
_Exp, _Uint2_t _Value)
921 _Uint2_t _Old_exp = *
_Exp;
923 _Uint2_t _Prev =
_INTRIN_SEQ_CST(_InterlockedCompareExchange16)((
volatile short *)_Tgt,
926 if (_Prev == _Old_exp)
936 _Uint2_t *
_Exp, _Uint2_t _Value)
939 _Uint2_t _Old_exp = *
_Exp;
941 _Uint2_t _Prev =
_INTRIN_RELAXED(_InterlockedCompareExchange16)((
volatile short *)_Tgt,
944 if (_Prev == _Old_exp)
954 _Uint2_t *
_Exp, _Uint2_t _Value)
957 _Uint2_t _Old_exp = *
_Exp;
959 _Uint2_t _Prev =
_INTRIN_ACQUIRE(_InterlockedCompareExchange16)((
volatile short *)_Tgt,
962 if (_Prev == _Old_exp)
972 _Uint2_t *
_Exp, _Uint2_t _Value)
975 _Uint2_t _Old_exp = *
_Exp;
977 _Uint2_t _Prev =
_INTRIN_RELEASE(_InterlockedCompareExchange16)((
volatile short *)_Tgt,
980 if (_Prev == _Old_exp)
990 volatile _Uint2_t *_Tgt, _Uint2_t *
_Exp, _Uint2_t _Value,
1018 volatile _Uint2_t *_Tgt, _Uint2_t *
_Exp, _Uint2_t _Value,
1032 return (
_INTRIN_SEQ_CST(_InterlockedExchangeAdd16)((
volatile short *)_Tgt, _Value));
1039 return (
_INTRIN_RELAXED(_InterlockedExchangeAdd16)((
volatile short *)_Tgt, _Value));
1046 return (
_INTRIN_ACQUIRE(_InterlockedExchangeAdd16)((
volatile short *)_Tgt, _Value));
1053 return (
_INTRIN_RELEASE(_InterlockedExchangeAdd16)((
volatile short *)_Tgt, _Value));
1057 volatile _Uint2_t *_Tgt, _Uint2_t _Value,
memory_order _Order)
1082 volatile _Uint2_t *_Tgt, _Uint2_t _Value,
memory_order _Order)
1092 return (
_INTRIN_SEQ_CST(_InterlockedAnd16)((
volatile short *)_Tgt, _Value));
1099 return (
_INTRIN_RELAXED(_InterlockedAnd16)((
volatile short *)_Tgt, _Value));
1106 return (
_INTRIN_ACQUIRE(_InterlockedAnd16)((
volatile short *)_Tgt, _Value));
1113 return (
_INTRIN_RELEASE(_InterlockedAnd16)((
volatile short *)_Tgt, _Value));
1117 volatile _Uint2_t *_Tgt, _Uint2_t _Value,
memory_order _Order)
1146 return (
_INTRIN_SEQ_CST(_InterlockedOr16)((
volatile short *)_Tgt, _Value));
1153 return (
_INTRIN_RELAXED(_InterlockedOr16)((
volatile short *)_Tgt, _Value));
1160 return (
_INTRIN_ACQUIRE(_InterlockedOr16)((
volatile short *)_Tgt, _Value));
1167 return (
_INTRIN_RELEASE(_InterlockedOr16)((
volatile short *)_Tgt, _Value));
1171 volatile _Uint2_t *_Tgt, _Uint2_t _Value,
memory_order _Order)
1200 return (
_INTRIN_SEQ_CST(_InterlockedXor16)((
volatile short *)_Tgt, _Value));
1207 return (
_INTRIN_RELAXED(_InterlockedXor16)((
volatile short *)_Tgt, _Value));
1214 return (
_INTRIN_ACQUIRE(_InterlockedXor16)((
volatile short *)_Tgt, _Value));
1221 return (
_INTRIN_RELEASE(_InterlockedXor16)((
volatile short *)_Tgt, _Value));
1225 volatile _Uint2_t *_Tgt, _Uint2_t _Value,
memory_order _Order)
1253 #if defined(_M_ARM) || defined(_M_ARM64)
1254 __iso_volatile_store32((
volatile int *)_Tgt, _Value);
1264 #if defined(_M_ARM) || defined(_M_ARM64)
1266 __iso_volatile_store32((
volatile int *)_Tgt, _Value);
1278 #if defined(_M_ARM) || defined(_M_ARM64)
1280 __iso_volatile_store32((
volatile int *)_Tgt, _Value);
1317 #if defined(_M_ARM) || defined(_M_ARM64)
1318 _Value = __iso_volatile_load32((
volatile int *)_Tgt);
1334 #if defined(_M_ARM) || defined(_M_ARM64)
1335 _Value = __iso_volatile_load32((
volatile int *)_Tgt);
1377 return (
_INTRIN_SEQ_CST(_InterlockedExchange)((
volatile long *)_Tgt, _Value));
1384 return (
_INTRIN_RELAXED(_InterlockedExchange)((
volatile long *)_Tgt, _Value));
1391 return (
_INTRIN_ACQUIRE(_InterlockedExchange)((
volatile long *)_Tgt, _Value));
1398 return (
_INTRIN_RELEASE(_InterlockedExchange)((
volatile long *)_Tgt, _Value));
1436 if (_Prev == _Old_exp)
1454 if (_Prev == _Old_exp)
1472 if (_Prev == _Old_exp)
1490 if (_Prev == _Old_exp)
1542 return (
_INTRIN_SEQ_CST(_InterlockedExchangeAdd)((
volatile long *)_Tgt, _Value));
1549 return (
_INTRIN_RELAXED(_InterlockedExchangeAdd)((
volatile long *)_Tgt, _Value));
1556 return (
_INTRIN_ACQUIRE(_InterlockedExchangeAdd)((
volatile long *)_Tgt, _Value));
1563 return (
_INTRIN_RELEASE(_InterlockedExchangeAdd)((
volatile long *)_Tgt, _Value));
1602 return (
_INTRIN_SEQ_CST(_InterlockedAnd)((
volatile long *)_Tgt, _Value));
1609 return (
_INTRIN_RELAXED(_InterlockedAnd)((
volatile long *)_Tgt, _Value));
1616 return (
_INTRIN_ACQUIRE(_InterlockedAnd)((
volatile long *)_Tgt, _Value));
1623 return (
_INTRIN_RELEASE(_InterlockedAnd)((
volatile long *)_Tgt, _Value));
1656 return (
_INTRIN_SEQ_CST(_InterlockedOr)((
volatile long *)_Tgt, _Value));
1663 return (
_INTRIN_RELAXED(_InterlockedOr)((
volatile long *)_Tgt, _Value));
1670 return (
_INTRIN_ACQUIRE(_InterlockedOr)((
volatile long *)_Tgt, _Value));
1677 return (
_INTRIN_RELEASE(_InterlockedOr)((
volatile long *)_Tgt, _Value));
1710 return (
_INTRIN_SEQ_CST(_InterlockedXor)((
volatile long *)_Tgt, _Value));
1717 return (
_INTRIN_RELAXED(_InterlockedXor)((
volatile long *)_Tgt, _Value));
1724 return (
_INTRIN_ACQUIRE(_InterlockedXor)((
volatile long *)_Tgt, _Value));
1731 return (
_INTRIN_RELEASE(_InterlockedXor)((
volatile long *)_Tgt, _Value));
1766 #elif defined(_M_ARM64)
1767 __iso_volatile_store64((
volatile long long *)_Tgt, _Value);
1770 _INTRIN_RELAXED(_InterlockedExchange64)((
volatile long long *)_Tgt, _Value);
1781 #elif defined(_M_ARM64)
1783 __iso_volatile_store64((
volatile long long *)_Tgt, _Value);
1786 _INTRIN_RELEASE(_InterlockedExchange64)((
volatile long long *)_Tgt, _Value);
1794 #if defined(_M_ARM64)
1796 __iso_volatile_store64((
volatile long long *)_Tgt, _Value);
1800 _INTRIN_SEQ_CST(_InterlockedExchange64)((
volatile long long *)_Tgt, _Value);
1805 volatile _Uint8_t *_Tgt, _Uint8_t _Value,
memory_order _Order)
1837 #elif defined(_M_ARM)
1838 _Value = __ldrexd((
volatile long long *)_Tgt);
1841 #elif defined(_M_ARM64)
1842 _Value = __iso_volatile_load64((
volatile long long *)_Tgt);
1846 _Value = _InterlockedOr64((
volatile long long *)_Tgt, 0);
1860 #elif defined(_M_ARM)
1861 _Value = __ldrexd((
volatile long long *)_Tgt);
1863 #elif defined(_M_ARM64)
1864 _Value = __iso_volatile_load64((
volatile long long *)_Tgt);
1867 _Value = _InterlockedOr64((
volatile long long *)_Tgt, 0);
1906 return (
_INTRIN_SEQ_CST(_InterlockedExchange64)((
volatile long long *)_Tgt, _Value));
1913 return (
_INTRIN_RELAXED(_InterlockedExchange64)((
volatile long long *)_Tgt, _Value));
1920 return (
_INTRIN_ACQUIRE(_InterlockedExchange64)((
volatile long long *)_Tgt, _Value));
1927 return (
_INTRIN_RELEASE(_InterlockedExchange64)((
volatile long long *)_Tgt, _Value));
1931 volatile _Uint8_t *_Tgt, _Uint8_t _Value,
memory_order _Order)
1957 _Uint8_t *
_Exp, _Uint8_t _Value)
1960 _Uint8_t _Old_exp = *
_Exp;
1962 _Uint8_t _Prev =
_INTRIN_SEQ_CST(_InterlockedCompareExchange64)((
volatile long long *)_Tgt,
1965 if (_Prev == _Old_exp)
1975 _Uint8_t *
_Exp, _Uint8_t _Value)
1978 _Uint8_t _Old_exp = *
_Exp;
1980 _Uint8_t _Prev =
_INTRIN_RELAXED(_InterlockedCompareExchange64)((
volatile long long *)_Tgt,
1983 if (_Prev == _Old_exp)
1993 _Uint8_t *
_Exp, _Uint8_t _Value)
1996 _Uint8_t _Old_exp = *
_Exp;
1998 _Uint8_t _Prev =
_INTRIN_ACQUIRE(_InterlockedCompareExchange64)((
volatile long long *)_Tgt,
2001 if (_Prev == _Old_exp)
2011 _Uint8_t *
_Exp, _Uint8_t _Value)
2014 _Uint8_t _Old_exp = *
_Exp;
2016 _Uint8_t _Prev =
_INTRIN_RELEASE(_InterlockedCompareExchange64)((
volatile long long *)_Tgt,
2019 if (_Prev == _Old_exp)
2029 volatile _Uint8_t *_Tgt, _Uint8_t *
_Exp, _Uint8_t _Value,
2057 volatile _Uint8_t *_Tgt, _Uint8_t *
_Exp, _Uint8_t _Value,
2071 return (
_INTRIN_SEQ_CST(_InterlockedExchangeAdd64)((
volatile long long *)_Tgt, _Value));
2078 return (
_INTRIN_RELAXED(_InterlockedExchangeAdd64)((
volatile long long *)_Tgt, _Value));
2085 return (
_INTRIN_ACQUIRE(_InterlockedExchangeAdd64)((
volatile long long *)_Tgt, _Value));
2092 return (
_INTRIN_RELEASE(_InterlockedExchangeAdd64)((
volatile long long *)_Tgt, _Value));
2096 volatile _Uint8_t *_Tgt, _Uint8_t _Value,
memory_order _Order)
2121 volatile _Uint8_t *_Tgt, _Uint8_t _Value,
memory_order _Order)
2131 return (
_INTRIN_SEQ_CST(_InterlockedAnd64)((
volatile long long *)_Tgt, _Value));
2138 return (
_INTRIN_RELAXED(_InterlockedAnd64)((
volatile long long *)_Tgt, _Value));
2145 return (
_INTRIN_ACQUIRE(_InterlockedAnd64)((
volatile long long *)_Tgt, _Value));
2152 return (
_INTRIN_RELEASE(_InterlockedAnd64)((
volatile long long *)_Tgt, _Value));
2156 volatile _Uint8_t *_Tgt, _Uint8_t _Value,
memory_order _Order)
2185 return (
_INTRIN_SEQ_CST(_InterlockedOr64)((
volatile long long *)_Tgt, _Value));
2192 return (
_INTRIN_RELAXED(_InterlockedOr64)((
volatile long long *)_Tgt, _Value));
2199 return (
_INTRIN_ACQUIRE(_InterlockedOr64)((
volatile long long *)_Tgt, _Value));
2206 return (
_INTRIN_RELEASE(_InterlockedOr64)((
volatile long long *)_Tgt, _Value));
2210 volatile _Uint8_t *_Tgt, _Uint8_t _Value,
memory_order _Order)
2239 return (
_INTRIN_SEQ_CST(_InterlockedXor64)((
volatile long long *)_Tgt, _Value));
2246 return (
_INTRIN_RELAXED(_InterlockedXor64)((
volatile long long *)_Tgt, _Value));
2253 return (
_INTRIN_ACQUIRE(_InterlockedXor64)((
volatile long long *)_Tgt, _Value));
2260 return (
_INTRIN_RELEASE(_InterlockedXor64)((
volatile long long *)_Tgt, _Value));
2264 volatile _Uint8_t *_Tgt, _Uint8_t _Value,
memory_order _Order)
2316 static_assert(
sizeof(_Atomic_flag_t) ==
sizeof(
_Uint4_t),
2317 "Unexpected _Atomic_flag_t size");
2335 #if defined(_M_ARM) || defined(_M_ARM64)
2357 #if defined(_M_ARM) || defined(_M_ARM64)
2358 #define _YIELD_PROCESSOR __yield()
2361 #define _YIELD_PROCESSOR
2370 volatile _Atomic_flag_t *_Flag)
2377 volatile _Atomic_flag_t *_Flag)
2385 volatile _Atomic_flag_t *_Flag,
size_t _Size,
2386 volatile void *_Tgt,
volatile const void *
_Src,
2395 volatile _Atomic_flag_t *_Flag,
size_t _Size,
2396 volatile void *_Tgt,
volatile void *
_Src,
2399 unsigned char *
_Left = (
unsigned char *)_Tgt;
2400 unsigned char *
_Right = (
unsigned char *)_Src;
2405 unsigned char _Tmp = *
_Left;
2413 volatile _Atomic_flag_t *_Flag,
size_t _Size,
2414 volatile void *_Tgt,
volatile void *
_Exp,
const volatile void *
_Src,
2420 _Result =
_CSTD memcmp((
const void *)_Tgt, (
const void *)_Exp, _Size) == 0;
2430 volatile _Atomic_flag_t *_Flag,
size_t _Size,
2431 volatile void *_Tgt,
volatile void *
_Exp,
const volatile void *
_Src,
2438 #if _USE_INTERLOCKED_REFCOUNTING == 0
2479 &_Counter, &_Expected, _Expected + 1,
2492 #if defined(_M_IX86)
2493 #pragma pop_macro("_InterlockedExchange64")
2494 #pragma pop_macro("_InterlockedExchangeAdd64")
2495 #pragma pop_macro("_InterlockedAnd64")
2496 #pragma pop_macro("_InterlockedOr64")
2497 #pragma pop_macro("_InterlockedXor64")
2500 #pragma pop_macro("new")
2501 #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:479
_Uint1_t _Atomic_fetch_add_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value, memory_order _Order)
Definition: xatomic.h:546
void _Atomic_store_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value, memory_order _Order)
Definition: xatomic.h:1804
_Uint1_t _Fetch_and_relaxed_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:585
_Uint4_t _Fetch_or_relaxed_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1659
_Uint1_t _Fetch_add_release_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:539
int _Compare_exchange_seq_cst_2(volatile _Uint2_t *_Tgt, _Uint2_t *_Exp, _Uint2_t _Value)
Definition: xatomic.h:917
_Uint1_t _Fetch_or_release_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:653
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:1499
_Uint2_t _Atomic_load_2(volatile _Uint2_t *_Tgt, memory_order _Order)
Definition: xatomic.h:841
constexpr const _Ty &() _Left
Definition: algorithm:3722
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:2028
_Uint4_t _Atomic_fetch_sub_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value, memory_order _Order)
Definition: xatomic.h:1591
void _Atomic_store_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value, memory_order _Order)
Definition: xatomic.h:268
_Uint1_t _Fetch_and_acquire_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:592
_Uint8_t _Load_relaxed_8(volatile _Uint8_t *_Tgt)
Definition: xatomic.h:1852
_Uint1_t _Exchange_acquire_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:367
#define _STD_BEGIN
Definition: yvals.h:553
_Uint4_t _Fetch_or_release_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1673
_CRTIMP2_PURE short __CLRCALL_PURE_OR_CDECL _Exp(double *, double, short)
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:989
_Uint1_t _Fetch_and_release_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:599
_Uint2_t _Load_relaxed_2(volatile _Uint2_t *_Tgt)
Definition: xatomic.h:819
_Check_return_ int __cdecl memcmp(_In_reads_bytes_(_Size) void const *_Buf1, _In_reads_bytes_(_Size) void const *_Buf2, _In_ size_t _Size)
_Uint2_t _Fetch_or_acquire_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:1156
void _Store_relaxed_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1250
_Uint4_t _Atomic_exchange_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value, memory_order _Order)
Definition: xatomic.h:1401
void _Atomic_store_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value, memory_order _Order)
Definition: xatomic.h:1288
_Uint1_t _Fetch_or_acquire_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:646
#define _INTRIN_SEQ_CST(x)
Definition: xatomic.h:42
int _Compare_exchange_release_2(volatile _Uint2_t *_Tgt, _Uint2_t *_Exp, _Uint2_t _Value)
Definition: xatomic.h:971
_Uint8_t _Atomic_fetch_or_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value, memory_order _Order)
Definition: xatomic.h:2209
_Uint4_t _Fetch_xor_release_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1727
int _Compare_exchange_relaxed_2(volatile _Uint2_t *_Tgt, _Uint2_t *_Exp, _Uint2_t _Value)
Definition: xatomic.h:935
#define _INTRIN_RELEASE(x)
Definition: xatomic.h:41
_Uint4_t _Fetch_xor_seq_cst_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1706
_Atomic_integral_t _Inc_atomic_counter_explicit(_Atomic_counter_t &_Counter, memory_order _Order)
Definition: xatomic.h:2440
_Uint8_t _Exchange_acquire_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:1916
void _Atomic_thread_fence(memory_order _Order)
Definition: xatomic.h:2333
_Uint1_t _Fetch_add_relaxed_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:525
_Uint2_t _Fetch_and_relaxed_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:1095
_Uint1_t _Fetch_add_acquire_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:532
_Uint8_t _Fetch_or_seq_cst_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:2181
#define _INVALID_MEMORY_ORDER
Definition: xatomic.h:150
_Uint4_t _Atomic_fetch_and_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value, memory_order _Order)
Definition: xatomic.h:1626
_Uint2_t _Fetch_and_seq_cst_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:1088
_Uint1_t _Load_acquire_1(volatile _Uint1_t *_Tgt)
Definition: xatomic.h:324
_Uint4_t _Fetch_and_seq_cst_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1598
int _Compare_exchange_seq_cst_1(volatile _Uint1_t *_Tgt, _Uint1_t *_Exp, _Uint1_t _Value)
Definition: xatomic.h:407
_CRT_BEGIN_C_HEADER _Check_return_ _Ret_maybenull_ _In_ size_t _Size
Definition: corecrt_malloc.h:58
_Uint8_t _Fetch_add_acquire_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:2081
_Uint8_t _Fetch_xor_relaxed_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:2242
_Uint4_t _Atomic_fetch_or_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value, memory_order _Order)
Definition: xatomic.h:1680
_Atomic_integral_t _Load_atomic_counter_explicit(_Atomic_counter_t &_Counter, memory_order _Order)
Definition: xatomic.h:2462
_Atomic_integral_t _Dec_atomic_counter_explicit(_Atomic_counter_t &_Counter, memory_order _Order)
Definition: xatomic.h:2451
void _Atomic_signal_fence(memory_order)
Definition: xatomic.h:2352
void _Atomic_flag_clear(volatile _Atomic_flag_t *_Flag, memory_order _Order)
Definition: xatomic.h:2313
void _Store_release_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1261
_Uint4_t _Atomic_fetch_add_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value, memory_order _Order)
Definition: xatomic.h:1566
_Uint1_t _Atomic_load_1(volatile _Uint1_t *_Tgt, memory_order _Order)
Definition: xatomic.h:331
_Uint4_t _Fetch_xor_acquire_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1720
_Uint8_t _Fetch_add_release_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:2088
int _Compare_exchange_acquire_4(volatile _Uint4_t *_Tgt, _Uint4_t *_Exp, _Uint4_t _Value)
Definition: xatomic.h:1463
_Uint1_t _Exchange_relaxed_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:360
_Uint2_t _Atomic_fetch_add_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value, memory_order _Order)
Definition: xatomic.h:1056
memory_order _Memory_order_upper_bound(memory_order _Order1, memory_order _Order2)
Definition: xatomic.h:154
_Uint2_t _Fetch_xor_seq_cst_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:1196
_Uint8_t _Fetch_add_relaxed_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:2074
_Uint8_t _Fetch_and_acquire_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:2141
_Uint1_t _Fetch_xor_relaxed_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:693
_Uint32t _Uint4_t
Definition: xatomic0.h:25
_Uint2_t _Fetch_or_relaxed_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:1149
_Atomic_integral_t _Inc_atomic_counter(_Atomic_counter_t &_Counter)
Definition: xatomic.h:2446
int _Compare_exchange_seq_cst_8(volatile _Uint8_t *_Tgt, _Uint8_t *_Exp, _Uint8_t _Value)
Definition: xatomic.h:1956
_Uint1_t _Fetch_xor_seq_cst_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:686
int _Compare_exchange_acquire_2(volatile _Uint2_t *_Tgt, _Uint2_t *_Exp, _Uint2_t _Value)
Definition: xatomic.h:953
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:2429
_Uint2_t _Atomic_fetch_or_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value, memory_order _Order)
Definition: xatomic.h:1170
unsigned long long _Uint8_t
Definition: xatomic.h:139
void _Store_release_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:241
void _Store_release_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:1774
_Uint2_t _Atomic_fetch_and_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value, memory_order _Order)
Definition: xatomic.h:1116
_Uint2_t _Atomic_exchange_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value, memory_order _Order)
Definition: xatomic.h:891
_Uint4_t _Exchange_seq_cst_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1373
void _Store_release_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:751
_Uint8_t _Fetch_and_relaxed_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:2134
_Atomic_integral_t _Compare_increment_atomic_counter(_Atomic_counter_t &_Counter, _Atomic_integral_t _Expected)
Definition: xatomic.h:2483
_Uint8_t _Atomic_exchange_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value, memory_order _Order)
Definition: xatomic.h:1930
_Uint1_t _Load_seq_cst_1(volatile _Uint1_t *_Tgt)
Definition: xatomic.h:292
_Uint4_t _Fetch_add_release_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1559
_Uint1_t _Fetch_xor_release_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:707
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:1527
#define _INTRIN_ACQUIRE(x)
Definition: xatomic.h:40
_Uint4_t _Atomic_fetch_xor_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value, memory_order _Order)
Definition: xatomic.h:1734
_Uint2_t _Fetch_add_acquire_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:1042
_Uint4_t _Atomic_load_4(volatile _Uint4_t *_Tgt, memory_order _Order)
Definition: xatomic.h:1351
_Uint1_t _Load_relaxed_1(volatile _Uint1_t *_Tgt)
Definition: xatomic.h:309
_Uint8_t _Fetch_or_relaxed_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:2188
_Uint4_t _Fetch_xor_relaxed_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1713
_In_ size_t _Out_opt_ int _In_z_ unsigned char const * _Src
Definition: mbstring.h:1039
void _Store_seq_cst_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:764
_Uint4_t _Atomic_integral_t
Definition: xatomic0.h:26
_Uint8_t _Fetch_or_acquire_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:2195
_Uint8_t _Atomic_fetch_and_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value, memory_order _Order)
Definition: xatomic.h:2155
_Uint4_t _Fetch_or_seq_cst_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1652
_Uint2_t _Exchange_release_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:884
_Uint2_t _Fetch_and_release_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:1109
_Uint1_t _Fetch_or_relaxed_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:639
_Uint4_t _Load_relaxed_4(volatile _Uint4_t *_Tgt)
Definition: xatomic.h:1329
_Uint8_t _Load_seq_cst_8(volatile _Uint8_t *_Tgt)
Definition: xatomic.h:1828
int _Compare_exchange_release_4(volatile _Uint4_t *_Tgt, _Uint4_t *_Exp, _Uint4_t _Value)
Definition: xatomic.h:1481
int _Compare_exchange_seq_cst_4(volatile _Uint4_t *_Tgt, _Uint4_t *_Exp, _Uint4_t _Value)
Definition: xatomic.h:1427
void _Store_relaxed_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:230
_Uint8_t _Fetch_xor_seq_cst_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:2235
int _Compare_exchange_release_8(volatile _Uint8_t *_Tgt, _Uint8_t *_Exp, _Uint8_t _Value)
Definition: xatomic.h:2010
int _Compare_exchange_relaxed_4(volatile _Uint4_t *_Tgt, _Uint4_t *_Exp, _Uint4_t _Value)
Definition: xatomic.h:1445
_Uint1_t _Atomic_exchange_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value, memory_order _Order)
Definition: xatomic.h:381
_Uint4_t _Exchange_release_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1394
_Uint8_t _Atomic_fetch_sub_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value, memory_order _Order)
Definition: xatomic.h:2120
_Uint4_t _Load_seq_cst_4(volatile _Uint4_t *_Tgt)
Definition: xatomic.h:1312
int _Atomic_flag_test_and_set(volatile _Atomic_flag_t *_Flag, memory_order _Order)
Definition: xatomic.h:2288
memory_order
Definition: xatomic0.h:16
unsigned short _Uint2_t
Definition: xatomic.h:137
int _Compare_exchange_release_1(volatile _Uint1_t *_Tgt, _Uint1_t *_Exp, _Uint1_t _Value)
Definition: xatomic.h:461
#define _YIELD_PROCESSOR
Definition: xatomic.h:2361
void _Atomic_copy(volatile _Atomic_flag_t *_Flag, size_t _Size, volatile void *_Tgt, volatile const void *_Src, memory_order)
Definition: xatomic.h:2384
void _Store_seq_cst_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:254
_Uint1_t _Atomic_fetch_or_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value, memory_order _Order)
Definition: xatomic.h:660
_Uint2_t _Exchange_acquire_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:877
_Uint4_t _Exchange_relaxed_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1380
_Uint1_t _Atomic_fetch_xor_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value, memory_order _Order)
Definition: xatomic.h:714
Definition: xatomic0.h:21
memcpy(_Destination, _Source, _SourceSize)
_Uint8_t _Exchange_release_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:1923
_Uint4_t _Fetch_add_seq_cst_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1538
_Uint1_t _Fetch_or_seq_cst_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:632
_Uint1_t _Exchange_release_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:374
_Uint2_t _Fetch_add_relaxed_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:1035
#define _STD_END
Definition: yvals.h:554
_Uint4_t _Fetch_or_acquire_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1666
_In_ _Value
Definition: corecrt_wstdlib.h:65
_Uint8_t _Fetch_and_release_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:2148
_Uint8_t _Atomic_fetch_add_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value, memory_order _Order)
Definition: xatomic.h:2095
_Uint2_t _Atomic_fetch_xor_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value, memory_order _Order)
Definition: xatomic.h:1224
_Atomic_integral_t _Dec_atomic_counter(_Atomic_counter_t &_Counter)
Definition: xatomic.h:2457
Definition: xatomic0.h:18
void _Store_seq_cst_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1274
_Uint8_t _Fetch_and_seq_cst_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:2127
void _Lock_spin_lock(volatile _Atomic_flag_t *_Flag)
Definition: xatomic.h:2369
_Uint2_t _Atomic_fetch_sub_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value, memory_order _Order)
Definition: xatomic.h:1081
void _Store_relaxed_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:740
_Uint2_t _Fetch_add_seq_cst_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:1028
_Uint2_t _Fetch_xor_acquire_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:1210
_Uint2_t _Exchange_seq_cst_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:863
_Uint4_t _Exchange_acquire_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1387
_Uint8_t _Fetch_or_release_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:2202
_Uint1_t _Fetch_add_seq_cst_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:518
_Uint1_t _Atomic_fetch_and_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value, memory_order _Order)
Definition: xatomic.h:606
_Uint8_t _Fetch_xor_acquire_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:2249
_Uint8_t _Fetch_xor_release_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:2256
void _Store_relaxed_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:1760
Definition: xatomic0.h:17
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, memory_order)
Definition: xatomic.h:2412
_Uint4_t _Fetch_and_release_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1619
_Uint1_t _Exchange_seq_cst_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:353
long _Atomic_flag_t
Definition: xatomic.h:142
_Atomic_integral_t _Compare_increment_atomic_counter_explicit(_Atomic_counter_t &_Counter, _Atomic_integral_t _Expected, memory_order _Order)
Definition: xatomic.h:2473
_Uint2_t _Fetch_add_release_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:1049
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:507
Definition: xatomic0.h:22
_Uint8_t _Atomic_load_8(volatile _Uint8_t *_Tgt, memory_order _Order)
Definition: xatomic.h:1880
void _Atomic_store_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value, memory_order _Order)
Definition: xatomic.h:778
Definition: xatomic0.h:20
_Uint2_t _Exchange_relaxed_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:870
_Uint8_t _Load_acquire_8(volatile _Uint8_t *_Tgt)
Definition: xatomic.h:1873
#define _CSTD
Definition: yvals.h:570
#define _Compiler_barrier()
Definition: xatomic.h:22
Definition: xatomic0.h:19
_Uint4_t _Fetch_and_acquire_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1612
void _Unlock_spin_lock(volatile _Atomic_flag_t *_Flag)
Definition: xatomic.h:2376
_Uint8_t _Atomic_fetch_xor_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value, memory_order _Order)
Definition: xatomic.h:2263
_Uint8_t _Exchange_relaxed_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:1909
_Uint1_t _Atomic_fetch_sub_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value, memory_order _Order)
Definition: xatomic.h:571
_STD_BEGIN typedef unsigned char _Uint1_t
Definition: xatomic.h:136
_Uint4_t _Fetch_add_acquire_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1552
_Atomic_integral_t _Load_atomic_counter(_Atomic_counter_t &_Counter)
Definition: xatomic.h:2468
_Uint2_t _Fetch_and_acquire_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:1102
_Uint4_t _Load_acquire_4(volatile _Uint4_t *_Tgt)
Definition: xatomic.h:1344
#define _INTRIN_RELAXED(x)
Definition: xatomic.h:39
_Uint4_t _Fetch_add_relaxed_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1545
_Uint2_t _Fetch_or_release_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:1163
void _Atomic_exchange(volatile _Atomic_flag_t *_Flag, size_t _Size, volatile void *_Tgt, volatile void *_Src, memory_order)
Definition: xatomic.h:2394
_Uint8_t _Exchange_seq_cst_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:1902
void _Store_seq_cst_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:1790
_Result
Definition: corecrt_wconio.h:362
_Uint1_t _Fetch_xor_acquire_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:700
int _Compare_exchange_relaxed_8(volatile _Uint8_t *_Tgt, _Uint8_t *_Exp, _Uint8_t _Value)
Definition: xatomic.h:1974
_Uint2_t _Fetch_xor_relaxed_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:1203
_Uint4_t _Fetch_and_relaxed_4(volatile _Uint4_t *_Tgt, _Uint4_t _Value)
Definition: xatomic.h:1605
int _Compare_exchange_relaxed_1(volatile _Uint1_t *_Tgt, _Uint1_t *_Exp, _Uint1_t _Value)
Definition: xatomic.h:425
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:2056
_Uint2_t _Load_acquire_2(volatile _Uint2_t *_Tgt)
Definition: xatomic.h:834
long __cdecl _InterlockedCompareExchange(long volatile *, long, long)
_Uint2_t _Load_seq_cst_2(volatile _Uint2_t *_Tgt)
Definition: xatomic.h:802
int _Compare_exchange_acquire_1(volatile _Uint1_t *_Tgt, _Uint1_t *_Exp, _Uint1_t _Value)
Definition: xatomic.h:443
_Uint2_t _Fetch_or_seq_cst_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:1142
_Uint2_t _Fetch_xor_release_2(volatile _Uint2_t *_Tgt, _Uint2_t _Value)
Definition: xatomic.h:1217
_Atomic_integral_t _Atomic_counter_t
Definition: xatomic0.h:47
constexpr const _Ty &() _Right
Definition: algorithm:3723
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:1017
int _Compare_exchange_acquire_8(volatile _Uint8_t *_Tgt, _Uint8_t *_Exp, _Uint8_t _Value)
Definition: xatomic.h:1992
_Uint8_t _Fetch_add_seq_cst_8(volatile _Uint8_t *_Tgt, _Uint8_t _Value)
Definition: xatomic.h:2067
_Uint1_t _Fetch_and_seq_cst_1(volatile _Uint1_t *_Tgt, _Uint1_t _Value)
Definition: xatomic.h:578
void _Validate_compare_exchange_memory_order(memory_order _Success, memory_order _Failure)
Definition: xatomic.h:196