<html><head><base href="x-msg://930/"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><br class="Apple-interchange-newline">
</div>
<br><div><div>On 30 Mar 2010, at 02:37, Jay K wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><span class="Apple-style-span" style="border-collapse: separate; font-family: Helvetica; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div class="hmmessage" style="font-size: 10pt; font-family: Verdana; ">> The only requirement for M3 was that we have proper support for<br>> atomic ops in the language upon which to build the synchronisation<br>> primitives. We are close to having this now.<br> <br> <br>Or surely implement them in C..<br></div></span></blockquote><div><br></div><div>We want them inline.</div><br><blockquote type="cite"><span class="Apple-style-span" style="border-collapse: separate; font-family: Helvetica; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div class="hmmessage" style="font-size: 10pt; font-family: Verdana; ">Anyway, I believe m3back now (a few weeks) has parity with or exceeds the gcc backend.<br> Depending on interpretation.<br> <br> <br> The gcc backend only accepts some memory orders.<br> <br> <br> m3back accepts them all and interprets them all as sequential.<br></div></span></blockquote><div><br></div><div>same as gcc.</div><br><blockquote type="cite"><span class="Apple-style-span" style="border-collapse: separate; font-family: Helvetica; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div class="hmmessage" style="font-size: 10pt; font-family: Verdana; "> <br> <br>I have more testing and optimization to do, but I think it is all there<br>and probably works. Optimization in particular is that add/sub/xor<br>don't need to use compare/exchange/retry loops.<br> <br> <br>And load/store could certainly be more efficient such as just<br>using one exchange to do a store, instead of a fence on either side.<br> <br> <br>I think it is also probably reasonable to defined variants that<br>don't return the new value. That way or and and can be provided<br>more efficiently -- without a compare/exchange/retry loop.<br> <br> <br> - Jay<br></div></span></blockquote></div><br></body></html>