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