You can use the load and store intrinsic to force the strict memory access ordering of specific data objects. This intended use is for the case when the user suppresses the strict memory access ordering by using the -serialize-volatile- option.
Intrinsic | Prototype | Description |
---|---|---|
__st1_rel | void __st1_rel(void *dst, const char value); | Generates an st1.rel instruction. |
__st2_rel | void __st2_rel(void *dst, const short value); | Generates an st2.rel instruction. |
__st4_rel | void __st4_rel(void *dst, const int value); | Generates an st4.rel instruction. |
__st8_rel | void __st8_rel(void *dst, const __int64 value); | Generates an st8.rel instruction. |
__ld1_acq | unsigned char __ld1_acq(void *src); | Generates an ld1.acq instruction. |
__ld2_acq | unsigned short __ld2_acq(void *src); | Generates an ld2.acq instruction. |
__ld4_acq | unsigned int __ld4_acq(void *src); | Generates an ld4.acq instruction. |
__ld8_acq | unsigned __int64 __ld8_acq(void *src); | Generates an ld8.acq instruction. |