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
00041
00042
00043
00044
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
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138 #ifndef config_lno_INCLUDED
00139 #define config_lno_INCLUDED
00140
00141 #ifdef _KEEP_RCS_ID
00142
00143 static char *config_lno_h_rcs_id = "$Source: common/com/SCCS/s.config_lno.h $ $Revision: 1.39 $";
00144 #endif
00145
00146 #ifdef __cplusplus
00147 extern "C" {
00148 #endif
00149
00150
00151
00152
00153
00154
00155
00156
00157
00158
00159
00160
00161
00162 extern BOOL Run_autopar;
00163 #ifdef KEY
00164 extern BOOL Simd_Align;
00165 extern BOOL Simd_Reallocate_Objects;
00166 typedef enum {
00167 NO_PREFETCH = 0,
00168 SOME_PREFETCH = 1,
00169 CONSERVATIVE_PREFETCH = 2,
00170 AGGRESSIVE_PREFETCH = 3
00171 } PREFETCH_LEVEL;
00172 #endif
00173
00174
00175 struct MHD;
00176
00177 typedef struct lno_flags {
00178
00179
00180
00181 struct lno_flags *next;
00182 struct MHD *_mhd;
00183
00184 BOOL Aequiv;
00185 BOOL Autodist;
00186 UINT32 Run_AP;
00187 BOOL Ill_xform_directives;
00188 BOOL Backward_substitution;
00189 BOOL Blind_loop_reversal;
00190 BOOL Blocking;
00191 UINT32 Blocking_Size;
00192 BOOL Cache_model_edge_effects;
00193 #ifdef KEY
00194 UINT32 EffectiveCacheSizePct;
00195 #endif
00196 BOOL Coupled_opts;
00197 BOOL Cse;
00198 #ifdef KEY
00199 UINT32 Cse_Loop_Skip_Before;
00200 UINT32 Cse_Loop_Skip_After;
00201 UINT32 Cse_Loop_Skip_Equal;
00202 UINT32 Simd_Skip_Before;
00203 UINT32 Simd_Skip_After;
00204 UINT32 Simd_Skip_Equal;
00205 UINT32 Simd_Loop_Skip_Before;
00206 UINT32 Simd_Loop_Skip_After;
00207 UINT32 Simd_Loop_Skip_Equal;
00208 UINT32 HoistIf_Skip_Before;
00209 UINT32 HoistIf_Skip_After;
00210 UINT32 HoistIf_Skip_Equal;
00211 UINT32 HoistIf_Threshold;
00212 UINT32 SVR_Skip_Before;
00213 UINT32 SVR_Skip_After;
00214 UINT32 SVR_Skip_Equal;
00215 BOOL SVR_Phase1;
00216 BOOL SVR;
00217 UINT32 Unswitch_Skip_Before;
00218 UINT32 Unswitch_Skip_After;
00219 UINT32 Unswitch_Skip_Equal;
00220 UINT32 Unswitch_Loop_Skip_Before;
00221 UINT32 Unswitch_Loop_Skip_After;
00222 UINT32 Unswitch_Loop_Skip_Equal;
00223 UINT32 Full_Unroll_Skip_Before;
00224 UINT32 Full_Unroll_Skip_After;
00225 UINT32 Full_Unroll_Skip_Equal;
00226 UINT32 Skip_Before;
00227 UINT32 Skip_After;
00228 UINT32 Skip_Equal;
00229 UINT32 Apo_Skip_Before;
00230 UINT32 Apo_Skip_After;
00231 UINT32 Apo_Skip_Equal;
00232 UINT32 Apo_Loop_Skip_Before;
00233 UINT32 Apo_Loop_Skip_After;
00234 UINT32 Apo_Loop_Skip_Equal;
00235 UINT32 Dummy_Skip_Before;
00236 UINT32 Dummy_Skip_After;
00237 UINT32 Dummy_Skip_Equal;
00238 #endif
00239 BOOL Fancy_tile;
00240 BOOL Run_fiz_fuse;
00241 UINT32 Fission;
00242 UINT32 Fission_inner_register_limit;
00243 BOOL Forward_substitution;
00244 UINT32 Fusion;
00245 UINT32 Fusion_peeling_limit;
00246 UINT32 Gather_Scatter;
00247 UINT32 Graph_capacity;
00248 BOOL Hoist_messy_bounds;
00249 BOOL Ignore_pragmas;
00250 BOOL Interchange;
00251 BOOL Run_lego;
00252 BOOL Run_lego_set;
00253 BOOL Run_lego_localizer;
00254 BOOL Loop_finalization;
00255 UINT32 Max_do_loop_depth_strict;
00256 BOOL Mem_sim;
00257 BOOL Minvar;
00258 UINT32 Opt;
00259 UINT32 Cache_model;
00260 BOOL Run_outer;
00261 #ifdef KEY
00262 UINT32 OLF_Upper_Bound;
00263 UINT32 OLF_Lower_Bound;
00264 #endif
00265 UINT32 Outer_unroll;
00266 BOOL Outer_unroll_deep;
00267 UINT32 Outer_unroll_min_for_further_unroll;
00268 UINT32 Outer_unroll_max;
00269 BOOL Outer_unroll_model_only;
00270 UINT32 Outer_unroll_prod_max;
00271 BOOL Outer_unroll_unity;
00272 UINT32 Outer_unroll_aggre;
00273 UINT32 Run_p3;
00274 BOOL Pseudo_lower;
00275 UINT32 Run_prefetch;
00276 BOOL Run_prefetch_set;
00277 #ifdef KEY
00278 BOOL Prefetch_stores;
00279 BOOL Prefetch_stores_set;
00280 #endif
00281 BOOL Prefetch_invariant_stride;
00282 UINT32 Prefetch_stride_ahead;
00283 BOOL Run_stream_prefetch;
00284 UINT32 Prefetch_ahead;
00285 UINT32 Prefetch_iters_ahead;
00286 UINT32 Prefetch_cache_factor;
00287 BOOL Prefetch_indirect;
00288 BOOL Run_prefetch_manual;
00289 BOOL Run_prefetch_manual_set;
00290 BOOL Power_of_two_hack;
00291 BOOL Sclrze;
00292 UINT32 SE_tile_size;
00293 UINT32 Split_tiles;
00294 UINT32 Split_tiles_size;
00295 BOOL Run_test;
00296 BOOL Test_dump;
00297 BOOL Trapezoidal_outer_unroll;
00298 BOOL Use_malloc;
00299 BOOL Use_parm;
00300 BOOL Verbose;
00301 BOOL Version_mp_loops;
00302 #ifndef KEY
00303 BOOL Run_vintr;
00304 #else
00305 UINT32 Run_vintr;
00306 BOOL Run_vintr_set;
00307 BOOL Vintr_Verbose;
00308 UINT32 Run_simd;
00309 BOOL Run_simd_set;
00310 BOOL Simd_Verbose;
00311 BOOL Simd_Reduction;
00312 BOOL Simd_Avoid_Fusion;
00313 BOOL Run_hoistif;
00314 BOOL Ignore_Feedback;
00315 BOOL Run_unswitch;
00316 BOOL Run_unswitch_phase1;
00317 BOOL Run_unswitch_phase2;
00318 BOOL Unswitch_Verbose;
00319 BOOL Prefetch_Verbose;
00320 BOOL Build_Scalar_Reductions;
00321 BOOL Invariant_Factorization;
00322 BOOL Invar_Factor_Verbose;
00323 #endif
00324 BOOL Run_oinvar;
00325 UINT32 Run_doacross;
00326 UINT32 Preferred_doacross_tile_size;
00327 UINT32 Parallel_overhead;
00328 BOOL Prompl;
00329 BOOL IfMinMax;
00330 BOOL Run_call_info;
00331 BOOL Shackle;
00332 BOOL Cross_loop;
00333 BOOL IPA_Enabled;
00334 UINT32 Num_Iters;
00335 UINT32 Pure_Level;
00336 UINT32 Small_trip_count;
00337 #ifdef TARG_IA64
00338 UINT32 Assume_Unknown_Trip_Count;
00339 #endif
00340 UINT32 Local_pad_size;
00341 UINT32 Full_unrolling;
00342 #ifdef KEY
00343 UINT32 Full_unrolling_loop_size_limit;
00344 BOOL Full_Unroll_Outer;
00345 UINT32 Num_Processors;
00346 UINT32 Parallel_per_proc_overhead;
00347 BOOL Apo_use_feedback;
00348
00349 #endif
00350
00351
00352
00353
00354
00355
00356 INT32 buffer[16];
00357 } LNO_FLAGS;
00358
00359 #define LNO_FLAGS_next(f) (f->next)
00360 #define LNO_FLAGS_mhd(f) (f->_mhd)
00361
00362
00363
00364
00365
00366
00367
00368
00369
00370
00371
00372 extern LNO_FLAGS *Current_LNO;
00373 extern struct MHD *Current_MHD;
00374
00375
00376 extern LNO_FLAGS Initial_LNO;
00377
00378
00379 #define LNO_Aequiv Current_LNO->Aequiv
00380 #define LNO_Autodist Current_LNO->Autodist
00381 #define LNO_Run_AP Current_LNO->Run_AP
00382 #define LNO_Apply_Illegal_Transformation_Directives \
00383 Current_LNO->Ill_xform_directives
00384 #define LNO_Backward_Substitution Current_LNO->Backward_substitution
00385 #define LNO_Blind_Loop_Reversal Current_LNO->Blind_loop_reversal
00386 #define LNO_Blocking Current_LNO->Blocking
00387 #define LNO_Blocking_Size Current_LNO->Blocking_Size
00388 #define LNO_Cache_Model_Edge_Effects Current_LNO->Cache_model_edge_effects
00389 #ifdef KEY
00390 #define LNO_EffectiveCacheSizePct Current_LNO->EffectiveCacheSizePct
00391 #endif
00392 #define LNO_Coupled_Opts Current_LNO->Coupled_opts
00393 #define LNO_Cse Current_LNO->Cse
00394 #ifdef KEY
00395 #define LNO_Cse_Loop_Skip_Before Current_LNO->Cse_Loop_Skip_Before
00396 #define LNO_Cse_Loop_Skip_After Current_LNO->Cse_Loop_Skip_After
00397 #define LNO_Cse_Loop_Skip_Equal Current_LNO->Cse_Loop_Skip_Equal
00398 #define LNO_Simd_Skip_Before Current_LNO->Simd_Skip_Before
00399 #define LNO_Simd_Skip_After Current_LNO->Simd_Skip_After
00400 #define LNO_Simd_Skip_Equal Current_LNO->Simd_Skip_Equal
00401 #define LNO_Simd_Loop_Skip_Before Current_LNO->Simd_Loop_Skip_Before
00402 #define LNO_Simd_Loop_Skip_After Current_LNO->Simd_Loop_Skip_After
00403 #define LNO_Simd_Loop_Skip_Equal Current_LNO->Simd_Loop_Skip_Equal
00404 #define LNO_HoistIf_Skip_Before Current_LNO->HoistIf_Skip_Before
00405 #define LNO_HoistIf_Skip_After Current_LNO->HoistIf_Skip_After
00406 #define LNO_HoistIf_Skip_Equal Current_LNO->HoistIf_Skip_Equal
00407 #define LNO_HoistIf_Threshold Current_LNO->HoistIf_Threshold
00408 #define LNO_SVR_Skip_Before Current_LNO->SVR_Skip_Before
00409 #define LNO_SVR_Skip_After Current_LNO->SVR_Skip_After
00410 #define LNO_SVR_Skip_Equal Current_LNO->SVR_Skip_Equal
00411 #define LNO_SVR_Phase1 Current_LNO->SVR_Phase1
00412 #define LNO_SVR Current_LNO->SVR
00413 #define LNO_Unswitch_Skip_Before Current_LNO->Unswitch_Skip_Before
00414 #define LNO_Unswitch_Skip_After Current_LNO->Unswitch_Skip_After
00415 #define LNO_Unswitch_Skip_Equal Current_LNO->Unswitch_Skip_Equal
00416 #define LNO_Unswitch_Loop_Skip_Before Current_LNO->Unswitch_Loop_Skip_Before
00417 #define LNO_Unswitch_Loop_Skip_After Current_LNO->Unswitch_Loop_Skip_After
00418 #define LNO_Unswitch_Loop_Skip_Equal Current_LNO->Unswitch_Loop_Skip_Equal
00419 #define LNO_Full_Unroll_Skip_Before Current_LNO->Full_Unroll_Skip_Before
00420 #define LNO_Full_Unroll_Skip_After Current_LNO->Full_Unroll_Skip_After
00421 #define LNO_Full_Unroll_Skip_Equal Current_LNO->Full_Unroll_Skip_Equal
00422 #define LNO_Skip_Before Current_LNO->Skip_Before
00423 #define LNO_Skip_After Current_LNO->Skip_After
00424 #define LNO_Skip_Equal Current_LNO->Skip_Equal
00425 #define LNO_Apo_Skip_Before Current_LNO->Apo_Skip_Before
00426 #define LNO_Apo_Skip_After Current_LNO->Apo_Skip_After
00427 #define LNO_Apo_Skip_Equal Current_LNO->Apo_Skip_Equal
00428 #define LNO_Apo_Loop_Skip_Before Current_LNO->Apo_Loop_Skip_Before
00429 #define LNO_Apo_Loop_Skip_After Current_LNO->Apo_Loop_Skip_After
00430 #define LNO_Apo_Loop_Skip_Equal Current_LNO->Apo_Loop_Skip_Equal
00431 #define LNO_Dummy_Skip_Before Current_LNO->Dummy_Skip_Before
00432 #define LNO_Dummy_Skip_After Current_LNO->Dummy_Skip_After
00433 #define LNO_Dummy_Skip_Equal Current_LNO->Dummy_Skip_Equal
00434 #endif
00435 #define LNO_Fancy_Tile Current_LNO->Fancy_tile
00436 #define LNO_Run_Fiz_Fuse Current_LNO->Run_fiz_fuse
00437 #define LNO_Fission Current_LNO->Fission
00438 #define LNO_Fission_Inner_Register_Limit \
00439 Current_LNO->Fission_inner_register_limit
00440 #define LNO_Forward_Substitution Current_LNO->Forward_substitution
00441 #define LNO_Fusion Current_LNO->Fusion
00442 #define LNO_Fusion_Peeling_Limit Current_LNO->Fusion_peeling_limit
00443 #define LNO_Gather_Scatter Current_LNO->Gather_Scatter
00444 #define LNO_Graph_Capacity Current_LNO->Graph_capacity
00445 #define LNO_Hoist_Messy_Bounds Current_LNO->Hoist_messy_bounds
00446 #define LNO_Ignore_Pragmas Current_LNO->Ignore_pragmas
00447 #define LNO_Interchange Current_LNO->Interchange
00448 #define LNO_Run_Lego Current_LNO->Run_lego
00449 #define LNO_Run_Lego_Set Current_LNO->Run_lego_set
00450 #define LNO_Run_Lego_Localizer Current_LNO->Run_lego_localizer
00451 #define LNO_Loop_Finalization Current_LNO->Loop_finalization
00452 #define LNO_Max_Do_Loop_Depth_Strict Current_LNO->Max_do_loop_depth_strict
00453 #define LNO_Mem_Sim Current_LNO->Mem_sim
00454 #define LNO_Minvar Current_LNO->Minvar
00455 #define LNO_Opt Current_LNO->Opt
00456 #define LNO_Cache_Model Current_LNO->Cache_model
00457 #define LNO_Run_Outer Current_LNO->Run_outer
00458 #ifdef KEY
00459 #define OLF_size_upperbound Current_LNO->OLF_Upper_Bound
00460 #define OLF_size_lowerbound Current_LNO->OLF_Lower_Bound
00461 #endif
00462 #define LNO_Outer_Unroll Current_LNO->Outer_unroll
00463 #define LNO_Outer_Unroll_Deep Current_LNO->Outer_unroll_deep
00464 #define LNO_Outer_Unroll_Min_For_Further_Unroll \
00465 Current_LNO->Outer_unroll_min_for_further_unroll
00466 #define LNO_Outer_Unroll_Max Current_LNO->Outer_unroll_max
00467 #define LNO_Outer_Unroll_Model_Only Current_LNO->Outer_unroll_model_only
00468 #define LNO_Outer_Unroll_Prod_Max Current_LNO->Outer_unroll_prod_max
00469 #define LNO_Outer_Unroll_Unity Current_LNO->Outer_unroll_unity
00470 #define LNO_Outer_Unroll_Aggre Current_LNO->Outer_unroll_aggre
00471 #define LNO_Run_P3 Current_LNO->Run_p3
00472 #define LNO_Pseudo_Lower Current_LNO->Pseudo_lower
00473 #define LNO_Run_Prefetch Current_LNO->Run_prefetch
00474 #define LNO_Run_Prefetch_Set Current_LNO->Run_prefetch_set
00475
00476 #ifdef KEY
00477 #define LNO_Prefetch_Stores Current_LNO->Prefetch_stores
00478 #define LNO_Prefetch_Stores_Set Current_LNO->Prefetch_stores_set
00479 #define LNO_Prefetch_Invariant_Stride Current_LNO->Prefetch_invariant_stride
00480 #define LNO_Prefetch_Stride_Ahead Current_LNO->Prefetch_stride_ahead
00481 #define LNO_Run_Stream_Prefetch Current_LNO->Run_stream_prefetch
00482 #endif
00483
00484 #define LNO_Prefetch_Ahead Current_LNO->Prefetch_ahead
00485 #define LNO_Prefetch_Iters_Ahead Current_LNO->Prefetch_iters_ahead
00486 #define LNO_Prefetch_Cache_Factor Current_LNO->Prefetch_cache_factor
00487 #define LNO_Prefetch_Indirect Current_LNO->Prefetch_indirect
00488 #define LNO_Run_Prefetch_Manual Current_LNO->Run_prefetch_manual
00489 #define LNO_Run_Prefetch_Manual_Set Current_LNO->Run_prefetch_manual_set
00490 #define LNO_Power_Of_Two_Hack Current_LNO->Power_of_two_hack
00491 #define LNO_Sclrze Current_LNO->Sclrze
00492 #define LNO_SE_Tile_Size Current_LNO->SE_tile_size
00493 #define LNO_Split_Tiles Current_LNO->Split_tiles
00494 #define LNO_Split_Tiles_Size Current_LNO->Split_tiles_size
00495 #define LNO_Run_Test Current_LNO->Run_test
00496 #define LNO_Test_Dump Current_LNO->Test_dump
00497 #define LNO_Trapezoidal_Outer_Unroll Current_LNO->Trapezoidal_outer_unroll
00498 #define LNO_Use_Malloc Current_LNO->Use_malloc
00499 #define LNO_Use_Parm Current_LNO->Use_parm
00500 #define LNO_Verbose Current_LNO->Verbose
00501 #define LNO_Version_Mp_Loops Current_LNO->Version_mp_loops
00502 #ifndef KEY
00503 #define LNO_Run_Vintr Current_LNO->Run_vintr
00504 #else
00505 #define LNO_Run_Vintr Current_LNO->Run_vintr
00506 #define LNO_Run_Vintr_Set Current_LNO->Run_vintr_set
00507 #define LNO_Vintr_Verbose Current_LNO->Vintr_Verbose
00508 #define LNO_Run_Simd Current_LNO->Run_simd
00509 #define LNO_Run_Simd_Set Current_LNO->Run_simd_set
00510 #define LNO_Simd_Verbose Current_LNO->Simd_Verbose
00511 #define LNO_Simd_Reduction Current_LNO->Simd_Reduction
00512 #define LNO_Simd_Avoid_Fusion Current_LNO->Simd_Avoid_Fusion
00513 #define LNO_Run_hoistif Current_LNO->Run_hoistif
00514 #define LNO_Ignore_Feedback Current_LNO->Ignore_Feedback
00515 #define LNO_Run_Unswitch Current_LNO->Run_unswitch
00516 #define LNO_Run_Unswitch_Phase1 Current_LNO->Run_unswitch_phase1
00517 #define LNO_Run_Unswitch_Phase2 Current_LNO->Run_unswitch_phase2
00518 #define LNO_Unswitch_Verbose Current_LNO->Unswitch_Verbose
00519 #define LNO_Prefetch_Verbose Current_LNO->Prefetch_Verbose
00520 #define LNO_Build_Scalar_Reductions Current_LNO->Build_Scalar_Reductions
00521 #define LNO_Invariant_Factorization Current_LNO->Invariant_Factorization
00522 #define LNO_Invar_Factor_Verbose Current_LNO->Invar_Factor_Verbose
00523 #endif
00524 #define LNO_Run_Oinvar Current_LNO->Run_oinvar
00525 #define LNO_Run_Doacross Current_LNO->Run_doacross
00526 #define LNO_Preferred_doacross_tile_size \
00527 Current_LNO->Preferred_doacross_tile_size
00528 #define LNO_Parallel_Overhead Current_LNO->Parallel_overhead
00529 #define LNO_Prompl Current_LNO->Prompl
00530 #define LNO_IfMinMax Current_LNO->IfMinMax
00531 #define LNO_Run_call_info Current_LNO->Run_call_info
00532 #define LNO_Shackle Current_LNO->Shackle
00533 #define LNO_Cross_Loop Current_LNO->Cross_loop
00534
00535
00536 #define LNO_Const_Mod_Warning (Current_LNO->cmod_warn)
00537
00538
00539 #define LNO_IPA_Enabled Current_LNO->IPA_Enabled
00540
00541
00542 #define LNO_Num_Iters Current_LNO->Num_Iters
00543
00544
00545
00546
00547 #define LNO_Pure_Level Current_LNO->Pure_Level
00548
00549
00550 #define LNO_Small_Trip_Count Current_LNO->Small_trip_count
00551
00552 #ifdef KEY
00553
00554 #define LNO_Assume_Unknown_Trip_Count Current_LNO->Assume_Unknown_Trip_Count
00555 #endif
00556
00557
00558 #define LNO_Local_Pad_Size Current_LNO->Local_pad_size
00559
00560
00561 #define LNO_Full_Unrolling_Limit Current_LNO->Full_unrolling
00562 #ifdef KEY
00563 #define LNO_Full_Unrolling_Loop_Size_Limit \
00564 Current_LNO->Full_unrolling_loop_size_limit
00565 #define LNO_Full_Unroll_Outer Current_LNO->Full_Unroll_Outer
00566 #define LNO_Num_Processors Current_LNO->Num_Processors
00567 #define LNO_Parallel_per_proc_overhead Current_LNO->Parallel_per_proc_overhead
00568 #define LNO_Apo_use_feedback Current_LNO->Apo_use_feedback
00569 #endif
00570
00571
00572 extern void LNO_Init_Config ( void );
00573
00574
00575
00576
00577 extern void LNO_Push_Config ( BOOL use_default );
00578
00579
00580
00581
00582 extern BOOL LNO_Pop_Config ( void );
00583
00584
00585 extern void LNO_Configure ( void );
00586
00587
00588 #ifdef __cplusplus
00589 }
00590 #endif
00591
00592 #endif