00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040 #ifndef pragmas_INCLUDED
00041 #define pragmas_INCLUDED
00042 #ifdef __cplusplus
00043 extern "C" {
00044 #endif
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121 #ifdef _KEEP_RCS_ID
00122 static char *pragmas_rcs_id = "$Source: /home/bos/bk/kpro64-pending/common/com/SCCS/s.wn_pragmas.h $ $Revision: 1.8 $";
00123 #endif
00124
00125
00126
00127 typedef enum {
00128 WN_PRAGMA_UNDEFINED,
00129
00130
00131 WN_PRAGMA_INLINE_BODY_START,
00132 WN_PRAGMA_INLINE_BODY_END,
00133 WN_PRAGMA_INLINE_DEPTH,
00134 WN_PRAGMA_INLINE_LOOPLEVEL,
00135
00136 WN_PRAGMA_AGGRESSIVE_INNER_LOOP_FISSION,
00137 WN_PRAGMA_FISSION,
00138 WN_PRAGMA_FISSIONABLE,
00139 WN_PRAGMA_FUSE,
00140 WN_PRAGMA_FUSEABLE,
00141 WN_PRAGMA_NO_FISSION,
00142 WN_PRAGMA_NO_FUSION,
00143 WN_PRAGMA_INTERCHANGE,
00144
00145
00146
00147 WN_PRAGMA_NO_INTERCHANGE,
00148 WN_PRAGMA_BLOCKING_SIZE,
00149 WN_PRAGMA_NO_BLOCKING,
00150 WN_PRAGMA_UNROLL,
00151 WN_PRAGMA_BLOCKABLE,
00152 WN_PRAGMA_PREFETCH,
00153 WN_PRAGMA_PREFETCH_MANUAL,
00154 WN_PRAGMA_PREFETCH_REF,
00155 WN_PRAGMA_PREFETCH_REF_DISABLE,
00156
00157 WN_PRAGMA_IVDEP,
00158
00159 WN_PRAGMA_OPTIONS,
00160 WN_PRAGMA_OPAQUE,
00161
00162 WN_PRAGMA_MIPS_FREQUENCY_HINT,
00163 WN_PRAGMA_DISTRIBUTE,
00164 WN_PRAGMA_REDISTRIBUTE,
00165 WN_PRAGMA_DISTRIBUTE_RESHAPE,
00166 WN_PRAGMA_DYNAMIC,
00167
00168 WN_PRAGMA_ACCESSED_ID,
00169
00170
00171
00172
00173 WN_PRAGMA_PFOR_BEGIN,
00174 WN_PRAGMA_ENTER_GATE,
00175 WN_PRAGMA_EXIT_GATE,
00176
00177
00178
00179 WN_PRAGMA_BARRIER,
00180 WN_PRAGMA_CHUNKSIZE,
00181 WN_PRAGMA_COPYIN,
00182 WN_PRAGMA_CRITICAL_SECTION_BEGIN,
00183 WN_PRAGMA_CRITICAL_SECTION_END,
00184 WN_PRAGMA_DOACROSS,
00185 WN_PRAGMA_IF,
00186 WN_PRAGMA_LASTLOCAL,
00187 WN_PRAGMA_LOCAL,
00188 WN_PRAGMA_MPSCHEDTYPE,
00189 WN_PRAGMA_ORDERED,
00190 WN_PRAGMA_PARALLEL_BEGIN,
00191 WN_PRAGMA_PARALLEL_END,
00192 WN_PRAGMA_PARALLEL_DO,
00193 WN_PRAGMA_PDO_BEGIN,
00194 WN_PRAGMA_PDO_END,
00195 WN_PRAGMA_PSECTION_BEGIN,
00196 WN_PRAGMA_PSECTION_END,
00197 WN_PRAGMA_REDUCTION,
00198 WN_PRAGMA_SECTION,
00199 WN_PRAGMA_SHARED,
00200 WN_PRAGMA_SINGLE_PROCESS_BEGIN,
00201 WN_PRAGMA_SINGLE_PROCESS_END,
00202 WN_PRAGMA_ITERATE_VAR,
00203 WN_PRAGMA_ITERATE_INIT,
00204 WN_PRAGMA_ITERATE_COUNT,
00205 WN_PRAGMA_ITERATE_STEP,
00206 WN_PRAGMA_AFFINITY,
00207 WN_PRAGMA_DATA_AFFINITY,
00208 WN_PRAGMA_THREAD_AFFINITY,
00209 WN_PRAGMA_NUMTHREADS,
00210 WN_PRAGMA_NOWAIT,
00211 WN_PRAGMA_PAGE_PLACE,
00212 #if defined(TARG_SL)
00213 WN_PRAGMA_SL2_MAJOR_PSECTION_BEGIN,
00214 WN_PRAGMA_SL2_MINOR_PSECTION_BEGIN,
00215 WN_PRAGMA_SL2_SEPERATE_COMPILATION,
00216 WN_PRAGMA_SL2_SECTION,
00217 #endif
00218
00219 #if 0
00220 #define WN_PRAGMA_PAGE_ALLOCATE WN_PRAGMA_PAGE_PLACE
00221 #endif
00222 WN_PRAGMA_ONTO,
00223 WN_PRAGMA_LASTTHREAD,
00224
00225
00226
00227 WN_PRAGMA_NORECURRENCE,
00228 WN_PRAGMA_NEXT_SCALAR,
00229
00230
00231
00232 WN_PRAGMA_PURPLE_CONDITIONAL,
00233 WN_PRAGMA_PURPLE_UNCONDITIONAL,
00234
00235
00236
00237 WN_PRAGMA_WOPT_FINISHED_OPT,
00238
00239
00240
00241 WN_PRAGMA_KAP_ARCLIMIT,
00242 WN_PRAGMA_KAP_CONCURRENTIZE,
00243 WN_PRAGMA_KAP_INLINE_FILE,
00244 WN_PRAGMA_KAP_INLINE_PU,
00245 WN_PRAGMA_KAP_LIMIT,
00246 WN_PRAGMA_KAP_MINCONCURRENT,
00247 WN_PRAGMA_KAP_NOCONCURRENTIZE,
00248 WN_PRAGMA_KAP_NOINLINE_FILE,
00249 WN_PRAGMA_KAP_NOINLINE_PU,
00250 WN_PRAGMA_KAP_OPTIMIZE,
00251 WN_PRAGMA_KAP_ROUNDOFF,
00252 WN_PRAGMA_KAP_SCALAR_OPTIMIZE,
00253 WN_PRAGMA_KAP_CTHRESHOLD,
00254 WN_PRAGMA_KAP_EACH_INVARIANT_IF_GROWTH,
00255 WN_PRAGMA_KAP_MAX_INVARIANT_IF_GROWTH,
00256 WN_PRAGMA_KAP_STORAGE_ORDER,
00257
00258 WN_PRAGMA_KAP_ASSERT_BOUNDS_VIOLATIONS,
00259 WN_PRAGMA_KAP_ASSERT_NOBOUNDS_VIOLATIONS,
00260 WN_PRAGMA_KAP_ASSERT_CONCURRENT_CALL,
00261 WN_PRAGMA_KAP_ASSERT_DO,
00262 WN_PRAGMA_KAP_ASSERT_DOPREFER,
00263 WN_PRAGMA_KAP_ASSERT_EQUIVALENCE_HAZARD,
00264 WN_PRAGMA_KAP_ASSERT_NOEQUIVALENCE_HAZARD,
00265 WN_PRAGMA_KAP_ASSERT_LAST_VALUE_NEEDED,
00266 WN_PRAGMA_KAP_ASSERT_NOLAST_VALUE_NEEDED,
00267 WN_PRAGMA_KAP_ASSERT_PERMUTATION,
00268 WN_PRAGMA_KAP_ASSERT_NORECURRENCE,
00269 WN_PRAGMA_KAP_ASSERT_RELATION,
00270 WN_PRAGMA_KAP_ASSERT_NOSYNC,
00271 WN_PRAGMA_KAP_ASSERT_TEMPORARIES_FOR_CONSTANT_ARGUMENTS,
00272 WN_PRAGMA_KAP_ASSERT_NOTEMPORARIES_FOR_CONSTANT_ARGUMENTS,
00273 WN_PRAGMA_KAP_ASSERT_ARGUMENT_ALIASING,
00274 WN_PRAGMA_KAP_ASSERT_BENIGN,
00275 WN_PRAGMA_KAP_ASSERT_DEPENDENCE,
00276 WN_PRAGMA_KAP_ASSERT_FREQUENCY,
00277 WN_PRAGMA_KAP_ASSERT_IGNORE_ANY_DEPENDENCE,
00278 WN_PRAGMA_KAP_ASSERT_IGNORE_ASSUMED_DEPENDENCE,
00279 WN_PRAGMA_KAP_ASSERT_NO_ARGUMENT_ALIASING,
00280 WN_PRAGMA_KAP_ASSERT_NO_CONCURRENT_CALL,
00281 WN_PRAGMA_KAP_ASSERT_NO_INTERCHANGE,
00282 WN_PRAGMA_KAP_ASSERT_USE_COMPRESS,
00283 WN_PRAGMA_KAP_ASSERT_USE_EXPAND,
00284 WN_PRAGMA_KAP_ASSERT_USE_CONTROLLED_STORE,
00285 WN_PRAGMA_KAP_ASSERT_USE_GATHER,
00286 WN_PRAGMA_KAP_ASSERT_USE_SCATTER,
00287 WN_PRAGMA_KAP_OPTIONS,
00288
00289 WN_PRAGMA_PREAMBLE_END,
00290
00291
00292
00293 WN_PRAGMA_FLIST_SKIP_BEGIN,
00294 WN_PRAGMA_FLIST_SKIP_END,
00295 WN_PRAGMA_CLIST_SKIP_BEGIN,
00296 WN_PRAGMA_CLIST_SKIP_END,
00297
00298
00299 WN_PRAGMA_FILL,
00300 WN_PRAGMA_ALIGN,
00301
00302
00303 WN_PRAGMA_INDEPENDENT_BEGIN,
00304 WN_PRAGMA_INDEPENDENT_END,
00305
00306
00307 WN_PRAGMA_KAP_OPTION_INLINE,
00308 WN_PRAGMA_KAP_OPTION_NOINLINE,
00309
00310
00311
00312
00313
00314 WN_PRAGMA_CRI_IVDEP,
00315 WN_PRAGMA_CRI_NOVECTOR,
00316 WN_PRAGMA_CRI_NOVSEARCH,
00317 WN_PRAGMA_CRI_PREFERVECTOR,
00318 WN_PRAGMA_CRI_SHORTLOOP,
00319
00320
00321
00322 WN_PRAGMA_CRI_CASE,
00323 WN_PRAGMA_CRI_ENDCASE,
00324 WN_PRAGMA_CRI_COMMON,
00325 WN_PRAGMA_CRI_GUARD,
00326 WN_PRAGMA_CRI_ENDGUARD,
00327 WN_PRAGMA_CRI_ENDLOOP,
00328 WN_PRAGMA_CRI_PARALLEL,
00329 WN_PRAGMA_CRI_ENDPARALLEL,
00330 WN_PRAGMA_CRI_PREFERTASK,
00331 WN_PRAGMA_CRI_TASKCOMMON,
00332 WN_PRAGMA_CRI_TASKLOOP,
00333 WN_PRAGMA_CRI_SHARED,
00334 WN_PRAGMA_CRI_PRIVATE,
00335 WN_PRAGMA_CRI_VALUE,
00336 WN_PRAGMA_CRI_DEFAULTS,
00337 WN_PRAGMA_CRI_MAXCPUS,
00338 WN_PRAGMA_CRI_SAVELAST,
00339 WN_PRAGMA_CRI_CHUNKSIZE,
00340 WN_PRAGMA_CRI_NUMCHUNKS,
00341
00342 WN_PRAGMA_CRI_TASK,
00343 WN_PRAGMA_CRI_NOTASK,
00344 WN_PRAGMA_CRI_ALIGN,
00345 WN_PRAGMA_CRI_BL,
00346 WN_PRAGMA_CRI_CNCALL,
00347
00348 WN_PRAGMA_MPNUM,
00349 WN_PRAGMA_COPYIN_BOUND,
00350
00351
00352 WN_PRAGMA_SYNC_DOACROSS,
00353
00354 WN_PRAGMA_DEFAULT,
00355 WN_PRAGMA_FIRSTPRIVATE,
00356 WN_PRAGMA_MASTER_BEGIN,
00357 WN_PRAGMA_ORDERED_BEGIN,
00358 WN_PRAGMA_ORDERED_END,
00359 WN_PRAGMA_ATOMIC,
00360 WN_PRAGMA_ORDERED_LOWER_BOUND,
00361 WN_PRAGMA_ORDERED_STRIDE,
00362 WN_PRAGMA_END_MARKER,
00363 WN_PRAGMA_PARALLEL_SECTIONS,
00364
00365 WN_PRAGMA_START_STMT_CLUMP,
00366 WN_PRAGMA_END_STMT_CLUMP,
00367
00368
00369 WN_PRAGMA_TYPE_OF_RESHAPED_ARRAY,
00370
00371
00372 WN_PRAGMA_ASM_CONSTRAINT,
00373 WN_PRAGMA_ASM_CLOBBER,
00374
00375 #ifdef KEY
00376 WN_PRAGMA_FORALL,
00377 #endif
00378 WN_PRAGMA_COPYPRIVATE,
00379 WN_PRAGMA_PARALLEL_WORKSHARE,
00380 WN_PRAGMA_PWORKSHARE_BEGIN,
00381 WN_PRAGMA_PWORKSHARE_END,
00382 WN_PRAGMA_THREADPRIVATE,
00383 MAX_WN_PRAGMA
00384 } WN_PRAGMA_ID;
00385
00386
00387 typedef enum {
00388 WN_PRAGMA_SCOPE_UNKNOWN,
00389 WN_PRAGMA_SCOPE_PU,
00390 WN_PRAGMA_SCOPE_WN,
00391 WN_PRAGMA_SCOPE_POINT,
00392
00393
00394 WN_PRAGMA_SCOPE_ON,
00395 WN_PRAGMA_SCOPE_OFF,
00396
00397 WN_PRAGMA_SCOPE_SPECIAL,
00398
00399 MAX_SCOPE_PRAGMA
00400 } WN_PRAGMA_SCOPE;
00401
00402
00403 typedef enum {
00404 WN_PRAGMA_SCHEDTYPE_UNKNOWN,
00405 WN_PRAGMA_SCHEDTYPE_RUNTIME,
00406 WN_PRAGMA_SCHEDTYPE_SIMPLE,
00407 WN_PRAGMA_SCHEDTYPE_INTERLEAVE,
00408 WN_PRAGMA_SCHEDTYPE_DYNAMIC,
00409 WN_PRAGMA_SCHEDTYPE_GSS,
00410 WN_PRAGMA_SCHEDTYPE_PSEUDOLOWERED,
00411 MAX_PRAGMA_SCHEDTYPE
00412 } WN_PRAGMA_SCHEDTYPE_KIND;
00413
00414
00415 typedef enum {
00416 WN_PRAGMA_DEFAULT_UNKNOWN,
00417 WN_PRAGMA_DEFAULT_NONE,
00418 WN_PRAGMA_DEFAULT_SHARED,
00419 WN_PRAGMA_DEFAULT_PRIVATE,
00420 MAX_PRAGMA_DEFAULT
00421 } WN_PRAGMA_DEFAULT_KIND;
00422
00423
00424 typedef enum {
00425 PUSER_NULL = 0x0,
00426 PUSER_IPA = 0x1,
00427 PUSER_LNO = 0x2,
00428 PUSER_WOPT = 0x4,
00429 PUSER_CG = 0x8,
00430 PUSER_MP = 0x10,
00431 PUSER_NONE = 0x20,
00432 PUSER_PURPLE = 0x40,
00433 PUSER_W2C = 0x80,
00434 PUSER_W2F = 0x100,
00435 PUSER_REGION = 0x200
00436 } WN_PRAGMA_USERS;
00437
00438
00439 typedef enum {
00440 ACCESSED_LOAD = 0x1,
00441 ACCESSED_STORE = 0x2,
00442 ACCESSED_ILOAD = 0x4,
00443 ACCESSED_ISTORE = 0x8
00444 } WN_PRAGMA_ACCESSED_FLAGS;
00445
00446
00447 typedef enum {
00448 SHARED_DEADIN = 0x1,
00449 SHARED_DEADOUT = 0x2
00450 } WN_PRAGMA_SHARED_FLAGS;
00451
00452
00453 typedef enum {
00454 FREQUENCY_HINT_NEVER = 0x1,
00455 FREQUENCY_HINT_INIT = 0x2,
00456 FREQUENCY_HINT_FREQUENT = 0x3
00457 } MIPS_FREQUENCY_HINT;
00458
00459
00460 typedef enum {
00461 DISTRIBUTE_STAR = 0x1,
00462 DISTRIBUTE_BLOCK = 0x2,
00463 DISTRIBUTE_CYCLIC_EXPR = 0x3,
00464 DISTRIBUTE_CYCLIC_CONST = 0x4
00465 } DISTRIBUTE_TYPE;
00466
00467
00468
00469 typedef enum {
00470 ASSERT_DO_NONE = 0x0,
00471 ASSERT_DO_SERIAL = 0x1,
00472 ASSERT_DO_CONCURRENT = 0x2,
00473 ASSERT_DO_VECTOR = 0x3
00474 } ASSERT_DO_TYPE;
00475
00476
00477 typedef enum {
00478 ASSERT_DEPENDENCE_SAFE = 0x1,
00479 ASSERT_DEPENDENCE_UNSAFE = 0x2
00480 } ASSERT_DEPENDENCE_TYPE;
00481
00482
00483 enum {
00484 ASSERT_FREQUENCY_ERROR = -3,
00485 ASSERT_FREQUENCY_RARELY = -2,
00486 ASSERT_FREQUENCY_USUALLY = -1
00487 };
00488
00489
00490
00491
00492
00493
00494
00495
00496
00497
00498
00499 typedef struct wn_pragma_desc {
00500 WN_PRAGMA_USERS users;
00501 WN_PRAGMA_SCOPE scope;
00502 const char *name;
00503 } WN_PRAGMA_DESC;
00504
00505 extern WN_PRAGMA_DESC WN_pragmas[];
00506
00507
00508
00509
00510 #define IS_AFFINITY_XPRAGMA(wn) (FALSE)
00511
00512
00513 #ifdef __cplusplus
00514 }
00515 #endif
00516 #endif