1/* Copyright (C) 2016-2020 Free Software Foundation, Inc. 2 3 This file is free software; you can redistribute it and/or modify it under 4 the terms of the GNU General Public License as published by the Free 5 Software Foundation; either version 3 of the License, or (at your option) 6 any later version. 7 8 This file is distributed in the hope that it will be useful, but WITHOUT 9 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 10 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 11 for more details. 12 13 You should have received a copy of the GNU General Public License 14 along with GCC; see the file COPYING3. If not see 15 <http://www.gnu.org/licenses/>. */ 16 17/* The first argument to these macros is the return type of the builtin, 18 the rest are arguments of the builtin. */ 19#define _A1(a) {a, GCN_BTI_END_OF_PARAMS} 20#define _A2(a,b) {a, b, GCN_BTI_END_OF_PARAMS} 21#define _A3(a,b,c) {a, b, c, GCN_BTI_END_OF_PARAMS} 22#define _A4(a,b,c,d) {a, b, c, d, GCN_BTI_END_OF_PARAMS} 23#define _A5(a,b,c,d,e) {a, b, c, d, e, GCN_BTI_END_OF_PARAMS} 24 25DEF_BUILTIN (FLAT_LOAD_INT32, 1 /*CODE_FOR_flat_load_v64si*/, 26 "flat_load_int32", B_INSN, 27 _A3 (GCN_BTI_V64SI, GCN_BTI_EXEC, GCN_BTI_V64SI), 28 gcn_expand_builtin_1) 29 30DEF_BUILTIN (FLAT_LOAD_PTR_INT32, 2 /*CODE_FOR_flat_load_ptr_v64si */, 31 "flat_load_ptr_int32", B_INSN, 32 _A4 (GCN_BTI_V64SI, GCN_BTI_EXEC, GCN_BTI_SIPTR, GCN_BTI_V64SI), 33 gcn_expand_builtin_1) 34 35DEF_BUILTIN (FLAT_STORE_PTR_INT32, 3 /*CODE_FOR_flat_store_ptr_v64si */, 36 "flat_store_ptr_int32", B_INSN, 37 _A5 (GCN_BTI_VOID, GCN_BTI_EXEC, GCN_BTI_SIPTR, GCN_BTI_V64SI, 38 GCN_BTI_V64SI), 39 gcn_expand_builtin_1) 40 41DEF_BUILTIN (FLAT_LOAD_PTR_FLOAT, 2 /*CODE_FOR_flat_load_ptr_v64sf */, 42 "flat_load_ptr_float", B_INSN, 43 _A4 (GCN_BTI_V64SF, GCN_BTI_EXEC, GCN_BTI_SFPTR, GCN_BTI_V64SI), 44 gcn_expand_builtin_1) 45 46DEF_BUILTIN (FLAT_STORE_PTR_FLOAT, 3 /*CODE_FOR_flat_store_ptr_v64sf */, 47 "flat_store_ptr_float", B_INSN, 48 _A5 (GCN_BTI_VOID, GCN_BTI_EXEC, GCN_BTI_SFPTR, GCN_BTI_V64SI, 49 GCN_BTI_V64SF), 50 gcn_expand_builtin_1) 51 52DEF_BUILTIN (SQRTVF, 3 /*CODE_FOR_sqrtvf */, 53 "sqrtvf", B_INSN, 54 _A2 (GCN_BTI_V64SF, GCN_BTI_V64SF), 55 gcn_expand_builtin_1) 56 57DEF_BUILTIN (SQRTF, 3 /*CODE_FOR_sqrtf */, 58 "sqrtf", B_INSN, 59 _A2 (GCN_BTI_SF, GCN_BTI_SF), 60 gcn_expand_builtin_1) 61 62DEF_BUILTIN (CMP_SWAP, -1, 63 "cmp_swap", B_INSN, 64 _A4 (GCN_BTI_UINT, GCN_BTI_VOIDPTR, GCN_BTI_UINT, GCN_BTI_UINT), 65 gcn_expand_builtin_1) 66 67DEF_BUILTIN (CMP_SWAPLL, -1, 68 "cmp_swapll", B_INSN, 69 _A4 (GCN_BTI_LLUINT, 70 GCN_BTI_VOIDPTR, GCN_BTI_LLUINT, GCN_BTI_LLUINT), 71 gcn_expand_builtin_1) 72 73/* DEF_BUILTIN_BINOP_INT_FP creates many variants of a builtin function for a 74 given operation. The first argument will give base to the identifier of a 75 particular builtin, the second will be used to form the name of the patter 76 used to expand it to and the third will be used to create the user-visible 77 builtin identifier. */ 78 79DEF_BUILTIN_BINOP_INT_FP (ADD, add, "add") 80DEF_BUILTIN_BINOP_INT_FP (SUB, sub, "sub") 81 82DEF_BUILTIN_BINOP_INT_FP (AND, and, "and") 83DEF_BUILTIN_BINOP_INT_FP (IOR, ior, "or") 84DEF_BUILTIN_BINOP_INT_FP (XOR, xor, "xor") 85 86/* OpenMP. */ 87 88DEF_BUILTIN (OMP_DIM_SIZE, CODE_FOR_oacc_dim_size, 89 "dim_size", B_INSN, 90 _A2 (GCN_BTI_INT, GCN_BTI_INT), 91 gcn_expand_builtin_1) 92DEF_BUILTIN (OMP_DIM_POS, CODE_FOR_oacc_dim_pos, 93 "dim_pos", B_INSN, 94 _A2 (GCN_BTI_INT, GCN_BTI_INT), 95 gcn_expand_builtin_1) 96 97/* OpenACC. */ 98 99DEF_BUILTIN (ACC_SINGLE_START, -1, "single_start", B_INSN, _A1 (GCN_BTI_BOOL), 100 gcn_expand_builtin_1) 101 102DEF_BUILTIN (ACC_SINGLE_COPY_START, -1, "single_copy_start", B_INSN, 103 _A1 (GCN_BTI_LDS_VOIDPTR), gcn_expand_builtin_1) 104 105DEF_BUILTIN (ACC_SINGLE_COPY_END, -1, "single_copy_end", B_INSN, 106 _A2 (GCN_BTI_VOID, GCN_BTI_LDS_VOIDPTR), gcn_expand_builtin_1) 107 108DEF_BUILTIN (ACC_BARRIER, -1, "acc_barrier", B_INSN, _A1 (GCN_BTI_VOID), 109 gcn_expand_builtin_1) 110 111 112#undef _A1 113#undef _A2 114#undef _A3 115#undef _A4 116#undef _A5 117