sync-builtins.def revision 169689
19974Sehelin/* This file contains the definitions and documentation for the 29974Sehelin synchronization builtins used in the GNU compiler. 39974Sehelin Copyright (C) 2005 Free Software Foundation, Inc. 49974Sehelin 59974SehelinThis file is part of GCC. 69974Sehelin 79974SehelinGCC is free software; you can redistribute it and/or modify it under 89974Sehelinthe terms of the GNU General Public License as published by the Free 99974SehelinSoftware Foundation; either version 2, or (at your option) any later 109974Sehelinversion. 119974Sehelin 129974SehelinGCC is distributed in the hope that it will be useful, but WITHOUT ANY 139974SehelinWARRANTY; without even the implied warranty of MERCHANTABILITY or 149974SehelinFITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 159974Sehelinfor more details. 169974Sehelin 179974SehelinYou should have received a copy of the GNU General Public License 189974Sehelinalong with GCC; see the file COPYING. If not, write to the Free 199974SehelinSoftware Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 209974Sehelin02110-1301, USA. */ 219974Sehelin 229974Sehelin/* Before including this file, you should define a macro: 239974Sehelin 249974Sehelin DEF_SYNC_BUILTIN (ENUM, NAME, TYPE, ATTRS) 259974Sehelin 269974Sehelin See builtins.def for details. */ 279974Sehelin 289974Sehelin/* Synchronization Primitives. The "_N" version is the one that the user 299974Sehelin is supposed to be using. It's overloaded, and is resolved to one of the 309974Sehelin "_1" through "_16" versions, plus some extra casts. */ 319974Sehelin 329974SehelinDEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_ADD_N, "__sync_fetch_and_add", 3310193Sehelin BT_FN_VOID_VAR, ATTR_NOTHROW_LIST) 3410193SehelinDEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_ADD_1, "__sync_fetch_and_add_1", 3510193Sehelin BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LIST) 369974SehelinDEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_ADD_2, "__sync_fetch_and_add_2", 3710193Sehelin BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LIST) 3810193SehelinDEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_ADD_4, "__sync_fetch_and_add_4", 3910193Sehelin BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LIST) 4010193SehelinDEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_ADD_8, "__sync_fetch_and_add_8", 419974Sehelin BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LIST) 429974SehelinDEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_ADD_16, "__sync_fetch_and_add_16", 439974Sehelin BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LIST) 4410193Sehelin 4510193SehelinDEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_SUB_N, "__sync_fetch_and_sub", 4610193Sehelin BT_FN_VOID_VAR, ATTR_NOTHROW_LIST) 4710193SehelinDEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_SUB_1, "__sync_fetch_and_sub_1", 4810193Sehelin BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LIST) 4910193SehelinDEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_SUB_2, "__sync_fetch_and_sub_2", 5010193Sehelin BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LIST) 5110193SehelinDEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_SUB_4, "__sync_fetch_and_sub_4", 529974Sehelin BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LIST) 539974SehelinDEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_SUB_8, "__sync_fetch_and_sub_8", 549974Sehelin BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LIST) 559974SehelinDEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_SUB_16, "__sync_fetch_and_sub_16", 56 BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LIST) 57 58DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_OR_N, "__sync_fetch_and_or", 59 BT_FN_VOID_VAR, ATTR_NOTHROW_LIST) 60DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_OR_1, "__sync_fetch_and_or_1", 61 BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LIST) 62DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_OR_2, "__sync_fetch_and_or_2", 63 BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LIST) 64DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_OR_4, "__sync_fetch_and_or_4", 65 BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LIST) 66DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_OR_8, "__sync_fetch_and_or_8", 67 BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LIST) 68DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_OR_16, "__sync_fetch_and_or_16", 69 BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LIST) 70 71DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_AND_N, "__sync_fetch_and_and", 72 BT_FN_VOID_VAR, ATTR_NOTHROW_LIST) 73DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_AND_1, "__sync_fetch_and_and_1", 74 BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LIST) 75DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_AND_2, "__sync_fetch_and_and_2", 76 BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LIST) 77DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_AND_4, "__sync_fetch_and_and_4", 78 BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LIST) 79DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_AND_8, "__sync_fetch_and_and_8", 80 BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LIST) 81DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_AND_16, "__sync_fetch_and_and_16", 82 BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LIST) 83 84DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_XOR_N, "__sync_fetch_and_xor", 85 BT_FN_VOID_VAR, ATTR_NOTHROW_LIST) 86DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_XOR_1, "__sync_fetch_and_xor_1", 87 BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LIST) 88DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_XOR_2, "__sync_fetch_and_xor_2", 89 BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LIST) 90DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_XOR_4, "__sync_fetch_and_xor_4", 91 BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LIST) 92DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_XOR_8, "__sync_fetch_and_xor_8", 93 BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LIST) 94DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_XOR_16, "__sync_fetch_and_xor_16", 95 BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LIST) 96 97DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_NAND_N, "__sync_fetch_and_nand", 98 BT_FN_VOID_VAR, ATTR_NOTHROW_LIST) 99DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_NAND_1, "__sync_fetch_and_nand_1", 100 BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LIST) 101DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_NAND_2, "__sync_fetch_and_nand_2", 102 BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LIST) 103DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_NAND_4, "__sync_fetch_and_nand_4", 104 BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LIST) 105DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_NAND_8, "__sync_fetch_and_nand_8", 106 BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LIST) 107DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_NAND_16, "__sync_fetch_and_nand_16", 108 BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LIST) 109 110DEF_SYNC_BUILTIN (BUILT_IN_ADD_AND_FETCH_N, "__sync_add_and_fetch", 111 BT_FN_VOID_VAR, ATTR_NOTHROW_LIST) 112DEF_SYNC_BUILTIN (BUILT_IN_ADD_AND_FETCH_1, "__sync_add_and_fetch_1", 113 BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LIST) 114DEF_SYNC_BUILTIN (BUILT_IN_ADD_AND_FETCH_2, "__sync_add_and_fetch_2", 115 BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LIST) 116DEF_SYNC_BUILTIN (BUILT_IN_ADD_AND_FETCH_4, "__sync_add_and_fetch_4", 117 BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LIST) 118DEF_SYNC_BUILTIN (BUILT_IN_ADD_AND_FETCH_8, "__sync_add_and_fetch_8", 119 BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LIST) 120DEF_SYNC_BUILTIN (BUILT_IN_ADD_AND_FETCH_16, "__sync_add_and_fetch_16", 121 BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LIST) 122 123DEF_SYNC_BUILTIN (BUILT_IN_SUB_AND_FETCH_N, "__sync_sub_and_fetch", 124 BT_FN_VOID_VAR, ATTR_NOTHROW_LIST) 125DEF_SYNC_BUILTIN (BUILT_IN_SUB_AND_FETCH_1, "__sync_sub_and_fetch_1", 126 BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LIST) 127DEF_SYNC_BUILTIN (BUILT_IN_SUB_AND_FETCH_2, "__sync_sub_and_fetch_2", 128 BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LIST) 129DEF_SYNC_BUILTIN (BUILT_IN_SUB_AND_FETCH_4, "__sync_sub_and_fetch_4", 130 BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LIST) 131DEF_SYNC_BUILTIN (BUILT_IN_SUB_AND_FETCH_8, "__sync_sub_and_fetch_8", 132 BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LIST) 133DEF_SYNC_BUILTIN (BUILT_IN_SUB_AND_FETCH_16, "__sync_sub_and_fetch_16", 134 BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LIST) 135 136DEF_SYNC_BUILTIN (BUILT_IN_OR_AND_FETCH_N, "__sync_or_and_fetch", 137 BT_FN_VOID_VAR, ATTR_NOTHROW_LIST) 138DEF_SYNC_BUILTIN (BUILT_IN_OR_AND_FETCH_1, "__sync_or_and_fetch_1", 139 BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LIST) 140DEF_SYNC_BUILTIN (BUILT_IN_OR_AND_FETCH_2, "__sync_or_and_fetch_2", 141 BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LIST) 142DEF_SYNC_BUILTIN (BUILT_IN_OR_AND_FETCH_4, "__sync_or_and_fetch_4", 143 BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LIST) 144DEF_SYNC_BUILTIN (BUILT_IN_OR_AND_FETCH_8, "__sync_or_and_fetch_8", 145 BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LIST) 146DEF_SYNC_BUILTIN (BUILT_IN_OR_AND_FETCH_16, "__sync_or_and_fetch_16", 147 BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LIST) 148 149DEF_SYNC_BUILTIN (BUILT_IN_AND_AND_FETCH_N, "__sync_and_and_fetch", 150 BT_FN_VOID_VAR, ATTR_NOTHROW_LIST) 151DEF_SYNC_BUILTIN (BUILT_IN_AND_AND_FETCH_1, "__sync_and_and_fetch_1", 152 BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LIST) 153DEF_SYNC_BUILTIN (BUILT_IN_AND_AND_FETCH_2, "__sync_and_and_fetch_2", 154 BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LIST) 155DEF_SYNC_BUILTIN (BUILT_IN_AND_AND_FETCH_4, "__sync_and_and_fetch_4", 156 BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LIST) 157DEF_SYNC_BUILTIN (BUILT_IN_AND_AND_FETCH_8, "__sync_and_and_fetch_8", 158 BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LIST) 159DEF_SYNC_BUILTIN (BUILT_IN_AND_AND_FETCH_16, "__sync_and_and_fetch_16", 160 BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LIST) 161 162DEF_SYNC_BUILTIN (BUILT_IN_XOR_AND_FETCH_N, "__sync_xor_and_fetch", 163 BT_FN_VOID_VAR, ATTR_NOTHROW_LIST) 164DEF_SYNC_BUILTIN (BUILT_IN_XOR_AND_FETCH_1, "__sync_xor_and_fetch_1", 165 BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LIST) 166DEF_SYNC_BUILTIN (BUILT_IN_XOR_AND_FETCH_2, "__sync_xor_and_fetch_2", 167 BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LIST) 168DEF_SYNC_BUILTIN (BUILT_IN_XOR_AND_FETCH_4, "__sync_xor_and_fetch_4", 169 BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LIST) 170DEF_SYNC_BUILTIN (BUILT_IN_XOR_AND_FETCH_8, "__sync_xor_and_fetch_8", 171 BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LIST) 172DEF_SYNC_BUILTIN (BUILT_IN_XOR_AND_FETCH_16, "__sync_xor_and_fetch_16", 173 BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LIST) 174 175DEF_SYNC_BUILTIN (BUILT_IN_NAND_AND_FETCH_N, "__sync_nand_and_fetch", 176 BT_FN_VOID_VAR, ATTR_NOTHROW_LIST) 177DEF_SYNC_BUILTIN (BUILT_IN_NAND_AND_FETCH_1, "__sync_nand_and_fetch_1", 178 BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LIST) 179DEF_SYNC_BUILTIN (BUILT_IN_NAND_AND_FETCH_2, "__sync_nand_and_fetch_2", 180 BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LIST) 181DEF_SYNC_BUILTIN (BUILT_IN_NAND_AND_FETCH_4, "__sync_nand_and_fetch_4", 182 BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LIST) 183DEF_SYNC_BUILTIN (BUILT_IN_NAND_AND_FETCH_8, "__sync_nand_and_fetch_8", 184 BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LIST) 185DEF_SYNC_BUILTIN (BUILT_IN_NAND_AND_FETCH_16, "__sync_nand_and_fetch_16", 186 BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LIST) 187 188DEF_SYNC_BUILTIN (BUILT_IN_BOOL_COMPARE_AND_SWAP_N, 189 "__sync_bool_compare_and_swap", 190 BT_FN_VOID_VAR, ATTR_NOTHROW_LIST) 191DEF_SYNC_BUILTIN (BUILT_IN_BOOL_COMPARE_AND_SWAP_1, 192 "__sync_bool_compare_and_swap_1", 193 BT_FN_BOOL_VPTR_I1_I1, ATTR_NOTHROW_LIST) 194DEF_SYNC_BUILTIN (BUILT_IN_BOOL_COMPARE_AND_SWAP_2, 195 "__sync_bool_compare_and_swap_2", 196 BT_FN_BOOL_VPTR_I2_I2, ATTR_NOTHROW_LIST) 197DEF_SYNC_BUILTIN (BUILT_IN_BOOL_COMPARE_AND_SWAP_4, 198 "__sync_bool_compare_and_swap_4", 199 BT_FN_BOOL_VPTR_I4_I4, ATTR_NOTHROW_LIST) 200DEF_SYNC_BUILTIN (BUILT_IN_BOOL_COMPARE_AND_SWAP_8, 201 "__sync_bool_compare_and_swap_8", 202 BT_FN_BOOL_VPTR_I8_I8, ATTR_NOTHROW_LIST) 203DEF_SYNC_BUILTIN (BUILT_IN_BOOL_COMPARE_AND_SWAP_16, 204 "__sync_bool_compare_and_swap_16", 205 BT_FN_BOOL_VPTR_I16_I16, ATTR_NOTHROW_LIST) 206 207DEF_SYNC_BUILTIN (BUILT_IN_VAL_COMPARE_AND_SWAP_N, 208 "__sync_val_compare_and_swap", 209 BT_FN_VOID_VAR, ATTR_NOTHROW_LIST) 210DEF_SYNC_BUILTIN (BUILT_IN_VAL_COMPARE_AND_SWAP_1, 211 "__sync_val_compare_and_swap_1", 212 BT_FN_I1_VPTR_I1_I1, ATTR_NOTHROW_LIST) 213DEF_SYNC_BUILTIN (BUILT_IN_VAL_COMPARE_AND_SWAP_2, 214 "__sync_val_compare_and_swap_2", 215 BT_FN_I2_VPTR_I2_I2, ATTR_NOTHROW_LIST) 216DEF_SYNC_BUILTIN (BUILT_IN_VAL_COMPARE_AND_SWAP_4, 217 "__sync_val_compare_and_swap_4", 218 BT_FN_I4_VPTR_I4_I4, ATTR_NOTHROW_LIST) 219DEF_SYNC_BUILTIN (BUILT_IN_VAL_COMPARE_AND_SWAP_8, 220 "__sync_val_compare_and_swap_8", 221 BT_FN_I8_VPTR_I8_I8, ATTR_NOTHROW_LIST) 222DEF_SYNC_BUILTIN (BUILT_IN_VAL_COMPARE_AND_SWAP_16, 223 "__sync_val_compare_and_swap_16", 224 BT_FN_I16_VPTR_I16_I16, ATTR_NOTHROW_LIST) 225 226DEF_SYNC_BUILTIN (BUILT_IN_LOCK_TEST_AND_SET_N, "__sync_lock_test_and_set", 227 BT_FN_VOID_VAR, ATTR_NOTHROW_LIST) 228DEF_SYNC_BUILTIN (BUILT_IN_LOCK_TEST_AND_SET_1, "__sync_lock_test_and_set_1", 229 BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LIST) 230DEF_SYNC_BUILTIN (BUILT_IN_LOCK_TEST_AND_SET_2, "__sync_lock_test_and_set_2", 231 BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LIST) 232DEF_SYNC_BUILTIN (BUILT_IN_LOCK_TEST_AND_SET_4, "__sync_lock_test_and_set_4", 233 BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LIST) 234DEF_SYNC_BUILTIN (BUILT_IN_LOCK_TEST_AND_SET_8, "__sync_lock_test_and_set_8", 235 BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LIST) 236DEF_SYNC_BUILTIN (BUILT_IN_LOCK_TEST_AND_SET_16, "__sync_lock_test_and_set_16", 237 BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LIST) 238 239DEF_SYNC_BUILTIN (BUILT_IN_LOCK_RELEASE_N, "__sync_lock_release", 240 BT_FN_VOID_VAR, ATTR_NOTHROW_LIST) 241DEF_SYNC_BUILTIN (BUILT_IN_LOCK_RELEASE_1, "__sync_lock_release_1", 242 BT_FN_VOID_VPTR, ATTR_NOTHROW_LIST) 243DEF_SYNC_BUILTIN (BUILT_IN_LOCK_RELEASE_2, "__sync_lock_release_2", 244 BT_FN_VOID_VPTR, ATTR_NOTHROW_LIST) 245DEF_SYNC_BUILTIN (BUILT_IN_LOCK_RELEASE_4, "__sync_lock_release_4", 246 BT_FN_VOID_VPTR, ATTR_NOTHROW_LIST) 247DEF_SYNC_BUILTIN (BUILT_IN_LOCK_RELEASE_8, "__sync_lock_release_8", 248 BT_FN_VOID_VPTR, ATTR_NOTHROW_LIST) 249DEF_SYNC_BUILTIN (BUILT_IN_LOCK_RELEASE_16, "__sync_lock_release_16", 250 BT_FN_VOID_VPTR, ATTR_NOTHROW_LIST) 251 252DEF_SYNC_BUILTIN (BUILT_IN_SYNCHRONIZE, "__sync_synchronize", 253 BT_FN_VOID, ATTR_NOTHROW_LIST) 254