On Friday, 7 February 2014 at 11:17:49 UTC, Stanislav Blinov wrote:
On Friday, 7 February 2014 at 08:10:58 UTC, Sean Kelly wrote:
Weird. atomicLoad(raw) should be the same as atomicLoad(acq), and atomicStore(raw) should be the same as atomicStore(rel). At least on x86. I don't know why that change made a difference in performance.

huh?

--8<-- core/atomic.d

        template needsLoadBarrier( MemoryOrder ms )
        {
            enum bool needsLoadBarrier = ms != MemoryOrder.raw;
        }

-->8--

Didn't you write this? :)

Oops. I thought that since Intel has officially defined loads as having acquire semantics, I had eliminated the barrier requirement there. But I guess not. I suppose it's an issue worth discussing. Does anyone know offhand what C++0x implementations do for load acquires on x86?

Reply via email to