<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Jun 12, 2014 at 5:22 PM, Tim Northover <span dir="ltr"><<a href="mailto:t.p.northover@gmail.com" target="_blank">t.p.northover@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div id=":4zy" class="a3s" style="overflow:hidden">I've decided the next step in atomics is the <span class="il">weak</span> compare-and-exchange<br>

operation. As with the failure order, I'm going t outline the<br>
direction I'd like to take:<br>
<br>
1. All <span class="il">cmpxchg</span> instructions now return { iN, i1 } where the first<br>
value is what we got before (the loaded result), the second == 1 if an<br>
exchange took place.<br>
1. "<span class="il">weak</span>" is an optional modifier to the <span class="il">cmpxchg</span> instructions. If<br>
anyone wants a bikeshed to paint, this would be a good one. I wasn't<br>
sure myself.<br>
<br>
Theoretically, we could only modify the return type of the <span class="il">weak</span><br>
variant, but I think that making it a global change helps keep the IR<br>
uniform. Additionally, this extra bit actually exists on most<br>
platforms even for the strong <span class="il">cmpxchg</span>: on LL/SC ones by virtue of<br>
control flow, and x86 (for example) sets ZF based on it.<br></div></blockquote></div><br>Ok, I've mulled over all of the IR-level memory model changes. While I didn't *really* doubt that this was the right way to go, I'm increasingly happy with it.</div>
<div class="gmail_extra"><br></div><div class="gmail_extra">I specifically increasingly happy with the { iN, i1 } result. I do wish we had a better way in the IR to model this entire concept (which we see in the overflow arithmetic intrinsics as well) but we don't. With the current IR, this is clearly the best design (and I feel bad that I argued against it in the original design discussion years ago... ah, hindsight). If we ever figure out a better way to model this kind of operation, then we can reconsider all of them in light of that, but I'm not sure when or if that day will even arrive.</div>
</div>