This question is about memory consistency. There is an example below that might help if it's unclear.
A problem I am looking at asks for code that can do something when executed on Power/ARM that it could not on the Sparc under RMO. Is this possible, please? Many thanks.
[The hint I am given is that Power/ARM don't do atomic stores. This is in the sense that a store can appear in different L1 caches at different times, rather than in the sense that it's possible to get a view of a partly executed write. I think the hint might not be right because RMO does not preserve load order, and that in turn can do anything that a non-atomic write could?]
To clarify the question, suppose I asked about TSO rather than RMO. The answer could have four threads: i) x=1, ii) y=2, iii) r1=[x]; r2=[y]; iv) r3=[y]; r4=[x]. Variables x and y are initialised to 0. The outcome r1, r2, r3, r4 = 1, 0, 2, 0 would not be possible under TSO which only delays writes (and does not reorder anything). Either the assignment to x or y happened first, and the result is inconsistent with either of those possibilities. The outcome can however occur on the ARM because different CPUs can see different writes at different times.