[LLVMdev] LLVM IR atomics: difference between unordered and monotonic?

Lei Zhao leizhao833 at gmail.com
Fri Jul 13 11:48:20 PDT 2012


Hi All,

  I am reading about LLVM IR atomics (http://llvm.org/docs/Atomics.html)
and get confused about the difference between "Unordered" and "Monotonic".
In particular, I am not sure I understand the statement of "It essentially
guarantees that if you take all the operations affecting a specific
address, a consistent ordering exists.". For me, it means that for the
following example, if {r1,r2} = {1,2}, {r3,r4} = {2,1} is not allowed
under "Monotonic" but allowed under "Unordered". Is this all how
"Monotonic" is stronger than "Unordered"? If not, can anyone provide an
example where other behaviors are allowed under "Unordered" but not
"Monotonic"?


----------------------------------------------------------------------------------------
T1            T2               T3             T4
W(X)=1     W(X)=2        r1=R(X)     r3=R(X)
                                   r2=R(X)     r4=R(X)

* Legend: four threads run in parallel; W(X)/R(X) meaning atomic write/read
of X.
----------------------------------------------------------------------------------------

Thank you.

- Lei
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20120713/f0935a3c/attachment.html>


More information about the llvm-dev mailing list