Thread overview | ||||||
---|---|---|---|---|---|---|
|
August 13, 2017 Read/Write memory barriers in D? | ||||
---|---|---|---|---|
| ||||
I am converting a C code that uses this macro: #define CompletePastWritesBeforeFutureWrites _WriteBarrier(); _mm_sfence() As far as I see core.atomic:atomicFence() is the equivalent of _mm_sfence() but I can't find what would be the equivalent of _WriteBarrier(). As far as I understand it is used just to tell the compiler it can't rearrange instructions during optimizations so subsequent memory writes happen before previous ones. Same for _ReadBarrier(). |
August 13, 2017 Re: Read/Write memory barriers in D? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Igor Attachments:
| maybe something like https://dlang.org/phobos/core_bitop.html#.volatileLoad and https://dlang.org/phobos/core_bitop.html#.volatileStore On Sun, Aug 13, 2017 at 1:37 PM, Igor via Digitalmars-d-learn < digitalmars-d-learn@puremagic.com> wrote: > I am converting a C code that uses this macro: > > #define CompletePastWritesBeforeFutureWrites _WriteBarrier(); _mm_sfence() > > As far as I see core.atomic:atomicFence() is the equivalent of > _mm_sfence() but I can't find what would be the equivalent of > _WriteBarrier(). As far as I understand it is used just to tell the > compiler it can't rearrange instructions during optimizations so subsequent > memory writes happen before previous ones. Same for _ReadBarrier(). > |
August 13, 2017 Re: Read/Write memory barriers in D? | ||||
---|---|---|---|---|
| ||||
Attachments:
| or maybe use core.atomic.atomicLoad and store with right https://dlang.org/phobos/core_atomic.html#.MemoryOrder On Sun, Aug 13, 2017 at 1:51 PM, Daniel Kozak <kozzi11@gmail.com> wrote: > maybe something like https://dlang.org/phobos/ core_bitop.html#.volatileLoad and https://dlang.org/phobos/ core_bitop.html#.volatileStore > > On Sun, Aug 13, 2017 at 1:37 PM, Igor via Digitalmars-d-learn < digitalmars-d-learn@puremagic.com> wrote: > >> I am converting a C code that uses this macro: >> >> #define CompletePastWritesBeforeFutureWrites _WriteBarrier(); >> _mm_sfence() >> >> As far as I see core.atomic:atomicFence() is the equivalent of >> _mm_sfence() but I can't find what would be the equivalent of >> _WriteBarrier(). As far as I understand it is used just to tell the >> compiler it can't rearrange instructions during optimizations so subsequent >> memory writes happen before previous ones. Same for _ReadBarrier(). >> > > |
August 13, 2017 Re: Read/Write memory barriers in D? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Daniel Kozak | On Sunday, 13 August 2017 at 11:58:56 UTC, Daniel Kozak wrote:
> or maybe use core.atomic.atomicLoad and store with right https://dlang.org/phobos/core_atomic.html#.MemoryOrder
>
> On Sun, Aug 13, 2017 at 1:51 PM, Daniel Kozak <kozzi11@gmail.com> wrote:
>
>> maybe something like https://dlang.org/phobos/ core_bitop.html#.volatileLoad and https://dlang.org/phobos/ core_bitop.html#.volatileStore
>>
Based on documentation volatileLoad/volatileStore seems like the closest thing so I'll go with that for now. Thanks.
|
Copyright © 1999-2021 by the D Language Foundation