Home | History | Annotate | Download | only in include
      1 /* This file contains the definitions and documentation for the
      2    OpenMP builtins used in the GNU compiler.
      3    Copyright (C) 2005, 2007, 2008 Free Software Foundation, Inc.
      4 
      5 This file is part of GCC.
      6 
      7 GCC is free software; you can redistribute it and/or modify it under
      8 the terms of the GNU General Public License as published by the Free
      9 Software Foundation; either version 3, or (at your option) any later
     10 version.
     11 
     12 GCC is distributed in the hope that it will be useful, but WITHOUT ANY
     13 WARRANTY; without even the implied warranty of MERCHANTABILITY or
     14 FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
     15 for more details.
     16 
     17 You should have received a copy of the GNU General Public License
     18 along with GCC; see the file COPYING3.  If not see
     19 <http://www.gnu.org/licenses/>.  */
     20 
     21 /* Before including this file, you should define a macro:
     22 
     23      DEF_GOMP_BUILTIN (ENUM, NAME, TYPE, ATTRS)
     24 
     25    See builtins.def for details.  */
     26 
     27 DEF_GOMP_BUILTIN (BUILT_IN_OMP_GET_THREAD_NUM, "omp_get_thread_num",
     28 		  BT_FN_INT, ATTR_CONST_NOTHROW_LIST)
     29 DEF_GOMP_BUILTIN (BUILT_IN_OMP_GET_NUM_THREADS, "omp_get_num_threads",
     30 		  BT_FN_INT, ATTR_CONST_NOTHROW_LIST)
     31 
     32 DEF_GOMP_BUILTIN (BUILT_IN_GOMP_ATOMIC_START, "GOMP_atomic_start",
     33 		  BT_FN_VOID, ATTR_NOTHROW_LIST)
     34 DEF_GOMP_BUILTIN (BUILT_IN_GOMP_ATOMIC_END, "GOMP_atomic_end",
     35 		  BT_FN_VOID, ATTR_NOTHROW_LIST)
     36 DEF_GOMP_BUILTIN (BUILT_IN_GOMP_BARRIER, "GOMP_barrier",
     37 		  BT_FN_VOID, ATTR_NOTHROW_LIST)
     38 DEF_GOMP_BUILTIN (BUILT_IN_GOMP_TASKWAIT, "GOMP_taskwait",
     39 		  BT_FN_VOID, ATTR_NOTHROW_LIST)
     40 DEF_GOMP_BUILTIN (BUILT_IN_GOMP_CRITICAL_START, "GOMP_critical_start",
     41 		  BT_FN_VOID, ATTR_NOTHROW_LIST)
     42 DEF_GOMP_BUILTIN (BUILT_IN_GOMP_CRITICAL_END, "GOMP_critical_end",
     43 		  BT_FN_VOID, ATTR_NOTHROW_LIST)
     44 DEF_GOMP_BUILTIN (BUILT_IN_GOMP_CRITICAL_NAME_START,
     45 		  "GOMP_critical_name_start",
     46 		  BT_FN_VOID_PTRPTR, ATTR_NOTHROW_LIST)
     47 DEF_GOMP_BUILTIN (BUILT_IN_GOMP_CRITICAL_NAME_END,
     48 		  "GOMP_critical_name_end",
     49 		  BT_FN_VOID_PTRPTR, ATTR_NOTHROW_LIST)
     50 /* NOTE: Do not change the order of BUILT_IN_GOMP_LOOP_*_START.  They
     51    are used in index arithmetic with enum omp_clause_schedule_kind
     52    in omp-low.c.  */
     53 DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_STATIC_START,
     54 		  "GOMP_loop_static_start",
     55 		  BT_FN_BOOL_LONG_LONG_LONG_LONG_LONGPTR_LONGPTR,
     56 		  ATTR_NOTHROW_LIST)
     57 DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_DYNAMIC_START,
     58 		  "GOMP_loop_dynamic_start",
     59 		  BT_FN_BOOL_LONG_LONG_LONG_LONG_LONGPTR_LONGPTR,
     60 		  ATTR_NOTHROW_LIST)
     61 DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_GUIDED_START,
     62 		  "GOMP_loop_guided_start",
     63 		  BT_FN_BOOL_LONG_LONG_LONG_LONG_LONGPTR_LONGPTR,
     64 		  ATTR_NOTHROW_LIST)
     65 DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_RUNTIME_START,
     66 		  "GOMP_loop_runtime_start",
     67 		  BT_FN_BOOL_LONG_LONG_LONG_LONGPTR_LONGPTR,
     68 		  ATTR_NOTHROW_LIST)
     69 DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_ORDERED_STATIC_START,
     70 		  "GOMP_loop_ordered_static_start",
     71 		  BT_FN_BOOL_LONG_LONG_LONG_LONG_LONGPTR_LONGPTR,
     72 		  ATTR_NOTHROW_LIST)
     73 DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_ORDERED_DYNAMIC_START,
     74 		  "GOMP_loop_ordered_dynamic_start",
     75 		  BT_FN_BOOL_LONG_LONG_LONG_LONG_LONGPTR_LONGPTR,
     76 		  ATTR_NOTHROW_LIST)
     77 DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_ORDERED_GUIDED_START,
     78 		  "GOMP_loop_ordered_guided_start",
     79 		  BT_FN_BOOL_LONG_LONG_LONG_LONG_LONGPTR_LONGPTR,
     80 		  ATTR_NOTHROW_LIST)
     81 DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_ORDERED_RUNTIME_START,
     82 		  "GOMP_loop_ordered_runtime_start",
     83 		  BT_FN_BOOL_LONG_LONG_LONG_LONGPTR_LONGPTR,
     84 		  ATTR_NOTHROW_LIST)
     85 DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_STATIC_NEXT, "GOMP_loop_static_next",
     86 		  BT_FN_BOOL_LONGPTR_LONGPTR, ATTR_NOTHROW_LIST)
     87 DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_DYNAMIC_NEXT, "GOMP_loop_dynamic_next",
     88 		  BT_FN_BOOL_LONGPTR_LONGPTR, ATTR_NOTHROW_LIST)
     89 DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_GUIDED_NEXT, "GOMP_loop_guided_next",
     90 		  BT_FN_BOOL_LONGPTR_LONGPTR, ATTR_NOTHROW_LIST)
     91 DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_RUNTIME_NEXT, "GOMP_loop_runtime_next",
     92 		  BT_FN_BOOL_LONGPTR_LONGPTR, ATTR_NOTHROW_LIST)
     93 DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_ORDERED_STATIC_NEXT,
     94 		  "GOMP_loop_ordered_static_next",
     95 		  BT_FN_BOOL_LONGPTR_LONGPTR, ATTR_NOTHROW_LIST)
     96 DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_ORDERED_DYNAMIC_NEXT,
     97 		  "GOMP_loop_ordered_dynamic_next",
     98 		  BT_FN_BOOL_LONGPTR_LONGPTR, ATTR_NOTHROW_LIST)
     99 DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_ORDERED_GUIDED_NEXT,
    100 		  "GOMP_loop_ordered_guided_next",
    101 		  BT_FN_BOOL_LONGPTR_LONGPTR, ATTR_NOTHROW_LIST)
    102 DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_ORDERED_RUNTIME_NEXT,
    103 		  "GOMP_loop_ordered_runtime_next",
    104 		  BT_FN_BOOL_LONGPTR_LONGPTR, ATTR_NOTHROW_LIST)
    105 DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_ULL_STATIC_START,
    106 		  "GOMP_loop_ull_static_start",
    107 		  BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULL_ULLPTR_ULLPTR,
    108 		  ATTR_NOTHROW_LIST)
    109 DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_ULL_DYNAMIC_START,
    110 		  "GOMP_loop_ull_dynamic_start",
    111 		  BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULL_ULLPTR_ULLPTR,
    112 		  ATTR_NOTHROW_LIST)
    113 DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_ULL_GUIDED_START,
    114 		  "GOMP_loop_ull_guided_start",
    115 		  BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULL_ULLPTR_ULLPTR,
    116 		  ATTR_NOTHROW_LIST)
    117 DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_ULL_RUNTIME_START,
    118 		  "GOMP_loop_ull_runtime_start",
    119 		  BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULLPTR_ULLPTR,
    120 		  ATTR_NOTHROW_LIST)
    121 DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_ULL_ORDERED_STATIC_START,
    122 		  "GOMP_loop_ull_ordered_static_start",
    123 		  BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULL_ULLPTR_ULLPTR,
    124 		  ATTR_NOTHROW_LIST)
    125 DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_ULL_ORDERED_DYNAMIC_START,
    126 		  "GOMP_loop_ull_ordered_dynamic_start",
    127 		  BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULL_ULLPTR_ULLPTR,
    128 		  ATTR_NOTHROW_LIST)
    129 DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_ULL_ORDERED_GUIDED_START,
    130 		  "GOMP_loop_ull_ordered_guided_start",
    131 		  BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULL_ULLPTR_ULLPTR,
    132 		  ATTR_NOTHROW_LIST)
    133 DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_ULL_ORDERED_RUNTIME_START,
    134 		  "GOMP_loop_ull_ordered_runtime_start",
    135 		  BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULLPTR_ULLPTR,
    136 		  ATTR_NOTHROW_LIST)
    137 DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_ULL_STATIC_NEXT, "GOMP_loop_ull_static_next",
    138 		  BT_FN_BOOL_ULONGLONGPTR_ULONGLONGPTR, ATTR_NOTHROW_LIST)
    139 DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_ULL_DYNAMIC_NEXT, "GOMP_loop_ull_dynamic_next",
    140 		  BT_FN_BOOL_ULONGLONGPTR_ULONGLONGPTR, ATTR_NOTHROW_LIST)
    141 DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_ULL_GUIDED_NEXT, "GOMP_loop_ull_guided_next",
    142 		  BT_FN_BOOL_ULONGLONGPTR_ULONGLONGPTR, ATTR_NOTHROW_LIST)
    143 DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_ULL_RUNTIME_NEXT, "GOMP_loop_ull_runtime_next",
    144 		  BT_FN_BOOL_ULONGLONGPTR_ULONGLONGPTR, ATTR_NOTHROW_LIST)
    145 DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_ULL_ORDERED_STATIC_NEXT,
    146 		  "GOMP_loop_ull_ordered_static_next",
    147 		  BT_FN_BOOL_ULONGLONGPTR_ULONGLONGPTR, ATTR_NOTHROW_LIST)
    148 DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_ULL_ORDERED_DYNAMIC_NEXT,
    149 		  "GOMP_loop_ull_ordered_dynamic_next",
    150 		  BT_FN_BOOL_ULONGLONGPTR_ULONGLONGPTR, ATTR_NOTHROW_LIST)
    151 DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_ULL_ORDERED_GUIDED_NEXT,
    152 		  "GOMP_loop_ull_ordered_guided_next",
    153 		  BT_FN_BOOL_ULONGLONGPTR_ULONGLONGPTR, ATTR_NOTHROW_LIST)
    154 DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_ULL_ORDERED_RUNTIME_NEXT,
    155 		  "GOMP_loop_ull_ordered_runtime_next",
    156 		  BT_FN_BOOL_ULONGLONGPTR_ULONGLONGPTR, ATTR_NOTHROW_LIST)
    157 /* NOTE: Do not change the order of BUILT_IN_GOMP_PARALLEL_LOOP_*_START.
    158    They are used in index arithmetic with enum omp_clause_schedule_kind
    159    in omp-low.c.  */
    160 DEF_GOMP_BUILTIN (BUILT_IN_GOMP_PARALLEL_LOOP_STATIC_START,
    161 		  "GOMP_parallel_loop_static_start",
    162 		  BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG,
    163 		  ATTR_NOTHROW_LIST)
    164 DEF_GOMP_BUILTIN (BUILT_IN_GOMP_PARALLEL_LOOP_DYNAMIC_START,
    165 		  "GOMP_parallel_loop_dynamic_start",
    166 		  BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG,
    167 		  ATTR_NOTHROW_LIST)
    168 DEF_GOMP_BUILTIN (BUILT_IN_GOMP_PARALLEL_LOOP_GUIDED_START,
    169 		  "GOMP_parallel_loop_guided_start",
    170 		  BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG,
    171 		  ATTR_NOTHROW_LIST)
    172 DEF_GOMP_BUILTIN (BUILT_IN_GOMP_PARALLEL_LOOP_RUNTIME_START,
    173 		  "GOMP_parallel_loop_runtime_start",
    174 		  BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG,
    175 		  ATTR_NOTHROW_LIST)
    176 DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_END, "GOMP_loop_end",
    177 		  BT_FN_VOID, ATTR_NOTHROW_LIST)
    178 DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_END_NOWAIT, "GOMP_loop_end_nowait",
    179 		  BT_FN_VOID, ATTR_NOTHROW_LIST)
    180 DEF_GOMP_BUILTIN (BUILT_IN_GOMP_ORDERED_START, "GOMP_ordered_start",
    181 		  BT_FN_VOID, ATTR_NOTHROW_LIST)
    182 DEF_GOMP_BUILTIN (BUILT_IN_GOMP_ORDERED_END, "GOMP_ordered_end",
    183 		  BT_FN_VOID, ATTR_NOTHROW_LIST)
    184 DEF_GOMP_BUILTIN (BUILT_IN_GOMP_PARALLEL_START, "GOMP_parallel_start",
    185 		  BT_FN_VOID_OMPFN_PTR_UINT, ATTR_NOTHROW_LIST)
    186 DEF_GOMP_BUILTIN (BUILT_IN_GOMP_PARALLEL_END, "GOMP_parallel_end",
    187 		  BT_FN_VOID, ATTR_NOTHROW_LIST)
    188 DEF_GOMP_BUILTIN (BUILT_IN_GOMP_TASK, "GOMP_task",
    189 		  BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT,
    190 		  ATTR_NOTHROW_LIST)
    191 DEF_GOMP_BUILTIN (BUILT_IN_GOMP_SECTIONS_START, "GOMP_sections_start",
    192 		  BT_FN_UINT_UINT, ATTR_NOTHROW_LIST)
    193 DEF_GOMP_BUILTIN (BUILT_IN_GOMP_SECTIONS_NEXT, "GOMP_sections_next",
    194 		  BT_FN_UINT, ATTR_NOTHROW_LIST)
    195 DEF_GOMP_BUILTIN (BUILT_IN_GOMP_PARALLEL_SECTIONS_START,
    196 		  "GOMP_parallel_sections_start",
    197 		  BT_FN_VOID_OMPFN_PTR_UINT_UINT, ATTR_NOTHROW_LIST)
    198 DEF_GOMP_BUILTIN (BUILT_IN_GOMP_SECTIONS_END, "GOMP_sections_end",
    199 		  BT_FN_VOID, ATTR_NOTHROW_LIST)
    200 DEF_GOMP_BUILTIN (BUILT_IN_GOMP_SECTIONS_END_NOWAIT,
    201 		  "GOMP_sections_end_nowait",
    202 		  BT_FN_VOID, ATTR_NOTHROW_LIST)
    203 DEF_GOMP_BUILTIN (BUILT_IN_GOMP_SINGLE_START, "GOMP_single_start",
    204 		  BT_FN_BOOL, ATTR_NOTHROW_LIST)
    205 DEF_GOMP_BUILTIN (BUILT_IN_GOMP_SINGLE_COPY_START, "GOMP_single_copy_start",
    206 		  BT_FN_PTR, ATTR_NOTHROW_LIST)
    207 DEF_GOMP_BUILTIN (BUILT_IN_GOMP_SINGLE_COPY_END, "GOMP_single_copy_end",
    208 		  BT_FN_VOID_PTR, ATTR_NOTHROW_LIST)
    209