According to the author it fails on overflow. I believe this is not a problem for 64 bits, but a serious problem for 32 bits, thus AtomicUint should not be used. I'm not sure if LLVM atomic intrinsics support 64 bit atomic operations on all supported 32 bit architectures, but if they do, an AtomicU64 could fix this.