1 /* Check that the appropriate atomic insns are used if the result values
2    are unused.  */
3 
4 #define concat_1(x, y) x ## y
5 #define concat(x, y) concat_1 (x, y)
6 #define makefuncname(name) concat (concat (test_, __LINE__), name)
7 
8 #define emitfuncs(name,val)\
9   void makefuncname (_0) (char* mem)\
10   {\
11     name (mem, val, __ATOMIC_ACQ_REL);\
12   }\
13   void makefuncname (_1) (short* mem)\
14   {\
15     name (mem, val, __ATOMIC_ACQ_REL);\
16   }\
17   void makefuncname (_2) (int* mem)\
18   {\
19     name (mem, val, __ATOMIC_ACQ_REL);\
20   }\
21 
22 emitfuncs (__atomic_add_fetch, 1)
23 emitfuncs (__atomic_fetch_add, 1)
24 
25 emitfuncs (__atomic_sub_fetch, 1)
26 emitfuncs (__atomic_fetch_sub, 1)
27 
28 emitfuncs (__atomic_and_fetch, 1)
29 emitfuncs (__atomic_fetch_and, 1)
30 
31 emitfuncs (__atomic_or_fetch, 1)
32 emitfuncs (__atomic_fetch_or, 1)
33 
34 emitfuncs (__atomic_xor_fetch, 1)
35 emitfuncs (__atomic_fetch_xor, 1)
36 
37 emitfuncs (__atomic_nand_fetch, 1)
38 emitfuncs (__atomic_fetch_nand, 1)
39 
40 emitfuncs (__atomic_xor_fetch, -1)
41 emitfuncs (__atomic_fetch_xor, -1)
42 
43 emitfuncs (__atomic_nand_fetch, -1)
44 emitfuncs (__atomic_fetch_nand, -1)
45