Currently 64-bit atomic<T> on x86 uses _InterlockedCompareExchange64 for any store operation, even for memory_order_relaxed.
Whereas for load it uses __iso_volatile_load64 intrinsic.
__iso_volatile_store64 appears to be working on x86. Though it was blamed to cause ICE in revision bb746ac.
Clarify the status of __iso_volatile_store64 on x86 and use it if it is possible.
Currently 64-bit
atomic<T>on x86 uses_InterlockedCompareExchange64for anystoreoperation, even formemory_order_relaxed.Whereas for
loadit uses__iso_volatile_load64intrinsic.__iso_volatile_store64appears to be working on x86. Though it was blamed to cause ICE in revision bb746ac.Clarify the status of
__iso_volatile_store64on x86 and use it if it is possible.