1 #include "atomic_ops.h"
3 * Copyright (c) 2003 by Hewlett-Packard Company. All rights reserved.
5 * This file is covered by the GNU general public license, version 2.
6 * see doc/COPYING for details.
9 /* This generates a compilable program. But it is really meant to be */
10 /* be used only with cc -E, to inspect the expensions generated by */
13 /* The result will not link or run. */
15 void list_atomic(void)
17 AO_T *addr, val, newval, oldval;
21 # if defined(AO_HAVE_nop)
27 # if defined(AO_HAVE_load)
33 # if defined(AO_HAVE_store)
34 "AO_store(addr, val):";
39 # if defined(AO_HAVE_test_and_set)
40 "AO_test_and_set(tsaddr):";
41 AO_test_and_set(tsaddr);
45 # if defined(AO_HAVE_fetch_and_add1)
46 "AO_fetch_and_add1(addr):";
47 AO_fetch_and_add1(addr);
49 "No AO_fetch_and_add1";
51 # if defined(AO_HAVE_fetch_and_sub1)
52 "AO_fetch_and_sub1(addr):";
53 AO_fetch_and_sub1(addr);
55 "No AO_fetch_and_sub1";
57 # if defined(AO_HAVE_fetch_and_add)
58 "AO_fetch_and_add(addr, incr):";
59 AO_fetch_and_add(addr, incr);
61 "No AO_fetch_and_add";
63 # if defined(AO_HAVE_compare_and_swap)
64 "AO_compare_and_swap(addr, oldval, newval):";
65 AO_compare_and_swap(addr, oldval, newval);
67 "No AO_compare_and_swap";
74 * Copyright (c) 2003 by Hewlett-Packard Company. All rights reserved.
76 * This file is covered by the GNU general public license, version 2.
77 * see doc/COPYING for details.
80 /* This generates a compilable program. But it is really meant to be */
81 /* be used only with cc -E, to inspect the expensions generated by */
84 /* The result will not link or run. */
86 void list_atomic_release(void)
88 AO_T *addr, val, newval, oldval;
92 # if defined(AO_HAVE_nop_release)
98 # if defined(AO_HAVE_load_release)
99 "AO_load_release(addr):";
100 AO_load_release(addr);
102 "No AO_load_release";
104 # if defined(AO_HAVE_store_release)
105 "AO_store_release(addr, val):";
106 AO_store_release(addr, val);
108 "No AO_store_release";
110 # if defined(AO_HAVE_test_and_set_release)
111 "AO_test_and_set_release(tsaddr):";
112 AO_test_and_set_release(tsaddr);
114 "No AO_test_and_set_release";
116 # if defined(AO_HAVE_fetch_and_add1_release)
117 "AO_fetch_and_add1_release(addr):";
118 AO_fetch_and_add1_release(addr);
120 "No AO_fetch_and_add1_release";
122 # if defined(AO_HAVE_fetch_and_sub1_release)
123 "AO_fetch_and_sub1_release(addr):";
124 AO_fetch_and_sub1_release(addr);
126 "No AO_fetch_and_sub1_release";
128 # if defined(AO_HAVE_fetch_and_add_release)
129 "AO_fetch_and_add_release(addr, incr):";
130 AO_fetch_and_add_release(addr, incr);
132 "No AO_fetch_and_add_release";
134 # if defined(AO_HAVE_compare_and_swap_release)
135 "AO_compare_and_swap_release(addr, oldval, newval):";
136 AO_compare_and_swap_release(addr, oldval, newval);
138 "No AO_compare_and_swap_release";
145 * Copyright (c) 2003 by Hewlett-Packard Company. All rights reserved.
147 * This file is covered by the GNU general public license, version 2.
148 * see doc/COPYING for details.
151 /* This generates a compilable program. But it is really meant to be */
152 /* be used only with cc -E, to inspect the expensions generated by */
155 /* The result will not link or run. */
157 void list_atomic_acquire(void)
159 AO_T *addr, val, newval, oldval;
163 # if defined(AO_HAVE_nop_acquire)
164 "AO_nop_acquire(): ";
169 # if defined(AO_HAVE_load_acquire)
170 "AO_load_acquire(addr):";
171 AO_load_acquire(addr);
173 "No AO_load_acquire";
175 # if defined(AO_HAVE_store_acquire)
176 "AO_store_acquire(addr, val):";
177 AO_store_acquire(addr, val);
179 "No AO_store_acquire";
181 # if defined(AO_HAVE_test_and_set_acquire)
182 "AO_test_and_set_acquire(tsaddr):";
183 AO_test_and_set_acquire(tsaddr);
185 "No AO_test_and_set_acquire";
187 # if defined(AO_HAVE_fetch_and_add1_acquire)
188 "AO_fetch_and_add1_acquire(addr):";
189 AO_fetch_and_add1_acquire(addr);
191 "No AO_fetch_and_add1_acquire";
193 # if defined(AO_HAVE_fetch_and_sub1_acquire)
194 "AO_fetch_and_sub1_acquire(addr):";
195 AO_fetch_and_sub1_acquire(addr);
197 "No AO_fetch_and_sub1_acquire";
199 # if defined(AO_HAVE_fetch_and_add_acquire)
200 "AO_fetch_and_add_acquire(addr, incr):";
201 AO_fetch_and_add_acquire(addr, incr);
203 "No AO_fetch_and_add_acquire";
205 # if defined(AO_HAVE_compare_and_swap_acquire)
206 "AO_compare_and_swap_acquire(addr, oldval, newval):";
207 AO_compare_and_swap_acquire(addr, oldval, newval);
209 "No AO_compare_and_swap_acquire";
216 * Copyright (c) 2003 by Hewlett-Packard Company. All rights reserved.
218 * This file is covered by the GNU general public license, version 2.
219 * see doc/COPYING for details.
222 /* This generates a compilable program. But it is really meant to be */
223 /* be used only with cc -E, to inspect the expensions generated by */
226 /* The result will not link or run. */
228 void list_atomic_read(void)
230 AO_T *addr, val, newval, oldval;
234 # if defined(AO_HAVE_nop_read)
240 # if defined(AO_HAVE_load_read)
241 "AO_load_read(addr):";
246 # if defined(AO_HAVE_store_read)
247 "AO_store_read(addr, val):";
248 AO_store_read(addr, val);
252 # if defined(AO_HAVE_test_and_set_read)
253 "AO_test_and_set_read(tsaddr):";
254 AO_test_and_set_read(tsaddr);
256 "No AO_test_and_set_read";
258 # if defined(AO_HAVE_fetch_and_add1_read)
259 "AO_fetch_and_add1_read(addr):";
260 AO_fetch_and_add1_read(addr);
262 "No AO_fetch_and_add1_read";
264 # if defined(AO_HAVE_fetch_and_sub1_read)
265 "AO_fetch_and_sub1_read(addr):";
266 AO_fetch_and_sub1_read(addr);
268 "No AO_fetch_and_sub1_read";
270 # if defined(AO_HAVE_fetch_and_add_read)
271 "AO_fetch_and_add_read(addr, incr):";
272 AO_fetch_and_add_read(addr, incr);
274 "No AO_fetch_and_add_read";
276 # if defined(AO_HAVE_compare_and_swap_read)
277 "AO_compare_and_swap_read(addr, oldval, newval):";
278 AO_compare_and_swap_read(addr, oldval, newval);
280 "No AO_compare_and_swap_read";
287 * Copyright (c) 2003 by Hewlett-Packard Company. All rights reserved.
289 * This file is covered by the GNU general public license, version 2.
290 * see doc/COPYING for details.
293 /* This generates a compilable program. But it is really meant to be */
294 /* be used only with cc -E, to inspect the expensions generated by */
297 /* The result will not link or run. */
299 void list_atomic_write(void)
301 AO_T *addr, val, newval, oldval;
305 # if defined(AO_HAVE_nop_write)
311 # if defined(AO_HAVE_load_write)
312 "AO_load_write(addr):";
317 # if defined(AO_HAVE_store_write)
318 "AO_store_write(addr, val):";
319 AO_store_write(addr, val);
323 # if defined(AO_HAVE_test_and_set_write)
324 "AO_test_and_set_write(tsaddr):";
325 AO_test_and_set_write(tsaddr);
327 "No AO_test_and_set_write";
329 # if defined(AO_HAVE_fetch_and_add1_write)
330 "AO_fetch_and_add1_write(addr):";
331 AO_fetch_and_add1_write(addr);
333 "No AO_fetch_and_add1_write";
335 # if defined(AO_HAVE_fetch_and_sub1_write)
336 "AO_fetch_and_sub1_write(addr):";
337 AO_fetch_and_sub1_write(addr);
339 "No AO_fetch_and_sub1_write";
341 # if defined(AO_HAVE_fetch_and_add_write)
342 "AO_fetch_and_add_write(addr, incr):";
343 AO_fetch_and_add_write(addr, incr);
345 "No AO_fetch_and_add_write";
347 # if defined(AO_HAVE_compare_and_swap_write)
348 "AO_compare_and_swap_write(addr, oldval, newval):";
349 AO_compare_and_swap_write(addr, oldval, newval);
351 "No AO_compare_and_swap_write";
358 * Copyright (c) 2003 by Hewlett-Packard Company. All rights reserved.
360 * This file is covered by the GNU general public license, version 2.
361 * see doc/COPYING for details.
364 /* This generates a compilable program. But it is really meant to be */
365 /* be used only with cc -E, to inspect the expensions generated by */
368 /* The result will not link or run. */
370 void list_atomic_full(void)
372 AO_T *addr, val, newval, oldval;
376 # if defined(AO_HAVE_nop_full)
382 # if defined(AO_HAVE_load_full)
383 "AO_load_full(addr):";
388 # if defined(AO_HAVE_store_full)
389 "AO_store_full(addr, val):";
390 AO_store_full(addr, val);
394 # if defined(AO_HAVE_test_and_set_full)
395 "AO_test_and_set_full(tsaddr):";
396 AO_test_and_set_full(tsaddr);
398 "No AO_test_and_set_full";
400 # if defined(AO_HAVE_fetch_and_add1_full)
401 "AO_fetch_and_add1_full(addr):";
402 AO_fetch_and_add1_full(addr);
404 "No AO_fetch_and_add1_full";
406 # if defined(AO_HAVE_fetch_and_sub1_full)
407 "AO_fetch_and_sub1_full(addr):";
408 AO_fetch_and_sub1_full(addr);
410 "No AO_fetch_and_sub1_full";
412 # if defined(AO_HAVE_fetch_and_add_full)
413 "AO_fetch_and_add_full(addr, incr):";
414 AO_fetch_and_add_full(addr, incr);
416 "No AO_fetch_and_add_full";
418 # if defined(AO_HAVE_compare_and_swap_full)
419 "AO_compare_and_swap_full(addr, oldval, newval):";
420 AO_compare_and_swap_full(addr, oldval, newval);
422 "No AO_compare_and_swap_full";
429 * Copyright (c) 2003 by Hewlett-Packard Company. All rights reserved.
431 * This file is covered by the GNU general public license, version 2.
432 * see doc/COPYING for details.
435 /* This generates a compilable program. But it is really meant to be */
436 /* be used only with cc -E, to inspect the expensions generated by */
439 /* The result will not link or run. */
441 void list_atomic_release_write(void)
443 AO_T *addr, val, newval, oldval;
447 # if defined(AO_HAVE_nop_release_write)
448 "AO_nop_release_write(): ";
449 AO_nop_release_write();
451 "No AO_nop_release_write";
453 # if defined(AO_HAVE_load_release_write)
454 "AO_load_release_write(addr):";
455 AO_load_release_write(addr);
457 "No AO_load_release_write";
459 # if defined(AO_HAVE_store_release_write)
460 "AO_store_release_write(addr, val):";
461 AO_store_release_write(addr, val);
463 "No AO_store_release_write";
465 # if defined(AO_HAVE_test_and_set_release_write)
466 "AO_test_and_set_release_write(tsaddr):";
467 AO_test_and_set_release_write(tsaddr);
469 "No AO_test_and_set_release_write";
471 # if defined(AO_HAVE_fetch_and_add1_release_write)
472 "AO_fetch_and_add1_release_write(addr):";
473 AO_fetch_and_add1_release_write(addr);
475 "No AO_fetch_and_add1_release_write";
477 # if defined(AO_HAVE_fetch_and_sub1_release_write)
478 "AO_fetch_and_sub1_release_write(addr):";
479 AO_fetch_and_sub1_release_write(addr);
481 "No AO_fetch_and_sub1_release_write";
483 # if defined(AO_HAVE_fetch_and_add_release_write)
484 "AO_fetch_and_add_release_write(addr, incr):";
485 AO_fetch_and_add_release_write(addr, incr);
487 "No AO_fetch_and_add_release_write";
489 # if defined(AO_HAVE_compare_and_swap_release_write)
490 "AO_compare_and_swap_release_write(addr, oldval, newval):";
491 AO_compare_and_swap_release_write(addr, oldval, newval);
493 "No AO_compare_and_swap_release_write";
500 * Copyright (c) 2003 by Hewlett-Packard Company. All rights reserved.
502 * This file is covered by the GNU general public license, version 2.
503 * see doc/COPYING for details.
506 /* This generates a compilable program. But it is really meant to be */
507 /* be used only with cc -E, to inspect the expensions generated by */
510 /* The result will not link or run. */
512 void list_atomic_acquire_read(void)
514 AO_T *addr, val, newval, oldval;
518 # if defined(AO_HAVE_nop_acquire_read)
519 "AO_nop_acquire_read(): ";
520 AO_nop_acquire_read();
522 "No AO_nop_acquire_read";
524 # if defined(AO_HAVE_load_acquire_read)
525 "AO_load_acquire_read(addr):";
526 AO_load_acquire_read(addr);
528 "No AO_load_acquire_read";
530 # if defined(AO_HAVE_store_acquire_read)
531 "AO_store_acquire_read(addr, val):";
532 AO_store_acquire_read(addr, val);
534 "No AO_store_acquire_read";
536 # if defined(AO_HAVE_test_and_set_acquire_read)
537 "AO_test_and_set_acquire_read(tsaddr):";
538 AO_test_and_set_acquire_read(tsaddr);
540 "No AO_test_and_set_acquire_read";
542 # if defined(AO_HAVE_fetch_and_add1_acquire_read)
543 "AO_fetch_and_add1_acquire_read(addr):";
544 AO_fetch_and_add1_acquire_read(addr);
546 "No AO_fetch_and_add1_acquire_read";
548 # if defined(AO_HAVE_fetch_and_sub1_acquire_read)
549 "AO_fetch_and_sub1_acquire_read(addr):";
550 AO_fetch_and_sub1_acquire_read(addr);
552 "No AO_fetch_and_sub1_acquire_read";
554 # if defined(AO_HAVE_fetch_and_add_acquire_read)
555 "AO_fetch_and_add_acquire_read(addr, incr):";
556 AO_fetch_and_add_acquire_read(addr, incr);
558 "No AO_fetch_and_add_acquire_read";
560 # if defined(AO_HAVE_compare_and_swap_acquire_read)
561 "AO_compare_and_swap_acquire_read(addr, oldval, newval):";
562 AO_compare_and_swap_acquire_read(addr, oldval, newval);
564 "No AO_compare_and_swap_acquire_read";