for a memory location that is accessed by a single thread, is it allowed to do:
old = load_buffer(global_addr);
store_buffer(new, global_addr); // will be executed before the memory load is finished
and expect old to contain the original value and the memory to contain the new value?