<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Dec 14, 2016 at 5:12 PM, Kyle Butt <span dir="ltr"><<a href="mailto:iteratee@google.com" target="_blank">iteratee@google.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote"><span class="">On Wed, Dec 14, 2016 at 1:34 PM, James Knight <span dir="ltr"><<a href="mailto:jyknight@google.com" class="m_6168852683616060553cremed" target="_blank">jyknight@google.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Seems reasonable.<br>
<br>
I'd note additionally that on some architectures, that the success block *must* be the fallthrough case (that is to say: you must not have any taken branches between the load-linked and store-conditional) in order to have an architectural guarantee that two such loops on different CPUs won't livelock against eachother.<br></blockquote><div><br></div></span><div>Do we have a way to *require* that 2 blocks be laid out consecutively? I don't think that we do. A hint is better than nothing, but not a guarantee.</div></div></div></div></blockquote><div><br></div><div>Not as far as I know. (Of course, we also ought to be requiring that there's no extraneous loads/stores between the ll/sc, which we also cannot do, especially across basic blocks, but also need to do.)</div><div><br></div><div>I mostly mentioned that as a B.T.W. :)</div><div><br></div></div></div></div>