I made an issue here: https://github.com/rust-lang/rust/issues/24564
To summarize, I would like to add support for CAS that is 2x the size of Ptr/Usize. This is to enable CAS + Value swaps.
There are two issues: The first is that it requires 16 byte alignment on 64 bit systems. The 2nd is that AtomicPtr would need to be paired up with an AtomicUsize in order to achieve the counter functionality. So perhaps the best idea is to not do arrays but a new Atomic type which is AtomicCountedPtr or something.