Go to the documentation of this file.
30 #define as_load_double(_target) ({ \
31 uint64_t v = as_load_uint64((const uint64_t*)_target); \
36 #define as_load_float(_target) ({ \
37 uint32_t v = as_load_uint32((const uint32_t*)_target); \
43 #define as_load_bool(_target) ({ \
44 (bool)as_load_uint8((const uint8_t*)_target); \
49 #define as_load_bool_acq(_target) ({ \
50 (bool)as_load_uint8_acq((const uint8_t*)_target); \
58 #define as_store_double(_target, _value) ({ \
60 as_store_uint64((uint64_t*)_target, *(uint64_t*)&v); \
64 #define as_store_float(_target, _value) ({ \
66 as_store_uint32((uint32_t*)_target, *(uint32_t*)&v); \
71 #define as_store_bool(_target, _value) ({ \
72 as_store_uint8((uint8_t*)_target, (uint8_t)_value); \
77 #define as_store_bool_rls(_target, _value) ({ \
78 as_store_uint8_rls((uint8_t*)_target, (uint8_t)_value); \
87 #define as_fas_ptr(_target, _value) ({ \
88 (void*)as_fas_uint64((uint64_t*)_target, (uint64_t)_value); \
92 #define as_fas_double(_target, _value) ({ \
94 uint64_t ov = as_fas_uint64((uint64_t*)_target, *(uint64_t*)&nv); \
99 #define as_fas_float(_target, _value) ({ \
101 uint32_t ov = as_fas_uint32((uint32_t*)_target, *(uint32_t*)&nv); \
111 #define as_cas_ptr(_target, _old_value, _new_value) ({ \
112 as_cas_uint64((uint64_t*)_target, (uint64_t)_old_value, \
113 (uint64_t)_new_value); \
117 #define as_cas_double(_target, _old_value, _new_value) ({ \
118 double ov = _old_value; \
119 double nv = _new_value; \
120 as_cas_uint64((uint64_t*)_target, *(uint64_t*)&ov, *(uint64_t*)&nv); \
124 #define as_cas_float(_target, _old_value, _new_value) ({ \
125 float ov = _old_value; \
126 float nv = _new_value; \
127 as_cas_uint32((uint32_t*)_target, *(uint32_t*)&ov, *(uint32_t*)&nv); \