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