00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef _GCCFE_OMP_TYPES_H_
00025 #define _GCCFE_OMP_TYPES_H_
00026
00027
00028 enum omp_tree_type
00029 {
00030 parallel_dir_b,
00031 parallel_dir_e,
00032 for_dir_b,
00033 for_dir_e,
00034 sections_cons_b,
00035 sections_cons_e,
00036 section_cons_b,
00037 section_cons_e,
00038 single_cons_b,
00039 single_cons_e,
00040 par_for_cons_b,
00041 par_for_cons_e,
00042 par_sctn_cons_b,
00043 par_sctn_cons_e,
00044 master_cons_b,
00045 master_cons_e,
00046 critical_cons_b,
00047 critical_cons_e,
00048 barrier_dir,
00049 flush_dir,
00050 atomic_cons_b,
00051 atomic_cons_e,
00052 thdprv_dir,
00053 ordered_cons_b,
00054 ordered_cons_e,
00055 options_dir,
00056 #ifdef TARG_SL //fork_joint
00057 sl2_sections_cons_b,
00058 sl2_minor_sections_cons_b,
00059 sl2_sections_cons_e,
00060 sl2_section_cons_b,
00061 sl2_section_cons_e,
00062 sl2_minor_section_cons_b,
00063 sl2_minor_section_cons_e,
00064 #endif
00065 exec_freq_dir
00066 };
00067
00069 enum reduction_op_type
00070 {
00071 REDUCTION_OPR_BAND,
00072 REDUCTION_OPR_BIOR,
00073 REDUCTION_OPR_BXOR,
00074 REDUCTION_OPR_ADD,
00075 REDUCTION_OPR_MPY,
00076 REDUCTION_OPR_SUB,
00077 REDUCTION_OPR_CAND,
00078 REDUCTION_OPR_CIOR
00079 };
00080
00081 struct reduction
00082 {
00083 enum reduction_op_type reduction_op;
00084 tree var_list;
00085 };
00086
00087 enum default_type
00088 {
00089 default_shared,
00090 default_none,
00091 no_default
00092 };
00093
00094 enum parallel_clause_type
00095 {
00096 p_if,
00097 p_num_threads,
00098 p_private,
00099 p_firstprivate,
00100 p_shared,
00101 p_default,
00102 p_reduction,
00103 p_copyin
00104 };
00105
00106 union parallel_clause_node
00107 {
00108 tree expr_no_commas;
00109 tree var_list;
00110 enum default_type defaulttype;
00111 struct reduction reduction_node;
00112 };
00113
00114 struct parallel_clause_list
00115 {
00116 enum parallel_clause_type type;
00117 union parallel_clause_node node;
00118 struct parallel_clause_list * next;
00119 };
00120
00121 enum schedule_kind_type
00122 {
00123 SK_STATIC,
00124 SK_DYNAMIC,
00125 SK_GUIDED,
00126 SK_RUNTIME,
00127 SK_NONE
00128 };
00129
00130 struct schedule_2
00131 {
00132 enum schedule_kind_type schedule_kind;
00133 tree chunk_size;
00134 };
00135
00136 enum for_clause_type
00137 {
00138 f_private,
00139 f_firstprivate,
00140 f_lastprivate,
00141 f_reduction,
00142 f_ordered,
00143 f_schedule_1,
00144 f_schedule_2,
00145 f_nowait
00146 };
00147
00148 union for_clause_node
00149 {
00150 tree var_list;
00151 tree expr_no_commas;
00152 struct reduction reduction_node;
00153 enum schedule_kind_type schedule_kind;
00154 struct schedule_2 schedule_node;
00155 int ordered_nowait;
00156 };
00157
00158 struct for_clause_list
00159 {
00160 enum for_clause_type type;
00161 union for_clause_node node;
00162 struct for_clause_list * next;
00163 };
00164
00165 enum sections_clause_type
00166 {
00167 sections_private,
00168 sections_firstprivate,
00169 sections_lastprivate,
00170 sections_reduction,
00171 sections_nowait
00172 };
00173
00174 union sections_clause_node
00175 {
00176 tree var_list;
00177 struct reduction reduction_node;
00178 int nowait;
00179 };
00180
00181 struct sections_clause_list
00182 {
00183 enum sections_clause_type type;
00184 union sections_clause_node node;
00185 struct sections_clause_list * next;
00186 };
00187
00188 enum single_clause_type
00189 {
00190 single_private,
00191 single_firstprivate,
00192 single_copyprivate,
00193 single_nowait
00194 };
00195
00196 union single_clause_node
00197 {
00198 tree var_list;
00199 int nowait;
00200 };
00201
00202 struct single_clause_list
00203 {
00204 enum single_clause_type type;
00205 union single_clause_node node;
00206 struct single_clause_list * next;
00207 };
00208
00209 enum parallel_for_clause_type
00210 {
00211 p_for_if,
00212 p_for_num_threads,
00213 p_for_private,
00214 p_for_copyprivate,
00215 p_for_firstprivate,
00216 p_for_lastprivate,
00217 p_for_shared,
00218 p_for_default,
00219 p_for_reduction,
00220 p_for_copyin,
00221 p_for_ordered,
00222 p_for_schedule_1,
00223 p_for_schedule_2
00224 };
00225
00226 union parallel_for_clause_node
00227 {
00228 tree expr_no_commas;
00229 tree var_list;
00230 enum default_type defaulttype;
00231 struct reduction reduction_node;
00232 enum schedule_kind_type schedule_kind;
00233 struct schedule_2 schedule_node;
00234 int ordered;
00235 };
00236
00237 struct parallel_for_clause_list
00238 {
00239 enum parallel_for_clause_type type;
00240 union parallel_for_clause_node node;
00241 struct parallel_for_clause_list * next;
00242 };
00243
00244 enum parallel_sections_clause_type
00245 {
00246 p_sections_if,
00247 p_sections_num_threads,
00248 p_sections_private,
00249 p_sections_copyprivate,
00250 p_sections_firstprivate,
00251 p_sections_lastprivate,
00252 p_sections_shared,
00253 p_sections_default,
00254 p_sections_reduction,
00255 p_sections_copyin
00256 };
00257
00258 union parallel_sections_clause_node
00259 {
00260 tree expr_no_commas;
00261 tree var_list;
00262 enum default_type defaulttype;
00263 struct reduction reduction_node;
00264 };
00265
00266 struct parallel_sections_clause_list
00267 {
00268 enum parallel_sections_clause_type type;
00269 union parallel_sections_clause_node node;
00270 struct parallel_sections_clause_list * next;
00271 };
00272 #endif