2
#if defined(AO_HAVE_XSIZE_load_acquire) && !defined(AO_HAVE_XSIZE_load)
3
# define AO_XSIZE_load(addr) AO_XSIZE_load_acquire(addr)
4
# define AO_HAVE_XSIZE_load
7
#if defined(AO_HAVE_XSIZE_load_full) && !defined(AO_HAVE_XSIZE_load_acquire)
8
# define AO_XSIZE_load_acquire(addr) AO_XSIZE_load_full(addr)
9
# define AO_HAVE_XSIZE_load_acquire
12
#if defined(AO_HAVE_XSIZE_load_full) && !defined(AO_HAVE_XSIZE_load_read)
13
# define AO_XSIZE_load_read(addr) AO_XSIZE_load_full(addr)
14
# define AO_HAVE_XSIZE_load_read
17
#if !defined(AO_HAVE_XSIZE_load_acquire_read) && defined(AO_HAVE_XSIZE_load_acquire)
18
# define AO_XSIZE_load_acquire_read(addr) AO_XSIZE_load_acquire(addr)
19
# define AO_HAVE_XSIZE_load_acquire_read
22
#if defined(AO_HAVE_XSIZE_load) && defined(AO_HAVE_nop_full) && \
23
!defined(AO_HAVE_XSIZE_load_acquire)
24
AO_INLINE unsigned XCTYPE
25
AO_XSIZE_load_acquire(volatile unsigned XCTYPE *addr)
27
unsigned XCTYPE result = AO_XSIZE_load(addr);
28
/* Acquire barrier would be useless, since the load could be delayed */
33
# define AO_HAVE_XSIZE_load_acquire
36
#if defined(AO_HAVE_XSIZE_load) && defined(AO_HAVE_nop_read) && \
37
!defined(AO_HAVE_XSIZE_load_read)
38
AO_INLINE unsigned XCTYPE
39
AO_XSIZE_load_read(volatile unsigned XCTYPE *addr)
41
unsigned XCTYPE result = AO_XSIZE_load(addr);
42
/* Acquire barrier would be useless, since the load could be delayed */
47
# define AO_HAVE_XSIZE_load_read
50
#if defined(AO_HAVE_XSIZE_load_acquire) && defined(AO_HAVE_nop_full) && \
51
!defined(AO_HAVE_XSIZE_load_full)
52
# define AO_XSIZE_load_full(addr) (AO_nop_full(), AO_XSIZE_load_acquire(addr))
53
# define AO_HAVE_XSIZE_load_full
56
#if !defined(AO_HAVE_XSIZE_load_acquire_read) && defined(AO_HAVE_XSIZE_load_read)
57
# define AO_XSIZE_load_acquire_read(addr) AO_XSIZE_load_read(addr)
58
# define AO_HAVE_XSIZE_load_acquire_read
61
#if defined(AO_HAVE_XSIZE_load_acquire_read) && !defined(AO_HAVE_XSIZE_load)
62
# define AO_XSIZE_load(addr) AO_XSIZE_load_acquire_read(addr)
63
# define AO_HAVE_XSIZE_load
66
#ifdef AO_NO_DD_ORDERING
67
# if defined(AO_HAVE_XSIZE_load_acquire_read)
68
# define AO_XSIZE_load_dd_acquire_read(addr) \
69
AO_XSIZE_load_acquire_read(addr)
70
# define AO_HAVE_XSIZE_load_dd_acquire_read
73
# if defined(AO_HAVE_XSIZE_load)
74
# define AO_XSIZE_load_dd_acquire_read(addr) \
76
# define AO_HAVE_XSIZE_load_dd_acquire_read
83
#if defined(AO_HAVE_XSIZE_store_release) && !defined(AO_HAVE_XSIZE_store)
84
# define AO_XSIZE_store(addr, val) AO_XSIZE_store_release(addr,val)
85
# define AO_HAVE_XSIZE_store
88
#if defined(AO_HAVE_XSIZE_store_full) && !defined(AO_HAVE_XSIZE_store_release)
89
# define AO_XSIZE_store_release(addr,val) AO_XSIZE_store_full(addr,val)
90
# define AO_HAVE_XSIZE_store_release
93
#if defined(AO_HAVE_XSIZE_store_full) && !defined(AO_HAVE_XSIZE_store_write)
94
# define AO_XSIZE_store_write(addr,val) AO_XSIZE_store_full(addr,val)
95
# define AO_HAVE_XSIZE_store_write
98
#if defined(AO_HAVE_XSIZE_store_release) && \
99
!defined(AO_HAVE_XSIZE_store_release_write)
100
# define AO_XSIZE_store_release_write(addr, val) \
101
AO_XSIZE_store_release(addr,val)
102
# define AO_HAVE_XSIZE_store_release_write
105
#if defined(AO_HAVE_XSIZE_store_write) && !defined(AO_HAVE_XSIZE_store)
106
# define AO_XSIZE_store(addr, val) AO_XSIZE_store_write(addr,val)
107
# define AO_HAVE_XSIZE_store
110
#if defined(AO_HAVE_XSIZE_store) && defined(AO_HAVE_nop_full) && \
111
!defined(AO_HAVE_XSIZE_store_release)
112
# define AO_XSIZE_store_release(addr,val) \
113
(AO_nop_full(), AO_XSIZE_store(addr,val))
114
# define AO_HAVE_XSIZE_store_release
117
#if defined(AO_HAVE_nop_write) && defined(AO_HAVE_XSIZE_store) && \
118
!defined(AO_HAVE_XSIZE_store_write)
119
# define AO_XSIZE_store_write(addr, val) \
120
(AO_nop_write(), AO_XSIZE_store(addr,val))
121
# define AO_HAVE_XSIZE_store_write
124
#if defined(AO_HAVE_XSIZE_store_write) && \
125
!defined(AO_HAVE_XSIZE_store_release_write)
126
# define AO_XSIZE_store_release_write(addr, val) AO_XSIZE_store_write(addr,val)
127
# define AO_HAVE_XSIZE_store_release_write
130
#if defined(AO_HAVE_XSIZE_store_release) && defined(AO_HAVE_nop_full) && \
131
!defined(AO_HAVE_XSIZE_store_full)
132
# define AO_XSIZE_store_full(addr, val) \
133
(AO_XSIZE_store_release(addr, val), AO_nop_full())
134
# define AO_HAVE_XSIZE_store_full
138
/* XSIZE_fetch_and_add */
139
#if defined(AO_HAVE_XSIZE_compare_and_swap_full) && \
140
!defined(AO_HAVE_XSIZE_fetch_and_add_full)
142
AO_XSIZE_fetch_and_add_full(volatile unsigned XCTYPE *addr,
143
unsigned XCTYPE incr)
150
while (!AO_XSIZE_compare_and_swap_full(addr, old, old+incr));
153
# define AO_HAVE_XSIZE_fetch_and_add_full
156
#if defined(AO_HAVE_XSIZE_compare_and_swap_acquire) && \
157
!defined(AO_HAVE_XSIZE_fetch_and_add_acquire)
159
AO_XSIZE_fetch_and_add_acquire(volatile unsigned XCTYPE *addr,
160
unsigned XCTYPE incr)
167
while (!AO_XSIZE_compare_and_swap_acquire(addr, old, old+incr));
170
# define AO_HAVE_XSIZE_fetch_and_add_acquire
173
#if defined(AO_HAVE_XSIZE_compare_and_swap_release) && \
174
!defined(AO_HAVE_XSIZE_fetch_and_add_release)
176
AO_XSIZE_fetch_and_add_release(volatile unsigned XCTYPE *addr,
177
unsigned XCTYPE incr)
184
while (!AO_XSIZE_compare_and_swap_release(addr, old, old+incr));
187
# define AO_HAVE_XSIZE_fetch_and_add_release
190
#if defined(AO_HAVE_XSIZE_fetch_and_add_full)
191
# if !defined(AO_HAVE_XSIZE_fetch_and_add_release)
192
# define AO_XSIZE_fetch_and_add_release(addr, val) \
193
AO_XSIZE_fetch_and_add_full(addr, val)
194
# define AO_HAVE_XSIZE_fetch_and_add_release
196
# if !defined(AO_HAVE_XSIZE_fetch_and_add_acquire)
197
# define AO_XSIZE_fetch_and_add_acquire(addr, val) \
198
AO_XSIZE_fetch_and_add_full(addr, val)
199
# define AO_HAVE_XSIZE_fetch_and_add_acquire
201
# if !defined(AO_HAVE_XSIZE_fetch_and_add_write)
202
# define AO_XSIZE_fetch_and_add_write(addr, val) \
203
AO_XSIZE_fetch_and_add_full(addr, val)
204
# define AO_HAVE_XSIZE_fetch_and_add_write
206
# if !defined(AO_HAVE_XSIZE_fetch_and_add_read)
207
# define AO_XSIZE_fetch_and_add_read(addr, val) \
208
AO_XSIZE_fetch_and_add_full(addr, val)
209
# define AO_HAVE_XSIZE_fetch_and_add_read
211
#endif /* AO_HAVE_XSIZE_fetch_and_add_full */
213
#if !defined(AO_HAVE_XSIZE_fetch_and_add) && \
214
defined(AO_HAVE_XSIZE_fetch_and_add_release)
215
# define AO_XSIZE_fetch_and_add(addr, val) \
216
AO_XSIZE_fetch_and_add_release(addr, val)
217
# define AO_HAVE_XSIZE_fetch_and_add
219
#if !defined(AO_HAVE_XSIZE_fetch_and_add) && \
220
defined(AO_HAVE_XSIZE_fetch_and_add_acquire)
221
# define AO_XSIZE_fetch_and_add(addr, val) \
222
AO_XSIZE_fetch_and_add_acquire(addr, val)
223
# define AO_HAVE_XSIZE_fetch_and_add
225
#if !defined(AO_HAVE_XSIZE_fetch_and_add) && \
226
defined(AO_HAVE_XSIZE_fetch_and_add_write)
227
# define AO_XSIZE_fetch_and_add(addr, val) \
228
AO_XSIZE_fetch_and_add_write(addr, val)
229
# define AO_HAVE_XSIZE_fetch_and_add
231
#if !defined(AO_HAVE_XSIZE_fetch_and_add) && \
232
defined(AO_HAVE_XSIZE_fetch_and_add_read)
233
# define AO_XSIZE_fetch_and_add(addr, val) \
234
AO_XSIZE_fetch_and_add_read(addr, val)
235
# define AO_HAVE_XSIZE_fetch_and_add
238
#if defined(AO_HAVE_XSIZE_fetch_and_add_acquire) &&\
239
defined(AO_HAVE_nop_full) && \
240
!defined(AO_HAVE_XSIZE_fetch_and_add_full)
241
# define AO_XSIZE_fetch_and_add_full(addr, val) \
242
(AO_nop_full(), AO_XSIZE_fetch_and_add_acquire(addr, val))
245
#if !defined(AO_HAVE_XSIZE_fetch_and_add_release_write) && \
246
defined(AO_HAVE_XSIZE_fetch_and_add_write)
247
# define AO_XSIZE_fetch_and_add_release_write(addr, val) \
248
AO_XSIZE_fetch_and_add_write(addr, val)
249
# define AO_HAVE_XSIZE_fetch_and_add_release_write
251
#if !defined(AO_HAVE_XSIZE_fetch_and_add_release_write) && \
252
defined(AO_HAVE_XSIZE_fetch_and_add_release)
253
# define AO_XSIZE_fetch_and_add_release_write(addr, val) \
254
AO_XSIZE_fetch_and_add_release(addr, val)
255
# define AO_HAVE_XSIZE_fetch_and_add_release_write
257
#if !defined(AO_HAVE_XSIZE_fetch_and_add_acquire_read) && \
258
defined(AO_HAVE_XSIZE_fetch_and_add_read)
259
# define AO_XSIZE_fetch_and_add_acquire_read(addr, val) \
260
AO_XSIZE_fetch_and_add_read(addr, val)
261
# define AO_HAVE_XSIZE_fetch_and_add_acquire_read
263
#if !defined(AO_HAVE_XSIZE_fetch_and_add_acquire_read) && \
264
defined(AO_HAVE_XSIZE_fetch_and_add_acquire)
265
# define AO_XSIZE_fetch_and_add_acquire_read(addr, val) \
266
AO_XSIZE_fetch_and_add_acquire(addr, val)
267
# define AO_HAVE_XSIZE_fetch_and_add_acquire_read
270
#ifdef AO_NO_DD_ORDERING
271
# if defined(AO_HAVE_XSIZE_fetch_and_add_acquire_read)
272
# define AO_XSIZE_fetch_and_add_dd_acquire_read(addr, val) \
273
AO_XSIZE_fetch_and_add_acquire_read(addr, val)
274
# define AO_HAVE_XSIZE_fetch_and_add_dd_acquire_read
277
# if defined(AO_HAVE_XSIZE_fetch_and_add)
278
# define AO_XSIZE_fetch_and_add_dd_acquire_read(addr, val) \
279
AO_XSIZE_fetch_and_add(addr, val)
280
# define AO_HAVE_XSIZE_fetch_and_add_dd_acquire_read
284
/* XSIZE_fetch_and_add1 */
286
#if defined(AO_HAVE_XSIZE_fetch_and_add_full) &&\
287
!defined(AO_HAVE_XSIZE_fetch_and_add1_full)
288
# define AO_XSIZE_fetch_and_add1_full(addr) \
289
AO_XSIZE_fetch_and_add_full(addr,1)
290
# define AO_HAVE_XSIZE_fetch_and_add1_full
292
#if defined(AO_HAVE_XSIZE_fetch_and_add_release) &&\
293
!defined(AO_HAVE_XSIZE_fetch_and_add1_release)
294
# define AO_XSIZE_fetch_and_add1_release(addr) \
295
AO_XSIZE_fetch_and_add_release(addr,1)
296
# define AO_HAVE_XSIZE_fetch_and_add1_release
298
#if defined(AO_HAVE_XSIZE_fetch_and_add_acquire) &&\
299
!defined(AO_HAVE_XSIZE_fetch_and_add1_acquire)
300
# define AO_XSIZE_fetch_and_add1_acquire(addr) \
301
AO_XSIZE_fetch_and_add_acquire(addr,1)
302
# define AO_HAVE_XSIZE_fetch_and_add1_acquire
304
#if defined(AO_HAVE_XSIZE_fetch_and_add_write) &&\
305
!defined(AO_HAVE_XSIZE_fetch_and_add1_write)
306
# define AO_XSIZE_fetch_and_add1_write(addr) \
307
AO_XSIZE_fetch_and_add_write(addr,1)
308
# define AO_HAVE_XSIZE_fetch_and_add1_write
310
#if defined(AO_HAVE_XSIZE_fetch_and_add_read) &&\
311
!defined(AO_HAVE_XSIZE_fetch_and_add1_read)
312
# define AO_XSIZE_fetch_and_add1_read(addr) \
313
AO_XSIZE_fetch_and_add_read(addr,1)
314
# define AO_HAVE_XSIZE_fetch_and_add1_read
316
#if defined(AO_HAVE_XSIZE_fetch_and_add_release_write) &&\
317
!defined(AO_HAVE_XSIZE_fetch_and_add1_release_write)
318
# define AO_XSIZE_fetch_and_add1_release_write(addr) \
319
AO_XSIZE_fetch_and_add_release_write(addr,1)
320
# define AO_HAVE_XSIZE_fetch_and_add1_release_write
322
#if defined(AO_HAVE_XSIZE_fetch_and_add_acquire_read) &&\
323
!defined(AO_HAVE_XSIZE_fetch_and_add1_acquire_read)
324
# define AO_XSIZE_fetch_and_add1_acquire_read(addr) \
325
AO_XSIZE_fetch_and_add_acquire_read(addr,1)
326
# define AO_HAVE_XSIZE_fetch_and_add1_acquire_read
328
#if defined(AO_HAVE_XSIZE_fetch_and_add) &&\
329
!defined(AO_HAVE_XSIZE_fetch_and_add1)
330
# define AO_XSIZE_fetch_and_add1(addr) \
331
AO_XSIZE_fetch_and_add(addr,1)
332
# define AO_HAVE_XSIZE_fetch_and_add1
335
#if defined(AO_HAVE_XSIZE_fetch_and_add1_full)
336
# if !defined(AO_HAVE_XSIZE_fetch_and_add1_release)
337
# define AO_XSIZE_fetch_and_add1_release(addr) \
338
AO_XSIZE_fetch_and_add1_full(addr)
339
# define AO_HAVE_XSIZE_fetch_and_add1_release
341
# if !defined(AO_HAVE_XSIZE_fetch_and_add1_acquire)
342
# define AO_XSIZE_fetch_and_add1_acquire(addr) \
343
AO_XSIZE_fetch_and_add1_full(addr)
344
# define AO_HAVE_XSIZE_fetch_and_add1_acquire
346
# if !defined(AO_HAVE_XSIZE_fetch_and_add1_write)
347
# define AO_XSIZE_fetch_and_add1_write(addr) \
348
AO_XSIZE_fetch_and_add1_full(addr)
349
# define AO_HAVE_XSIZE_fetch_and_add1_write
351
# if !defined(AO_HAVE_XSIZE_fetch_and_add1_read)
352
# define AO_XSIZE_fetch_and_add1_read(addr) \
353
AO_XSIZE_fetch_and_add1_full(addr)
354
# define AO_HAVE_XSIZE_fetch_and_add1_read
356
#endif /* AO_HAVE_XSIZE_fetch_and_add1_full */
358
#if !defined(AO_HAVE_XSIZE_fetch_and_add1) && \
359
defined(AO_HAVE_XSIZE_fetch_and_add1_release)
360
# define AO_XSIZE_fetch_and_add1(addr) \
361
AO_XSIZE_fetch_and_add1_release(addr)
362
# define AO_HAVE_XSIZE_fetch_and_add1
364
#if !defined(AO_HAVE_XSIZE_fetch_and_add1) && \
365
defined(AO_HAVE_XSIZE_fetch_and_add1_acquire)
366
# define AO_XSIZE_fetch_and_add1(addr) \
367
AO_XSIZE_fetch_and_add1_acquire(addr)
368
# define AO_HAVE_XSIZE_fetch_and_add1
370
#if !defined(AO_HAVE_XSIZE_fetch_and_add1) && \
371
defined(AO_HAVE_XSIZE_fetch_and_add1_write)
372
# define AO_XSIZE_fetch_and_add1(addr) \
373
AO_XSIZE_fetch_and_add1_write(addr)
374
# define AO_HAVE_XSIZE_fetch_and_add1
376
#if !defined(AO_HAVE_XSIZE_fetch_and_add1) && \
377
defined(AO_HAVE_XSIZE_fetch_and_add1_read)
378
# define AO_XSIZE_fetch_and_add1(addr) \
379
AO_XSIZE_fetch_and_add1_read(addr)
380
# define AO_HAVE_XSIZE_fetch_and_add1
383
#if defined(AO_HAVE_XSIZE_fetch_and_add1_acquire) &&\
384
defined(AO_HAVE_nop_full) && \
385
!defined(AO_HAVE_XSIZE_fetch_and_add1_full)
386
# define AO_XSIZE_fetch_and_add1_full(addr) \
387
(AO_nop_full(), AO_XSIZE_fetch_and_add1_acquire(addr))
388
# define AO_HAVE_XSIZE_fetch_and_add1_full
391
#if !defined(AO_HAVE_XSIZE_fetch_and_add1_release_write) && \
392
defined(AO_HAVE_XSIZE_fetch_and_add1_write)
393
# define AO_XSIZE_fetch_and_add1_release_write(addr) \
394
AO_XSIZE_fetch_and_add1_write(addr)
395
# define AO_HAVE_XSIZE_fetch_and_add1_release_write
397
#if !defined(AO_HAVE_XSIZE_fetch_and_add1_release_write) && \
398
defined(AO_HAVE_XSIZE_fetch_and_add1_release)
399
# define AO_XSIZE_fetch_and_add1_release_write(addr) \
400
AO_XSIZE_fetch_and_add1_release(addr)
401
# define AO_HAVE_XSIZE_fetch_and_add1_release_write
403
#if !defined(AO_HAVE_XSIZE_fetch_and_add1_acquire_read) && \
404
defined(AO_HAVE_XSIZE_fetch_and_add1_read)
405
# define AO_XSIZE_fetch_and_add1_acquire_read(addr) \
406
AO_XSIZE_fetch_and_add1_read(addr)
407
# define AO_HAVE_XSIZE_fetch_and_add1_acquire_read
409
#if !defined(AO_HAVE_XSIZE_fetch_and_add1_acquire_read) && \
410
defined(AO_HAVE_XSIZE_fetch_and_add1_acquire)
411
# define AO_XSIZE_fetch_and_add1_acquire_read(addr) \
412
AO_XSIZE_fetch_and_add1_acquire(addr)
413
# define AO_HAVE_XSIZE_fetch_and_add1_acquire_read
416
#ifdef AO_NO_DD_ORDERING
417
# if defined(AO_HAVE_XSIZE_fetch_and_add1_acquire_read)
418
# define AO_XSIZE_fetch_and_add1_dd_acquire_read(addr) \
419
AO_XSIZE_fetch_and_add1_acquire_read(addr)
420
# define AO_HAVE_XSIZE_fetch_and_add1_dd_acquire_read
423
# if defined(AO_HAVE_XSIZE_fetch_and_add1)
424
# define AO_XSIZE_fetch_and_add1_dd_acquire_read(addr) \
425
AO_XSIZE_fetch_and_add1(addr)
426
# define AO_HAVE_XSIZE_fetch_and_add1_dd_acquire_read
430
/* XSIZE_fetch_and_sub1 */
432
#if defined(AO_HAVE_XSIZE_fetch_and_add_full) &&\
433
!defined(AO_HAVE_XSIZE_fetch_and_sub1_full)
434
# define AO_XSIZE_fetch_and_sub1_full(addr) \
435
AO_XSIZE_fetch_and_add_full(addr,(unsigned XCTYPE)(-1))
436
# define AO_HAVE_XSIZE_fetch_and_sub1_full
438
#if defined(AO_HAVE_XSIZE_fetch_and_add_release) &&\
439
!defined(AO_HAVE_XSIZE_fetch_and_sub1_release)
440
# define AO_XSIZE_fetch_and_sub1_release(addr) \
441
AO_XSIZE_fetch_and_add_release(addr,(unsigned XCTYPE)(-1))
442
# define AO_HAVE_XSIZE_fetch_and_sub1_release
444
#if defined(AO_HAVE_XSIZE_fetch_and_add_acquire) &&\
445
!defined(AO_HAVE_XSIZE_fetch_and_sub1_acquire)
446
# define AO_XSIZE_fetch_and_sub1_acquire(addr) \
447
AO_XSIZE_fetch_and_add_acquire(addr,(unsigned XCTYPE)(-1))
448
# define AO_HAVE_XSIZE_fetch_and_sub1_acquire
450
#if defined(AO_HAVE_XSIZE_fetch_and_add_write) &&\
451
!defined(AO_HAVE_XSIZE_fetch_and_sub1_write)
452
# define AO_XSIZE_fetch_and_sub1_write(addr) \
453
AO_XSIZE_fetch_and_add_write(addr,(unsigned XCTYPE)(-1))
454
# define AO_HAVE_XSIZE_fetch_and_sub1_write
456
#if defined(AO_HAVE_XSIZE_fetch_and_add_read) &&\
457
!defined(AO_HAVE_XSIZE_fetch_and_sub1_read)
458
# define AO_XSIZE_fetch_and_sub1_read(addr) \
459
AO_XSIZE_fetch_and_add_read(addr,(unsigned XCTYPE)(-1))
460
# define AO_HAVE_XSIZE_fetch_and_sub1_read
462
#if defined(AO_HAVE_XSIZE_fetch_and_add_release_write) &&\
463
!defined(AO_HAVE_XSIZE_fetch_and_sub1_release_write)
464
# define AO_XSIZE_fetch_and_sub1_release_write(addr) \
465
AO_XSIZE_fetch_and_add_release_write(addr,(unsigned XCTYPE)(-1))
466
# define AO_HAVE_XSIZE_fetch_and_sub1_release_write
468
#if defined(AO_HAVE_XSIZE_fetch_and_add_acquire_read) &&\
469
!defined(AO_HAVE_XSIZE_fetch_and_sub1_acquire_read)
470
# define AO_XSIZE_fetch_and_sub1_acquire_read(addr) \
471
AO_XSIZE_fetch_and_add_acquire_read(addr,(unsigned XCTYPE)(-1))
472
# define AO_HAVE_XSIZE_fetch_and_sub1_acquire_read
474
#if defined(AO_HAVE_XSIZE_fetch_and_add) &&\
475
!defined(AO_HAVE_XSIZE_fetch_and_sub1)
476
# define AO_XSIZE_fetch_and_sub1(addr) \
477
AO_XSIZE_fetch_and_add(addr,(unsigned XCTYPE)(-1))
478
# define AO_HAVE_XSIZE_fetch_and_sub1
481
#if defined(AO_HAVE_XSIZE_fetch_and_sub1_full)
482
# if !defined(AO_HAVE_XSIZE_fetch_and_sub1_release)
483
# define AO_XSIZE_fetch_and_sub1_release(addr) \
484
AO_XSIZE_fetch_and_sub1_full(addr)
485
# define AO_HAVE_XSIZE_fetch_and_sub1_release
487
# if !defined(AO_HAVE_XSIZE_fetch_and_sub1_acquire)
488
# define AO_XSIZE_fetch_and_sub1_acquire(addr) \
489
AO_XSIZE_fetch_and_sub1_full(addr)
490
# define AO_HAVE_XSIZE_fetch_and_sub1_acquire
492
# if !defined(AO_HAVE_XSIZE_fetch_and_sub1_write)
493
# define AO_XSIZE_fetch_and_sub1_write(addr) \
494
AO_XSIZE_fetch_and_sub1_full(addr)
495
# define AO_HAVE_XSIZE_fetch_and_sub1_write
497
# if !defined(AO_HAVE_XSIZE_fetch_and_sub1_read)
498
# define AO_XSIZE_fetch_and_sub1_read(addr) \
499
AO_XSIZE_fetch_and_sub1_full(addr)
500
# define AO_HAVE_XSIZE_fetch_and_sub1_read
502
#endif /* AO_HAVE_XSIZE_fetch_and_sub1_full */
504
#if !defined(AO_HAVE_XSIZE_fetch_and_sub1) && \
505
defined(AO_HAVE_XSIZE_fetch_and_sub1_release)
506
# define AO_XSIZE_fetch_and_sub1(addr) \
507
AO_XSIZE_fetch_and_sub1_release(addr)
508
# define AO_HAVE_XSIZE_fetch_and_sub1
510
#if !defined(AO_HAVE_XSIZE_fetch_and_sub1) && \
511
defined(AO_HAVE_XSIZE_fetch_and_sub1_acquire)
512
# define AO_XSIZE_fetch_and_sub1(addr) \
513
AO_XSIZE_fetch_and_sub1_acquire(addr)
514
# define AO_HAVE_XSIZE_fetch_and_sub1
516
#if !defined(AO_HAVE_XSIZE_fetch_and_sub1) && \
517
defined(AO_HAVE_XSIZE_fetch_and_sub1_write)
518
# define AO_XSIZE_fetch_and_sub1(addr) \
519
AO_XSIZE_fetch_and_sub1_write(addr)
520
# define AO_HAVE_XSIZE_fetch_and_sub1
522
#if !defined(AO_HAVE_XSIZE_fetch_and_sub1) && \
523
defined(AO_HAVE_XSIZE_fetch_and_sub1_read)
524
# define AO_XSIZE_fetch_and_sub1(addr) \
525
AO_XSIZE_fetch_and_sub1_read(addr)
526
# define AO_HAVE_XSIZE_fetch_and_sub1
529
#if defined(AO_HAVE_XSIZE_fetch_and_sub1_acquire) &&\
530
defined(AO_HAVE_nop_full) && \
531
!defined(AO_HAVE_XSIZE_fetch_and_sub1_full)
532
# define AO_XSIZE_fetch_and_sub1_full(addr) \
533
(AO_nop_full(), AO_XSIZE_fetch_and_sub1_acquire(addr))
534
# define AO_HAVE_XSIZE_fetch_and_sub1_full
537
#if !defined(AO_HAVE_XSIZE_fetch_and_sub1_release_write) && \
538
defined(AO_HAVE_XSIZE_fetch_and_sub1_write)
539
# define AO_XSIZE_fetch_and_sub1_release_write(addr) \
540
AO_XSIZE_fetch_and_sub1_write(addr)
541
# define AO_HAVE_XSIZE_fetch_and_sub1_release_write
543
#if !defined(AO_HAVE_XSIZE_fetch_and_sub1_release_write) && \
544
defined(AO_HAVE_XSIZE_fetch_and_sub1_release)
545
# define AO_XSIZE_fetch_and_sub1_release_write(addr) \
546
AO_XSIZE_fetch_and_sub1_release(addr)
547
# define AO_HAVE_XSIZE_fetch_and_sub1_release_write
549
#if !defined(AO_HAVE_XSIZE_fetch_and_sub1_acquire_read) && \
550
defined(AO_HAVE_XSIZE_fetch_and_sub1_read)
551
# define AO_XSIZE_fetch_and_sub1_acquire_read(addr) \
552
AO_XSIZE_fetch_and_sub1_read(addr)
553
# define AO_HAVE_XSIZE_fetch_and_sub1_acquire_read
555
#if !defined(AO_HAVE_XSIZE_fetch_and_sub1_acquire_read) && \
556
defined(AO_HAVE_XSIZE_fetch_and_sub1_acquire)
557
# define AO_XSIZE_fetch_and_sub1_acquire_read(addr) \
558
AO_XSIZE_fetch_and_sub1_acquire(addr)
559
# define AO_HAVE_XSIZE_fetch_and_sub1_acquire_read
562
#ifdef AO_NO_DD_ORDERING
563
# if defined(AO_HAVE_XSIZE_fetch_and_sub1_acquire_read)
564
# define AO_XSIZE_fetch_and_sub1_dd_acquire_read(addr) \
565
AO_XSIZE_fetch_and_sub1_acquire_read(addr)
566
# define AO_HAVE_XSIZE_fetch_and_sub1_dd_acquire_read
569
# if defined(AO_HAVE_XSIZE_fetch_and_sub1)
570
# define AO_XSIZE_fetch_and_sub1_dd_acquire_read(addr) \
571
AO_XSIZE_fetch_and_sub1(addr)
572
# define AO_HAVE_XSIZE_fetch_and_sub1_dd_acquire_read