00001 /* 00002 * Copyright 2002, 2003, 2004, 2005, 2006 PathScale, Inc. All Rights Reserved. 00003 */ 00004 00005 /* 00006 00007 Copyright (C) 2000, 2001 Silicon Graphics, Inc. All Rights Reserved. 00008 00009 This program is free software; you can redistribute it and/or modify it 00010 under the terms of version 2 of the GNU General Public License as 00011 published by the Free Software Foundation. 00012 00013 This program is distributed in the hope that it would be useful, but 00014 WITHOUT ANY WARRANTY; without even the implied warranty of 00015 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 00016 00017 Further, this software is distributed without any warranty that it is 00018 free of the rightful claim of any third person regarding infringement 00019 or the like. Any license provided herein, whether implied or 00020 otherwise, applies only to this software file. Patent licenses, if 00021 any, provided herein do not apply to combinations of this program with 00022 other software, or any other product whatsoever. 00023 00024 You should have received a copy of the GNU General Public License along 00025 with this program; if not, write the Free Software Foundation, Inc., 59 00026 Temple Place - Suite 330, Boston MA 02111-1307, USA. 00027 00028 Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pky, 00029 Mountain View, CA 94043, or: 00030 00031 http://www.sgi.com 00032 00033 For further information regarding this notice, see: 00034 00035 http://oss.sgi.com/projects/GenInfo/NoticeExplan 00036 00037 */ 00038 00039 00040 /* ======================================================================= 00041 * ======================================================================= 00042 * 00043 * Module: cg_flags.c 00044 * $Revision: 1.84 $ 00045 * $Date: 06/01/19 16:18:29-08:00 $ 00046 * $Author: fchow@fluorspar.internal.keyresearch.com $ 00047 * $Source: /scratch/mee/2.4-65/kpro64-pending/be/cg/SCCS/s.cg_flags.cxx $ 00048 * 00049 * Description: 00050 * ============ 00051 * 00052 * Definition of variables global to all of CG. 00053 * 00054 * ======================================================================= 00055 * ======================================================================= 00056 */ 00057 00058 00059 #define __STDC_LIMIT_MACROS 00060 #include <stdint.h> 00061 #include "defs.h" 00062 #include "config_targ.h" 00063 #include "cg_flags.h" 00064 #include "cgtarget.h" 00065 00066 BOOL CG_warn_bad_freqs = FALSE; 00067 INT32 CG_skip_after = INT32_MAX; 00068 INT32 CG_skip_before = 0; 00069 INT32 CG_skip_equal = -1; 00070 INT32 CG_local_skip_after = INT32_MAX; 00071 INT32 CG_local_skip_before = 0; 00072 INT32 CG_local_skip_equal = -1; 00073 #ifdef TARG_SL 00074 INT32 CG_local_sched_pu_skip_before = -1; 00075 INT32 CG_local_sched_pu_skip_after = -1 ; 00076 INT32 CG_local_sched_pu_skip_equal = -1; 00077 INT32 CG_local_sched_bb_skip_before = -1; 00078 INT32 CG_local_sched_bb_skip_after = -1 ; 00079 INT32 CG_local_sched_bb_skip_equal = -1; 00080 INT32 CG_local_sched_op_skip_after = -1 ; 00081 INT32 CG_bb_sched_op_num_max = -1; 00082 /* GCM flags */ 00083 INT32 CG_GCM_skip_before = -1; 00084 INT32 CG_GCM_skip_after = -1; 00085 INT32 CG_GCM_skip_equal = -1; 00086 INT32 CG_GCM_loop_skip_before = -1; 00087 INT32 CG_GCM_loop_skip_after = -1; 00088 INT32 CG_GCM_loop_skip_equal = -1; 00089 INT32 CG_GCM_op_skip_before = -1; 00090 INT32 CG_GCM_op_skip_after = -1; 00091 INT32 CG_GCM_op_skip_equal = -1; 00092 INT32 CG_GCM_LICM_loop_skip_before = -1; 00093 INT32 CG_GCM_LICM_loop_skip_after = -1; 00094 INT32 CG_GCM_LICM_loop_skip_equal = -1; 00095 INT32 CG_GCM_LICM_op_skip_before = -1; 00096 INT32 CG_GCM_LICM_op_skip_after = -1; 00097 INT32 CG_GCM_LICM_op_skip_equal = -1; 00098 INT32 CG_LOOP_DCE_loop_skip_before = -1; 00099 INT32 CG_LOOP_DCE_loop_skip_after = -1; 00100 INT32 CG_LOOP_DCE_loop_skip_equal = -1; 00101 INT32 CG_LOOP_DCE_op_skip_before = -1; 00102 INT32 CG_LOOP_DCE_op_skip_after = -1; 00103 INT32 CG_LOOP_DCE_op_skip_equal = -1; 00104 00105 BOOL CG_GCM_enable_critical_edge_motion = TRUE; 00106 BOOL CG_GCM_enable_mvtc_optimization = TRUE; 00107 BOOL CG_GCM_enable_reduce_loop_count = TRUE; 00108 BOOL CG_GCM_enable_licm = TRUE; 00109 BOOL CG_GCM_enable_dce = TRUE; 00110 BOOL CG_GCM_enable_rce = TRUE; 00111 BOOL CG_GCM_enable_break_dependence = FALSE; 00112 BOOL CG_GCM_enable_merge_small_bbs = TRUE; 00113 #endif 00114 BOOL CG_skip_local_hbf = FALSE; 00115 BOOL CG_skip_local_loop = FALSE; 00116 BOOL CG_skip_local_sched = FALSE; 00117 BOOL CG_skip_local_swp = FALSE; 00118 BOOL CG_opt_level; 00119 BOOL CG_localize_tns = FALSE; 00120 BOOL CG_localize_tns_Set = FALSE; 00121 #ifdef TARG_X8664 00122 BOOL CG_localize_x87_tns = FALSE; 00123 BOOL CG_localize_x87_tns_Set = FALSE; 00124 BOOL CG_x87_store = FALSE; 00125 #endif 00126 #ifdef TARG_IA64 00127 BOOL CG_Enable_Ldxmov_Support = TRUE; 00128 #endif 00129 BOOL LOCALIZE_using_stacked_regs = TRUE; 00130 BOOL CG_unique_exit = TRUE; 00131 00132 BOOL CG_enable_feedback = TRUE; 00133 BOOL CG_enable_reverse_if_conversion = TRUE; 00134 BOOL CG_enable_reverse_if_conversion_overridden = FALSE; 00135 BOOL CG_enable_spec_imul = TRUE; 00136 BOOL CG_enable_spec_idiv = FALSE; 00137 BOOL CG_enable_spec_fdiv = TRUE; 00138 BOOL CG_enable_spec_fsqrt = TRUE; 00139 BOOL CG_enable_spec_imul_overridden = FALSE; 00140 BOOL CG_enable_spec_idiv_overridden = FALSE; 00141 BOOL CG_enable_spec_fdiv_overridden = FALSE; 00142 BOOL CG_enable_spec_fsqrt_overridden = FALSE; 00143 BOOL CG_create_madds = TRUE; 00144 INT32 CG_maxinss = CG_maxinss_default; 00145 INT32 CG_maxblocks = 30; 00146 BOOL GRA_LIVE_Phase_Invoked = FALSE; 00147 BOOL CFLOW_Enable = TRUE; 00148 BOOL CFLOW_opt_before_cgprep = TRUE; 00149 BOOL CFLOW_opt_after_cgprep = TRUE; 00150 BOOL CFLOW_Enable_Unreachable = TRUE; 00151 BOOL CFLOW_Enable_Branch = TRUE; 00152 BOOL CFLOW_Enable_Merge = TRUE; 00153 BOOL CFLOW_Enable_Reorder = FALSE; 00154 BOOL CFLOW_Enable_Freq_Order = TRUE; 00155 #ifdef KEY 00156 BOOL CFLOW_Enable_Freq_Order_On_Heuristics = FALSE; 00157 #endif 00158 BOOL CFLOW_Enable_Clone = TRUE; 00159 BOOL CFLOW_opt_all_br_to_bcond = FALSE; 00160 const char *CFLOW_heuristic_tolerance; 00161 const char *CFLOW_feedback_tolerance; 00162 UINT32 CFLOW_clone_incr=10; 00163 UINT32 CFLOW_clone_min_incr = 15; 00164 UINT32 CFLOW_clone_max_incr = 100; 00165 const char *CFLOW_cold_threshold; 00166 00167 BOOL FREQ_enable = TRUE; 00168 BOOL FREQ_view_cfg = FALSE; 00169 const char *FREQ_frequent_never_ratio = "1000.0"; 00170 const char *FREQ_eh_freq = "0.1"; 00171 #ifdef KEY 00172 const char *FREQ_non_local_targ_freq = "0.1"; 00173 #endif 00174 00175 BOOL CG_enable_rename = TRUE; 00176 BOOL CG_enable_prefetch = FALSE; 00177 BOOL CG_enable_z_conf_prefetch = FALSE; 00178 BOOL CG_enable_nz_conf_prefetch = FALSE; 00179 BOOL CG_enable_pf_L1_ld = FALSE; 00180 BOOL CG_enable_pf_L1_st = FALSE; 00181 BOOL CG_enable_pf_L2_ld = FALSE; 00182 BOOL CG_enable_pf_L2_st = FALSE; 00183 BOOL CG_exclusive_prefetch = FALSE; 00184 00185 INT32 CG_L1_ld_latency = 0; 00186 INT32 CG_L2_ld_latency = 0; 00187 INT32 CG_z_conf_L1_ld_latency = 0; 00188 INT32 CG_z_conf_L2_ld_latency = 0; 00189 INT32 CG_ld_latency = 0; 00190 INT32 CG_L1_pf_latency = 12; 00191 INT32 CG_L2_pf_latency = 12; 00192 00193 INT32 CG_branch_mispredict_penalty= -1; /* means not set */ 00194 INT32 CG_branch_mispredict_factor= -1; /* means not set */ 00195 00196 BOOL CGSPILL_Rematerialize_Constants = TRUE; 00197 BOOL CGSPILL_Enable_Force_Rematerialization = FALSE; 00198 00199 #ifdef TARG_IA64 00200 BOOL CG_enable_thr = TRUE; 00201 BOOL CG_cond_defs_allowed = TRUE; 00202 BOOL LOCS_Enable_Bundle_Formation = TRUE; 00203 BOOL CG_tail_call = FALSE; 00204 BOOL GCM_Speculative_Loads = FALSE; 00205 BOOL GCM_Predicated_Loads = TRUE; 00206 BOOL CG_tune_do_loop = TRUE; 00207 #else 00208 BOOL CG_enable_thr = FALSE; 00209 BOOL CG_cond_defs_allowed = FALSE; 00210 BOOL LOCS_Enable_Bundle_Formation = FALSE; 00211 #if defined(TARG_MIPS) && !defined(TARG_SL) 00212 BOOL CG_tail_call = FALSE; 00213 #else 00214 BOOL CG_tail_call = TRUE; 00215 #endif 00216 BOOL GCM_Speculative_Loads = FALSE; 00217 BOOL GCM_Predicated_Loads = FALSE; 00218 #endif 00219 BOOL LOCS_PRE_Enable_Scheduling = TRUE; 00220 BOOL LOCS_POST_Enable_Scheduling = TRUE; 00221 BOOL LOCS_Enable_Scheduling = TRUE; 00222 BOOL IGLS_Enable_HB_Scheduling = TRUE; 00223 BOOL IGLS_Enable_PRE_HB_Scheduling = FALSE; 00224 BOOL IGLS_Enable_POST_HB_Scheduling = TRUE; 00225 BOOL IGLS_Enable_All_Scheduling = TRUE; 00226 #ifdef TARG_SL 00227 BOOL RGN_Enable_All_Scheduling = TRUE; 00228 const char* App_Name; 00229 const char* Cand_List_Pattern = "mi"; 00230 BOOL CG_SL2_enable_combine_condmv = TRUE; 00231 BOOL CG_SL2_enable_peephole = TRUE; 00232 BOOL CG_SL2_enable_v1buf_expansion = TRUE; 00233 BOOL CG_Enable_Macro_Instr_Combine = TRUE; 00234 00235 /* CG_zdl_enabled_level : The enabled levels counting from inside to 00236 * outside. 00237 * CG_zdl_skip_e : the sequential number of loops that wont be 00238 * zdl'ed. The sequential number is counted for 00239 * each compilation unit. 00240 * CG_zdl_skip_a/b : the loops whose sequential number bigger than 00241 * (or smaller than) this will be ignored, not 00242 * including this number. 00243 * The sequentional number of loops beginnes from 1, not 0. 00244 */ 00245 BOOL CG_enable_zero_delay_loop = TRUE; 00246 UINT32 CG_zdl_enabled_level = 2; // default value is 2 00247 UINT32 CG_zdl_skip_e = 0; 00248 UINT32 CG_zdl_skip_a = INT32_MAX; 00249 UINT32 CG_zdl_skip_b = 0; 00250 BOOL CG_enable_opt_condmv = TRUE; 00251 #endif 00252 BOOL CG_enable_loop_optimizations = TRUE; 00253 BOOL GCM_Motion_Across_Calls = TRUE; 00254 BOOL GCM_Min_Reg_Usage = TRUE; 00255 BOOL GCM_Pointer_Spec= TRUE; 00256 BOOL GCM_Eager_Ptr_Deref = TRUE; 00257 BOOL GCM_Test = FALSE; 00258 BOOL GCM_Enable_Cflow = TRUE; 00259 BOOL GCM_PRE_Enable_Scheduling = TRUE; 00260 BOOL GCM_POST_Enable_Scheduling = TRUE; 00261 BOOL GCM_Enable_Scheduling = TRUE; 00262 BOOL CGTARG_Enable_Brlikely = TRUE; 00263 #ifdef TARG_X8664 00264 BOOL Enable_Fill_Delay_Slots = FALSE; 00265 BOOL GCM_Enable_Fill_Delay_Slots = FALSE; 00266 BOOL CG_use_movlpd = TRUE; 00267 BOOL CG_use_setcc = TRUE; 00268 BOOL CG_use_short_form = FALSE; 00269 UINT64 CG_p2align_freq = 10000; 00270 UINT32 CG_p2align_max_skip_bytes = 3; 00271 UINT32 CG_movnti = 1000; 00272 BOOL CG_use_incdec = FALSE; 00273 BOOL CG_use_xortozero = TRUE; // bug 8592 00274 BOOL CG_use_xortozero_Set = FALSE; 00275 BOOL CG_use_test = FALSE; 00276 BOOL CG_fold_shiftadd = FALSE; 00277 BOOL CG_use_prefetchnta = FALSE; 00278 BOOL CG_idivbyconst_opt = TRUE; 00279 BOOL CG_fold_constimul = TRUE; 00280 BOOL CG_LOOP_cloop = TRUE; 00281 BOOL CG_use_lddqu = FALSE; 00282 BOOL CG_push_pop_int_saved_regs = FALSE; 00283 BOOL CG_push_pop_int_saved_regs_Set = FALSE; 00284 UINT32 CG_ptr_load_use_latency = 4; 00285 #else 00286 #if defined(TARG_SL) 00287 BOOL Enable_Fill_Delay_Slots = FALSE; 00288 BOOL GCM_Enable_Fill_Delay_Slots = FALSE; 00289 #else 00290 BOOL Enable_Fill_Delay_Slots = TRUE; 00291 BOOL GCM_Enable_Fill_Delay_Slots = TRUE; 00292 #endif 00293 #endif 00294 const char *CGTARG_Branch_Taken_Prob = NULL; 00295 double CGTARG_Branch_Taken_Probability; 00296 BOOL CGTARG_Branch_Taken_Prob_overridden; 00297 00298 BOOL EMIT_pjump_all = TRUE; 00299 BOOL EMIT_use_cold_section = TRUE; 00300 BOOL EMIT_interface_section = TRUE; 00301 BOOL EMIT_stop_bits_for_asm = TRUE; 00302 BOOL EMIT_stop_bits_for_volatile_asm = FALSE; 00303 BOOL EMIT_explicit_bundles = TRUE; 00304 INT32 EMIT_Long_Branch_Limit = DEFAULT_LONG_BRANCH_LIMIT; 00305 00306 INT32 CGEXP_expandconstant = DEFAULT_CGEXP_CONSTANT; 00307 BOOL CGEXP_use_copyfcc = TRUE; 00308 BOOL CGEXP_normalize_logical = FALSE; 00309 BOOL CGEXP_gp_prolog_call_shared = TRUE; 00310 BOOL CGEXP_fast_imul = TRUE; 00311 BOOL CGEXP_float_consts_from_ints = TRUE; 00312 #if defined(TARG_SL) 00313 BOOL CGEXP_cvrt_int_div_to_mult = FALSE; 00314 BOOL CGEXP_cvrt_int_div_to_fdiv = FALSE; 00315 BOOL CG_Gen_16bit = TRUE; 00316 BOOL CG_Enable_br16 = TRUE; 00317 INT32 CG_localsch_pre_size = 1; 00318 BOOL CG_dsp_thread = FALSE; // dsp thread in sl1 00319 BOOL CG_check_quadword = TRUE; 00320 BOOL CG_rep_unpaired16 = TRUE; 00321 BOOL CG_ignore_mem_alias = FALSE; 00322 BOOL CG_stack_layout = TRUE; 00323 INT32 CG_ISR = 1; 00324 INT32 CG_Max_Accreg = 4; 00325 INT32 CG_Max_Addreg = 8; 00326 BOOL CG_round_spreg = TRUE; 00327 BOOL CG_check_packed = TRUE; 00328 #else 00329 BOOL CGEXP_cvrt_int_div_to_mult = TRUE; 00330 BOOL CGEXP_cvrt_int_div_to_fdiv = TRUE; 00331 #endif 00332 BOOL CGEXP_opt_float_div_by_const = TRUE; 00333 #ifdef KEY 00334 BOOL CGEXP_cvrt_int_mult_to_add_shift = TRUE; 00335 #endif 00336 00337 const char *CGEXP_lfhint_L1; 00338 const char *CGEXP_lfhint_L2; 00339 const char *CGEXP_ldhint_L1; 00340 const char *CGEXP_ldhint_L2; 00341 const char *CGEXP_sthint_L1; 00342 const char *CGEXP_sthint_L2; 00343 00344 BOOL LRA_do_reorder = FALSE; 00345 #ifdef TARG_SL2 00346 BOOL Enable_Checking_Register_Allocation = TRUE; 00347 BOOL CG_sl2 = FALSE; 00348 #endif 00349 #ifdef TARG_X8664 00350 BOOL LRA_prefer_legacy_regs = FALSE; 00351 #endif 00352 #ifdef KEY 00353 BOOL LRA_prefer_lru_reg = TRUE; // bug 14303 00354 BOOL LRA_prefer_lru_reg_Set = FALSE; 00355 INT32 LRA_inflate_reg_request = 0; 00356 INT32 LRA_inflate_reg_request_Set = FALSE; 00357 #endif 00358 00359 BOOL GRA_use_old_conflict = FALSE; 00360 BOOL GRA_shrink_wrap = TRUE; 00361 BOOL GRA_loop_splitting = TRUE; 00362 #ifdef TARG_IA64 00363 BOOL GRA_home = FALSE; 00364 #else 00365 BOOL GRA_home = TRUE; 00366 #endif 00367 BOOL GRA_remove_spills = TRUE; 00368 BOOL GRA_preference_globals = TRUE; 00369 BOOL GRA_preference_dedicated = TRUE; 00370 BOOL GRA_preference_glue = TRUE; 00371 BOOL GRA_preference_all = TRUE; 00372 BOOL GRA_ensure_spill_proximity = TRUE; 00373 BOOL GRA_choose_best_split = TRUE; 00374 BOOL GRA_use_stacked_regs = TRUE; 00375 BOOL GRA_redo_liveness = FALSE; 00376 BOOL GRA_recalc_liveness = FALSE; 00377 INT32 GRA_non_home_hi = -1; 00378 INT32 GRA_non_home_lo = INT32_MAX; 00379 const char* GRA_call_split_freq_string = "0.1"; 00380 const char* GRA_spill_count_factor_string = "0.5"; 00381 #ifdef KEY 00382 BOOL GRA_exclude_callee_saved_regs = FALSE; 00383 BOOL GRA_eh_exclude_callee_saved_regs = FALSE; 00384 BOOL GRA_fp_exclude_callee_saved_regs = FALSE; 00385 #endif 00386 00387 #ifdef KEY 00388 // By default OFF, unless specified by the user 00389 BOOL HB_formation = FALSE; 00390 INT32 HB_if_conversion_cut_off = 10; 00391 #else 00392 BOOL HB_formation = TRUE; 00393 #endif 00394 #if defined(TARG_SL) || defined(TARG_IA64) 00395 BOOL CG_Enable_REGION_formation = FALSE; 00396 BOOL CG_Enable_Regional_Global_Sched = FALSE; 00397 BOOL CG_Enable_Regional_Local_Sched = TRUE; 00398 BOOL CG_Enable_Include_Memread_Arc = FALSE; 00399 #endif 00400 00401 BOOL HB_static_freq_heuristics = TRUE; 00402 INT HB_max_blocks = 20; 00403 const char* HB_max_sched_growth = "4.1"; 00404 const char* HB_min_path_priority_ratio = "0.05"; 00405 const char* HB_min_priority = "0.002"; 00406 const char* HB_call_hazard_multiplier = "0.25"; 00407 const char* HB_memory_hazard_multiplier = "1.0"; 00408 const char* HB_base_probability_contribution = "0.1"; 00409 BOOL HB_require_alias = TRUE; 00410 BOOL HB_loops = FALSE; 00411 BOOL HB_general_use_pq = FALSE; 00412 BOOL HB_general_from_top = FALSE; 00413 BOOL HB_allow_tail_duplication = FALSE; 00414 BOOL HB_exclude_calls = FALSE; 00415 BOOL HB_exclude_pgtns = TRUE; // until bugs fixed 00416 #ifdef TARG_IA64 00417 BOOL HB_skip_hammocks = TRUE; // until bugs fixed 00418 #else 00419 BOOL HB_skip_hammocks = FALSE; 00420 #endif 00421 BOOL HB_simple_ifc = TRUE; 00422 BOOL HB_simple_ifc_set = FALSE; 00423 INT HB_min_blocks = 2; 00424 BOOL GRA_LIVE_Predicate_Aware = FALSE; 00425 00426 /* Recurrence Breaking flags */ 00427 #if defined(TARG_IA64) || defined(TARG_MIPS) 00428 BOOL CG_LOOP_fix_recurrences = TRUE; 00429 #else 00430 // Disable fix recurrence because CG_DEF_Op_Opnd_Changed 00431 // is no longer supported for MIPS. 00432 // 00433 BOOL CG_LOOP_fix_recurrences = FALSE; 00434 #endif 00435 00436 BOOL CG_LOOP_fix_recurrences_specified = FALSE; 00437 BOOL CG_LOOP_back_substitution = TRUE; 00438 BOOL CG_LOOP_back_substitution_specified = FALSE; 00439 BOOL CG_LOOP_back_substitution_variant = TRUE; 00440 BOOL CG_LOOP_back_substitution_variant_specified = FALSE; 00441 BOOL CG_LOOP_interleave_reductions = TRUE; 00442 BOOL CG_LOOP_interleave_reductions_specified = FALSE; 00443 BOOL CG_LOOP_interleave_posti = TRUE; 00444 BOOL CG_LOOP_interleave_posti_specified = FALSE; 00445 BOOL CG_LOOP_reassociate = TRUE; 00446 BOOL CG_LOOP_reassociate_specified = FALSE; 00447 INT32 CG_LOOP_recurrence_min_omega = 0; 00448 #ifdef TARG_IA64 00449 INT32 CG_LOOP_recurrence_max_omega = 16; // ia64 00450 #else 00451 INT32 CG_LOOP_recurrence_max_omega = 4; // mips 00452 #endif 00453 #ifdef KEY 00454 BOOL LOCS_Best = FALSE; 00455 BOOL LOCS_Best_set = FALSE; 00456 BOOL LOCS_Fwd_Scheduling = FALSE; 00457 BOOL LOCS_Fwd_Scheduling_set = FALSE; 00458 UINT32 LOCS_Scheduling_Algorithm = 0; 00459 BOOL LOCS_Scheduling_Algorithm_set = FALSE; 00460 BOOL LOCS_Reduce_Prefetch = FALSE; 00461 BOOL LOCS_Reduce_Prefetch_set = FALSE; 00462 BOOL LOCS_Shallow_Depth = FALSE; 00463 BOOL LOCS_Shallow_Depth_set = FALSE; 00464 BOOL LOCS_Balance_Ready_Types = FALSE; 00465 BOOL LOCS_Balance_Ready_Types_set = FALSE; 00466 BOOL LOCS_Balance_Unsched_Types = FALSE; 00467 BOOL LOCS_Balance_Unsched_Types_set = FALSE; 00468 UINT32 LOCS_Balance_Ready_Int = 80; 00469 BOOL LOCS_Balance_Ready_Int_set = FALSE; 00470 UINT32 LOCS_Balance_Ready_Fp = 40; 00471 BOOL LOCS_Balance_Ready_Fp_set = FALSE; 00472 UINT32 LOCS_Balance_Unsched_Int = 40; 00473 BOOL LOCS_Balance_Unsched_Int_set = FALSE; 00474 UINT32 LOCS_Balance_Unsched_Fp = 60; 00475 BOOL LOCS_Balance_Unsched_Fp_set = FALSE; 00476 BOOL CG_min_spill_loc_size = FALSE; 00477 #if defined(TARG_SL) || defined(TARG_IA64) 00478 BOOL CG_min_stack_size = FALSE; 00479 #else 00480 BOOL CG_min_stack_size = TRUE; 00481 #endif 00482 BOOL flag_test_coverage = FALSE; 00483 OPTION_LIST *Arc_Profile_Region = NULL; 00484 INT32 CG_cse_regs = INT32_MAX - 1000; 00485 INT32 CG_sse_cse_regs = INT32_MAX - 1000; 00486 #endif 00487 #ifdef TARG_X8664 00488 INT32 CG_sse_load_execute = 0; 00489 INT32 CG_load_execute = 1; 00490 BOOL CG_loadbw_execute = FALSE; 00491 BOOL CG_p2align = FALSE; 00492 BOOL CG_valgrind_friendly = TRUE; 00493 #endif 00494 00495 // temporary flags for controlling algorithm selection for fdiv, sqrt, etc 00496 const char *CGEXP_fdiv_algorithm = "sgi"; 00497 const char *CGEXP_sqrt_algorithm = "sgi"; 00498 00499 // Cycle Count Flags 00500 BOOL CG_Enable_Cycle_Count = FALSE; 00501 BOOL Cycle_PU_Enable = FALSE; 00502 BOOL Cycle_BB_Enable = FALSE; 00503 const char *Cycle_String = ""; 00504 00505 #ifdef TARG_NVISA 00506 // treat auto stack variables as statics put in local space 00507 BOOL CGEXP_auto_as_static = TRUE; 00508 BOOL CGEXP_gen_ccodes = TRUE; 00509 00510 BOOL CG_vector_loadstore = TRUE; // emit vector loads and stores 00511 00512 BOOL CG_rematerialize_grf = TRUE; 00513 00514 BOOL CG_remove_typeconv = FALSE; // type conversion removal optimization 00515 00516 BOOL CG_optimize_copies = FALSE; // leave off as OCG seems to handle this now 00517 00518 BOOL CG_use_16bit_ops = TRUE; // try to replace 32bit ops with 16bit ops 00519 BOOL CG_skip_local_16bit = FALSE; 00520 #endif
1.5.6