Expand atomic load to cmp_swp.

LLVM fakes atomic load and store with compare-swap which continues
with original MemoryVT. However, the MemVT should accord with newly
promoted type of arguments. Look like a llvm bug.