<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Jul 30, 2019, at 8:59 PM, Billy O'Neal (VC LIBS) <<a href="mailto:bion@microsoft.com" class="">bion@microsoft.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="WordSection1" style="page: WordSection1; caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;"><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">These are the builtins I have, not necessarily the builtins I desire.</div></div></div></blockquote><div><br class=""></div><div>Definitely the builtins you deserve šŸ¦¹ā€ā™‚ļø</div><div><span style="font-size: 11pt; font-family: Calibri, sans-serif; caret-color: rgb(0, 0, 0);" class=""><br class=""></span></div><div><span style="font-size: 11pt; font-family: Calibri, sans-serif; caret-color: rgb(0, 0, 0);" class=""> </span></div><blockquote type="cite" class=""><div class="WordSection1" style="page: WordSection1; caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;"><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">Billy3</div><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></div></div><hr tabindex="-1" style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; display: inline-block; width: 838.875px;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class=""></span><div id="divRplyFwdMsg" dir="ltr" style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><font face="Calibri, sans-serif" style="font-size: 11pt;" class=""><b class="">From:</b><span class="Apple-converted-space"> </span><a href="mailto:jfbastien@apple.com" class="">jfbastien@apple.com</a> <<a href="mailto:jfbastien@apple.com" class="">jfbastien@apple.com</a>> on behalf of JF Bastien <<a href="mailto:jfbastien@apple.com" class="">jfbastien@apple.com</a>><br class=""><b class="">Sent:</b><span class="Apple-converted-space"> </span>Tuesday, July 30, 2019 8:58:14 PM<br class=""><b class="">To:</b><span class="Apple-converted-space"> </span>Billy O'Neal (VC LIBS) <<a href="mailto:bion@microsoft.com" class="">bion@microsoft.com</a>><br class=""><b class="">Cc:</b><span class="Apple-converted-space"> </span>Eli Friedman <<a href="mailto:efriedma@quicinc.com" class="">efriedma@quicinc.com</a>>; <a href="mailto:rnk@google.com" class="">rnk@google.com</a> <<a href="mailto:rnk@google.com" class="">rnk@google.com</a>>; cfe-dev <<a href="mailto:cfe-dev@lists.llvm.org" class="">cfe-dev@lists.llvm.org</a>><br class=""><b class="">Subject:</b><span class="Apple-converted-space"> </span>Re: [cfe-dev] FYI, Intel folks might be looking to add the __iso_volatile_Xxx family for MSVC STL <atomic> soon</font><div class=""> </div></div><div style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">Eh, those arenā€™t the builtins Iā€™d choose, but you do youā€¦ Reidā€™s implementation seems to match the quirks chosen, so Iā€™m not sure thereā€™s anything else to do here.<div class=""><br class=""><div class=""><br class=""><blockquote type="cite" class=""><div class="">On Jul 30, 2019, at 8:54 PM, Billy O'Neal (VC LIBS) <<a href="mailto:bion@microsoft.com" class="" style="color: rgb(149, 79, 114); text-decoration: underline;">bion@microsoft.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="WordSection1" style="page: WordSection1; caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;"><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">> TL;DR: what are these _iso_ things?</div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;"><o:p class=""> </o:p></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">They are volatile ops that are guaranteed to use 1 instruction to do that load. So for x86 that means using x87, or MMX, or SSE to do the load. They also suppress the ā€˜volatile is affected by the /volatile:ms vs. /volatile:iso settingā€™ warnings. <atomic> uses these in conjunction with barrier instrinsics.</div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;"><o:p class=""> </o:p></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">#if defined(_M_ARM) || defined(_M_ARM64)</div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">#define _Memory_barrier() __dmb(0xB) // inner shared data memory barrier</div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">#define _Compiler_or_memory_barrier() _Memory_barrier()</div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;"><o:p class=""> </o:p></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">#define _ISO_VOLATILE_STORE8(_Storage, _Value) __iso_volatile_store8(_Atomic_address_as<char>(_Storage), _Value)</div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">#define _ISO_VOLATILE_STORE16(_Storage, _Value) __iso_volatile_store16(_Atomic_address_as<short>(_Storage), _Value)</div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">#define _ISO_VOLATILE_STORE32(_Storage, _Value) __iso_volatile_store32(_Atomic_address_as<int>(_Storage), _Value)</div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">#define _ISO_VOLATILE_STORE64(_Storage, _Value) __iso_volatile_store64(_Atomic_address_as<long long>(_Storage), _Value)</div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">#define _ISO_VOLATILE_LOAD8(_Storage) __iso_volatile_load8(_Atomic_address_as<const char>(_Storage))</div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">#define _ISO_VOLATILE_LOAD16(_Storage) __iso_volatile_load16(_Atomic_address_as<const short>(_Storage))</div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;"><o:p class=""> </o:p></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">#elif defined(_M_IX86) || defined(_M_X64)</div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">// x86/x64 hardware only emits memory barriers inside _Interlocked intrinsics</div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">#define _Compiler_or_memory_barrier() _Compiler_barrier()</div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;"><o:p class=""> </o:p></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">#define _ISO_VOLATILE_STORE8(_Storage, _Value) (*_Atomic_address_as<char>(_Storage) = _Value)</div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">#define _ISO_VOLATILE_STORE16(_Storage, _Value) (*_Atomic_address_as<short>(_Storage) = _Value)</div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">#define _ISO_VOLATILE_STORE32(_Storage, _Value) (*_Atomic_address_as<long>(_Storage) = _Value)</div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">#define _ISO_VOLATILE_STORE64(_Storage, _Value) (*_Atomic_address_as<long long>(_Storage) = _Value)</div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">#define _ISO_VOLATILE_LOAD8(_Storage) (*_Atomic_address_as<const char>(_Storage))</div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">#define _ISO_VOLATILE_LOAD16(_Storage) (*_Atomic_address_as<const short>(_Storage))</div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;"><o:p class=""> </o:p></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">#else // ^^^ x86/x64 / unsupported hardware vvv</div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">#error Unsupported hardware</div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">#endif // hardware</div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;"><o:p class=""> </o:p></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;"><o:p class=""> </o:p></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">ā€¦. Laterā€¦</div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;"><o:p class=""> </o:p></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">// in _<i class="">Atomic</i>_storage<1></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">    _NODISCARD _Ty load() const noexcept { // load with sequential consistency</div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">        char _As_bytes = _ISO_VOLATILE_LOAD8(_Storage);</div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">        _Compiler_or_memory_barrier();</div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">        return reinterpret_cast<_Ty&>(_As_bytes);</div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">    }</div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;"><o:p class=""> </o:p></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">    _NODISCARD _Ty load(const memory_order _Order) const noexcept { // load with given memory order</div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">        char _As_bytes = _ISO_VOLATILE_LOAD8(_Storage);</div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">        _Load_barrier(_Order);</div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">        return reinterpret_cast<_Ty&>(_As_bytes);</div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">    }</div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;"><o:p class=""> </o:p></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">Billy3</div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;"><o:p class=""> </o:p></div><div class="" style="border-style: solid none none; border-top-width: 1pt; border-top-color: rgb(225, 225, 225); padding: 3pt 0in 0in;"><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; border: none; padding: 0in;"><b class="">From:<span class="Apple-converted-space"> </span></b><a href="mailto:jfbastien@apple.com" class="" style="color: rgb(149, 79, 114); text-decoration: underline;">JF Bastien</a><br class=""><b class="">Sent:<span class="Apple-converted-space"> </span></b>Tuesday, July 30, 2019 8:43 PM<br class=""><b class="">To:<span class="Apple-converted-space"> </span></b><a href="mailto:efriedma@quicinc.com" class="" style="color: rgb(149, 79, 114); text-decoration: underline;">Eli Friedman</a><br class=""><b class="">Cc:<span class="Apple-converted-space"> </span></b><a href="mailto:rnk@google.com" class="" style="color: rgb(149, 79, 114); text-decoration: underline;">rnk@google.com</a>;<span class="Apple-converted-space"> </span><a href="mailto:bion@microsoft.com" class="" style="color: rgb(149, 79, 114); text-decoration: underline;">Billy O'Neal (VC LIBS)</a>;<span class="Apple-converted-space"> </span><a href="mailto:cfe-dev@lists.llvm.org" class="" style="color: rgb(149, 79, 114); text-decoration: underline;">cfe-dev</a><br class=""><b class="">Subject:<span class="Apple-converted-space"> </span></b>Re: [cfe-dev] FYI, Intel folks might be looking to add the __iso_volatile_Xxx family for MSVC STL <atomic> soon</div></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;"><o:p class=""> </o:p></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;"><o:p class=""> </o:p></div><div class=""><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;"><br class=""><br class=""><o:p class=""></o:p></div><blockquote class="" style="margin-top: 5pt; margin-bottom: 5pt;"><div class=""><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">On Jul 30, 2019, at 5:21 PM, Eli Friedman via cfe-dev <<a href="mailto:cfe-dev@lists.llvm.org" class="" style="color: rgb(149, 79, 114); text-decoration: underline;">cfe-dev@lists.llvm.org</a>> wrote:<o:p class=""></o:p></div></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;"><o:p class=""> </o:p></div><div class=""><div class="" style="margin-left: 0.5in;"><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;"><b class="">From:</b><span class="apple-converted-space"> </span>cfe-dev <<a href="mailto:cfe-dev-bounces@lists.llvm.org" class="" style="color: rgb(149, 79, 114); text-decoration: underline;"><span class="" style="color: purple;">cfe-dev-bounces@lists.llvm.org</span></a>><span class="apple-converted-space"> </span><b class="">On Behalf Of<span class="apple-converted-space"> </span></b>Reid Kleckner via cfe-dev<br class=""><b class="">Sent:</b><span class="apple-converted-space"> </span>Tuesday, July 30, 2019 4:54 PM<br class=""><b class="">To:</b><span class="apple-converted-space"> </span>Billy O'Neal (VC LIBS) <<a href="mailto:bion@microsoft.com" class="" style="color: rgb(149, 79, 114); text-decoration: underline;"><span class="" style="color: purple;">bion@microsoft.com</span></a>><br class=""><b class="">Cc:</b><span class="apple-converted-space"> </span>cfe-dev <<a href="mailto:cfe-dev@lists.llvm.org" class="" style="color: rgb(149, 79, 114); text-decoration: underline;"><span class="" style="color: purple;">cfe-dev@lists.llvm.org</span></a>><br class=""><b class="">Subject:</b><span class="apple-converted-space"> </span>[EXT] Re: [cfe-dev] FYI, Intel folks might be looking to add the __iso_volatile_Xxx family for MSVC STL <atomic> soon<o:p class=""></o:p></div></div><div class="" style="margin-left: 0.5in;"><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;"> <o:p class=""></o:p></div></div><div class=""><div class=""><div class="" style="margin-left: 0.5in;"><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">On Tue, Jul 30, 2019 at 4:15 PM Billy O'Neal (VC LIBS) <<a href="mailto:bion@microsoft.com" class="" style="color: rgb(149, 79, 114); text-decoration: underline;"><span class="" style="color: purple;">bion@microsoft.com</span></a>> wrote:<o:p class=""></o:p></div></div></div><div class=""><blockquote class="" style="border-style: none none none solid; border-left-width: 1pt; border-left-color: rgb(204, 204, 204); padding: 0in 0in 0in 6pt; margin: 5pt 0in 5pt 4.8pt;"><div class=""><div class=""><div class="" style="margin-left: 0.5in;"><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">> we can worry about optimization, perhaps using _Atomic, later<o:p class=""></o:p></div></div><div class="" style="margin-left: 0.5in;"><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;"> <o:p class=""></o:p></div></div><div class="" style="margin-left: 0.5in;"><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">We canā€™t use _Atomic because it would not be ABI compatible with our std::atomic; in particular, because we put the spinlock for non-lock-free atomics inside the atomic, for instance. And because that isnā€™t a thing for some of our supported frontends.<o:p class=""></o:p></div></div><div class="" style="margin-left: 0.5in;"><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;"> <o:p class=""></o:p></div></div><div class="" style="margin-left: 0.5in;"><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">It is possible that there are different intrinsics we could call for Clang that would make you folks happier, but we donā€™t know what those are or even if they exist at present.<o:p class=""></o:p></div></div></div></div></blockquote><div class=""><div class="" style="margin-left: 0.5in;"><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;"> <o:p class=""></o:p></div></div></div><div class=""><div class="" style="margin-left: 0.5in;"><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">I was thinking that perhaps the _Atomic_address_as template would do the necessary casts to use it when necessary without changing the storage type inside the std::atomic object.<o:p class=""></o:p></div></div><div class=""><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;"> <o:p class=""></o:p></div></div><div class=""><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">There are actually multiple APIs to access C++11 atomics in clang, since we invented APIs in parallel with gcc.  The __atomic_* builtins (<a href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgcc.gnu.org%2Fonlinedocs%2Fgcc%2F_005f_005fatomic-Builtins.html&data=02%7C01%7Cbion%40microsoft.com%7C5665cfc981d6467422ac08d7156b5a4d%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637001423138742477&sdata=hHYErAA2WohoEM5GDdpGElWzPn4H3xGD%2B3A5R9YOwKE%3D&reserved=0" originalsrc="https://gcc.gnu.org/onlinedocs/gcc/_005f_005fatomic-Builtins.html" shash="q6mUkvRxFjibT3FtvDIO4xJq2aav9fd4wj2N+P2Zsf513ts+V7tKwSwYYE59uWJQ+a/ifGI/SbdbQK0FFA0as2Mkwmse8AJNHfynOMA/3L2m3YaDnkZg0BSI9U5xeB0kvr+DNl69aFQslGT5h8Sd7uwoTZP/3erm0yoBDEZdwsc=" class="" style="color: rgb(149, 79, 114); text-decoration: underline;"><span class="" style="color: purple;">https://gcc.gnu.org/onlinedocs/gcc/_005f_005fatomic-Builtins.html</span></a>) donā€™t require the use of _Atomic types.<o:p class=""></o:p></div></div><div class=""><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;"> <o:p class=""></o:p></div></div><div class=""><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">Using volatile loads and stores with barriers probably prevents the compiler from performing any breaking optimizations, assuming the RMW atomics are protected appropriately, and the user doesnā€™t call any of the clang atomic builtins directly.  But itā€™s not a good idea; it wonā€™t optimize well.  For example, on AArch64, it will prevent the compiler from using the dedicated load-acquire and store-release instructions.<o:p class=""></o:p></div></div></div></div></div></div></blockquote><div class=""><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;"><o:p class=""> </o:p></div></div><div class=""><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">TL;DR: what are these _iso_ things? I read the bug report, I donā€™t see the details Iā€™d expect.<o:p class=""></o:p></div></div><div class=""><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">I think the __atomic_* builtins should work as Eli suggests.<o:p class=""></o:p></div></div><div class=""><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;"><o:p class=""> </o:p></div></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;"><br class=""><br class=""><o:p class=""></o:p></div><blockquote class="" style="margin-top: 5pt; margin-bottom: 5pt;"><div class=""><div class=""><div class=""><div class=""><div class=""><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">-Eli<o:p class=""></o:p></div></div></div></div></div><div class="" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;"><span class="" style="font-size: 9pt; font-family: Helvetica, sans-serif;">_______________________________________________<br class="">cfe-dev mailing list<br class=""></span><a href="mailto:cfe-dev@lists.llvm.org" class="" style="color: rgb(149, 79, 114); text-decoration: underline;"><span class="" style="font-size: 9pt; font-family: Helvetica, sans-serif; color: purple;">cfe-dev@lists.llvm.org</span></a><span class="" style="font-size: 9pt; font-family: Helvetica, sans-serif;"><br class=""></span><a href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.llvm.org%2Fcgi-bin%2Fmailman%2Flistinfo%2Fcfe-dev&data=02%7C01%7Cbion%40microsoft.com%7C5665cfc981d6467422ac08d7156b5a4d%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637001423138752468&sdata=yZTakjbq0PLgRsyms%2FAD%2BJZ6PNrZSJmGxzCbQm8icH0%3D&reserved=0" originalsrc="https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" shash="QXJFz4qVwDbpGK8kk3QPtxaCzghIRV8rM1X8sRwztjDQEu/gkUEuAF145iOYNvdyRVC1FLm96EEi69GIRy2jHtaJ8Br/CmKD4Y4ImcyIlX6ad6br0jmULjyauD0JcrcYSrErRC8pY8Pv4MmyL42ucgHSG0n1RN7Kn41cEOH+lmU=" class="" style="color: rgb(149, 79, 114); text-decoration: underline;"><span class="" style="font-size: 9pt; font-family: Helvetica, sans-serif; color: purple;">https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev</span></a></div></div></blockquote></div></div></div></blockquote></div></div></div></blockquote></div><br class=""></body></html>