14 #pragma intrinsic(_InterlockedExchangeAdd)
15 #pragma intrinsic(_InterlockedExchangeAdd64)
27 return __atomic_fetch_add(address, val, __ATOMIC_RELAXED);
29 static_assert(
sizeof(
long) ==
sizeof(uint32_t),
30 "Expected long to be a 32 bit type");
31 return static_cast<uint32_t
>(_InterlockedExchangeAdd(
32 reinterpret_cast<long*
>(address),
static_cast<long>(val)));
34 static_assert(
false,
"AtomicFetchAddRelaxed not implemented for platform");
44 return __atomic_fetch_add(address, val, __ATOMIC_RELAXED);
46 return static_cast<uint64_t
>(_InterlockedExchangeAdd64(
47 reinterpret_cast<int64_t*
>(address),
static_cast<int64_t
>(val)));
49 static_assert(
false,
"AtomicFetchAddRelaxed not implemented for platform");
uint32_t AtomicFetchAddRelaxed(uint32_t *address, uint32_t val)
Generic file read and write utility for python interface.