Lines Matching refs:addr

27   AO_char_compare_and_swap_full(volatile unsigned/**/char *addr, unsigned/**/char old_val,  in AO_char_compare_and_swap_full()  argument
30 return AO_char_fetch_compare_and_swap_full(addr, old_val, new_val) in AO_char_compare_and_swap_full()
39 AO_char_compare_and_swap_acquire(volatile unsigned/**/char *addr, unsigned/**/char old_val, in AO_char_compare_and_swap_acquire() argument
42 return AO_char_fetch_compare_and_swap_acquire(addr, old_val, new_val) in AO_char_compare_and_swap_acquire()
51 AO_char_compare_and_swap_release(volatile unsigned/**/char *addr, unsigned/**/char old_val, in AO_char_compare_and_swap_release() argument
54 return AO_char_fetch_compare_and_swap_release(addr, old_val, new_val) in AO_char_compare_and_swap_release()
63 AO_char_compare_and_swap_write(volatile unsigned/**/char *addr, unsigned/**/char old_val, in AO_char_compare_and_swap_write() argument
66 return AO_char_fetch_compare_and_swap_write(addr, old_val, new_val) in AO_char_compare_and_swap_write()
75 AO_char_compare_and_swap_read(volatile unsigned/**/char *addr, unsigned/**/char old_val, in AO_char_compare_and_swap_read() argument
78 return AO_char_fetch_compare_and_swap_read(addr, old_val, new_val) in AO_char_compare_and_swap_read()
87 AO_char_compare_and_swap(volatile unsigned/**/char *addr, unsigned/**/char old_val, in AO_char_compare_and_swap() argument
90 return AO_char_fetch_compare_and_swap(addr, old_val, new_val) == old_val; in AO_char_compare_and_swap()
98 AO_char_compare_and_swap_release_write(volatile unsigned/**/char *addr, in AO_char_compare_and_swap_release_write() argument
101 return AO_char_fetch_compare_and_swap_release_write(addr, old_val, in AO_char_compare_and_swap_release_write()
110 AO_char_compare_and_swap_acquire_read(volatile unsigned/**/char *addr, in AO_char_compare_and_swap_acquire_read() argument
113 return AO_char_fetch_compare_and_swap_acquire_read(addr, old_val, in AO_char_compare_and_swap_acquire_read()
122 AO_char_compare_and_swap_dd_acquire_read(volatile unsigned/**/char *addr, in AO_char_compare_and_swap_dd_acquire_read() argument
125 return AO_char_fetch_compare_and_swap_dd_acquire_read(addr, old_val, in AO_char_compare_and_swap_dd_acquire_read()
138 AO_char_fetch_and_add_full(volatile unsigned/**/char *addr, unsigned/**/char incr) in AO_char_fetch_and_add_full() argument
144 old = *(unsigned/**/char *)addr; in AO_char_fetch_and_add_full()
146 while (AO_EXPECT_FALSE(!AO_char_compare_and_swap_full(addr, old, in AO_char_fetch_and_add_full()
157 AO_char_fetch_and_add_acquire(volatile unsigned/**/char *addr, unsigned/**/char incr) in AO_char_fetch_and_add_acquire() argument
163 old = *(unsigned/**/char *)addr; in AO_char_fetch_and_add_acquire()
165 while (AO_EXPECT_FALSE(!AO_char_compare_and_swap_acquire(addr, old, in AO_char_fetch_and_add_acquire()
176 AO_char_fetch_and_add_release(volatile unsigned/**/char *addr, unsigned/**/char incr) in AO_char_fetch_and_add_release() argument
182 old = *(unsigned/**/char *)addr; in AO_char_fetch_and_add_release()
184 while (AO_EXPECT_FALSE(!AO_char_compare_and_swap_release(addr, old, in AO_char_fetch_and_add_release()
195 AO_char_fetch_and_add(volatile unsigned/**/char *addr, unsigned/**/char incr) in AO_char_fetch_and_add() argument
201 old = *(unsigned/**/char *)addr; in AO_char_fetch_and_add()
203 while (AO_EXPECT_FALSE(!AO_char_compare_and_swap(addr, old, in AO_char_fetch_and_add()
212 # define AO_char_fetch_and_add_release(addr, val) \ argument
213 AO_char_fetch_and_add_full(addr, val)
217 # define AO_char_fetch_and_add_acquire(addr, val) \ argument
218 AO_char_fetch_and_add_full(addr, val)
222 # define AO_char_fetch_and_add_write(addr, val) \ argument
223 AO_char_fetch_and_add_full(addr, val)
227 # define AO_char_fetch_and_add_read(addr, val) \ argument
228 AO_char_fetch_and_add_full(addr, val)
236 AO_char_fetch_and_add_acquire(volatile unsigned/**/char *addr, unsigned/**/char incr) in AO_char_fetch_and_add_acquire() argument
238 unsigned/**/char result = AO_char_fetch_and_add(addr, incr); in AO_char_fetch_and_add_acquire()
246 # define AO_char_fetch_and_add_release(addr, incr) \ argument
247 (AO_nop_full(), AO_char_fetch_and_add(addr, incr))
253 # define AO_char_fetch_and_add(addr, val) \ argument
254 AO_char_fetch_and_add_release(addr, val)
259 # define AO_char_fetch_and_add(addr, val) \ argument
260 AO_char_fetch_and_add_acquire(addr, val)
265 # define AO_char_fetch_and_add(addr, val) \ argument
266 AO_char_fetch_and_add_write(addr, val)
271 # define AO_char_fetch_and_add(addr, val) \ argument
272 AO_char_fetch_and_add_read(addr, val)
278 # define AO_char_fetch_and_add_full(addr, val) \ argument
279 (AO_nop_full(), AO_char_fetch_and_add_acquire(addr, val))
285 # define AO_char_fetch_and_add_release_write(addr, val) \ argument
286 AO_char_fetch_and_add_write(addr, val)
291 # define AO_char_fetch_and_add_release_write(addr, val) \ argument
292 AO_char_fetch_and_add_release(addr, val)
298 # define AO_char_fetch_and_add_acquire_read(addr, val) \ argument
299 AO_char_fetch_and_add_read(addr, val)
304 # define AO_char_fetch_and_add_acquire_read(addr, val) \ argument
305 AO_char_fetch_and_add_acquire(addr, val)
311 # define AO_char_fetch_and_add_dd_acquire_read(addr, val) \ argument
312 AO_char_fetch_and_add_acquire_read(addr, val)
317 # define AO_char_fetch_and_add_dd_acquire_read(addr, val) \ argument
318 AO_char_fetch_and_add(addr, val)
326 # define AO_char_fetch_and_add1_full(addr) \ argument
327 AO_char_fetch_and_add_full(addr, 1)
332 # define AO_char_fetch_and_add1_release(addr) \ argument
333 AO_char_fetch_and_add_release(addr, 1)
338 # define AO_char_fetch_and_add1_acquire(addr) \ argument
339 AO_char_fetch_and_add_acquire(addr, 1)
344 # define AO_char_fetch_and_add1_write(addr) \ argument
345 AO_char_fetch_and_add_write(addr, 1)
350 # define AO_char_fetch_and_add1_read(addr) \ argument
351 AO_char_fetch_and_add_read(addr, 1)
356 # define AO_char_fetch_and_add1_release_write(addr) \ argument
357 AO_char_fetch_and_add_release_write(addr, 1)
362 # define AO_char_fetch_and_add1_acquire_read(addr) \ argument
363 AO_char_fetch_and_add_acquire_read(addr, 1)
368 # define AO_char_fetch_and_add1(addr) AO_char_fetch_and_add(addr, 1) argument
374 # define AO_char_fetch_and_add1_release(addr) \ argument
375 AO_char_fetch_and_add1_full(addr)
379 # define AO_char_fetch_and_add1_acquire(addr) \ argument
380 AO_char_fetch_and_add1_full(addr)
384 # define AO_char_fetch_and_add1_write(addr) \ argument
385 AO_char_fetch_and_add1_full(addr)
389 # define AO_char_fetch_and_add1_read(addr) \ argument
390 AO_char_fetch_and_add1_full(addr)
397 # define AO_char_fetch_and_add1(addr) AO_char_fetch_and_add1_release(addr) argument
402 # define AO_char_fetch_and_add1(addr) AO_char_fetch_and_add1_acquire(addr) argument
407 # define AO_char_fetch_and_add1(addr) AO_char_fetch_and_add1_write(addr) argument
412 # define AO_char_fetch_and_add1(addr) AO_char_fetch_and_add1_read(addr) argument
419 # define AO_char_fetch_and_add1_full(addr) \ argument
420 (AO_nop_full(), AO_char_fetch_and_add1_acquire(addr))
426 # define AO_char_fetch_and_add1_release_write(addr) \ argument
427 AO_char_fetch_and_add1_write(addr)
432 # define AO_char_fetch_and_add1_release_write(addr) \ argument
433 AO_char_fetch_and_add1_release(addr)
438 # define AO_char_fetch_and_add1_acquire_read(addr) \ argument
439 AO_char_fetch_and_add1_read(addr)
444 # define AO_char_fetch_and_add1_acquire_read(addr) \ argument
445 AO_char_fetch_and_add1_acquire(addr)
451 # define AO_char_fetch_and_add1_dd_acquire_read(addr) \ argument
452 AO_char_fetch_and_add1_acquire_read(addr)
457 # define AO_char_fetch_and_add1_dd_acquire_read(addr) \ argument
458 AO_char_fetch_and_add1(addr)
466 # define AO_char_fetch_and_sub1_full(addr) \ argument
467 AO_char_fetch_and_add_full(addr, (unsigned/**/char)(-1))
472 # define AO_char_fetch_and_sub1_release(addr) \ argument
473 AO_char_fetch_and_add_release(addr, (unsigned/**/char)(-1))
478 # define AO_char_fetch_and_sub1_acquire(addr) \ argument
479 AO_char_fetch_and_add_acquire(addr, (unsigned/**/char)(-1))
484 # define AO_char_fetch_and_sub1_write(addr) \ argument
485 AO_char_fetch_and_add_write(addr, (unsigned/**/char)(-1))
490 # define AO_char_fetch_and_sub1_read(addr) \ argument
491 AO_char_fetch_and_add_read(addr, (unsigned/**/char)(-1))
496 # define AO_char_fetch_and_sub1_release_write(addr) \ argument
497 AO_char_fetch_and_add_release_write(addr, (unsigned/**/char)(-1))
502 # define AO_char_fetch_and_sub1_acquire_read(addr) \ argument
503 AO_char_fetch_and_add_acquire_read(addr, (unsigned/**/char)(-1))
508 # define AO_char_fetch_and_sub1(addr) \ argument
509 AO_char_fetch_and_add(addr, (unsigned/**/char)(-1))
515 # define AO_char_fetch_and_sub1_release(addr) \ argument
516 AO_char_fetch_and_sub1_full(addr)
520 # define AO_char_fetch_and_sub1_acquire(addr) \ argument
521 AO_char_fetch_and_sub1_full(addr)
525 # define AO_char_fetch_and_sub1_write(addr) \ argument
526 AO_char_fetch_and_sub1_full(addr)
530 # define AO_char_fetch_and_sub1_read(addr) \ argument
531 AO_char_fetch_and_sub1_full(addr)
538 # define AO_char_fetch_and_sub1(addr) AO_char_fetch_and_sub1_release(addr) argument
543 # define AO_char_fetch_and_sub1(addr) AO_char_fetch_and_sub1_acquire(addr) argument
548 # define AO_char_fetch_and_sub1(addr) AO_char_fetch_and_sub1_write(addr) argument
553 # define AO_char_fetch_and_sub1(addr) AO_char_fetch_and_sub1_read(addr) argument
560 # define AO_char_fetch_and_sub1_full(addr) \ argument
561 (AO_nop_full(), AO_char_fetch_and_sub1_acquire(addr))
567 # define AO_char_fetch_and_sub1_release_write(addr) \ argument
568 AO_char_fetch_and_sub1_write(addr)
573 # define AO_char_fetch_and_sub1_release_write(addr) \ argument
574 AO_char_fetch_and_sub1_release(addr)
579 # define AO_char_fetch_and_sub1_acquire_read(addr) \ argument
580 AO_char_fetch_and_sub1_read(addr)
585 # define AO_char_fetch_and_sub1_acquire_read(addr) \ argument
586 AO_char_fetch_and_sub1_acquire(addr)
592 # define AO_char_fetch_and_sub1_dd_acquire_read(addr) \ argument
593 AO_char_fetch_and_sub1_acquire_read(addr)
598 # define AO_char_fetch_and_sub1_dd_acquire_read(addr) \ argument
599 AO_char_fetch_and_sub1(addr)
609 AO_char_and_full(volatile unsigned/**/char *addr, unsigned/**/char value) in AO_char_and_full() argument
615 old = *(unsigned/**/char *)addr; in AO_char_and_full()
617 while (AO_EXPECT_FALSE(!AO_char_compare_and_swap_full(addr, old, in AO_char_and_full()
625 # define AO_char_and_release(addr, val) AO_char_and_full(addr, val) argument
629 # define AO_char_and_acquire(addr, val) AO_char_and_full(addr, val) argument
633 # define AO_char_and_write(addr, val) AO_char_and_full(addr, val) argument
637 # define AO_char_and_read(addr, val) AO_char_and_full(addr, val) argument
643 # define AO_char_and(addr, val) AO_char_and_release(addr, val) argument
647 # define AO_char_and(addr, val) AO_char_and_acquire(addr, val) argument
651 # define AO_char_and(addr, val) AO_char_and_write(addr, val) argument
655 # define AO_char_and(addr, val) AO_char_and_read(addr, val) argument
661 # define AO_char_and_full(addr, val) \ argument
662 (AO_nop_full(), AO_char_and_acquire(addr, val))
668 # define AO_char_and_release_write(addr, val) AO_char_and_write(addr, val) argument
673 # define AO_char_and_release_write(addr, val) AO_char_and_release(addr, val) argument
678 # define AO_char_and_acquire_read(addr, val) AO_char_and_read(addr, val) argument
683 # define AO_char_and_acquire_read(addr, val) AO_char_and_acquire(addr, val) argument
692 AO_char_or_full(volatile unsigned/**/char *addr, unsigned/**/char value) in AO_char_or_full() argument
698 old = *(unsigned/**/char *)addr; in AO_char_or_full()
700 while (AO_EXPECT_FALSE(!AO_char_compare_and_swap_full(addr, old, in AO_char_or_full()
708 # define AO_char_or_release(addr, val) AO_char_or_full(addr, val) argument
712 # define AO_char_or_acquire(addr, val) AO_char_or_full(addr, val) argument
716 # define AO_char_or_write(addr, val) AO_char_or_full(addr, val) argument
720 # define AO_char_or_read(addr, val) AO_char_or_full(addr, val) argument
726 # define AO_char_or(addr, val) AO_char_or_release(addr, val) argument
730 # define AO_char_or(addr, val) AO_char_or_acquire(addr, val) argument
734 # define AO_char_or(addr, val) AO_char_or_write(addr, val) argument
738 # define AO_char_or(addr, val) AO_char_or_read(addr, val) argument
744 # define AO_char_or_full(addr, val) \ argument
745 (AO_nop_full(), AO_char_or_acquire(addr, val))
751 # define AO_char_or_release_write(addr, val) AO_char_or_write(addr, val) argument
756 # define AO_char_or_release_write(addr, val) AO_char_or_release(addr, val) argument
760 # define AO_char_or_acquire_read(addr, val) AO_char_or_read(addr, val) argument
765 # define AO_char_or_acquire_read(addr, val) AO_char_or_acquire(addr, val) argument
774 AO_char_xor_full(volatile unsigned/**/char *addr, unsigned/**/char value) in AO_char_xor_full() argument
780 old = *(unsigned/**/char *)addr; in AO_char_xor_full()
782 while (AO_EXPECT_FALSE(!AO_char_compare_and_swap_full(addr, old, in AO_char_xor_full()
790 # define AO_char_xor_release(addr, val) AO_char_xor_full(addr, val) argument
794 # define AO_char_xor_acquire(addr, val) AO_char_xor_full(addr, val) argument
798 # define AO_char_xor_write(addr, val) AO_char_xor_full(addr, val) argument
802 # define AO_char_xor_read(addr, val) AO_char_xor_full(addr, val) argument
808 # define AO_char_xor(addr, val) AO_char_xor_release(addr, val) argument
812 # define AO_char_xor(addr, val) AO_char_xor_acquire(addr, val) argument
816 # define AO_char_xor(addr, val) AO_char_xor_write(addr, val) argument
820 # define AO_char_xor(addr, val) AO_char_xor_read(addr, val) argument
826 # define AO_char_xor_full(addr, val) \ argument
827 (AO_nop_full(), AO_char_xor_acquire(addr, val))
833 # define AO_char_xor_release_write(addr, val) AO_char_xor_write(addr, val) argument
838 # define AO_char_xor_release_write(addr, val) AO_char_xor_release(addr, val) argument
843 # define AO_char_xor_acquire_read(addr, val) AO_char_xor_read(addr, val) argument
848 # define AO_char_xor_acquire_read(addr, val) AO_char_xor_acquire(addr, val) argument
879 AO_short_compare_and_swap_full(volatile unsigned/**/short *addr, unsigned/**/short old_val, in AO_short_compare_and_swap_full() argument
882 return AO_short_fetch_compare_and_swap_full(addr, old_val, new_val) in AO_short_compare_and_swap_full()
891 AO_short_compare_and_swap_acquire(volatile unsigned/**/short *addr, unsigned/**/short old_val, in AO_short_compare_and_swap_acquire() argument
894 return AO_short_fetch_compare_and_swap_acquire(addr, old_val, new_val) in AO_short_compare_and_swap_acquire()
903 AO_short_compare_and_swap_release(volatile unsigned/**/short *addr, unsigned/**/short old_val, in AO_short_compare_and_swap_release() argument
906 return AO_short_fetch_compare_and_swap_release(addr, old_val, new_val) in AO_short_compare_and_swap_release()
915 AO_short_compare_and_swap_write(volatile unsigned/**/short *addr, unsigned/**/short old_val, in AO_short_compare_and_swap_write() argument
918 return AO_short_fetch_compare_and_swap_write(addr, old_val, new_val) in AO_short_compare_and_swap_write()
927 AO_short_compare_and_swap_read(volatile unsigned/**/short *addr, unsigned/**/short old_val, in AO_short_compare_and_swap_read() argument
930 return AO_short_fetch_compare_and_swap_read(addr, old_val, new_val) in AO_short_compare_and_swap_read()
939 AO_short_compare_and_swap(volatile unsigned/**/short *addr, unsigned/**/short old_val, in AO_short_compare_and_swap() argument
942 return AO_short_fetch_compare_and_swap(addr, old_val, new_val) == old_val; in AO_short_compare_and_swap()
950 AO_short_compare_and_swap_release_write(volatile unsigned/**/short *addr, in AO_short_compare_and_swap_release_write() argument
953 return AO_short_fetch_compare_and_swap_release_write(addr, old_val, in AO_short_compare_and_swap_release_write()
962 AO_short_compare_and_swap_acquire_read(volatile unsigned/**/short *addr, in AO_short_compare_and_swap_acquire_read() argument
965 return AO_short_fetch_compare_and_swap_acquire_read(addr, old_val, in AO_short_compare_and_swap_acquire_read()
974 AO_short_compare_and_swap_dd_acquire_read(volatile unsigned/**/short *addr, in AO_short_compare_and_swap_dd_acquire_read() argument
977 return AO_short_fetch_compare_and_swap_dd_acquire_read(addr, old_val, in AO_short_compare_and_swap_dd_acquire_read()
990 AO_short_fetch_and_add_full(volatile unsigned/**/short *addr, unsigned/**/short incr) in AO_short_fetch_and_add_full() argument
996 old = *(unsigned/**/short *)addr; in AO_short_fetch_and_add_full()
998 while (AO_EXPECT_FALSE(!AO_short_compare_and_swap_full(addr, old, in AO_short_fetch_and_add_full()
1009 AO_short_fetch_and_add_acquire(volatile unsigned/**/short *addr, unsigned/**/short incr) in AO_short_fetch_and_add_acquire() argument
1015 old = *(unsigned/**/short *)addr; in AO_short_fetch_and_add_acquire()
1017 while (AO_EXPECT_FALSE(!AO_short_compare_and_swap_acquire(addr, old, in AO_short_fetch_and_add_acquire()
1028 AO_short_fetch_and_add_release(volatile unsigned/**/short *addr, unsigned/**/short incr) in AO_short_fetch_and_add_release() argument
1034 old = *(unsigned/**/short *)addr; in AO_short_fetch_and_add_release()
1036 while (AO_EXPECT_FALSE(!AO_short_compare_and_swap_release(addr, old, in AO_short_fetch_and_add_release()
1047 AO_short_fetch_and_add(volatile unsigned/**/short *addr, unsigned/**/short incr) in AO_short_fetch_and_add() argument
1053 old = *(unsigned/**/short *)addr; in AO_short_fetch_and_add()
1055 while (AO_EXPECT_FALSE(!AO_short_compare_and_swap(addr, old, in AO_short_fetch_and_add()
1064 # define AO_short_fetch_and_add_release(addr, val) \ argument
1065 AO_short_fetch_and_add_full(addr, val)
1069 # define AO_short_fetch_and_add_acquire(addr, val) \ argument
1070 AO_short_fetch_and_add_full(addr, val)
1074 # define AO_short_fetch_and_add_write(addr, val) \ argument
1075 AO_short_fetch_and_add_full(addr, val)
1079 # define AO_short_fetch_and_add_read(addr, val) \ argument
1080 AO_short_fetch_and_add_full(addr, val)
1088 AO_short_fetch_and_add_acquire(volatile unsigned/**/short *addr, unsigned/**/short incr) in AO_short_fetch_and_add_acquire() argument
1090 unsigned/**/short result = AO_short_fetch_and_add(addr, incr); in AO_short_fetch_and_add_acquire()
1098 # define AO_short_fetch_and_add_release(addr, incr) \ argument
1099 (AO_nop_full(), AO_short_fetch_and_add(addr, incr))
1105 # define AO_short_fetch_and_add(addr, val) \ argument
1106 AO_short_fetch_and_add_release(addr, val)
1111 # define AO_short_fetch_and_add(addr, val) \ argument
1112 AO_short_fetch_and_add_acquire(addr, val)
1117 # define AO_short_fetch_and_add(addr, val) \ argument
1118 AO_short_fetch_and_add_write(addr, val)
1123 # define AO_short_fetch_and_add(addr, val) \ argument
1124 AO_short_fetch_and_add_read(addr, val)
1130 # define AO_short_fetch_and_add_full(addr, val) \ argument
1131 (AO_nop_full(), AO_short_fetch_and_add_acquire(addr, val))
1137 # define AO_short_fetch_and_add_release_write(addr, val) \ argument
1138 AO_short_fetch_and_add_write(addr, val)
1143 # define AO_short_fetch_and_add_release_write(addr, val) \ argument
1144 AO_short_fetch_and_add_release(addr, val)
1150 # define AO_short_fetch_and_add_acquire_read(addr, val) \ argument
1151 AO_short_fetch_and_add_read(addr, val)
1156 # define AO_short_fetch_and_add_acquire_read(addr, val) \ argument
1157 AO_short_fetch_and_add_acquire(addr, val)
1163 # define AO_short_fetch_and_add_dd_acquire_read(addr, val) \ argument
1164 AO_short_fetch_and_add_acquire_read(addr, val)
1169 # define AO_short_fetch_and_add_dd_acquire_read(addr, val) \ argument
1170 AO_short_fetch_and_add(addr, val)
1178 # define AO_short_fetch_and_add1_full(addr) \ argument
1179 AO_short_fetch_and_add_full(addr, 1)
1184 # define AO_short_fetch_and_add1_release(addr) \ argument
1185 AO_short_fetch_and_add_release(addr, 1)
1190 # define AO_short_fetch_and_add1_acquire(addr) \ argument
1191 AO_short_fetch_and_add_acquire(addr, 1)
1196 # define AO_short_fetch_and_add1_write(addr) \ argument
1197 AO_short_fetch_and_add_write(addr, 1)
1202 # define AO_short_fetch_and_add1_read(addr) \ argument
1203 AO_short_fetch_and_add_read(addr, 1)
1208 # define AO_short_fetch_and_add1_release_write(addr) \ argument
1209 AO_short_fetch_and_add_release_write(addr, 1)
1214 # define AO_short_fetch_and_add1_acquire_read(addr) \ argument
1215 AO_short_fetch_and_add_acquire_read(addr, 1)
1220 # define AO_short_fetch_and_add1(addr) AO_short_fetch_and_add(addr, 1) argument
1226 # define AO_short_fetch_and_add1_release(addr) \ argument
1227 AO_short_fetch_and_add1_full(addr)
1231 # define AO_short_fetch_and_add1_acquire(addr) \ argument
1232 AO_short_fetch_and_add1_full(addr)
1236 # define AO_short_fetch_and_add1_write(addr) \ argument
1237 AO_short_fetch_and_add1_full(addr)
1241 # define AO_short_fetch_and_add1_read(addr) \ argument
1242 AO_short_fetch_and_add1_full(addr)
1249 # define AO_short_fetch_and_add1(addr) AO_short_fetch_and_add1_release(addr) argument
1254 # define AO_short_fetch_and_add1(addr) AO_short_fetch_and_add1_acquire(addr) argument
1259 # define AO_short_fetch_and_add1(addr) AO_short_fetch_and_add1_write(addr) argument
1264 # define AO_short_fetch_and_add1(addr) AO_short_fetch_and_add1_read(addr) argument
1271 # define AO_short_fetch_and_add1_full(addr) \ argument
1272 (AO_nop_full(), AO_short_fetch_and_add1_acquire(addr))
1278 # define AO_short_fetch_and_add1_release_write(addr) \ argument
1279 AO_short_fetch_and_add1_write(addr)
1284 # define AO_short_fetch_and_add1_release_write(addr) \ argument
1285 AO_short_fetch_and_add1_release(addr)
1290 # define AO_short_fetch_and_add1_acquire_read(addr) \ argument
1291 AO_short_fetch_and_add1_read(addr)
1296 # define AO_short_fetch_and_add1_acquire_read(addr) \ argument
1297 AO_short_fetch_and_add1_acquire(addr)
1303 # define AO_short_fetch_and_add1_dd_acquire_read(addr) \ argument
1304 AO_short_fetch_and_add1_acquire_read(addr)
1309 # define AO_short_fetch_and_add1_dd_acquire_read(addr) \ argument
1310 AO_short_fetch_and_add1(addr)
1318 # define AO_short_fetch_and_sub1_full(addr) \ argument
1319 AO_short_fetch_and_add_full(addr, (unsigned/**/short)(-1))
1324 # define AO_short_fetch_and_sub1_release(addr) \ argument
1325 AO_short_fetch_and_add_release(addr, (unsigned/**/short)(-1))
1330 # define AO_short_fetch_and_sub1_acquire(addr) \ argument
1331 AO_short_fetch_and_add_acquire(addr, (unsigned/**/short)(-1))
1336 # define AO_short_fetch_and_sub1_write(addr) \ argument
1337 AO_short_fetch_and_add_write(addr, (unsigned/**/short)(-1))
1342 # define AO_short_fetch_and_sub1_read(addr) \ argument
1343 AO_short_fetch_and_add_read(addr, (unsigned/**/short)(-1))
1348 # define AO_short_fetch_and_sub1_release_write(addr) \ argument
1349 AO_short_fetch_and_add_release_write(addr, (unsigned/**/short)(-1))
1354 # define AO_short_fetch_and_sub1_acquire_read(addr) \ argument
1355 AO_short_fetch_and_add_acquire_read(addr, (unsigned/**/short)(-1))
1360 # define AO_short_fetch_and_sub1(addr) \ argument
1361 AO_short_fetch_and_add(addr, (unsigned/**/short)(-1))
1367 # define AO_short_fetch_and_sub1_release(addr) \ argument
1368 AO_short_fetch_and_sub1_full(addr)
1372 # define AO_short_fetch_and_sub1_acquire(addr) \ argument
1373 AO_short_fetch_and_sub1_full(addr)
1377 # define AO_short_fetch_and_sub1_write(addr) \ argument
1378 AO_short_fetch_and_sub1_full(addr)
1382 # define AO_short_fetch_and_sub1_read(addr) \ argument
1383 AO_short_fetch_and_sub1_full(addr)
1390 # define AO_short_fetch_and_sub1(addr) AO_short_fetch_and_sub1_release(addr) argument
1395 # define AO_short_fetch_and_sub1(addr) AO_short_fetch_and_sub1_acquire(addr) argument
1400 # define AO_short_fetch_and_sub1(addr) AO_short_fetch_and_sub1_write(addr) argument
1405 # define AO_short_fetch_and_sub1(addr) AO_short_fetch_and_sub1_read(addr) argument
1412 # define AO_short_fetch_and_sub1_full(addr) \ argument
1413 (AO_nop_full(), AO_short_fetch_and_sub1_acquire(addr))
1419 # define AO_short_fetch_and_sub1_release_write(addr) \ argument
1420 AO_short_fetch_and_sub1_write(addr)
1425 # define AO_short_fetch_and_sub1_release_write(addr) \ argument
1426 AO_short_fetch_and_sub1_release(addr)
1431 # define AO_short_fetch_and_sub1_acquire_read(addr) \ argument
1432 AO_short_fetch_and_sub1_read(addr)
1437 # define AO_short_fetch_and_sub1_acquire_read(addr) \ argument
1438 AO_short_fetch_and_sub1_acquire(addr)
1444 # define AO_short_fetch_and_sub1_dd_acquire_read(addr) \ argument
1445 AO_short_fetch_and_sub1_acquire_read(addr)
1450 # define AO_short_fetch_and_sub1_dd_acquire_read(addr) \ argument
1451 AO_short_fetch_and_sub1(addr)
1461 AO_short_and_full(volatile unsigned/**/short *addr, unsigned/**/short value) in AO_short_and_full() argument
1467 old = *(unsigned/**/short *)addr; in AO_short_and_full()
1469 while (AO_EXPECT_FALSE(!AO_short_compare_and_swap_full(addr, old, in AO_short_and_full()
1477 # define AO_short_and_release(addr, val) AO_short_and_full(addr, val) argument
1481 # define AO_short_and_acquire(addr, val) AO_short_and_full(addr, val) argument
1485 # define AO_short_and_write(addr, val) AO_short_and_full(addr, val) argument
1489 # define AO_short_and_read(addr, val) AO_short_and_full(addr, val) argument
1495 # define AO_short_and(addr, val) AO_short_and_release(addr, val) argument
1499 # define AO_short_and(addr, val) AO_short_and_acquire(addr, val) argument
1503 # define AO_short_and(addr, val) AO_short_and_write(addr, val) argument
1507 # define AO_short_and(addr, val) AO_short_and_read(addr, val) argument
1513 # define AO_short_and_full(addr, val) \ argument
1514 (AO_nop_full(), AO_short_and_acquire(addr, val))
1520 # define AO_short_and_release_write(addr, val) AO_short_and_write(addr, val) argument
1525 # define AO_short_and_release_write(addr, val) AO_short_and_release(addr, val) argument
1530 # define AO_short_and_acquire_read(addr, val) AO_short_and_read(addr, val) argument
1535 # define AO_short_and_acquire_read(addr, val) AO_short_and_acquire(addr, val) argument
1544 AO_short_or_full(volatile unsigned/**/short *addr, unsigned/**/short value) in AO_short_or_full() argument
1550 old = *(unsigned/**/short *)addr; in AO_short_or_full()
1552 while (AO_EXPECT_FALSE(!AO_short_compare_and_swap_full(addr, old, in AO_short_or_full()
1560 # define AO_short_or_release(addr, val) AO_short_or_full(addr, val) argument
1564 # define AO_short_or_acquire(addr, val) AO_short_or_full(addr, val) argument
1568 # define AO_short_or_write(addr, val) AO_short_or_full(addr, val) argument
1572 # define AO_short_or_read(addr, val) AO_short_or_full(addr, val) argument
1578 # define AO_short_or(addr, val) AO_short_or_release(addr, val) argument
1582 # define AO_short_or(addr, val) AO_short_or_acquire(addr, val) argument
1586 # define AO_short_or(addr, val) AO_short_or_write(addr, val) argument
1590 # define AO_short_or(addr, val) AO_short_or_read(addr, val) argument
1596 # define AO_short_or_full(addr, val) \ argument
1597 (AO_nop_full(), AO_short_or_acquire(addr, val))
1603 # define AO_short_or_release_write(addr, val) AO_short_or_write(addr, val) argument
1608 # define AO_short_or_release_write(addr, val) AO_short_or_release(addr, val) argument
1612 # define AO_short_or_acquire_read(addr, val) AO_short_or_read(addr, val) argument
1617 # define AO_short_or_acquire_read(addr, val) AO_short_or_acquire(addr, val) argument
1626 AO_short_xor_full(volatile unsigned/**/short *addr, unsigned/**/short value) in AO_short_xor_full() argument
1632 old = *(unsigned/**/short *)addr; in AO_short_xor_full()
1634 while (AO_EXPECT_FALSE(!AO_short_compare_and_swap_full(addr, old, in AO_short_xor_full()
1642 # define AO_short_xor_release(addr, val) AO_short_xor_full(addr, val) argument
1646 # define AO_short_xor_acquire(addr, val) AO_short_xor_full(addr, val) argument
1650 # define AO_short_xor_write(addr, val) AO_short_xor_full(addr, val) argument
1654 # define AO_short_xor_read(addr, val) AO_short_xor_full(addr, val) argument
1660 # define AO_short_xor(addr, val) AO_short_xor_release(addr, val) argument
1664 # define AO_short_xor(addr, val) AO_short_xor_acquire(addr, val) argument
1668 # define AO_short_xor(addr, val) AO_short_xor_write(addr, val) argument
1672 # define AO_short_xor(addr, val) AO_short_xor_read(addr, val) argument
1678 # define AO_short_xor_full(addr, val) \ argument
1679 (AO_nop_full(), AO_short_xor_acquire(addr, val))
1685 # define AO_short_xor_release_write(addr, val) AO_short_xor_write(addr, val) argument
1690 # define AO_short_xor_release_write(addr, val) AO_short_xor_release(addr, val) argument
1695 # define AO_short_xor_acquire_read(addr, val) AO_short_xor_read(addr, val) argument
1700 # define AO_short_xor_acquire_read(addr, val) AO_short_xor_acquire(addr, val) argument
1731 AO_int_compare_and_swap_full(volatile unsigned *addr, unsigned old_val, in AO_int_compare_and_swap_full() argument
1734 return AO_int_fetch_compare_and_swap_full(addr, old_val, new_val) in AO_int_compare_and_swap_full()
1743 AO_int_compare_and_swap_acquire(volatile unsigned *addr, unsigned old_val, in AO_int_compare_and_swap_acquire() argument
1746 return AO_int_fetch_compare_and_swap_acquire(addr, old_val, new_val) in AO_int_compare_and_swap_acquire()
1755 AO_int_compare_and_swap_release(volatile unsigned *addr, unsigned old_val, in AO_int_compare_and_swap_release() argument
1758 return AO_int_fetch_compare_and_swap_release(addr, old_val, new_val) in AO_int_compare_and_swap_release()
1767 AO_int_compare_and_swap_write(volatile unsigned *addr, unsigned old_val, in AO_int_compare_and_swap_write() argument
1770 return AO_int_fetch_compare_and_swap_write(addr, old_val, new_val) in AO_int_compare_and_swap_write()
1779 AO_int_compare_and_swap_read(volatile unsigned *addr, unsigned old_val, in AO_int_compare_and_swap_read() argument
1782 return AO_int_fetch_compare_and_swap_read(addr, old_val, new_val) in AO_int_compare_and_swap_read()
1791 AO_int_compare_and_swap(volatile unsigned *addr, unsigned old_val, in AO_int_compare_and_swap() argument
1794 return AO_int_fetch_compare_and_swap(addr, old_val, new_val) == old_val; in AO_int_compare_and_swap()
1802 AO_int_compare_and_swap_release_write(volatile unsigned *addr, in AO_int_compare_and_swap_release_write() argument
1805 return AO_int_fetch_compare_and_swap_release_write(addr, old_val, in AO_int_compare_and_swap_release_write()
1814 AO_int_compare_and_swap_acquire_read(volatile unsigned *addr, in AO_int_compare_and_swap_acquire_read() argument
1817 return AO_int_fetch_compare_and_swap_acquire_read(addr, old_val, in AO_int_compare_and_swap_acquire_read()
1826 AO_int_compare_and_swap_dd_acquire_read(volatile unsigned *addr, in AO_int_compare_and_swap_dd_acquire_read() argument
1829 return AO_int_fetch_compare_and_swap_dd_acquire_read(addr, old_val, in AO_int_compare_and_swap_dd_acquire_read()
1842 AO_int_fetch_and_add_full(volatile unsigned *addr, unsigned incr) in AO_int_fetch_and_add_full() argument
1848 old = *(unsigned *)addr; in AO_int_fetch_and_add_full()
1850 while (AO_EXPECT_FALSE(!AO_int_compare_and_swap_full(addr, old, in AO_int_fetch_and_add_full()
1861 AO_int_fetch_and_add_acquire(volatile unsigned *addr, unsigned incr) in AO_int_fetch_and_add_acquire() argument
1867 old = *(unsigned *)addr; in AO_int_fetch_and_add_acquire()
1869 while (AO_EXPECT_FALSE(!AO_int_compare_and_swap_acquire(addr, old, in AO_int_fetch_and_add_acquire()
1880 AO_int_fetch_and_add_release(volatile unsigned *addr, unsigned incr) in AO_int_fetch_and_add_release() argument
1886 old = *(unsigned *)addr; in AO_int_fetch_and_add_release()
1888 while (AO_EXPECT_FALSE(!AO_int_compare_and_swap_release(addr, old, in AO_int_fetch_and_add_release()
1899 AO_int_fetch_and_add(volatile unsigned *addr, unsigned incr) in AO_int_fetch_and_add() argument
1905 old = *(unsigned *)addr; in AO_int_fetch_and_add()
1907 while (AO_EXPECT_FALSE(!AO_int_compare_and_swap(addr, old, in AO_int_fetch_and_add()
1916 # define AO_int_fetch_and_add_release(addr, val) \ argument
1917 AO_int_fetch_and_add_full(addr, val)
1921 # define AO_int_fetch_and_add_acquire(addr, val) \ argument
1922 AO_int_fetch_and_add_full(addr, val)
1926 # define AO_int_fetch_and_add_write(addr, val) \ argument
1927 AO_int_fetch_and_add_full(addr, val)
1931 # define AO_int_fetch_and_add_read(addr, val) \ argument
1932 AO_int_fetch_and_add_full(addr, val)
1940 AO_int_fetch_and_add_acquire(volatile unsigned *addr, unsigned incr) in AO_int_fetch_and_add_acquire() argument
1942 unsigned result = AO_int_fetch_and_add(addr, incr); in AO_int_fetch_and_add_acquire()
1950 # define AO_int_fetch_and_add_release(addr, incr) \ argument
1951 (AO_nop_full(), AO_int_fetch_and_add(addr, incr))
1957 # define AO_int_fetch_and_add(addr, val) \ argument
1958 AO_int_fetch_and_add_release(addr, val)
1963 # define AO_int_fetch_and_add(addr, val) \ argument
1964 AO_int_fetch_and_add_acquire(addr, val)
1969 # define AO_int_fetch_and_add(addr, val) \ argument
1970 AO_int_fetch_and_add_write(addr, val)
1975 # define AO_int_fetch_and_add(addr, val) \ argument
1976 AO_int_fetch_and_add_read(addr, val)
1982 # define AO_int_fetch_and_add_full(addr, val) \ argument
1983 (AO_nop_full(), AO_int_fetch_and_add_acquire(addr, val))
1989 # define AO_int_fetch_and_add_release_write(addr, val) \ argument
1990 AO_int_fetch_and_add_write(addr, val)
1995 # define AO_int_fetch_and_add_release_write(addr, val) \ argument
1996 AO_int_fetch_and_add_release(addr, val)
2002 # define AO_int_fetch_and_add_acquire_read(addr, val) \ argument
2003 AO_int_fetch_and_add_read(addr, val)
2008 # define AO_int_fetch_and_add_acquire_read(addr, val) \ argument
2009 AO_int_fetch_and_add_acquire(addr, val)
2015 # define AO_int_fetch_and_add_dd_acquire_read(addr, val) \ argument
2016 AO_int_fetch_and_add_acquire_read(addr, val)
2021 # define AO_int_fetch_and_add_dd_acquire_read(addr, val) \ argument
2022 AO_int_fetch_and_add(addr, val)
2030 # define AO_int_fetch_and_add1_full(addr) \ argument
2031 AO_int_fetch_and_add_full(addr, 1)
2036 # define AO_int_fetch_and_add1_release(addr) \ argument
2037 AO_int_fetch_and_add_release(addr, 1)
2042 # define AO_int_fetch_and_add1_acquire(addr) \ argument
2043 AO_int_fetch_and_add_acquire(addr, 1)
2048 # define AO_int_fetch_and_add1_write(addr) \ argument
2049 AO_int_fetch_and_add_write(addr, 1)
2054 # define AO_int_fetch_and_add1_read(addr) \ argument
2055 AO_int_fetch_and_add_read(addr, 1)
2060 # define AO_int_fetch_and_add1_release_write(addr) \ argument
2061 AO_int_fetch_and_add_release_write(addr, 1)
2066 # define AO_int_fetch_and_add1_acquire_read(addr) \ argument
2067 AO_int_fetch_and_add_acquire_read(addr, 1)
2072 # define AO_int_fetch_and_add1(addr) AO_int_fetch_and_add(addr, 1) argument
2078 # define AO_int_fetch_and_add1_release(addr) \ argument
2079 AO_int_fetch_and_add1_full(addr)
2083 # define AO_int_fetch_and_add1_acquire(addr) \ argument
2084 AO_int_fetch_and_add1_full(addr)
2088 # define AO_int_fetch_and_add1_write(addr) \ argument
2089 AO_int_fetch_and_add1_full(addr)
2093 # define AO_int_fetch_and_add1_read(addr) \ argument
2094 AO_int_fetch_and_add1_full(addr)
2101 # define AO_int_fetch_and_add1(addr) AO_int_fetch_and_add1_release(addr) argument
2106 # define AO_int_fetch_and_add1(addr) AO_int_fetch_and_add1_acquire(addr) argument
2111 # define AO_int_fetch_and_add1(addr) AO_int_fetch_and_add1_write(addr) argument
2116 # define AO_int_fetch_and_add1(addr) AO_int_fetch_and_add1_read(addr) argument
2123 # define AO_int_fetch_and_add1_full(addr) \ argument
2124 (AO_nop_full(), AO_int_fetch_and_add1_acquire(addr))
2130 # define AO_int_fetch_and_add1_release_write(addr) \ argument
2131 AO_int_fetch_and_add1_write(addr)
2136 # define AO_int_fetch_and_add1_release_write(addr) \ argument
2137 AO_int_fetch_and_add1_release(addr)
2142 # define AO_int_fetch_and_add1_acquire_read(addr) \ argument
2143 AO_int_fetch_and_add1_read(addr)
2148 # define AO_int_fetch_and_add1_acquire_read(addr) \ argument
2149 AO_int_fetch_and_add1_acquire(addr)
2155 # define AO_int_fetch_and_add1_dd_acquire_read(addr) \ argument
2156 AO_int_fetch_and_add1_acquire_read(addr)
2161 # define AO_int_fetch_and_add1_dd_acquire_read(addr) \ argument
2162 AO_int_fetch_and_add1(addr)
2170 # define AO_int_fetch_and_sub1_full(addr) \ argument
2171 AO_int_fetch_and_add_full(addr, (unsigned)(-1))
2176 # define AO_int_fetch_and_sub1_release(addr) \ argument
2177 AO_int_fetch_and_add_release(addr, (unsigned)(-1))
2182 # define AO_int_fetch_and_sub1_acquire(addr) \ argument
2183 AO_int_fetch_and_add_acquire(addr, (unsigned)(-1))
2188 # define AO_int_fetch_and_sub1_write(addr) \ argument
2189 AO_int_fetch_and_add_write(addr, (unsigned)(-1))
2194 # define AO_int_fetch_and_sub1_read(addr) \ argument
2195 AO_int_fetch_and_add_read(addr, (unsigned)(-1))
2200 # define AO_int_fetch_and_sub1_release_write(addr) \ argument
2201 AO_int_fetch_and_add_release_write(addr, (unsigned)(-1))
2206 # define AO_int_fetch_and_sub1_acquire_read(addr) \ argument
2207 AO_int_fetch_and_add_acquire_read(addr, (unsigned)(-1))
2212 # define AO_int_fetch_and_sub1(addr) \ argument
2213 AO_int_fetch_and_add(addr, (unsigned)(-1))
2219 # define AO_int_fetch_and_sub1_release(addr) \ argument
2220 AO_int_fetch_and_sub1_full(addr)
2224 # define AO_int_fetch_and_sub1_acquire(addr) \ argument
2225 AO_int_fetch_and_sub1_full(addr)
2229 # define AO_int_fetch_and_sub1_write(addr) \ argument
2230 AO_int_fetch_and_sub1_full(addr)
2234 # define AO_int_fetch_and_sub1_read(addr) \ argument
2235 AO_int_fetch_and_sub1_full(addr)
2242 # define AO_int_fetch_and_sub1(addr) AO_int_fetch_and_sub1_release(addr) argument
2247 # define AO_int_fetch_and_sub1(addr) AO_int_fetch_and_sub1_acquire(addr) argument
2252 # define AO_int_fetch_and_sub1(addr) AO_int_fetch_and_sub1_write(addr) argument
2257 # define AO_int_fetch_and_sub1(addr) AO_int_fetch_and_sub1_read(addr) argument
2264 # define AO_int_fetch_and_sub1_full(addr) \ argument
2265 (AO_nop_full(), AO_int_fetch_and_sub1_acquire(addr))
2271 # define AO_int_fetch_and_sub1_release_write(addr) \ argument
2272 AO_int_fetch_and_sub1_write(addr)
2277 # define AO_int_fetch_and_sub1_release_write(addr) \ argument
2278 AO_int_fetch_and_sub1_release(addr)
2283 # define AO_int_fetch_and_sub1_acquire_read(addr) \ argument
2284 AO_int_fetch_and_sub1_read(addr)
2289 # define AO_int_fetch_and_sub1_acquire_read(addr) \ argument
2290 AO_int_fetch_and_sub1_acquire(addr)
2296 # define AO_int_fetch_and_sub1_dd_acquire_read(addr) \ argument
2297 AO_int_fetch_and_sub1_acquire_read(addr)
2302 # define AO_int_fetch_and_sub1_dd_acquire_read(addr) \ argument
2303 AO_int_fetch_and_sub1(addr)
2313 AO_int_and_full(volatile unsigned *addr, unsigned value) in AO_int_and_full() argument
2319 old = *(unsigned *)addr; in AO_int_and_full()
2321 while (AO_EXPECT_FALSE(!AO_int_compare_and_swap_full(addr, old, in AO_int_and_full()
2329 # define AO_int_and_release(addr, val) AO_int_and_full(addr, val) argument
2333 # define AO_int_and_acquire(addr, val) AO_int_and_full(addr, val) argument
2337 # define AO_int_and_write(addr, val) AO_int_and_full(addr, val) argument
2341 # define AO_int_and_read(addr, val) AO_int_and_full(addr, val) argument
2347 # define AO_int_and(addr, val) AO_int_and_release(addr, val) argument
2351 # define AO_int_and(addr, val) AO_int_and_acquire(addr, val) argument
2355 # define AO_int_and(addr, val) AO_int_and_write(addr, val) argument
2359 # define AO_int_and(addr, val) AO_int_and_read(addr, val) argument
2365 # define AO_int_and_full(addr, val) \ argument
2366 (AO_nop_full(), AO_int_and_acquire(addr, val))
2372 # define AO_int_and_release_write(addr, val) AO_int_and_write(addr, val) argument
2377 # define AO_int_and_release_write(addr, val) AO_int_and_release(addr, val) argument
2382 # define AO_int_and_acquire_read(addr, val) AO_int_and_read(addr, val) argument
2387 # define AO_int_and_acquire_read(addr, val) AO_int_and_acquire(addr, val) argument
2396 AO_int_or_full(volatile unsigned *addr, unsigned value) in AO_int_or_full() argument
2402 old = *(unsigned *)addr; in AO_int_or_full()
2404 while (AO_EXPECT_FALSE(!AO_int_compare_and_swap_full(addr, old, in AO_int_or_full()
2412 # define AO_int_or_release(addr, val) AO_int_or_full(addr, val) argument
2416 # define AO_int_or_acquire(addr, val) AO_int_or_full(addr, val) argument
2420 # define AO_int_or_write(addr, val) AO_int_or_full(addr, val) argument
2424 # define AO_int_or_read(addr, val) AO_int_or_full(addr, val) argument
2430 # define AO_int_or(addr, val) AO_int_or_release(addr, val) argument
2434 # define AO_int_or(addr, val) AO_int_or_acquire(addr, val) argument
2438 # define AO_int_or(addr, val) AO_int_or_write(addr, val) argument
2442 # define AO_int_or(addr, val) AO_int_or_read(addr, val) argument
2448 # define AO_int_or_full(addr, val) \ argument
2449 (AO_nop_full(), AO_int_or_acquire(addr, val))
2455 # define AO_int_or_release_write(addr, val) AO_int_or_write(addr, val) argument
2460 # define AO_int_or_release_write(addr, val) AO_int_or_release(addr, val) argument
2464 # define AO_int_or_acquire_read(addr, val) AO_int_or_read(addr, val) argument
2469 # define AO_int_or_acquire_read(addr, val) AO_int_or_acquire(addr, val) argument
2478 AO_int_xor_full(volatile unsigned *addr, unsigned value) in AO_int_xor_full() argument
2484 old = *(unsigned *)addr; in AO_int_xor_full()
2486 while (AO_EXPECT_FALSE(!AO_int_compare_and_swap_full(addr, old, in AO_int_xor_full()
2494 # define AO_int_xor_release(addr, val) AO_int_xor_full(addr, val) argument
2498 # define AO_int_xor_acquire(addr, val) AO_int_xor_full(addr, val) argument
2502 # define AO_int_xor_write(addr, val) AO_int_xor_full(addr, val) argument
2506 # define AO_int_xor_read(addr, val) AO_int_xor_full(addr, val) argument
2512 # define AO_int_xor(addr, val) AO_int_xor_release(addr, val) argument
2516 # define AO_int_xor(addr, val) AO_int_xor_acquire(addr, val) argument
2520 # define AO_int_xor(addr, val) AO_int_xor_write(addr, val) argument
2524 # define AO_int_xor(addr, val) AO_int_xor_read(addr, val) argument
2530 # define AO_int_xor_full(addr, val) \ argument
2531 (AO_nop_full(), AO_int_xor_acquire(addr, val))
2537 # define AO_int_xor_release_write(addr, val) AO_int_xor_write(addr, val) argument
2542 # define AO_int_xor_release_write(addr, val) AO_int_xor_release(addr, val) argument
2547 # define AO_int_xor_acquire_read(addr, val) AO_int_xor_read(addr, val) argument
2552 # define AO_int_xor_acquire_read(addr, val) AO_int_xor_acquire(addr, val) argument
2583 AO_compare_and_swap_full(volatile AO_t *addr, AO_t old_val, in AO_compare_and_swap_full() argument
2586 return AO_fetch_compare_and_swap_full(addr, old_val, new_val) in AO_compare_and_swap_full()
2595 AO_compare_and_swap_acquire(volatile AO_t *addr, AO_t old_val, in AO_compare_and_swap_acquire() argument
2598 return AO_fetch_compare_and_swap_acquire(addr, old_val, new_val) in AO_compare_and_swap_acquire()
2607 AO_compare_and_swap_release(volatile AO_t *addr, AO_t old_val, in AO_compare_and_swap_release() argument
2610 return AO_fetch_compare_and_swap_release(addr, old_val, new_val) in AO_compare_and_swap_release()
2619 AO_compare_and_swap_write(volatile AO_t *addr, AO_t old_val, in AO_compare_and_swap_write() argument
2622 return AO_fetch_compare_and_swap_write(addr, old_val, new_val) in AO_compare_and_swap_write()
2631 AO_compare_and_swap_read(volatile AO_t *addr, AO_t old_val, in AO_compare_and_swap_read() argument
2634 return AO_fetch_compare_and_swap_read(addr, old_val, new_val) in AO_compare_and_swap_read()
2643 AO_compare_and_swap(volatile AO_t *addr, AO_t old_val, in AO_compare_and_swap() argument
2646 return AO_fetch_compare_and_swap(addr, old_val, new_val) == old_val; in AO_compare_and_swap()
2654 AO_compare_and_swap_release_write(volatile AO_t *addr, in AO_compare_and_swap_release_write() argument
2657 return AO_fetch_compare_and_swap_release_write(addr, old_val, in AO_compare_and_swap_release_write()
2666 AO_compare_and_swap_acquire_read(volatile AO_t *addr, in AO_compare_and_swap_acquire_read() argument
2669 return AO_fetch_compare_and_swap_acquire_read(addr, old_val, in AO_compare_and_swap_acquire_read()
2678 AO_compare_and_swap_dd_acquire_read(volatile AO_t *addr, in AO_compare_and_swap_dd_acquire_read() argument
2681 return AO_fetch_compare_and_swap_dd_acquire_read(addr, old_val, in AO_compare_and_swap_dd_acquire_read()
2694 AO_fetch_and_add_full(volatile AO_t *addr, AO_t incr) in AO_fetch_and_add_full() argument
2700 old = *(AO_t *)addr; in AO_fetch_and_add_full()
2702 while (AO_EXPECT_FALSE(!AO_compare_and_swap_full(addr, old, in AO_fetch_and_add_full()
2713 AO_fetch_and_add_acquire(volatile AO_t *addr, AO_t incr) in AO_fetch_and_add_acquire() argument
2719 old = *(AO_t *)addr; in AO_fetch_and_add_acquire()
2721 while (AO_EXPECT_FALSE(!AO_compare_and_swap_acquire(addr, old, in AO_fetch_and_add_acquire()
2732 AO_fetch_and_add_release(volatile AO_t *addr, AO_t incr) in AO_fetch_and_add_release() argument
2738 old = *(AO_t *)addr; in AO_fetch_and_add_release()
2740 while (AO_EXPECT_FALSE(!AO_compare_and_swap_release(addr, old, in AO_fetch_and_add_release()
2751 AO_fetch_and_add(volatile AO_t *addr, AO_t incr) in AO_fetch_and_add() argument
2757 old = *(AO_t *)addr; in AO_fetch_and_add()
2759 while (AO_EXPECT_FALSE(!AO_compare_and_swap(addr, old, in AO_fetch_and_add()
2768 # define AO_fetch_and_add_release(addr, val) \ argument
2769 AO_fetch_and_add_full(addr, val)
2773 # define AO_fetch_and_add_acquire(addr, val) \ argument
2774 AO_fetch_and_add_full(addr, val)
2778 # define AO_fetch_and_add_write(addr, val) \ argument
2779 AO_fetch_and_add_full(addr, val)
2783 # define AO_fetch_and_add_read(addr, val) \ argument
2784 AO_fetch_and_add_full(addr, val)
2792 AO_fetch_and_add_acquire(volatile AO_t *addr, AO_t incr) in AO_fetch_and_add_acquire() argument
2794 AO_t result = AO_fetch_and_add(addr, incr); in AO_fetch_and_add_acquire()
2802 # define AO_fetch_and_add_release(addr, incr) \ argument
2803 (AO_nop_full(), AO_fetch_and_add(addr, incr))
2809 # define AO_fetch_and_add(addr, val) \ argument
2810 AO_fetch_and_add_release(addr, val)
2815 # define AO_fetch_and_add(addr, val) \ argument
2816 AO_fetch_and_add_acquire(addr, val)
2821 # define AO_fetch_and_add(addr, val) \ argument
2822 AO_fetch_and_add_write(addr, val)
2827 # define AO_fetch_and_add(addr, val) \ argument
2828 AO_fetch_and_add_read(addr, val)
2834 # define AO_fetch_and_add_full(addr, val) \ argument
2835 (AO_nop_full(), AO_fetch_and_add_acquire(addr, val))
2841 # define AO_fetch_and_add_release_write(addr, val) \ argument
2842 AO_fetch_and_add_write(addr, val)
2847 # define AO_fetch_and_add_release_write(addr, val) \ argument
2848 AO_fetch_and_add_release(addr, val)
2854 # define AO_fetch_and_add_acquire_read(addr, val) \ argument
2855 AO_fetch_and_add_read(addr, val)
2860 # define AO_fetch_and_add_acquire_read(addr, val) \ argument
2861 AO_fetch_and_add_acquire(addr, val)
2867 # define AO_fetch_and_add_dd_acquire_read(addr, val) \ argument
2868 AO_fetch_and_add_acquire_read(addr, val)
2873 # define AO_fetch_and_add_dd_acquire_read(addr, val) \ argument
2874 AO_fetch_and_add(addr, val)
2882 # define AO_fetch_and_add1_full(addr) \ argument
2883 AO_fetch_and_add_full(addr, 1)
2888 # define AO_fetch_and_add1_release(addr) \ argument
2889 AO_fetch_and_add_release(addr, 1)
2894 # define AO_fetch_and_add1_acquire(addr) \ argument
2895 AO_fetch_and_add_acquire(addr, 1)
2900 # define AO_fetch_and_add1_write(addr) \ argument
2901 AO_fetch_and_add_write(addr, 1)
2906 # define AO_fetch_and_add1_read(addr) \ argument
2907 AO_fetch_and_add_read(addr, 1)
2912 # define AO_fetch_and_add1_release_write(addr) \ argument
2913 AO_fetch_and_add_release_write(addr, 1)
2918 # define AO_fetch_and_add1_acquire_read(addr) \ argument
2919 AO_fetch_and_add_acquire_read(addr, 1)
2924 # define AO_fetch_and_add1(addr) AO_fetch_and_add(addr, 1) argument
2930 # define AO_fetch_and_add1_release(addr) \ argument
2931 AO_fetch_and_add1_full(addr)
2935 # define AO_fetch_and_add1_acquire(addr) \ argument
2936 AO_fetch_and_add1_full(addr)
2940 # define AO_fetch_and_add1_write(addr) \ argument
2941 AO_fetch_and_add1_full(addr)
2945 # define AO_fetch_and_add1_read(addr) \ argument
2946 AO_fetch_and_add1_full(addr)
2953 # define AO_fetch_and_add1(addr) AO_fetch_and_add1_release(addr) argument
2958 # define AO_fetch_and_add1(addr) AO_fetch_and_add1_acquire(addr) argument
2963 # define AO_fetch_and_add1(addr) AO_fetch_and_add1_write(addr) argument
2968 # define AO_fetch_and_add1(addr) AO_fetch_and_add1_read(addr) argument
2975 # define AO_fetch_and_add1_full(addr) \ argument
2976 (AO_nop_full(), AO_fetch_and_add1_acquire(addr))
2982 # define AO_fetch_and_add1_release_write(addr) \ argument
2983 AO_fetch_and_add1_write(addr)
2988 # define AO_fetch_and_add1_release_write(addr) \ argument
2989 AO_fetch_and_add1_release(addr)
2994 # define AO_fetch_and_add1_acquire_read(addr) \ argument
2995 AO_fetch_and_add1_read(addr)
3000 # define AO_fetch_and_add1_acquire_read(addr) \ argument
3001 AO_fetch_and_add1_acquire(addr)
3007 # define AO_fetch_and_add1_dd_acquire_read(addr) \ argument
3008 AO_fetch_and_add1_acquire_read(addr)
3013 # define AO_fetch_and_add1_dd_acquire_read(addr) \ argument
3014 AO_fetch_and_add1(addr)
3022 # define AO_fetch_and_sub1_full(addr) \ argument
3023 AO_fetch_and_add_full(addr, (AO_t)(-1))
3028 # define AO_fetch_and_sub1_release(addr) \ argument
3029 AO_fetch_and_add_release(addr, (AO_t)(-1))
3034 # define AO_fetch_and_sub1_acquire(addr) \ argument
3035 AO_fetch_and_add_acquire(addr, (AO_t)(-1))
3040 # define AO_fetch_and_sub1_write(addr) \ argument
3041 AO_fetch_and_add_write(addr, (AO_t)(-1))
3046 # define AO_fetch_and_sub1_read(addr) \ argument
3047 AO_fetch_and_add_read(addr, (AO_t)(-1))
3052 # define AO_fetch_and_sub1_release_write(addr) \ argument
3053 AO_fetch_and_add_release_write(addr, (AO_t)(-1))
3058 # define AO_fetch_and_sub1_acquire_read(addr) \ argument
3059 AO_fetch_and_add_acquire_read(addr, (AO_t)(-1))
3064 # define AO_fetch_and_sub1(addr) \ argument
3065 AO_fetch_and_add(addr, (AO_t)(-1))
3071 # define AO_fetch_and_sub1_release(addr) \ argument
3072 AO_fetch_and_sub1_full(addr)
3076 # define AO_fetch_and_sub1_acquire(addr) \ argument
3077 AO_fetch_and_sub1_full(addr)
3081 # define AO_fetch_and_sub1_write(addr) \ argument
3082 AO_fetch_and_sub1_full(addr)
3086 # define AO_fetch_and_sub1_read(addr) \ argument
3087 AO_fetch_and_sub1_full(addr)
3094 # define AO_fetch_and_sub1(addr) AO_fetch_and_sub1_release(addr) argument
3099 # define AO_fetch_and_sub1(addr) AO_fetch_and_sub1_acquire(addr) argument
3104 # define AO_fetch_and_sub1(addr) AO_fetch_and_sub1_write(addr) argument
3109 # define AO_fetch_and_sub1(addr) AO_fetch_and_sub1_read(addr) argument
3116 # define AO_fetch_and_sub1_full(addr) \ argument
3117 (AO_nop_full(), AO_fetch_and_sub1_acquire(addr))
3123 # define AO_fetch_and_sub1_release_write(addr) \ argument
3124 AO_fetch_and_sub1_write(addr)
3129 # define AO_fetch_and_sub1_release_write(addr) \ argument
3130 AO_fetch_and_sub1_release(addr)
3135 # define AO_fetch_and_sub1_acquire_read(addr) \ argument
3136 AO_fetch_and_sub1_read(addr)
3141 # define AO_fetch_and_sub1_acquire_read(addr) \ argument
3142 AO_fetch_and_sub1_acquire(addr)
3148 # define AO_fetch_and_sub1_dd_acquire_read(addr) \ argument
3149 AO_fetch_and_sub1_acquire_read(addr)
3154 # define AO_fetch_and_sub1_dd_acquire_read(addr) \ argument
3155 AO_fetch_and_sub1(addr)
3165 AO_and_full(volatile AO_t *addr, AO_t value) in AO_and_full() argument
3171 old = *(AO_t *)addr; in AO_and_full()
3173 while (AO_EXPECT_FALSE(!AO_compare_and_swap_full(addr, old, in AO_and_full()
3181 # define AO_and_release(addr, val) AO_and_full(addr, val) argument
3185 # define AO_and_acquire(addr, val) AO_and_full(addr, val) argument
3189 # define AO_and_write(addr, val) AO_and_full(addr, val) argument
3193 # define AO_and_read(addr, val) AO_and_full(addr, val) argument
3199 # define AO_and(addr, val) AO_and_release(addr, val) argument
3203 # define AO_and(addr, val) AO_and_acquire(addr, val) argument
3207 # define AO_and(addr, val) AO_and_write(addr, val) argument
3211 # define AO_and(addr, val) AO_and_read(addr, val) argument
3217 # define AO_and_full(addr, val) \ argument
3218 (AO_nop_full(), AO_and_acquire(addr, val))
3224 # define AO_and_release_write(addr, val) AO_and_write(addr, val) argument
3229 # define AO_and_release_write(addr, val) AO_and_release(addr, val) argument
3234 # define AO_and_acquire_read(addr, val) AO_and_read(addr, val) argument
3239 # define AO_and_acquire_read(addr, val) AO_and_acquire(addr, val) argument
3248 AO_or_full(volatile AO_t *addr, AO_t value) in AO_or_full() argument
3254 old = *(AO_t *)addr; in AO_or_full()
3256 while (AO_EXPECT_FALSE(!AO_compare_and_swap_full(addr, old, in AO_or_full()
3264 # define AO_or_release(addr, val) AO_or_full(addr, val) argument
3268 # define AO_or_acquire(addr, val) AO_or_full(addr, val) argument
3272 # define AO_or_write(addr, val) AO_or_full(addr, val) argument
3276 # define AO_or_read(addr, val) AO_or_full(addr, val) argument
3282 # define AO_or(addr, val) AO_or_release(addr, val) argument
3286 # define AO_or(addr, val) AO_or_acquire(addr, val) argument
3290 # define AO_or(addr, val) AO_or_write(addr, val) argument
3294 # define AO_or(addr, val) AO_or_read(addr, val) argument
3300 # define AO_or_full(addr, val) \ argument
3301 (AO_nop_full(), AO_or_acquire(addr, val))
3307 # define AO_or_release_write(addr, val) AO_or_write(addr, val) argument
3312 # define AO_or_release_write(addr, val) AO_or_release(addr, val) argument
3316 # define AO_or_acquire_read(addr, val) AO_or_read(addr, val) argument
3321 # define AO_or_acquire_read(addr, val) AO_or_acquire(addr, val) argument
3330 AO_xor_full(volatile AO_t *addr, AO_t value) in AO_xor_full() argument
3336 old = *(AO_t *)addr; in AO_xor_full()
3338 while (AO_EXPECT_FALSE(!AO_compare_and_swap_full(addr, old, in AO_xor_full()
3346 # define AO_xor_release(addr, val) AO_xor_full(addr, val) argument
3350 # define AO_xor_acquire(addr, val) AO_xor_full(addr, val) argument
3354 # define AO_xor_write(addr, val) AO_xor_full(addr, val) argument
3358 # define AO_xor_read(addr, val) AO_xor_full(addr, val) argument
3364 # define AO_xor(addr, val) AO_xor_release(addr, val) argument
3368 # define AO_xor(addr, val) AO_xor_acquire(addr, val) argument
3372 # define AO_xor(addr, val) AO_xor_write(addr, val) argument
3376 # define AO_xor(addr, val) AO_xor_read(addr, val) argument
3382 # define AO_xor_full(addr, val) \ argument
3383 (AO_nop_full(), AO_xor_acquire(addr, val))
3389 # define AO_xor_release_write(addr, val) AO_xor_write(addr, val) argument
3394 # define AO_xor_release_write(addr, val) AO_xor_release(addr, val) argument
3399 # define AO_xor_acquire_read(addr, val) AO_xor_read(addr, val) argument
3404 # define AO_xor_acquire_read(addr, val) AO_xor_acquire(addr, val) argument