<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Verdana
}
--></style>
</head>
<body class='hmmessage'>
> 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>
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>
 <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>                                     </body>
</html>