This merges some of the atomic functions where they are almost identical,
or have acquire/release semantics.
While here clean them up, the cbnz instruction doesn't change the condition
flags so drop cc, however they should have memory added to the clobber list.