1*e4b17023SJohn Marino/* This file contains the definitions and documentation for the
2*e4b17023SJohn Marino   synchronization builtins used in the GNU compiler.
3*e4b17023SJohn Marino   Copyright (C) 2005, 2007, 2010 Free Software Foundation, Inc.
4*e4b17023SJohn Marino
5*e4b17023SJohn MarinoThis file is part of GCC.
6*e4b17023SJohn Marino
7*e4b17023SJohn MarinoGCC is free software; you can redistribute it and/or modify it under
8*e4b17023SJohn Marinothe terms of the GNU General Public License as published by the Free
9*e4b17023SJohn MarinoSoftware Foundation; either version 3, or (at your option) any later
10*e4b17023SJohn Marinoversion.
11*e4b17023SJohn Marino
12*e4b17023SJohn MarinoGCC is distributed in the hope that it will be useful, but WITHOUT ANY
13*e4b17023SJohn MarinoWARRANTY; without even the implied warranty of MERCHANTABILITY or
14*e4b17023SJohn MarinoFITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
15*e4b17023SJohn Marinofor more details.
16*e4b17023SJohn Marino
17*e4b17023SJohn MarinoYou should have received a copy of the GNU General Public License
18*e4b17023SJohn Marinoalong with GCC; see the file COPYING3.  If not see
19*e4b17023SJohn Marino<http://www.gnu.org/licenses/>.  */
20*e4b17023SJohn Marino
21*e4b17023SJohn Marino/* Before including this file, you should define a macro:
22*e4b17023SJohn Marino
23*e4b17023SJohn Marino     DEF_SYNC_BUILTIN (ENUM, NAME, TYPE, ATTRS)
24*e4b17023SJohn Marino
25*e4b17023SJohn Marino   See builtins.def for details.  */
26*e4b17023SJohn Marino
27*e4b17023SJohn Marino/* Synchronization Primitives.  The "_N" version is the one that the user
28*e4b17023SJohn Marino   is supposed to be using.  It's overloaded, and is resolved to one of the
29*e4b17023SJohn Marino   "_1" through "_16" versions, plus some extra casts.  */
30*e4b17023SJohn Marino
31*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_ADD_N, "__sync_fetch_and_add",
32*e4b17023SJohn Marino		  BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
33*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_ADD_1, "__sync_fetch_and_add_1",
34*e4b17023SJohn Marino		  BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LEAF_LIST)
35*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_ADD_2, "__sync_fetch_and_add_2",
36*e4b17023SJohn Marino		  BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LEAF_LIST)
37*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_ADD_4, "__sync_fetch_and_add_4",
38*e4b17023SJohn Marino		  BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LEAF_LIST)
39*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_ADD_8, "__sync_fetch_and_add_8",
40*e4b17023SJohn Marino		  BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LEAF_LIST)
41*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_ADD_16, "__sync_fetch_and_add_16",
42*e4b17023SJohn Marino		  BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LEAF_LIST)
43*e4b17023SJohn Marino
44*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_SUB_N, "__sync_fetch_and_sub",
45*e4b17023SJohn Marino		  BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
46*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_SUB_1, "__sync_fetch_and_sub_1",
47*e4b17023SJohn Marino		  BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LEAF_LIST)
48*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_SUB_2, "__sync_fetch_and_sub_2",
49*e4b17023SJohn Marino		  BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LEAF_LIST)
50*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_SUB_4, "__sync_fetch_and_sub_4",
51*e4b17023SJohn Marino		  BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LEAF_LIST)
52*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_SUB_8, "__sync_fetch_and_sub_8",
53*e4b17023SJohn Marino		  BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LEAF_LIST)
54*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_SUB_16, "__sync_fetch_and_sub_16",
55*e4b17023SJohn Marino		  BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LEAF_LIST)
56*e4b17023SJohn Marino
57*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_OR_N, "__sync_fetch_and_or",
58*e4b17023SJohn Marino		  BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
59*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_OR_1, "__sync_fetch_and_or_1",
60*e4b17023SJohn Marino		  BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LEAF_LIST)
61*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_OR_2, "__sync_fetch_and_or_2",
62*e4b17023SJohn Marino		  BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LEAF_LIST)
63*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_OR_4, "__sync_fetch_and_or_4",
64*e4b17023SJohn Marino		  BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LEAF_LIST)
65*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_OR_8, "__sync_fetch_and_or_8",
66*e4b17023SJohn Marino		  BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LEAF_LIST)
67*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_OR_16, "__sync_fetch_and_or_16",
68*e4b17023SJohn Marino		  BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LEAF_LIST)
69*e4b17023SJohn Marino
70*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_AND_N, "__sync_fetch_and_and",
71*e4b17023SJohn Marino		  BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
72*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_AND_1, "__sync_fetch_and_and_1",
73*e4b17023SJohn Marino		  BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LEAF_LIST)
74*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_AND_2, "__sync_fetch_and_and_2",
75*e4b17023SJohn Marino		  BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LEAF_LIST)
76*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_AND_4, "__sync_fetch_and_and_4",
77*e4b17023SJohn Marino		  BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LEAF_LIST)
78*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_AND_8, "__sync_fetch_and_and_8",
79*e4b17023SJohn Marino		  BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LEAF_LIST)
80*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_AND_16, "__sync_fetch_and_and_16",
81*e4b17023SJohn Marino		  BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LEAF_LIST)
82*e4b17023SJohn Marino
83*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_XOR_N, "__sync_fetch_and_xor",
84*e4b17023SJohn Marino		  BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
85*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_XOR_1, "__sync_fetch_and_xor_1",
86*e4b17023SJohn Marino		  BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LEAF_LIST)
87*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_XOR_2, "__sync_fetch_and_xor_2",
88*e4b17023SJohn Marino		  BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LEAF_LIST)
89*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_XOR_4, "__sync_fetch_and_xor_4",
90*e4b17023SJohn Marino		  BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LEAF_LIST)
91*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_XOR_8, "__sync_fetch_and_xor_8",
92*e4b17023SJohn Marino		  BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LEAF_LIST)
93*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_XOR_16, "__sync_fetch_and_xor_16",
94*e4b17023SJohn Marino		  BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LEAF_LIST)
95*e4b17023SJohn Marino
96*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_NAND_N, "__sync_fetch_and_nand",
97*e4b17023SJohn Marino		  BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
98*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_NAND_1, "__sync_fetch_and_nand_1",
99*e4b17023SJohn Marino		  BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LEAF_LIST)
100*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_NAND_2, "__sync_fetch_and_nand_2",
101*e4b17023SJohn Marino		  BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LEAF_LIST)
102*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_NAND_4, "__sync_fetch_and_nand_4",
103*e4b17023SJohn Marino		  BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LEAF_LIST)
104*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_NAND_8, "__sync_fetch_and_nand_8",
105*e4b17023SJohn Marino		  BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LEAF_LIST)
106*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_NAND_16, "__sync_fetch_and_nand_16",
107*e4b17023SJohn Marino		  BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LEAF_LIST)
108*e4b17023SJohn Marino
109*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_ADD_AND_FETCH_N, "__sync_add_and_fetch",
110*e4b17023SJohn Marino		  BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
111*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_ADD_AND_FETCH_1, "__sync_add_and_fetch_1",
112*e4b17023SJohn Marino		  BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LEAF_LIST)
113*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_ADD_AND_FETCH_2, "__sync_add_and_fetch_2",
114*e4b17023SJohn Marino		  BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LEAF_LIST)
115*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_ADD_AND_FETCH_4, "__sync_add_and_fetch_4",
116*e4b17023SJohn Marino		  BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LEAF_LIST)
117*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_ADD_AND_FETCH_8, "__sync_add_and_fetch_8",
118*e4b17023SJohn Marino		  BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LEAF_LIST)
119*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_ADD_AND_FETCH_16, "__sync_add_and_fetch_16",
120*e4b17023SJohn Marino		  BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LEAF_LIST)
121*e4b17023SJohn Marino
122*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_SUB_AND_FETCH_N, "__sync_sub_and_fetch",
123*e4b17023SJohn Marino		  BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
124*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_SUB_AND_FETCH_1, "__sync_sub_and_fetch_1",
125*e4b17023SJohn Marino		  BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LEAF_LIST)
126*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_SUB_AND_FETCH_2, "__sync_sub_and_fetch_2",
127*e4b17023SJohn Marino		  BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LEAF_LIST)
128*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_SUB_AND_FETCH_4, "__sync_sub_and_fetch_4",
129*e4b17023SJohn Marino		  BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LEAF_LIST)
130*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_SUB_AND_FETCH_8, "__sync_sub_and_fetch_8",
131*e4b17023SJohn Marino		  BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LEAF_LIST)
132*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_SUB_AND_FETCH_16, "__sync_sub_and_fetch_16",
133*e4b17023SJohn Marino		  BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LEAF_LIST)
134*e4b17023SJohn Marino
135*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_OR_AND_FETCH_N, "__sync_or_and_fetch",
136*e4b17023SJohn Marino		  BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
137*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_OR_AND_FETCH_1, "__sync_or_and_fetch_1",
138*e4b17023SJohn Marino		  BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LEAF_LIST)
139*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_OR_AND_FETCH_2, "__sync_or_and_fetch_2",
140*e4b17023SJohn Marino		  BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LEAF_LIST)
141*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_OR_AND_FETCH_4, "__sync_or_and_fetch_4",
142*e4b17023SJohn Marino		  BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LEAF_LIST)
143*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_OR_AND_FETCH_8, "__sync_or_and_fetch_8",
144*e4b17023SJohn Marino		  BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LEAF_LIST)
145*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_OR_AND_FETCH_16, "__sync_or_and_fetch_16",
146*e4b17023SJohn Marino		  BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LEAF_LIST)
147*e4b17023SJohn Marino
148*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_AND_AND_FETCH_N, "__sync_and_and_fetch",
149*e4b17023SJohn Marino		  BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
150*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_AND_AND_FETCH_1, "__sync_and_and_fetch_1",
151*e4b17023SJohn Marino		  BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LEAF_LIST)
152*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_AND_AND_FETCH_2, "__sync_and_and_fetch_2",
153*e4b17023SJohn Marino		  BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LEAF_LIST)
154*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_AND_AND_FETCH_4, "__sync_and_and_fetch_4",
155*e4b17023SJohn Marino		  BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LEAF_LIST)
156*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_AND_AND_FETCH_8, "__sync_and_and_fetch_8",
157*e4b17023SJohn Marino		  BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LEAF_LIST)
158*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_AND_AND_FETCH_16, "__sync_and_and_fetch_16",
159*e4b17023SJohn Marino		  BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LEAF_LIST)
160*e4b17023SJohn Marino
161*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_XOR_AND_FETCH_N, "__sync_xor_and_fetch",
162*e4b17023SJohn Marino		  BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
163*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_XOR_AND_FETCH_1, "__sync_xor_and_fetch_1",
164*e4b17023SJohn Marino		  BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LEAF_LIST)
165*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_XOR_AND_FETCH_2, "__sync_xor_and_fetch_2",
166*e4b17023SJohn Marino		  BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LEAF_LIST)
167*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_XOR_AND_FETCH_4, "__sync_xor_and_fetch_4",
168*e4b17023SJohn Marino		  BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LEAF_LIST)
169*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_XOR_AND_FETCH_8, "__sync_xor_and_fetch_8",
170*e4b17023SJohn Marino		  BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LEAF_LIST)
171*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_XOR_AND_FETCH_16, "__sync_xor_and_fetch_16",
172*e4b17023SJohn Marino		  BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LEAF_LIST)
173*e4b17023SJohn Marino
174*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_NAND_AND_FETCH_N, "__sync_nand_and_fetch",
175*e4b17023SJohn Marino		  BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
176*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_NAND_AND_FETCH_1, "__sync_nand_and_fetch_1",
177*e4b17023SJohn Marino		  BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LEAF_LIST)
178*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_NAND_AND_FETCH_2, "__sync_nand_and_fetch_2",
179*e4b17023SJohn Marino		  BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LEAF_LIST)
180*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_NAND_AND_FETCH_4, "__sync_nand_and_fetch_4",
181*e4b17023SJohn Marino		  BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LEAF_LIST)
182*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_NAND_AND_FETCH_8, "__sync_nand_and_fetch_8",
183*e4b17023SJohn Marino		  BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LEAF_LIST)
184*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_NAND_AND_FETCH_16, "__sync_nand_and_fetch_16",
185*e4b17023SJohn Marino		  BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LEAF_LIST)
186*e4b17023SJohn Marino
187*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_N,
188*e4b17023SJohn Marino		  "__sync_bool_compare_and_swap",
189*e4b17023SJohn Marino		  BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
190*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_1,
191*e4b17023SJohn Marino		  "__sync_bool_compare_and_swap_1",
192*e4b17023SJohn Marino		  BT_FN_BOOL_VPTR_I1_I1, ATTR_NOTHROW_LEAF_LIST)
193*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_2,
194*e4b17023SJohn Marino		  "__sync_bool_compare_and_swap_2",
195*e4b17023SJohn Marino		  BT_FN_BOOL_VPTR_I2_I2, ATTR_NOTHROW_LEAF_LIST)
196*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_4,
197*e4b17023SJohn Marino		  "__sync_bool_compare_and_swap_4",
198*e4b17023SJohn Marino		  BT_FN_BOOL_VPTR_I4_I4, ATTR_NOTHROW_LEAF_LIST)
199*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_8,
200*e4b17023SJohn Marino		  "__sync_bool_compare_and_swap_8",
201*e4b17023SJohn Marino		  BT_FN_BOOL_VPTR_I8_I8, ATTR_NOTHROW_LEAF_LIST)
202*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_16,
203*e4b17023SJohn Marino		  "__sync_bool_compare_and_swap_16",
204*e4b17023SJohn Marino		  BT_FN_BOOL_VPTR_I16_I16, ATTR_NOTHROW_LEAF_LIST)
205*e4b17023SJohn Marino
206*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_VAL_COMPARE_AND_SWAP_N,
207*e4b17023SJohn Marino		  "__sync_val_compare_and_swap",
208*e4b17023SJohn Marino		  BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
209*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_VAL_COMPARE_AND_SWAP_1,
210*e4b17023SJohn Marino		  "__sync_val_compare_and_swap_1",
211*e4b17023SJohn Marino		  BT_FN_I1_VPTR_I1_I1, ATTR_NOTHROW_LEAF_LIST)
212*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_VAL_COMPARE_AND_SWAP_2,
213*e4b17023SJohn Marino		  "__sync_val_compare_and_swap_2",
214*e4b17023SJohn Marino		  BT_FN_I2_VPTR_I2_I2, ATTR_NOTHROW_LEAF_LIST)
215*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_VAL_COMPARE_AND_SWAP_4,
216*e4b17023SJohn Marino		  "__sync_val_compare_and_swap_4",
217*e4b17023SJohn Marino		  BT_FN_I4_VPTR_I4_I4, ATTR_NOTHROW_LEAF_LIST)
218*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_VAL_COMPARE_AND_SWAP_8,
219*e4b17023SJohn Marino		  "__sync_val_compare_and_swap_8",
220*e4b17023SJohn Marino		  BT_FN_I8_VPTR_I8_I8, ATTR_NOTHROW_LEAF_LIST)
221*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_VAL_COMPARE_AND_SWAP_16,
222*e4b17023SJohn Marino		  "__sync_val_compare_and_swap_16",
223*e4b17023SJohn Marino		  BT_FN_I16_VPTR_I16_I16, ATTR_NOTHROW_LEAF_LIST)
224*e4b17023SJohn Marino
225*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_LOCK_TEST_AND_SET_N,
226*e4b17023SJohn Marino		  "__sync_lock_test_and_set",
227*e4b17023SJohn Marino		  BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
228*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_LOCK_TEST_AND_SET_1,
229*e4b17023SJohn Marino		  "__sync_lock_test_and_set_1",
230*e4b17023SJohn Marino		  BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LEAF_LIST)
231*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_LOCK_TEST_AND_SET_2,
232*e4b17023SJohn Marino		  "__sync_lock_test_and_set_2",
233*e4b17023SJohn Marino		  BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LEAF_LIST)
234*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_LOCK_TEST_AND_SET_4,
235*e4b17023SJohn Marino		  "__sync_lock_test_and_set_4",
236*e4b17023SJohn Marino		  BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LEAF_LIST)
237*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_LOCK_TEST_AND_SET_8,
238*e4b17023SJohn Marino		  "__sync_lock_test_and_set_8",
239*e4b17023SJohn Marino		  BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LEAF_LIST)
240*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_LOCK_TEST_AND_SET_16,
241*e4b17023SJohn Marino		  "__sync_lock_test_and_set_16",
242*e4b17023SJohn Marino		  BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LEAF_LIST)
243*e4b17023SJohn Marino
244*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_LOCK_RELEASE_N, "__sync_lock_release",
245*e4b17023SJohn Marino		  BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
246*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_LOCK_RELEASE_1, "__sync_lock_release_1",
247*e4b17023SJohn Marino		  BT_FN_VOID_VPTR, ATTR_NOTHROW_LEAF_LIST)
248*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_LOCK_RELEASE_2, "__sync_lock_release_2",
249*e4b17023SJohn Marino		  BT_FN_VOID_VPTR, ATTR_NOTHROW_LEAF_LIST)
250*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_LOCK_RELEASE_4, "__sync_lock_release_4",
251*e4b17023SJohn Marino		  BT_FN_VOID_VPTR, ATTR_NOTHROW_LEAF_LIST)
252*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_LOCK_RELEASE_8, "__sync_lock_release_8",
253*e4b17023SJohn Marino		  BT_FN_VOID_VPTR, ATTR_NOTHROW_LEAF_LIST)
254*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_LOCK_RELEASE_16, "__sync_lock_release_16",
255*e4b17023SJohn Marino		  BT_FN_VOID_VPTR, ATTR_NOTHROW_LEAF_LIST)
256*e4b17023SJohn Marino
257*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_SYNC_SYNCHRONIZE, "__sync_synchronize",
258*e4b17023SJohn Marino		  BT_FN_VOID, ATTR_NOTHROW_LEAF_LIST)
259*e4b17023SJohn Marino
260*e4b17023SJohn Marino/* __sync* builtins for the C++ memory model.  */
261*e4b17023SJohn Marino
262*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_TEST_AND_SET, "__atomic_test_and_set",
263*e4b17023SJohn Marino		  BT_FN_BOOL_VPTR_INT, ATTR_NOTHROW_LEAF_LIST)
264*e4b17023SJohn Marino
265*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_CLEAR, "__atomic_clear", BT_FN_VOID_VPTR_INT,
266*e4b17023SJohn Marino		  ATTR_NOTHROW_LEAF_LIST)
267*e4b17023SJohn Marino
268*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_EXCHANGE,
269*e4b17023SJohn Marino		  "__atomic_exchange",
270*e4b17023SJohn Marino		  BT_FN_VOID_SIZE_VPTR_PTR_PTR_INT, ATTR_NOTHROW_LEAF_LIST)
271*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_EXCHANGE_N,
272*e4b17023SJohn Marino		  "__atomic_exchange_n",
273*e4b17023SJohn Marino		  BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
274*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_EXCHANGE_1,
275*e4b17023SJohn Marino		  "__atomic_exchange_1",
276*e4b17023SJohn Marino		  BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROW_LEAF_LIST)
277*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_EXCHANGE_2,
278*e4b17023SJohn Marino		  "__atomic_exchange_2",
279*e4b17023SJohn Marino		  BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROW_LEAF_LIST)
280*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_EXCHANGE_4,
281*e4b17023SJohn Marino		  "__atomic_exchange_4",
282*e4b17023SJohn Marino		  BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROW_LEAF_LIST)
283*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_EXCHANGE_8,
284*e4b17023SJohn Marino		  "__atomic_exchange_8",
285*e4b17023SJohn Marino		  BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROW_LEAF_LIST)
286*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_EXCHANGE_16,
287*e4b17023SJohn Marino		  "__atomic_exchange_16",
288*e4b17023SJohn Marino		  BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROW_LEAF_LIST)
289*e4b17023SJohn Marino
290*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_LOAD,
291*e4b17023SJohn Marino		  "__atomic_load",
292*e4b17023SJohn Marino		  BT_FN_VOID_SIZE_CONST_VPTR_PTR_INT, ATTR_NOTHROW_LEAF_LIST)
293*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_LOAD_N,
294*e4b17023SJohn Marino		  "__atomic_load_n",
295*e4b17023SJohn Marino		  BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
296*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_LOAD_1,
297*e4b17023SJohn Marino		  "__atomic_load_1",
298*e4b17023SJohn Marino		  BT_FN_I1_CONST_VPTR_INT, ATTR_NOTHROW_LEAF_LIST)
299*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_LOAD_2,
300*e4b17023SJohn Marino		  "__atomic_load_2",
301*e4b17023SJohn Marino		  BT_FN_I2_CONST_VPTR_INT, ATTR_NOTHROW_LEAF_LIST)
302*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_LOAD_4,
303*e4b17023SJohn Marino		  "__atomic_load_4",
304*e4b17023SJohn Marino		  BT_FN_I4_CONST_VPTR_INT, ATTR_NOTHROW_LEAF_LIST)
305*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_LOAD_8,
306*e4b17023SJohn Marino		  "__atomic_load_8",
307*e4b17023SJohn Marino		  BT_FN_I8_CONST_VPTR_INT, ATTR_NOTHROW_LEAF_LIST)
308*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_LOAD_16,
309*e4b17023SJohn Marino		  "__atomic_load_16",
310*e4b17023SJohn Marino		  BT_FN_I16_CONST_VPTR_INT, ATTR_NOTHROW_LEAF_LIST)
311*e4b17023SJohn Marino
312*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_COMPARE_EXCHANGE,
313*e4b17023SJohn Marino		  "__atomic_compare_exchange",
314*e4b17023SJohn Marino		  BT_FN_BOOL_SIZE_VPTR_PTR_PTR_INT_INT,
315*e4b17023SJohn Marino		  ATTR_NOTHROW_LEAF_LIST)
316*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_COMPARE_EXCHANGE_N,
317*e4b17023SJohn Marino		  "__atomic_compare_exchange_n",
318*e4b17023SJohn Marino		  BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
319*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_COMPARE_EXCHANGE_1,
320*e4b17023SJohn Marino		  "__atomic_compare_exchange_1",
321*e4b17023SJohn Marino		  BT_FN_BOOL_VPTR_PTR_I1_BOOL_INT_INT, ATTR_NOTHROW_LEAF_LIST)
322*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_COMPARE_EXCHANGE_2,
323*e4b17023SJohn Marino		  "__atomic_compare_exchange_2",
324*e4b17023SJohn Marino		  BT_FN_BOOL_VPTR_PTR_I2_BOOL_INT_INT, ATTR_NOTHROW_LEAF_LIST)
325*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_COMPARE_EXCHANGE_4,
326*e4b17023SJohn Marino		  "__atomic_compare_exchange_4",
327*e4b17023SJohn Marino		  BT_FN_BOOL_VPTR_PTR_I4_BOOL_INT_INT, ATTR_NOTHROW_LEAF_LIST)
328*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_COMPARE_EXCHANGE_8,
329*e4b17023SJohn Marino		  "__atomic_compare_exchange_8",
330*e4b17023SJohn Marino		  BT_FN_BOOL_VPTR_PTR_I8_BOOL_INT_INT, ATTR_NOTHROW_LEAF_LIST)
331*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_COMPARE_EXCHANGE_16,
332*e4b17023SJohn Marino		  "__atomic_compare_exchange_16",
333*e4b17023SJohn Marino		  BT_FN_BOOL_VPTR_PTR_I16_BOOL_INT_INT, ATTR_NOTHROW_LEAF_LIST)
334*e4b17023SJohn Marino
335*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_STORE,
336*e4b17023SJohn Marino		  "__atomic_store",
337*e4b17023SJohn Marino		  BT_FN_VOID_SIZE_VPTR_PTR_INT, ATTR_NOTHROW_LEAF_LIST)
338*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_STORE_N,
339*e4b17023SJohn Marino		  "__atomic_store_n",
340*e4b17023SJohn Marino		  BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
341*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_STORE_1,
342*e4b17023SJohn Marino		  "__atomic_store_1",
343*e4b17023SJohn Marino		  BT_FN_VOID_VPTR_I1_INT, ATTR_NOTHROW_LEAF_LIST)
344*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_STORE_2,
345*e4b17023SJohn Marino		  "__atomic_store_2",
346*e4b17023SJohn Marino		  BT_FN_VOID_VPTR_I2_INT, ATTR_NOTHROW_LEAF_LIST)
347*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_STORE_4,
348*e4b17023SJohn Marino		  "__atomic_store_4",
349*e4b17023SJohn Marino		  BT_FN_VOID_VPTR_I4_INT, ATTR_NOTHROW_LEAF_LIST)
350*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_STORE_8,
351*e4b17023SJohn Marino		  "__atomic_store_8",
352*e4b17023SJohn Marino		  BT_FN_VOID_VPTR_I8_INT, ATTR_NOTHROW_LEAF_LIST)
353*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_STORE_16,
354*e4b17023SJohn Marino		  "__atomic_store_16",
355*e4b17023SJohn Marino		  BT_FN_VOID_VPTR_I16_INT, ATTR_NOTHROW_LEAF_LIST)
356*e4b17023SJohn Marino
357*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_ADD_FETCH_N,
358*e4b17023SJohn Marino		  "__atomic_add_fetch",
359*e4b17023SJohn Marino		  BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
360*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_ADD_FETCH_1,
361*e4b17023SJohn Marino		  "__atomic_add_fetch_1",
362*e4b17023SJohn Marino		  BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROW_LEAF_LIST)
363*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_ADD_FETCH_2,
364*e4b17023SJohn Marino		  "__atomic_add_fetch_2",
365*e4b17023SJohn Marino		  BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROW_LEAF_LIST)
366*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_ADD_FETCH_4,
367*e4b17023SJohn Marino		  "__atomic_add_fetch_4",
368*e4b17023SJohn Marino		  BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROW_LEAF_LIST)
369*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_ADD_FETCH_8,
370*e4b17023SJohn Marino		  "__atomic_add_fetch_8",
371*e4b17023SJohn Marino		  BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROW_LEAF_LIST)
372*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_ADD_FETCH_16,
373*e4b17023SJohn Marino		  "__atomic_add_fetch_16",
374*e4b17023SJohn Marino		  BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROW_LEAF_LIST)
375*e4b17023SJohn Marino
376*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_SUB_FETCH_N,
377*e4b17023SJohn Marino		  "__atomic_sub_fetch",
378*e4b17023SJohn Marino		  BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
379*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_SUB_FETCH_1,
380*e4b17023SJohn Marino		  "__atomic_sub_fetch_1",
381*e4b17023SJohn Marino		  BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROW_LEAF_LIST)
382*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_SUB_FETCH_2,
383*e4b17023SJohn Marino		  "__atomic_sub_fetch_2",
384*e4b17023SJohn Marino		  BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROW_LEAF_LIST)
385*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_SUB_FETCH_4,
386*e4b17023SJohn Marino		  "__atomic_sub_fetch_4",
387*e4b17023SJohn Marino		  BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROW_LEAF_LIST)
388*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_SUB_FETCH_8,
389*e4b17023SJohn Marino		  "__atomic_sub_fetch_8",
390*e4b17023SJohn Marino		  BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROW_LEAF_LIST)
391*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_SUB_FETCH_16,
392*e4b17023SJohn Marino		  "__atomic_sub_fetch_16",
393*e4b17023SJohn Marino		  BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROW_LEAF_LIST)
394*e4b17023SJohn Marino
395*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_AND_FETCH_N,
396*e4b17023SJohn Marino		  "__atomic_and_fetch",
397*e4b17023SJohn Marino		  BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
398*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_AND_FETCH_1,
399*e4b17023SJohn Marino		  "__atomic_and_fetch_1",
400*e4b17023SJohn Marino		  BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROW_LEAF_LIST)
401*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_AND_FETCH_2,
402*e4b17023SJohn Marino		  "__atomic_and_fetch_2",
403*e4b17023SJohn Marino		  BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROW_LEAF_LIST)
404*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_AND_FETCH_4,
405*e4b17023SJohn Marino		  "__atomic_and_fetch_4",
406*e4b17023SJohn Marino		  BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROW_LEAF_LIST)
407*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_AND_FETCH_8,
408*e4b17023SJohn Marino		  "__atomic_and_fetch_8",
409*e4b17023SJohn Marino		  BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROW_LEAF_LIST)
410*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_AND_FETCH_16,
411*e4b17023SJohn Marino		  "__atomic_and_fetch_16",
412*e4b17023SJohn Marino		  BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROW_LEAF_LIST)
413*e4b17023SJohn Marino
414*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_NAND_FETCH_N,
415*e4b17023SJohn Marino		  "__atomic_nand_fetch",
416*e4b17023SJohn Marino		  BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
417*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_NAND_FETCH_1,
418*e4b17023SJohn Marino		  "__atomic_nand_fetch_1",
419*e4b17023SJohn Marino		  BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROW_LEAF_LIST)
420*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_NAND_FETCH_2,
421*e4b17023SJohn Marino		  "__atomic_nand_fetch_2",
422*e4b17023SJohn Marino		  BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROW_LEAF_LIST)
423*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_NAND_FETCH_4,
424*e4b17023SJohn Marino		  "__atomic_nand_fetch_4",
425*e4b17023SJohn Marino		  BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROW_LEAF_LIST)
426*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_NAND_FETCH_8,
427*e4b17023SJohn Marino		  "__atomic_nand_fetch_8",
428*e4b17023SJohn Marino		  BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROW_LEAF_LIST)
429*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_NAND_FETCH_16,
430*e4b17023SJohn Marino		  "__atomic_nand_fetch_16",
431*e4b17023SJohn Marino		  BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROW_LEAF_LIST)
432*e4b17023SJohn Marino
433*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_XOR_FETCH_N,
434*e4b17023SJohn Marino		  "__atomic_xor_fetch",
435*e4b17023SJohn Marino		  BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
436*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_XOR_FETCH_1,
437*e4b17023SJohn Marino		  "__atomic_xor_fetch_1",
438*e4b17023SJohn Marino		  BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROW_LEAF_LIST)
439*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_XOR_FETCH_2,
440*e4b17023SJohn Marino		  "__atomic_xor_fetch_2",
441*e4b17023SJohn Marino		  BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROW_LEAF_LIST)
442*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_XOR_FETCH_4,
443*e4b17023SJohn Marino		  "__atomic_xor_fetch_4",
444*e4b17023SJohn Marino		  BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROW_LEAF_LIST)
445*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_XOR_FETCH_8,
446*e4b17023SJohn Marino		  "__atomic_xor_fetch_8",
447*e4b17023SJohn Marino		  BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROW_LEAF_LIST)
448*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_XOR_FETCH_16,
449*e4b17023SJohn Marino		  "__atomic_xor_fetch_16",
450*e4b17023SJohn Marino		  BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROW_LEAF_LIST)
451*e4b17023SJohn Marino
452*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_OR_FETCH_N,
453*e4b17023SJohn Marino		  "__atomic_or_fetch",
454*e4b17023SJohn Marino		  BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
455*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_OR_FETCH_1,
456*e4b17023SJohn Marino		  "__atomic_or_fetch_1",
457*e4b17023SJohn Marino		  BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROW_LEAF_LIST)
458*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_OR_FETCH_2,
459*e4b17023SJohn Marino		  "__atomic_or_fetch_2",
460*e4b17023SJohn Marino		  BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROW_LEAF_LIST)
461*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_OR_FETCH_4,
462*e4b17023SJohn Marino		  "__atomic_or_fetch_4",
463*e4b17023SJohn Marino		  BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROW_LEAF_LIST)
464*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_OR_FETCH_8,
465*e4b17023SJohn Marino		  "__atomic_or_fetch_8",
466*e4b17023SJohn Marino		  BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROW_LEAF_LIST)
467*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_OR_FETCH_16,
468*e4b17023SJohn Marino		  "__atomic_or_fetch_16",
469*e4b17023SJohn Marino		  BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROW_LEAF_LIST)
470*e4b17023SJohn Marino
471*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_ADD_N,
472*e4b17023SJohn Marino		  "__atomic_fetch_add",
473*e4b17023SJohn Marino		  BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
474*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_ADD_1,
475*e4b17023SJohn Marino		  "__atomic_fetch_add_1",
476*e4b17023SJohn Marino		  BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROW_LEAF_LIST)
477*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_ADD_2,
478*e4b17023SJohn Marino		  "__atomic_fetch_add_2",
479*e4b17023SJohn Marino		  BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROW_LEAF_LIST)
480*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_ADD_4,
481*e4b17023SJohn Marino		  "__atomic_fetch_add_4",
482*e4b17023SJohn Marino		  BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROW_LEAF_LIST)
483*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_ADD_8,
484*e4b17023SJohn Marino		  "__atomic_fetch_add_8",
485*e4b17023SJohn Marino		  BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROW_LEAF_LIST)
486*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_ADD_16,
487*e4b17023SJohn Marino		  "__atomic_fetch_add_16",
488*e4b17023SJohn Marino		  BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROW_LEAF_LIST)
489*e4b17023SJohn Marino
490*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_SUB_N,
491*e4b17023SJohn Marino		  "__atomic_fetch_sub",
492*e4b17023SJohn Marino		  BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
493*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_SUB_1,
494*e4b17023SJohn Marino		  "__atomic_fetch_sub_1",
495*e4b17023SJohn Marino		  BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROW_LEAF_LIST)
496*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_SUB_2,
497*e4b17023SJohn Marino		  "__atomic_fetch_sub_2",
498*e4b17023SJohn Marino		  BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROW_LEAF_LIST)
499*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_SUB_4,
500*e4b17023SJohn Marino		  "__atomic_fetch_sub_4",
501*e4b17023SJohn Marino		  BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROW_LEAF_LIST)
502*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_SUB_8,
503*e4b17023SJohn Marino		  "__atomic_fetch_sub_8",
504*e4b17023SJohn Marino		  BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROW_LEAF_LIST)
505*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_SUB_16,
506*e4b17023SJohn Marino		  "__atomic_fetch_sub_16",
507*e4b17023SJohn Marino		  BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROW_LEAF_LIST)
508*e4b17023SJohn Marino
509*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_AND_N,
510*e4b17023SJohn Marino		  "__atomic_fetch_and",
511*e4b17023SJohn Marino		  BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
512*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_AND_1,
513*e4b17023SJohn Marino		  "__atomic_fetch_and_1",
514*e4b17023SJohn Marino		  BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROW_LEAF_LIST)
515*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_AND_2,
516*e4b17023SJohn Marino		  "__atomic_fetch_and_2",
517*e4b17023SJohn Marino		  BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROW_LEAF_LIST)
518*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_AND_4,
519*e4b17023SJohn Marino		  "__atomic_fetch_and_4",
520*e4b17023SJohn Marino		  BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROW_LEAF_LIST)
521*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_AND_8,
522*e4b17023SJohn Marino		  "__atomic_fetch_and_8",
523*e4b17023SJohn Marino		  BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROW_LEAF_LIST)
524*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_AND_16,
525*e4b17023SJohn Marino		  "__atomic_fetch_and_16",
526*e4b17023SJohn Marino		  BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROW_LEAF_LIST)
527*e4b17023SJohn Marino
528*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_NAND_N,
529*e4b17023SJohn Marino		  "__atomic_fetch_nand",
530*e4b17023SJohn Marino		  BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
531*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_NAND_1,
532*e4b17023SJohn Marino		  "__atomic_fetch_nand_1",
533*e4b17023SJohn Marino		  BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROW_LEAF_LIST)
534*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_NAND_2,
535*e4b17023SJohn Marino		  "__atomic_fetch_nand_2",
536*e4b17023SJohn Marino		  BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROW_LEAF_LIST)
537*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_NAND_4,
538*e4b17023SJohn Marino		  "__atomic_fetch_nand_4",
539*e4b17023SJohn Marino		  BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROW_LEAF_LIST)
540*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_NAND_8,
541*e4b17023SJohn Marino		  "__atomic_fetch_nand_8",
542*e4b17023SJohn Marino		  BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROW_LEAF_LIST)
543*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_NAND_16,
544*e4b17023SJohn Marino		  "__atomic_fetch_nand_16",
545*e4b17023SJohn Marino		  BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROW_LEAF_LIST)
546*e4b17023SJohn Marino
547*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_XOR_N,
548*e4b17023SJohn Marino		  "__atomic_fetch_xor",
549*e4b17023SJohn Marino		  BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
550*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_XOR_1,
551*e4b17023SJohn Marino		  "__atomic_fetch_xor_1",
552*e4b17023SJohn Marino		  BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROW_LEAF_LIST)
553*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_XOR_2,
554*e4b17023SJohn Marino		  "__atomic_fetch_xor_2",
555*e4b17023SJohn Marino		  BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROW_LEAF_LIST)
556*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_XOR_4,
557*e4b17023SJohn Marino		  "__atomic_fetch_xor_4",
558*e4b17023SJohn Marino		  BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROW_LEAF_LIST)
559*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_XOR_8,
560*e4b17023SJohn Marino		  "__atomic_fetch_xor_8",
561*e4b17023SJohn Marino		  BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROW_LEAF_LIST)
562*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_XOR_16,
563*e4b17023SJohn Marino		  "__atomic_fetch_xor_16",
564*e4b17023SJohn Marino		  BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROW_LEAF_LIST)
565*e4b17023SJohn Marino
566*e4b17023SJohn Marino
567*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_OR_N,
568*e4b17023SJohn Marino		  "__atomic_fetch_or",
569*e4b17023SJohn Marino		  BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
570*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_OR_1,
571*e4b17023SJohn Marino		  "__atomic_fetch_or_1",
572*e4b17023SJohn Marino		  BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROW_LEAF_LIST)
573*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_OR_2,
574*e4b17023SJohn Marino		  "__atomic_fetch_or_2",
575*e4b17023SJohn Marino		  BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROW_LEAF_LIST)
576*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_OR_4,
577*e4b17023SJohn Marino		  "__atomic_fetch_or_4",
578*e4b17023SJohn Marino		  BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROW_LEAF_LIST)
579*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_OR_8,
580*e4b17023SJohn Marino		  "__atomic_fetch_or_8",
581*e4b17023SJohn Marino		  BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROW_LEAF_LIST)
582*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_OR_16,
583*e4b17023SJohn Marino		  "__atomic_fetch_or_16",
584*e4b17023SJohn Marino		  BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROW_LEAF_LIST)
585*e4b17023SJohn Marino
586*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_ALWAYS_LOCK_FREE,
587*e4b17023SJohn Marino		  "__atomic_always_lock_free",
588*e4b17023SJohn Marino		  BT_FN_BOOL_SIZE_CONST_VPTR, ATTR_CONST_NOTHROW_LEAF_LIST)
589*e4b17023SJohn Marino
590*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_IS_LOCK_FREE,
591*e4b17023SJohn Marino		  "__atomic_is_lock_free",
592*e4b17023SJohn Marino		  BT_FN_BOOL_SIZE_CONST_VPTR, ATTR_CONST_NOTHROW_LEAF_LIST)
593*e4b17023SJohn Marino
594*e4b17023SJohn Marino
595*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_THREAD_FENCE,
596*e4b17023SJohn Marino		  "__atomic_thread_fence",
597*e4b17023SJohn Marino		  BT_FN_VOID_INT, ATTR_NOTHROW_LEAF_LIST)
598*e4b17023SJohn Marino
599*e4b17023SJohn MarinoDEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_SIGNAL_FENCE,
600*e4b17023SJohn Marino		  "__atomic_signal_fence",
601*e4b17023SJohn Marino		  BT_FN_VOID_INT, ATTR_NOTHROW_LEAF_LIST)
602*e4b17023SJohn Marino
603