Lines Matching refs:ptr
137 #define FETCH_ADD(n, type) type __atomic_fetch_add_ ## n (volatile void* ptr, type value, int memor…
140 type ret = *(volatile type*)ptr; \
141 *(volatile type*)ptr = *(volatile type*)ptr + value; \
146 #define ADD_FETCH(n, type) type __atomic_add_fetch_ ## n (volatile void* ptr, type value, int memor…
149 type ret = *(volatile type*)ptr + value; \
150 *(volatile type*)ptr = ret; \
155 #define FETCH_SUB(n, type) type __atomic_fetch_sub_ ## n (volatile void* ptr, type value, int memor…
158 type ret = *(volatile type*)ptr; \
159 *(volatile type*)ptr = *(volatile type*)ptr - value; \
164 #define SUB_FETCH(n, type) type __atomic_sub_fetch_ ## n (volatile void* ptr, type value, int memor…
167 type ret = *(volatile type*)ptr - value; \
168 *(volatile type*)ptr = ret; \
173 #define FETCH_AND(n, type) type __atomic_fetch_and_ ## n (volatile void* ptr, type value, int memor…
176 type ret = *(volatile type*)ptr; \
177 *(volatile type*)ptr = *(volatile type*)ptr & value; \
182 #define AND_FETCH(n, type) type __atomic_and_fetch_ ## n (volatile void* ptr, type value, int memor…
185 type ret = *(volatile type*)ptr & value; \
186 *(volatile type*)ptr = ret; \
191 #define FETCH_OR(n, type) type __atomic_fetch_or_ ## n (volatile void* ptr, type value, int memorde…
194 type ret = *(volatile type*)ptr; \
195 *(volatile type*)ptr = *(volatile type*)ptr | value; \
200 #define OR_FETCH(n, type) type __atomic_or_fetch_ ## n (volatile void* ptr, type value, int memorde…
203 type ret = *(volatile type*)ptr | value; \
204 *(volatile type*)ptr = ret; \
209 #define FETCH_XOR(n, type) type __atomic_fetch_xor_ ## n (volatile void* ptr, type value, int memor…
212 type ret = *(volatile type*)ptr; \
213 *(volatile type*)ptr = *(volatile type*)ptr ^ value; \
218 #define XOR_FETCH(n, type) type __atomic_xor_fetch_ ## n (volatile void* ptr, type value, int memor…
221 type ret = *(volatile type*)ptr ^ value; \
222 *(volatile type*)ptr = ret; \
227 #define FETCH_NAND(n, type) type __atomic_fetch_nand_ ## n (volatile void* ptr, type value, int mem…
230 type ret = *(volatile type*)ptr; \
231 *(volatile type*)ptr = ~(*(volatile type*)ptr & value); \
236 #define NAND_FETCH(n, type) type __atomic_nand_fetch_ ## n (volatile void* ptr, type value, int mem…
239 type ret = ~(*(volatile type*)ptr & value); \
240 *(volatile type*)ptr = ret; \
245 …type) type CLANG_ATOMIC_SUFFIX(__sync_fetch_and_ ## op ##_ ## n) (volatile void* ptr, type value) \
247 return __atomic_fetch_ ## op ##_ ## n (ptr, value, __ATOMIC_SEQ_CST); \
251 …type) type CLANG_ATOMIC_SUFFIX(__sync_ ## op ##_and_fetch_ ## n) (volatile void* ptr, type value) \
253 return __atomic_ ## op ##_fetch_ ## n (ptr, value, __ATOMIC_SEQ_CST); \
257 … CLANG_ATOMIC_SUFFIX(__sync_bool_compare_and_swap_ ## n) (volatile void* ptr, type oldval, type …
261 if (*(volatile type*)ptr == oldval) { \
262 *(volatile type*)ptr = newval; \
270 …e CLANG_ATOMIC_SUFFIX(__sync_val_compare_and_swap_ ## n) (volatile void* ptr, type oldval, type …
273 type ret = *(volatile type*)ptr; \
274 if (*(volatile type*)ptr == oldval) { \
275 *(volatile type*)ptr = newval; \
282 …, type) type CLANG_ATOMIC_SUFFIX(__sync_lock_test_and_set_ ## n) (volatile void* ptr, type val) \
285 type ret = *(volatile type*)ptr; \
286 *(volatile type*)ptr = val; \
292 …_LOCK_RELEASE(n, type) void CLANG_ATOMIC_SUFFIX(__sync_lock_release_ ## n) (volatile void* ptr) \
295 *(volatile type*)ptr = 0; \
536 bool CLANG_ATOMIC_SUFFIX(__atomic_compare_exchange) (size_t size, volatile void *ptr, void *expecte… in CLANG_DECLARE_ALIAS()
539 if (!memcmp((void *)ptr, expected, size)) { in CLANG_DECLARE_ALIAS()
540 memcpy((void *)ptr, (const void *)desired, size); in CLANG_DECLARE_ALIAS()
543 memcpy((void *)expected, (const void *)ptr, size); in CLANG_DECLARE_ALIAS()