1*38fd1498Szrj/* This file contains the definitions and documentation for the 2*38fd1498Szrj HSAIL builtins used in the GNU compiler. 3*38fd1498Szrj Copyright (C) 2016-2018 Free Software Foundation, Inc. 4*38fd1498Szrj 5*38fd1498Szrj Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com> 6*38fd1498Szrj for General Processor Tech. 7*38fd1498Szrj 8*38fd1498SzrjThis file is part of GCC. 9*38fd1498Szrj 10*38fd1498SzrjGCC is free software; you can redistribute it and/or modify it under 11*38fd1498Szrjthe terms of the GNU General Public License as published by the Free 12*38fd1498SzrjSoftware Foundation; either version 3, or (at your option) any later 13*38fd1498Szrjversion. 14*38fd1498Szrj 15*38fd1498SzrjGCC is distributed in the hope that it will be useful, but WITHOUT ANY 16*38fd1498SzrjWARRANTY; without even the implied warranty of MERCHANTABILITY or 17*38fd1498SzrjFITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 18*38fd1498Szrjfor more details. 19*38fd1498Szrj 20*38fd1498SzrjYou should have received a copy of the GNU General Public License 21*38fd1498Szrjalong with GCC; see the file COPYING3. If not see 22*38fd1498Szrj<http://www.gnu.org/licenses/>. */ 23*38fd1498Szrj 24*38fd1498Szrj/* Following builtins are used by the BRIG (the binary representation of 25*38fd1498Szrj HSAIL) frontend. Software implementations are available in libhsail-rt. 26*38fd1498Szrj Use leading double underscore in the name to avoid name space clashes 27*38fd1498Szrj with kernel program symbols in case the builtin is implemented as 28*38fd1498Szrj a function call. */ 29*38fd1498Szrj 30*38fd1498Szrj/* Work-item ID related builtins are not constant in the work-group function 31*38fd1498Szrj mode (each WI has a different return value). */ 32*38fd1498Szrj 33*38fd1498Szrj#ifndef DEF_HSAIL_BUILTIN 34*38fd1498Szrj#define DEF_HSAIL_BUILTIN(ENUM, HSAIL_OPCODE, HSAIL_TYPE, \ 35*38fd1498Szrj NAME, TYPE, ATTRS) 36*38fd1498Szrj#endif 37*38fd1498Szrj 38*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_WORKITEMABSID, BRIG_OPCODE_WORKITEMABSID, 39*38fd1498Szrj BRIG_TYPE_U32, "__hsail_workitemabsid", BT_FN_UINT_UINT_PTR, 40*38fd1498Szrj ATTR_NOTHROW_LEAF_LIST) 41*38fd1498Szrj 42*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_GRIDSIZE, BRIG_OPCODE_GRIDSIZE, 43*38fd1498Szrj BRIG_TYPE_U32, "__hsail_gridsize", BT_FN_UINT_UINT_PTR, 44*38fd1498Szrj ATTR_PURE_NOTHROW_LEAF_LIST) 45*38fd1498Szrj 46*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_WORKITEMFLATABSID_U32, 47*38fd1498Szrj BRIG_OPCODE_WORKITEMFLATABSID, BRIG_TYPE_U32, 48*38fd1498Szrj "__hsail_workitemflatabsid_u32", BT_FN_UINT_PTR, 49*38fd1498Szrj ATTR_NOTHROW_LEAF_LIST) 50*38fd1498Szrj 51*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_WORKITEMFLATABSID_U64, 52*38fd1498Szrj BRIG_OPCODE_WORKITEMFLATABSID, BRIG_TYPE_U64, 53*38fd1498Szrj "__hsail_workitemflatabsid_u64", BT_FN_ULONG_PTR, 54*38fd1498Szrj ATTR_NOTHROW_LEAF_LIST) 55*38fd1498Szrj 56*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_WORKITEMFLATID, BRIG_OPCODE_WORKITEMFLATID, 57*38fd1498Szrj BRIG_TYPE_U32, "__hsail_workitemflatid", BT_FN_UINT_PTR, 58*38fd1498Szrj ATTR_NOTHROW_LEAF_LIST) 59*38fd1498Szrj 60*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_WORKITEMID, BRIG_OPCODE_WORKITEMID, 61*38fd1498Szrj BRIG_TYPE_U32, "__hsail_workitemid", BT_FN_UINT_UINT_PTR, 62*38fd1498Szrj ATTR_NOTHROW_LEAF_LIST) 63*38fd1498Szrj 64*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_WORKGROUPID, BRIG_OPCODE_WORKGROUPID, 65*38fd1498Szrj BRIG_TYPE_U32, "__hsail_workgroupid", BT_FN_UINT_UINT_PTR, 66*38fd1498Szrj ATTR_PURE_NOTHROW_LEAF_LIST) 67*38fd1498Szrj 68*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_CURRENTWORKITEMFLATID, 69*38fd1498Szrj BRIG_OPCODE_CURRENTWORKITEMFLATID, 70*38fd1498Szrj BRIG_TYPE_U32, "__hsail_currentworkitemflatid", 71*38fd1498Szrj BT_FN_UINT_PTR, ATTR_NOTHROW_LEAF_LIST) 72*38fd1498Szrj 73*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_WORKITEMABSID_U64, BRIG_OPCODE_WORKITEMABSID, 74*38fd1498Szrj BRIG_TYPE_U64, "__hsail_workitemabsid_u64", 75*38fd1498Szrj BT_FN_ULONG_UINT_PTR, ATTR_NOTHROW_LEAF_LIST) 76*38fd1498Szrj 77*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_PACKETID, BRIG_OPCODE_PACKETID, 78*38fd1498Szrj BRIG_TYPE_U64, "__hsail_packetid", BT_FN_ULONG_PTR, 79*38fd1498Szrj ATTR_PURE_NOTHROW_LEAF_LIST) 80*38fd1498Szrj 81*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_PACKETCOMPLETIONSIG_SIG64, 82*38fd1498Szrj BRIG_OPCODE_PACKETCOMPLETIONSIG, BRIG_TYPE_SIG64, 83*38fd1498Szrj "__hsail_packetcompletionsig_sig64", BT_FN_ULONG_PTR, 84*38fd1498Szrj ATTR_PURE_NOTHROW_LEAF_LIST) 85*38fd1498Szrj 86*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_PACKETCOMPLETIONSIG_SIG32, 87*38fd1498Szrj BRIG_OPCODE_PACKETCOMPLETIONSIG, BRIG_TYPE_SIG32, 88*38fd1498Szrj "__hsail_packetcompletionsig_sig32", BT_FN_UINT_PTR, 89*38fd1498Szrj ATTR_PURE_NOTHROW_LEAF_LIST) 90*38fd1498Szrj 91*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_CURRENTWORKGROUPSIZE, 92*38fd1498Szrj BRIG_OPCODE_CURRENTWORKGROUPSIZE, BRIG_TYPE_U32, 93*38fd1498Szrj "__hsail_currentworkgroupsize", BT_FN_UINT_UINT_PTR, 94*38fd1498Szrj ATTR_PURE_NOTHROW_LEAF_LIST) 95*38fd1498Szrj 96*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_WORKGROUPSIZE, BRIG_OPCODE_WORKGROUPSIZE, 97*38fd1498Szrj BRIG_TYPE_U32, "__hsail_workgroupsize", BT_FN_UINT_UINT_PTR, 98*38fd1498Szrj ATTR_PURE_NOTHROW_LEAF_LIST) 99*38fd1498Szrj 100*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_DIM, BRIG_OPCODE_DIM, 101*38fd1498Szrj BRIG_TYPE_U32, "__hsail_dim", BT_FN_UINT_PTR, 102*38fd1498Szrj ATTR_PURE_NOTHROW_LEAF_LIST) 103*38fd1498Szrj 104*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_GRIDGROUPS, BRIG_OPCODE_GRIDGROUPS, 105*38fd1498Szrj BRIG_TYPE_U32, "__hsail_gridgroups", BT_FN_UINT_UINT_PTR, 106*38fd1498Szrj ATTR_PURE_NOTHROW_LEAF_LIST) 107*38fd1498Szrj 108*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_BITEXTRACT_S32, BRIG_OPCODE_BITEXTRACT, 109*38fd1498Szrj BRIG_TYPE_S32, "__hsail_bitextract_s32", 110*38fd1498Szrj BT_FN_INT_INT_UINT_UINT, ATTR_CONST_NOTHROW_LEAF_LIST) 111*38fd1498Szrj 112*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_BITEXTRACT_U32, BRIG_OPCODE_BITEXTRACT, 113*38fd1498Szrj BRIG_TYPE_U32, "__hsail_bitextract_u32", 114*38fd1498Szrj BT_FN_UINT_UINT_UINT_UINT, ATTR_CONST_NOTHROW_LEAF_LIST) 115*38fd1498Szrj 116*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_BITEXTRACT_S64, BRIG_OPCODE_BITEXTRACT, 117*38fd1498Szrj BRIG_TYPE_S64, "__hsail_bitextract_s64", 118*38fd1498Szrj BT_FN_LONG_LONG_UINT_UINT, ATTR_CONST_NOTHROW_LEAF_LIST) 119*38fd1498Szrj 120*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_BITEXTRACT_U64, BRIG_OPCODE_BITEXTRACT, 121*38fd1498Szrj BRIG_TYPE_U64, "__hsail_bitextract_u64", 122*38fd1498Szrj BT_FN_ULONG_ULONG_UINT_UINT, ATTR_CONST_NOTHROW_LEAF_LIST) 123*38fd1498Szrj 124*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_BITINSERT_U32, BRIG_OPCODE_BITINSERT, 125*38fd1498Szrj BRIG_TYPE_U32, "__hsail_bitinsert_u32", 126*38fd1498Szrj BT_FN_UINT_UINT_UINT_UINT_UINT, ATTR_CONST_NOTHROW_LEAF_LIST) 127*38fd1498Szrj 128*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_BITINSERT_U64, BRIG_OPCODE_BITINSERT, 129*38fd1498Szrj BRIG_TYPE_U64, "__hsail_bitinsert_u64", 130*38fd1498Szrj BT_FN_ULONG_ULONG_ULONG_UINT_UINT, 131*38fd1498Szrj ATTR_CONST_NOTHROW_LEAF_LIST) 132*38fd1498Szrj 133*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_BITMASK_B32, BRIG_OPCODE_BITMASK, 134*38fd1498Szrj BRIG_TYPE_B32, "__hsail_bitmask_u32", BT_FN_UINT_UINT_UINT, 135*38fd1498Szrj ATTR_CONST_NOTHROW_LEAF_LIST) 136*38fd1498Szrj 137*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_BITMASK_B64, BRIG_OPCODE_BITMASK, 138*38fd1498Szrj BRIG_TYPE_B64, "__hsail_bitmask_u64", BT_FN_ULONG_UINT_UINT, 139*38fd1498Szrj ATTR_CONST_NOTHROW_LEAF_LIST) 140*38fd1498Szrj 141*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_BITREV_B32, BRIG_OPCODE_BITREV, 142*38fd1498Szrj BRIG_TYPE_B32, "__hsail_bitrev_u32", BT_FN_UINT_UINT, 143*38fd1498Szrj ATTR_CONST_NOTHROW_LEAF_LIST) 144*38fd1498Szrj 145*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_BITREV_B64, BRIG_OPCODE_BITREV, 146*38fd1498Szrj BRIG_TYPE_B64, "__hsail_bitrev_u64", BT_FN_ULONG_ULONG, 147*38fd1498Szrj ATTR_CONST_NOTHROW_LEAF_LIST) 148*38fd1498Szrj 149*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_BITSELECT_B32, BRIG_OPCODE_BITSELECT, 150*38fd1498Szrj BRIG_TYPE_B32, "__hsail_bitselect_u32", 151*38fd1498Szrj BT_FN_UINT_UINT_UINT_UINT, ATTR_CONST_NOTHROW_LEAF_LIST) 152*38fd1498Szrj 153*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_BITSELECT_U64, BRIG_OPCODE_BITSELECT, 154*38fd1498Szrj BRIG_TYPE_B64, "__hsail_bitselect_u64", 155*38fd1498Szrj BT_FN_ULONG_ULONG_ULONG_ULONG, ATTR_CONST_NOTHROW_LEAF_LIST) 156*38fd1498Szrj 157*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_FIRSTBIT_U32, BRIG_OPCODE_FIRSTBIT, 158*38fd1498Szrj BRIG_TYPE_U32, "__hsail_firstbit_u32", BT_FN_UINT_UINT, 159*38fd1498Szrj ATTR_CONST_NOTHROW_LEAF_LIST) 160*38fd1498Szrj 161*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_FIRSTBIT_S32, BRIG_OPCODE_FIRSTBIT, 162*38fd1498Szrj BRIG_TYPE_S32, "__hsail_firstbit_s32", BT_FN_UINT_INT, 163*38fd1498Szrj ATTR_CONST_NOTHROW_LEAF_LIST) 164*38fd1498Szrj 165*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_FIRSTBIT_U64, BRIG_OPCODE_FIRSTBIT, 166*38fd1498Szrj BRIG_TYPE_U64, "__hsail_firstbit_u64", BT_FN_UINT_ULONG, 167*38fd1498Szrj ATTR_CONST_NOTHROW_LEAF_LIST) 168*38fd1498Szrj 169*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_FIRSTBIT_S64, BRIG_OPCODE_FIRSTBIT, 170*38fd1498Szrj BRIG_TYPE_S64, "__hsail_firstbit_s64", BT_FN_UINT_LONG, 171*38fd1498Szrj ATTR_CONST_NOTHROW_LEAF_LIST) 172*38fd1498Szrj 173*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_LASTBIT_U32, BRIG_OPCODE_LASTBIT, 174*38fd1498Szrj BRIG_TYPE_U32, "__hsail_lastbit_u32", BT_FN_UINT_UINT, 175*38fd1498Szrj ATTR_CONST_NOTHROW_LEAF_LIST) 176*38fd1498Szrj 177*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_LASTBIT_U64, BRIG_OPCODE_LASTBIT, 178*38fd1498Szrj BRIG_TYPE_U64, "__hsail_lastbit_u64", BT_FN_UINT_ULONG, 179*38fd1498Szrj ATTR_CONST_NOTHROW_LEAF_LIST) 180*38fd1498Szrj 181*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_BORROW_U32, BRIG_OPCODE_BORROW, 182*38fd1498Szrj BRIG_TYPE_U32, "__hsail_borrow_u32", BT_FN_UINT_UINT_UINT, 183*38fd1498Szrj ATTR_CONST_NOTHROW_LEAF_LIST) 184*38fd1498Szrj 185*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_BORROW_U64, BRIG_OPCODE_BORROW, 186*38fd1498Szrj BRIG_TYPE_U64, "__hsail_borrow_u64", BT_FN_ULONG_ULONG_ULONG, 187*38fd1498Szrj ATTR_CONST_NOTHROW_LEAF_LIST) 188*38fd1498Szrj 189*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_CARRY_U32, BRIG_OPCODE_CARRY, 190*38fd1498Szrj BRIG_TYPE_U32, "__hsail_carry_u32", BT_FN_UINT_UINT_UINT, 191*38fd1498Szrj ATTR_CONST_NOTHROW_LEAF_LIST) 192*38fd1498Szrj 193*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_CARRY_U64, BRIG_OPCODE_CARRY, 194*38fd1498Szrj BRIG_TYPE_U64, "__hsail_carry_u64", BT_FN_ULONG_ULONG_ULONG, 195*38fd1498Szrj ATTR_CONST_NOTHROW_LEAF_LIST) 196*38fd1498Szrj 197*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_REM_S32, BRIG_OPCODE_REM, 198*38fd1498Szrj BRIG_TYPE_S32, "__hsail_rem_s32", BT_FN_INT_INT_INT, 199*38fd1498Szrj ATTR_CONST_NOTHROW_LEAF_LIST) 200*38fd1498Szrj 201*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_REM_S64, BRIG_OPCODE_REM, 202*38fd1498Szrj BRIG_TYPE_S64, "__hsail_rem_s64", BT_FN_LONG_LONG_LONG, 203*38fd1498Szrj ATTR_CONST_NOTHROW_LEAF_LIST) 204*38fd1498Szrj 205*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_MIN_F32, BRIG_OPCODE_MIN, 206*38fd1498Szrj BRIG_TYPE_F32, "__hsail_min_f32", BT_FN_FLOAT_FLOAT_FLOAT, 207*38fd1498Szrj ATTR_CONST_NOTHROW_LEAF_LIST) 208*38fd1498Szrj 209*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_MAX_F32, BRIG_OPCODE_MAX, 210*38fd1498Szrj BRIG_TYPE_F32, "__hsail_max_f32", BT_FN_FLOAT_FLOAT_FLOAT, 211*38fd1498Szrj ATTR_CONST_NOTHROW_LEAF_LIST) 212*38fd1498Szrj 213*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_MIN_F64, BRIG_OPCODE_MIN, 214*38fd1498Szrj BRIG_TYPE_F64, "__hsail_min_f64", BT_FN_DOUBLE_DOUBLE_DOUBLE, 215*38fd1498Szrj ATTR_CONST_NOTHROW_LEAF_LIST) 216*38fd1498Szrj 217*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_MAX_F64, BRIG_OPCODE_MAX, 218*38fd1498Szrj BRIG_TYPE_F64, "__hsail_max_f64", BT_FN_DOUBLE_DOUBLE_DOUBLE, 219*38fd1498Szrj ATTR_CONST_NOTHROW_LEAF_LIST) 220*38fd1498Szrj 221*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_CLASS_F32, BRIG_OPCODE_CLASS, 222*38fd1498Szrj BRIG_TYPE_F32, "__hsail_class_f32", BT_FN_UINT_FLOAT_UINT, 223*38fd1498Szrj ATTR_CONST_NOTHROW_LEAF_LIST) 224*38fd1498Szrj 225*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_CLASS_F64, BRIG_OPCODE_CLASS, 226*38fd1498Szrj BRIG_TYPE_F64, "__hsail_class_f64", BT_FN_UINT_DOUBLE_UINT, 227*38fd1498Szrj ATTR_CONST_NOTHROW_LEAF_LIST) 228*38fd1498Szrj 229*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_CLASS_F32_F16, BRIG_OPCODE_CLASS, 230*38fd1498Szrj BRIG_TYPE_F16, "__hsail_class_f32_f16", 231*38fd1498Szrj BT_FN_UINT_FLOAT_UINT, ATTR_CONST_NOTHROW_LEAF_LIST) 232*38fd1498Szrj 233*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_FRACT_F32, BRIG_OPCODE_FRACT, 234*38fd1498Szrj BRIG_TYPE_F32, "__hsail_fract_f32", BT_FN_FLOAT_FLOAT, 235*38fd1498Szrj ATTR_CONST_NOTHROW_LEAF_LIST) 236*38fd1498Szrj 237*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_FRACT_F64, BRIG_OPCODE_FRACT, 238*38fd1498Szrj BRIG_TYPE_F64, "__hsail_fract_f64", BT_FN_DOUBLE_DOUBLE, 239*38fd1498Szrj ATTR_CONST_NOTHROW_LEAF_LIST) 240*38fd1498Szrj 241*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_BARRIER, BRIG_OPCODE_BARRIER, 242*38fd1498Szrj BRIG_TYPE_NONE, "__hsail_barrier", BT_FN_VOID_PTR, 243*38fd1498Szrj ATTR_RT_NOTHROW_LEAF_LIST) 244*38fd1498Szrj 245*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_INITFBAR, BRIG_OPCODE_INITFBAR, 246*38fd1498Szrj BRIG_TYPE_NONE, "__hsail_initfbar", BT_FN_VOID_UINT_PTR, 247*38fd1498Szrj ATTR_NOTHROW_LEAF_LIST) 248*38fd1498Szrj 249*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_JOINFBAR, BRIG_OPCODE_JOINFBAR, 250*38fd1498Szrj BRIG_TYPE_NONE, "__hsail_joinfbar", BT_FN_VOID_UINT_PTR, 251*38fd1498Szrj ATTR_NOTHROW_LIST) 252*38fd1498Szrj 253*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_WAITFBAR, BRIG_OPCODE_WAITFBAR, 254*38fd1498Szrj BRIG_TYPE_NONE, "__hsail_waitfbar", BT_FN_VOID_UINT_PTR, 255*38fd1498Szrj ATTR_RT_NOTHROW_LEAF_LIST) 256*38fd1498Szrj 257*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_ARRIVEFBAR, BRIG_OPCODE_ARRIVEFBAR, 258*38fd1498Szrj BRIG_TYPE_NONE, "__hsail_arrivefbar", BT_FN_VOID_UINT_PTR, 259*38fd1498Szrj ATTR_RT_NOTHROW_LEAF_LIST) 260*38fd1498Szrj 261*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_LEAVEFBAR, BRIG_OPCODE_LEAVEFBAR, 262*38fd1498Szrj BRIG_TYPE_NONE, "__hsail_leavefbar", BT_FN_VOID_UINT_PTR, 263*38fd1498Szrj ATTR_NOTHROW_LIST) 264*38fd1498Szrj 265*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_RELEASEFBAR, BRIG_OPCODE_RELEASEFBAR, 266*38fd1498Szrj BRIG_TYPE_NONE, "__hsail_releasefbar", BT_FN_VOID_UINT_PTR, 267*38fd1498Szrj ATTR_NOTHROW_LIST) 268*38fd1498Szrj 269*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_BITALIGN, BRIG_OPCODE_BITALIGN, 270*38fd1498Szrj BRIG_TYPE_B32, "__hsail_bitalign", 271*38fd1498Szrj BT_FN_UINT_ULONG_ULONG_UINT, ATTR_CONST_NOTHROW_LEAF_LIST) 272*38fd1498Szrj 273*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_BYTEALIGN, BRIG_OPCODE_BYTEALIGN, 274*38fd1498Szrj BRIG_TYPE_B32, "__hsail_bytealign", 275*38fd1498Szrj BT_FN_UINT_ULONG_ULONG_UINT, ATTR_CONST_NOTHROW_LEAF_LIST) 276*38fd1498Szrj 277*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_LERP, BRIG_OPCODE_LERP, 278*38fd1498Szrj BRIG_TYPE_U8X4, "__hsail_lerp", BT_FN_UINT_UINT_UINT_UINT, 279*38fd1498Szrj ATTR_CONST_NOTHROW_LEAF_LIST) 280*38fd1498Szrj 281*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_PACKCVT, BRIG_OPCODE_PACKCVT, 282*38fd1498Szrj BRIG_TYPE_U8X4, "__hsail_packcvt", 283*38fd1498Szrj BT_FN_UINT_FLOAT_FLOAT_FLOAT_FLOAT, 284*38fd1498Szrj ATTR_CONST_NOTHROW_LEAF_LIST) 285*38fd1498Szrj 286*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_UNPACKCVT, BRIG_OPCODE_UNPACKCVT, 287*38fd1498Szrj BRIG_TYPE_F32, "__hsail_unpackcvt", BT_FN_FLOAT_UINT_UINT, 288*38fd1498Szrj ATTR_CONST_NOTHROW_LEAF_LIST) 289*38fd1498Szrj 290*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_SAD_U16X2, BRIG_OPCODE_SAD, 291*38fd1498Szrj BRIG_TYPE_U16X2, "__hsail_sad_u16x2", 292*38fd1498Szrj BT_FN_UINT_UINT_UINT_UINT, ATTR_CONST_NOTHROW_LEAF_LIST) 293*38fd1498Szrj 294*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_SAD_U32, BRIG_OPCODE_SAD, 295*38fd1498Szrj BRIG_TYPE_U32, "__hsail_sad_u32", BT_FN_UINT_UINT_UINT_UINT, 296*38fd1498Szrj ATTR_CONST_NOTHROW_LEAF_LIST) 297*38fd1498Szrj 298*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_SAD_U8X4, BRIG_OPCODE_SAD, 299*38fd1498Szrj BRIG_TYPE_U8X4, "__hsail_sad_u8x4", 300*38fd1498Szrj BT_FN_UINT_UINT_UINT_UINT, ATTR_CONST_NOTHROW_LEAF_LIST) 301*38fd1498Szrj 302*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_SADHI_U8X4, BRIG_OPCODE_SADHI, 303*38fd1498Szrj BRIG_TYPE_U16X2, "__hsail_sadhi_u16x2_u8x4", 304*38fd1498Szrj BT_FN_UINT_UINT_UINT_UINT, 305*38fd1498Szrj ATTR_CONST_NOTHROW_LEAF_LIST) 306*38fd1498Szrj 307*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_CLOCK, BRIG_OPCODE_CLOCK, 308*38fd1498Szrj BRIG_TYPE_U64, "__hsail_clock", BT_FN_ULONG, 309*38fd1498Szrj ATTR_NOTHROW_LEAF_LIST) 310*38fd1498Szrj 311*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_CUID, BRIG_OPCODE_CUID, 312*38fd1498Szrj BRIG_TYPE_U32, "__hsail_cuid", BT_FN_UINT_PTR, 313*38fd1498Szrj ATTR_NOTHROW_LEAF_LIST) 314*38fd1498Szrj 315*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_MAXCUID, BRIG_OPCODE_MAXCUID, 316*38fd1498Szrj BRIG_TYPE_U32, "__hsail_maxcuid", BT_FN_UINT_PTR, 317*38fd1498Szrj ATTR_NOTHROW_LEAF_LIST) 318*38fd1498Szrj 319*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_DEBUGTRAP, BRIG_OPCODE_DEBUGTRAP, 320*38fd1498Szrj BRIG_TYPE_U32, "__hsail_debugtrap", BT_FN_VOID_UINT_PTR, 321*38fd1498Szrj ATTR_NORETURN_NOTHROW_LIST) 322*38fd1498Szrj 323*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_GROUPBASEPTR, BRIG_OPCODE_GROUPBASEPTR, 324*38fd1498Szrj BRIG_TYPE_U32, "__hsail_groupbaseptr", BT_FN_UINT_PTR, 325*38fd1498Szrj ATTR_PURE_NOTHROW_LEAF_LIST) 326*38fd1498Szrj 327*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_KERNARGBASEPTR_U64, 328*38fd1498Szrj BRIG_OPCODE_KERNARGBASEPTR, BRIG_TYPE_U64, 329*38fd1498Szrj "__hsail_kernargbaseptr_u64", BT_FN_ULONG_PTR, 330*38fd1498Szrj ATTR_PURE_NOTHROW_LEAF_LIST) 331*38fd1498Szrj 332*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_KERNARGBASEPTR_U32, 333*38fd1498Szrj BRIG_OPCODE_KERNARGBASEPTR, BRIG_TYPE_U32, 334*38fd1498Szrj "__hsail_kernargbaseptr_u32", BT_FN_UINT_PTR, 335*38fd1498Szrj ATTR_PURE_NOTHROW_LEAF_LIST) 336*38fd1498Szrj 337*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_ALLOCA, BRIG_OPCODE_ALLOCA, 338*38fd1498Szrj BRIG_TYPE_U32, "__hsail_alloca", BT_FN_UINT_UINT_UINT_PTR, 339*38fd1498Szrj ATTR_NOTHROW_LEAF_LIST) 340*38fd1498Szrj 341*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_LDQUEUEWRITEINDEX, 342*38fd1498Szrj BRIG_OPCODE_LDQUEUEWRITEINDEX, 343*38fd1498Szrj BRIG_TYPE_U64, "__hsail_ldqueuewriteindex", 344*38fd1498Szrj BT_FN_ULONG_ULONG, ATTR_NOTHROW_LEAF_LIST) 345*38fd1498Szrj 346*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_LDQUEUEREADINDEX, 347*38fd1498Szrj BRIG_OPCODE_LDQUEUEREADINDEX, 348*38fd1498Szrj BRIG_TYPE_U64, "__hsail_ldqueuereadindex", 349*38fd1498Szrj BT_FN_ULONG_ULONG, ATTR_NOTHROW_LEAF_LIST) 350*38fd1498Szrj 351*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_STQUEUEWRITEINDEX, 352*38fd1498Szrj BRIG_OPCODE_STQUEUEWRITEINDEX, 353*38fd1498Szrj BRIG_TYPE_U64, "__hsail_stqueuewriteindex", 354*38fd1498Szrj BT_FN_VOID_UINT64_UINT64, ATTR_NOTHROW_LEAF_LIST) 355*38fd1498Szrj 356*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_STQUEUEREADINDEX, 357*38fd1498Szrj BRIG_OPCODE_STQUEUEREADINDEX, 358*38fd1498Szrj BRIG_TYPE_U64, "__hsail_stqueuereadindex", 359*38fd1498Szrj BT_FN_VOID_UINT64_UINT64, ATTR_NOTHROW_LEAF_LIST) 360*38fd1498Szrj 361*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_ADDQUEUEWRITEINDEX, 362*38fd1498Szrj BRIG_OPCODE_ADDQUEUEWRITEINDEX, 363*38fd1498Szrj BRIG_TYPE_U64, "__hsail_addqueuewriteindex", 364*38fd1498Szrj BT_FN_ULONG_ULONG_ULONG, ATTR_NOTHROW_LEAF_LIST) 365*38fd1498Szrj 366*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_CASQUEUEWRITEINDEX, 367*38fd1498Szrj BRIG_OPCODE_CASQUEUEWRITEINDEX, 368*38fd1498Szrj BRIG_TYPE_U64, "__hsail_casqueuewriteindex", 369*38fd1498Szrj BT_FN_ULONG_ULONG_ULONG_ULONG, ATTR_NOTHROW_LEAF_LIST) 370*38fd1498Szrj 371*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_SEGMENTP_GLOBAL, 372*38fd1498Szrj BRIG_OPCODE_SEGMENTP, 373*38fd1498Szrj BRIG_TYPE_U32, "__hsail_segmentp_global", 374*38fd1498Szrj BT_FN_UINT32_UINT64_PTR, ATTR_NOTHROW_LEAF_LIST) 375*38fd1498Szrj 376*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_SEGMENTP_GROUP, 377*38fd1498Szrj BRIG_OPCODE_SEGMENTP, 378*38fd1498Szrj BRIG_TYPE_U32, "__hsail_segmentp_group", 379*38fd1498Szrj BT_FN_UINT32_UINT64_PTR, ATTR_NOTHROW_LEAF_LIST) 380*38fd1498Szrj 381*38fd1498SzrjDEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_SEGMENTP_PRIVATE, 382*38fd1498Szrj BRIG_OPCODE_SEGMENTP, 383*38fd1498Szrj BRIG_TYPE_U32, "__hsail_segmentp_private", 384*38fd1498Szrj BT_FN_UINT32_UINT64_PTR, ATTR_NOTHROW_LEAF_LIST) 385*38fd1498Szrj 386*38fd1498Szrj#ifndef DEF_HSAIL_ATOMIC_BUILTIN 387*38fd1498Szrj#define DEF_HSAIL_ATOMIC_BUILTIN(ENUM, ATOMIC_OPCODE, HSAIL_TYPE, \ 388*38fd1498Szrj NAME, TYPE, ATTRS) 389*38fd1498Szrj#endif 390*38fd1498Szrj 391*38fd1498SzrjDEF_HSAIL_ATOMIC_BUILTIN (BUILT_IN_HSAIL_ATOMIC_MIN_S32, BRIG_ATOMIC_MIN, 392*38fd1498Szrj BRIG_TYPE_S32, "__hsail_atomic_min_s32", 393*38fd1498Szrj BT_FN_INT_PTR_INT, ATTR_NOTHROW_LEAF_LIST) 394*38fd1498Szrj 395*38fd1498SzrjDEF_HSAIL_ATOMIC_BUILTIN (BUILT_IN_HSAIL_ATOMIC_MIN_S64, BRIG_ATOMIC_MIN, 396*38fd1498Szrj BRIG_TYPE_S64, "__hsail_atomic_min_s64", 397*38fd1498Szrj BT_FN_LONG_PTR_LONG, ATTR_NOTHROW_LEAF_LIST) 398*38fd1498Szrj 399*38fd1498SzrjDEF_HSAIL_ATOMIC_BUILTIN (BUILT_IN_HSAIL_ATOMIC_MIN_U32, BRIG_ATOMIC_MIN, 400*38fd1498Szrj BRIG_TYPE_U32, "__hsail_atomic_min_u32", 401*38fd1498Szrj BT_FN_UINT_PTR_UINT, ATTR_NOTHROW_LEAF_LIST) 402*38fd1498Szrj 403*38fd1498SzrjDEF_HSAIL_ATOMIC_BUILTIN (BUILT_IN_HSAIL_ATOMIC_MIN_U64, BRIG_ATOMIC_MIN, 404*38fd1498Szrj BRIG_TYPE_U64, "__hsail_atomic_min_u64", 405*38fd1498Szrj BT_FN_ULONG_PTR_ULONG, ATTR_NOTHROW_LEAF_LIST) 406*38fd1498Szrj 407*38fd1498SzrjDEF_HSAIL_ATOMIC_BUILTIN (BUILT_IN_HSAIL_ATOMIC_MAX_S32, BRIG_ATOMIC_MAX, 408*38fd1498Szrj BRIG_TYPE_S32, "__hsail_atomic_max_s32", 409*38fd1498Szrj BT_FN_INT_PTR_INT, ATTR_NOTHROW_LEAF_LIST) 410*38fd1498Szrj 411*38fd1498SzrjDEF_HSAIL_ATOMIC_BUILTIN (BUILT_IN_HSAIL_ATOMIC_MAX_S64, BRIG_ATOMIC_MAX, 412*38fd1498Szrj BRIG_TYPE_S64, "__hsail_atomic_max_s64", 413*38fd1498Szrj BT_FN_LONG_PTR_LONG, ATTR_NOTHROW_LEAF_LIST) 414*38fd1498Szrj 415*38fd1498SzrjDEF_HSAIL_ATOMIC_BUILTIN (BUILT_IN_HSAIL_ATOMIC_MAX_U32, BRIG_ATOMIC_MAX, 416*38fd1498Szrj BRIG_TYPE_U32, "__hsail_atomic_max_u32", 417*38fd1498Szrj BT_FN_UINT_PTR_UINT, ATTR_NOTHROW_LEAF_LIST) 418*38fd1498Szrj 419*38fd1498SzrjDEF_HSAIL_ATOMIC_BUILTIN (BUILT_IN_HSAIL_ATOMIC_MAX_U64, BRIG_ATOMIC_MAX, 420*38fd1498Szrj BRIG_TYPE_U64, "__hsail_atomic_max_u64", 421*38fd1498Szrj BT_FN_ULONG_PTR_ULONG, ATTR_NOTHROW_LEAF_LIST) 422*38fd1498Szrj 423*38fd1498SzrjDEF_HSAIL_ATOMIC_BUILTIN (BUILT_IN_HSAIL_ATOMIC_WRAPDEC_U32, 424*38fd1498Szrj BRIG_ATOMIC_WRAPDEC, BRIG_TYPE_U32, 425*38fd1498Szrj "__hsail_atomic_wrapdec_u32", 426*38fd1498Szrj BT_FN_UINT_PTR_UINT, ATTR_NOTHROW_LEAF_LIST) 427*38fd1498Szrj 428*38fd1498SzrjDEF_HSAIL_ATOMIC_BUILTIN (BUILT_IN_HSAIL_ATOMIC_WRAPDEC_U64, 429*38fd1498Szrj BRIG_ATOMIC_WRAPDEC, BRIG_TYPE_U64, 430*38fd1498Szrj "__hsail_atomic_wrapdec_u64", 431*38fd1498Szrj BT_FN_ULONG_PTR_ULONG, ATTR_NOTHROW_LEAF_LIST) 432*38fd1498Szrj 433*38fd1498SzrjDEF_HSAIL_ATOMIC_BUILTIN (BUILT_IN_HSAIL_ATOMIC_WRAPINC_U32, 434*38fd1498Szrj BRIG_ATOMIC_WRAPINC, BRIG_TYPE_U32, 435*38fd1498Szrj "__hsail_atomic_wrapinc_u32", 436*38fd1498Szrj BT_FN_UINT_PTR_UINT, ATTR_NOTHROW_LEAF_LIST) 437*38fd1498Szrj 438*38fd1498SzrjDEF_HSAIL_ATOMIC_BUILTIN (BUILT_IN_HSAIL_ATOMIC_WRAPINC_U64, 439*38fd1498Szrj BRIG_ATOMIC_WRAPINC, BRIG_TYPE_U64, 440*38fd1498Szrj "__hsail_atomic_wrapinc_u64", 441*38fd1498Szrj BT_FN_ULONG_PTR_ULONG, ATTR_NOTHROW_LEAF_LIST) 442*38fd1498Szrj 443*38fd1498Szrj#ifndef DEF_HSAIL_SAT_BUILTIN 444*38fd1498Szrj#define DEF_HSAIL_SAT_BUILTIN(ENUM, HSAIL_OPCODE, HSAIL_TYPE, \ 445*38fd1498Szrj NAME, TYPE, ATTRS) 446*38fd1498Szrj#endif 447*38fd1498Szrj 448*38fd1498SzrjDEF_HSAIL_SAT_BUILTIN (BUILT_IN_HSAIL_SAT_ADD_U64, BRIG_OPCODE_ADD, 449*38fd1498Szrj BRIG_TYPE_U64, "__hsail_sat_add_u64", 450*38fd1498Szrj BT_FN_ULONG_ULONG_ULONG, ATTR_CONST_NOTHROW_LEAF_LIST) 451*38fd1498Szrj 452*38fd1498SzrjDEF_HSAIL_SAT_BUILTIN (BUILT_IN_HSAIL_SAT_ADD_S64, BRIG_OPCODE_ADD, 453*38fd1498Szrj BRIG_TYPE_S64, "__hsail_sat_add_s64", 454*38fd1498Szrj BT_FN_LONG_LONG_LONG, ATTR_CONST_NOTHROW_LEAF_LIST) 455*38fd1498Szrj 456*38fd1498SzrjDEF_HSAIL_SAT_BUILTIN (BUILT_IN_HSAIL_SAT_ADD_U32, BRIG_OPCODE_ADD, 457*38fd1498Szrj BRIG_TYPE_U32, "__hsail_sat_add_u32", 458*38fd1498Szrj BT_FN_UINT_UINT_UINT, ATTR_CONST_NOTHROW_LEAF_LIST) 459*38fd1498Szrj 460*38fd1498SzrjDEF_HSAIL_SAT_BUILTIN (BUILT_IN_HSAIL_SAT_ADD_S32, BRIG_OPCODE_ADD, 461*38fd1498Szrj BRIG_TYPE_S32, "__hsail_sat_add_s32", 462*38fd1498Szrj BT_FN_INT_INT_INT, ATTR_CONST_NOTHROW_LEAF_LIST) 463*38fd1498Szrj 464*38fd1498SzrjDEF_HSAIL_SAT_BUILTIN (BUILT_IN_HSAIL_SAT_ADD_U16, BRIG_OPCODE_ADD, 465*38fd1498Szrj BRIG_TYPE_U16, "__hsail_sat_add_u16", 466*38fd1498Szrj BT_FN_UINT16_UINT16_UINT16, ATTR_CONST_NOTHROW_LEAF_LIST) 467*38fd1498Szrj 468*38fd1498SzrjDEF_HSAIL_SAT_BUILTIN (BUILT_IN_HSAIL_SAT_ADD_S16, BRIG_OPCODE_ADD, 469*38fd1498Szrj BRIG_TYPE_S16, "__hsail_sat_add_s16", 470*38fd1498Szrj BT_FN_INT16_INT16_INT16, ATTR_CONST_NOTHROW_LEAF_LIST) 471*38fd1498Szrj 472*38fd1498SzrjDEF_HSAIL_SAT_BUILTIN (BUILT_IN_HSAIL_SAT_ADD_U8, BRIG_OPCODE_ADD, 473*38fd1498Szrj BRIG_TYPE_U8, "__hsail_sat_add_u8", 474*38fd1498Szrj BT_FN_UINT8_UINT8_UINT8, ATTR_CONST_NOTHROW_LEAF_LIST) 475*38fd1498Szrj 476*38fd1498SzrjDEF_HSAIL_SAT_BUILTIN (BUILT_IN_HSAIL_SAT_ADD_S8, BRIG_OPCODE_ADD, 477*38fd1498Szrj BRIG_TYPE_S8, "__hsail_sat_add_s8", 478*38fd1498Szrj BT_FN_INT8_INT8_INT8, ATTR_CONST_NOTHROW_LEAF_LIST) 479*38fd1498Szrj 480*38fd1498SzrjDEF_HSAIL_SAT_BUILTIN (BUILT_IN_HSAIL_SAT_SUB_U64, BRIG_OPCODE_SUB, 481*38fd1498Szrj BRIG_TYPE_U64, "__hsail_sat_sub_u64", 482*38fd1498Szrj BT_FN_ULONG_ULONG_ULONG, ATTR_CONST_NOTHROW_LEAF_LIST) 483*38fd1498Szrj 484*38fd1498SzrjDEF_HSAIL_SAT_BUILTIN (BUILT_IN_HSAIL_SAT_SUB_S64, BRIG_OPCODE_SUB, 485*38fd1498Szrj BRIG_TYPE_S64, "__hsail_sat_sub_s64", 486*38fd1498Szrj BT_FN_LONG_LONG_LONG, ATTR_CONST_NOTHROW_LEAF_LIST) 487*38fd1498Szrj 488*38fd1498SzrjDEF_HSAIL_SAT_BUILTIN (BUILT_IN_HSAIL_SAT_SUB_U32, BRIG_OPCODE_SUB, 489*38fd1498Szrj BRIG_TYPE_U32, "__hsail_sat_sub_u32", 490*38fd1498Szrj BT_FN_UINT_UINT_UINT, ATTR_CONST_NOTHROW_LEAF_LIST) 491*38fd1498Szrj 492*38fd1498SzrjDEF_HSAIL_SAT_BUILTIN (BUILT_IN_HSAIL_SAT_SUB_S32, BRIG_OPCODE_SUB, 493*38fd1498Szrj BRIG_TYPE_S32, "__hsail_sat_sub_s32", 494*38fd1498Szrj BT_FN_INT_INT_INT, ATTR_CONST_NOTHROW_LEAF_LIST) 495*38fd1498Szrj 496*38fd1498SzrjDEF_HSAIL_SAT_BUILTIN (BUILT_IN_HSAIL_SAT_SUB_U16, BRIG_OPCODE_SUB, 497*38fd1498Szrj BRIG_TYPE_U16, "__hsail_sat_sub_u16", 498*38fd1498Szrj BT_FN_UINT16_UINT16_UINT16, ATTR_CONST_NOTHROW_LEAF_LIST) 499*38fd1498Szrj 500*38fd1498SzrjDEF_HSAIL_SAT_BUILTIN (BUILT_IN_HSAIL_SAT_SUB_S16, BRIG_OPCODE_SUB, 501*38fd1498Szrj BRIG_TYPE_S16, "__hsail_sat_sub_s16", 502*38fd1498Szrj BT_FN_INT16_INT16_INT16, ATTR_CONST_NOTHROW_LEAF_LIST) 503*38fd1498Szrj 504*38fd1498SzrjDEF_HSAIL_SAT_BUILTIN (BUILT_IN_HSAIL_SAT_SUB_U8, BRIG_OPCODE_SUB, 505*38fd1498Szrj BRIG_TYPE_U8, "__hsail_sat_sub_u8", 506*38fd1498Szrj BT_FN_UINT8_UINT8_UINT8, ATTR_CONST_NOTHROW_LEAF_LIST) 507*38fd1498Szrj 508*38fd1498SzrjDEF_HSAIL_SAT_BUILTIN (BUILT_IN_HSAIL_SAT_SUB_S8, BRIG_OPCODE_SUB, 509*38fd1498Szrj BRIG_TYPE_S8, "__hsail_sat_sub_s8", 510*38fd1498Szrj BT_FN_INT8_INT8_INT8, ATTR_CONST_NOTHROW_LEAF_LIST) 511*38fd1498Szrj 512*38fd1498SzrjDEF_HSAIL_SAT_BUILTIN (BUILT_IN_HSAIL_SAT_MUL_U64, BRIG_OPCODE_MUL, 513*38fd1498Szrj BRIG_TYPE_U64, "__hsail_sat_mul_u64", 514*38fd1498Szrj BT_FN_ULONG_ULONG_ULONG, ATTR_CONST_NOTHROW_LEAF_LIST) 515*38fd1498Szrj 516*38fd1498SzrjDEF_HSAIL_SAT_BUILTIN (BUILT_IN_HSAIL_SAT_MUL_S64, BRIG_OPCODE_MUL, 517*38fd1498Szrj BRIG_TYPE_S64, "__hsail_sat_mul_s64", 518*38fd1498Szrj BT_FN_LONG_LONG_LONG, ATTR_CONST_NOTHROW_LEAF_LIST) 519*38fd1498Szrj 520*38fd1498SzrjDEF_HSAIL_SAT_BUILTIN (BUILT_IN_HSAIL_SAT_MUL_U32, BRIG_OPCODE_MUL, 521*38fd1498Szrj BRIG_TYPE_U32, "__hsail_sat_mul_u32", 522*38fd1498Szrj BT_FN_UINT_UINT_UINT, ATTR_CONST_NOTHROW_LEAF_LIST) 523*38fd1498Szrj 524*38fd1498SzrjDEF_HSAIL_SAT_BUILTIN (BUILT_IN_HSAIL_SAT_MUL_S32, BRIG_OPCODE_MUL, 525*38fd1498Szrj BRIG_TYPE_S32, "__hsail_sat_mul_s32", 526*38fd1498Szrj BT_FN_INT_INT_INT, ATTR_CONST_NOTHROW_LEAF_LIST) 527*38fd1498Szrj 528*38fd1498SzrjDEF_HSAIL_SAT_BUILTIN (BUILT_IN_HSAIL_SAT_MUL_U16, BRIG_OPCODE_MUL, 529*38fd1498Szrj BRIG_TYPE_U16, "__hsail_sat_mul_u16", 530*38fd1498Szrj BT_FN_UINT16_UINT16_UINT16, ATTR_CONST_NOTHROW_LEAF_LIST) 531*38fd1498Szrj 532*38fd1498SzrjDEF_HSAIL_SAT_BUILTIN (BUILT_IN_HSAIL_SAT_MUL_S16, BRIG_OPCODE_MUL, 533*38fd1498Szrj BRIG_TYPE_S16, "__hsail_sat_mul_s16", 534*38fd1498Szrj BT_FN_INT16_INT16_INT16, ATTR_CONST_NOTHROW_LEAF_LIST) 535*38fd1498Szrj 536*38fd1498SzrjDEF_HSAIL_SAT_BUILTIN (BUILT_IN_HSAIL_SAT_MUL_U8, BRIG_OPCODE_MUL, 537*38fd1498Szrj BRIG_TYPE_U8, "__hsail_sat_mul_u8", 538*38fd1498Szrj BT_FN_UINT8_UINT8_UINT8, ATTR_CONST_NOTHROW_LEAF_LIST) 539*38fd1498Szrj 540*38fd1498SzrjDEF_HSAIL_SAT_BUILTIN (BUILT_IN_HSAIL_SAT_MUL_S8, BRIG_OPCODE_MUL, 541*38fd1498Szrj BRIG_TYPE_S8, "__hsail_sat_mul_s8", 542*38fd1498Szrj BT_FN_INT8_INT8_INT8, ATTR_CONST_NOTHROW_LEAF_LIST) 543*38fd1498Szrj 544*38fd1498Szrj#ifndef DEF_HSAIL_INTR_BUILTIN 545*38fd1498Szrj#define DEF_HSAIL_INTR_BUILTIN(ENUM, NAME, TYPE, ATTRS) 546*38fd1498Szrj#endif 547*38fd1498Szrj 548*38fd1498SzrjDEF_HSAIL_INTR_BUILTIN (BUILT_IN_HSAIL_FTZ_F32_F16, "__hsail_ftz_f32_f16", 549*38fd1498Szrj BT_FN_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST) 550*38fd1498Szrj 551*38fd1498SzrjDEF_HSAIL_INTR_BUILTIN (BUILT_IN_HSAIL_FTZ_F32, "__hsail_ftz_f32", 552*38fd1498Szrj BT_FN_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST) 553*38fd1498Szrj 554*38fd1498SzrjDEF_HSAIL_INTR_BUILTIN (BUILT_IN_HSAIL_FTZ_F64, "__hsail_ftz_f64", 555*38fd1498Szrj BT_FN_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST) 556*38fd1498Szrj 557*38fd1498SzrjDEF_HSAIL_INTR_BUILTIN (BUILT_IN_HSAIL_PUSH_FRAME, "__hsail_alloca_push_frame", 558*38fd1498Szrj BT_FN_VOID_PTR, ATTR_NOTHROW_LEAF_LIST) 559*38fd1498Szrj 560*38fd1498SzrjDEF_HSAIL_INTR_BUILTIN (BUILT_IN_HSAIL_POP_FRAME, "__hsail_alloca_pop_frame", 561*38fd1498Szrj BT_FN_VOID_PTR, ATTR_NOTHROW_LEAF_LIST) 562*38fd1498Szrj 563*38fd1498SzrjDEF_HSAIL_INTR_BUILTIN (BUILT_IN_HSAIL_SETWORKITEMID, "__hsail_setworkitemid", 564*38fd1498Szrj BT_FN_VOID_UINT32_UINT32_PTR, ATTR_NOTHROW_LEAF_LIST) 565*38fd1498Szrj 566*38fd1498SzrjDEF_HSAIL_INTR_BUILTIN (BUILT_IN_HSAIL_LAUNCH_WG_FUNC, 567*38fd1498Szrj "__hsail_launch_wg_function", 568*38fd1498Szrj BT_FN_VOID_PTR_PTR_PTR, ATTR_NOTHROW_LEAF_LIST) 569*38fd1498Szrj 570*38fd1498SzrjDEF_HSAIL_INTR_BUILTIN (BUILT_IN_HSAIL_LAUNCH_KERNEL, 571*38fd1498Szrj "__hsail_launch_kernel", 572*38fd1498Szrj BT_FN_VOID_PTR_PTR_PTR, ATTR_NOTHROW_LEAF_LIST) 573*38fd1498Szrj 574*38fd1498SzrjDEF_HSAIL_INTR_BUILTIN (BUILT_IN_HSAIL_F32_TO_F16, "__hsail_f32_to_f16", 575*38fd1498Szrj BT_FN_UINT16_UINT32, ATTR_CONST_NOTHROW_LEAF_LIST) 576*38fd1498Szrj 577*38fd1498SzrjDEF_HSAIL_INTR_BUILTIN (BUILT_IN_HSAIL_F16_TO_F32, "__hsail_f16_to_f32", 578*38fd1498Szrj BT_FN_UINT32_UINT16, ATTR_CONST_NOTHROW_LEAF_LIST) 579*38fd1498Szrj 580*38fd1498Szrj#ifndef DEF_HSAIL_CVT_ZEROI_SAT_BUILTIN 581*38fd1498Szrj#define DEF_HSAIL_CVT_ZEROI_SAT_BUILTIN(ENUM, HSAIL_DEST_TYPE, HSAIL_SRC_TYPE, \ 582*38fd1498Szrj NAME, TYPE, ATTRS) 583*38fd1498Szrj#endif 584*38fd1498Szrj 585*38fd1498SzrjDEF_HSAIL_CVT_ZEROI_SAT_BUILTIN (BUILT_IN_HSAIL_CVT_ZEROI_SAT_U8_F32, 586*38fd1498Szrj BRIG_TYPE_U8, BRIG_TYPE_F32, 587*38fd1498Szrj "__hsail_cvt_zeroi_sat_u8_f32", 588*38fd1498Szrj BT_FN_UINT8_FLOAT, 589*38fd1498Szrj ATTR_CONST_NOTHROW_LEAF_LIST) 590*38fd1498Szrj 591*38fd1498SzrjDEF_HSAIL_CVT_ZEROI_SAT_BUILTIN (BUILT_IN_HSAIL_CVT_ZEROI_SAT_S8_F32, 592*38fd1498Szrj BRIG_TYPE_S8, BRIG_TYPE_F32, 593*38fd1498Szrj "__hsail_cvt_zeroi_sat_s8_f32", 594*38fd1498Szrj BT_FN_INT8_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST) 595*38fd1498Szrj 596*38fd1498SzrjDEF_HSAIL_CVT_ZEROI_SAT_BUILTIN (BUILT_IN_HSAIL_CVT_ZEROI_SAT_U16_F32, 597*38fd1498Szrj BRIG_TYPE_U16, BRIG_TYPE_F32, 598*38fd1498Szrj "__hsail_cvt_zeroi_sat_u16_f32", 599*38fd1498Szrj BT_FN_UINT16_FLOAT, 600*38fd1498Szrj ATTR_CONST_NOTHROW_LEAF_LIST) 601*38fd1498Szrj 602*38fd1498SzrjDEF_HSAIL_CVT_ZEROI_SAT_BUILTIN (BUILT_IN_HSAIL_CVT_ZEROI_SAT_S16_F32, 603*38fd1498Szrj BRIG_TYPE_S16, BRIG_TYPE_F32, 604*38fd1498Szrj "__hsail_cvt_zeroi_sat_s16_f32", 605*38fd1498Szrj BT_FN_INT16_FLOAT, 606*38fd1498Szrj ATTR_CONST_NOTHROW_LEAF_LIST) 607*38fd1498Szrj 608*38fd1498SzrjDEF_HSAIL_CVT_ZEROI_SAT_BUILTIN (BUILT_IN_HSAIL_CVT_ZEROI_SAT_U32_F32, 609*38fd1498Szrj BRIG_TYPE_U32, BRIG_TYPE_F32, 610*38fd1498Szrj "__hsail_cvt_zeroi_sat_u32_f32", 611*38fd1498Szrj BT_FN_UINT32_FLOAT, 612*38fd1498Szrj ATTR_CONST_NOTHROW_LEAF_LIST) 613*38fd1498Szrj 614*38fd1498SzrjDEF_HSAIL_CVT_ZEROI_SAT_BUILTIN (BUILT_IN_HSAIL_CVT_ZEROI_SAT_S32_F32, 615*38fd1498Szrj BRIG_TYPE_S32, BRIG_TYPE_F32, 616*38fd1498Szrj "__hsail_cvt_zeroi_sat_s32_f32", 617*38fd1498Szrj BT_FN_INT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST) 618*38fd1498Szrj 619*38fd1498SzrjDEF_HSAIL_CVT_ZEROI_SAT_BUILTIN (BUILT_IN_HSAIL_CVT_ZEROI_SAT_U64_F32, 620*38fd1498Szrj BRIG_TYPE_U64, BRIG_TYPE_F32, 621*38fd1498Szrj "__hsail_cvt_zeroi_sat_u64_f32", 622*38fd1498Szrj BT_FN_UINT64_FLOAT, 623*38fd1498Szrj ATTR_CONST_NOTHROW_LEAF_LIST) 624*38fd1498Szrj 625*38fd1498SzrjDEF_HSAIL_CVT_ZEROI_SAT_BUILTIN (BUILT_IN_HSAIL_CVT_ZEROI_SAT_S64_F32, 626*38fd1498Szrj BRIG_TYPE_S64, BRIG_TYPE_F32, 627*38fd1498Szrj "__hsail_cvt_zeroi_sat_s64_f32", 628*38fd1498Szrj BT_FN_LONG_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST) 629*38fd1498Szrj 630*38fd1498SzrjDEF_HSAIL_CVT_ZEROI_SAT_BUILTIN (BUILT_IN_HSAIL_CVT_ZEROI_SAT_U8_F64, 631*38fd1498Szrj BRIG_TYPE_U8, BRIG_TYPE_F64, 632*38fd1498Szrj "__hsail_cvt_zeroi_sat_u8_f64", 633*38fd1498Szrj BT_FN_UINT8_FLOAT, 634*38fd1498Szrj ATTR_CONST_NOTHROW_LEAF_LIST) 635*38fd1498Szrj 636*38fd1498SzrjDEF_HSAIL_CVT_ZEROI_SAT_BUILTIN (BUILT_IN_HSAIL_CVT_ZEROI_SAT_S8_F64, 637*38fd1498Szrj BRIG_TYPE_S8, BRIG_TYPE_F64, 638*38fd1498Szrj "__hsail_cvt_zeroi_sat_s8_f64", 639*38fd1498Szrj BT_FN_INT8_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST) 640*38fd1498Szrj 641*38fd1498SzrjDEF_HSAIL_CVT_ZEROI_SAT_BUILTIN (BUILT_IN_HSAIL_CVT_ZEROI_SAT_U16_F64, 642*38fd1498Szrj BRIG_TYPE_U16, BRIG_TYPE_F64, 643*38fd1498Szrj "__hsail_cvt_zeroi_sat_u16_f64", 644*38fd1498Szrj BT_FN_UINT16_FLOAT, 645*38fd1498Szrj ATTR_CONST_NOTHROW_LEAF_LIST) 646*38fd1498Szrj 647*38fd1498SzrjDEF_HSAIL_CVT_ZEROI_SAT_BUILTIN (BUILT_IN_HSAIL_CVT_ZEROI_SAT_S16_F64, 648*38fd1498Szrj BRIG_TYPE_S16, BRIG_TYPE_F64, 649*38fd1498Szrj "__hsail_cvt_zeroi_sat_s16_f64", 650*38fd1498Szrj BT_FN_INT16_FLOAT, 651*38fd1498Szrj ATTR_CONST_NOTHROW_LEAF_LIST) 652*38fd1498Szrj 653*38fd1498SzrjDEF_HSAIL_CVT_ZEROI_SAT_BUILTIN (BUILT_IN_HSAIL_CVT_ZEROI_SAT_U32_F64, 654*38fd1498Szrj BRIG_TYPE_U32, BRIG_TYPE_F64, 655*38fd1498Szrj "__hsail_cvt_zeroi_sat_u32_f64", 656*38fd1498Szrj BT_FN_UINT32_FLOAT, 657*38fd1498Szrj ATTR_CONST_NOTHROW_LEAF_LIST) 658*38fd1498Szrj 659*38fd1498SzrjDEF_HSAIL_CVT_ZEROI_SAT_BUILTIN (BUILT_IN_HSAIL_CVT_ZEROI_SAT_S32_F64, 660*38fd1498Szrj BRIG_TYPE_S32, BRIG_TYPE_F64, 661*38fd1498Szrj "__hsail_cvt_zeroi_sat_s32_f64", 662*38fd1498Szrj BT_FN_INT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST) 663*38fd1498Szrj 664*38fd1498SzrjDEF_HSAIL_CVT_ZEROI_SAT_BUILTIN (BUILT_IN_HSAIL_CVT_ZEROI_SAT_U64_F64, 665*38fd1498Szrj BRIG_TYPE_U64, BRIG_TYPE_F64, 666*38fd1498Szrj "__hsail_cvt_zeroi_sat_u64_f64", 667*38fd1498Szrj BT_FN_UINT64_FLOAT, 668*38fd1498Szrj ATTR_CONST_NOTHROW_LEAF_LIST) 669*38fd1498Szrj 670*38fd1498SzrjDEF_HSAIL_CVT_ZEROI_SAT_BUILTIN (BUILT_IN_HSAIL_CVT_ZEROI_SAT_S64_F64, 671*38fd1498Szrj BRIG_TYPE_S64, BRIG_TYPE_F64, 672*38fd1498Szrj "__hsail_cvt_zeroi_sat_s64_f64", 673*38fd1498Szrj BT_FN_LONG_FLOAT, 674*38fd1498Szrj ATTR_CONST_NOTHROW_LEAF_LIST) 675