#include <stdint.h>#include <alloca.h>#include "defs.h"#include "config.h"#include "mempool.h"#include "tracing.h"#include "timing.h"#include "cgir.h"#include "cg.h"#include "cg_flags.h"#include "cgprep.h"#include "ttype.h"#include "targ_sim.h"#include "bb.h"#include "variants.h"#include "bitset.h"#include "bb_set.h"#include "freq.h"#include "cgtarget.h"#include "cxx_memory.h"#include "whirl2ops.h"#include "dominate.h"#include "findloops.h"#include "cg_vector.h"#include "hb_sched.h"#include "reg_live.h"#include "gcm.h"#include "glob.h"#include "cflow.h"#include "tn_set.h"#include "cgemit.h"#include "gtn_universe.h"#include "gtn_set.h"#include "gra_live.h"#include "tn_map.h"#include "cg_sched_est.h"#include "cg_loop.h"#include "pf_cg.h"#include "targ_proc_properties.h"#include "tag.h"#include <utility>#include <map>

Go to the source code of this file.
Defines | |
| #define | __STDC_LIMIT_MACROS |
| #define | SPEC_NONE 0x00 |
| #define | SPEC_EAGER_PTR 0x01 |
| #define | SPEC_EAGER_NULL_PTR 0x02 |
| #define | SPEC_CIRC_PTR_ABOVE 0x04 |
| #define | SPEC_CSAFE_PTR 0x08 |
| #define | SPEC_DSAFE_PTR 0x10 |
| #define | SPEC_CDSAFE_PTR (SPEC_CSAFE_PTR | SPEC_DSAFE_PTR) |
| #define | SPEC_PSAFE_PTR 0x20 |
| #define | EAGER_NONE(o) ((o) & SPEC_NONE) |
| #define | Set_EAGER_NONE(o) ((o) |= SPEC_NONE) |
| #define | Reset_EAGER_NONE(o) ((o) &= ~SPEC_NONE) |
| #define | EAGER_PTR_SPEC(o) ((o) & SPEC_EAGER_PTR) |
| #define | Set_EAGER_PTR_SPEC(o) ((o) |= SPEC_EAGER_PTR) |
| #define | Reset_EAGER_PTR_SPEC(o) ((o) &= ~SPEC_EAGER_PTR) |
| #define | EAGER_NULL_PTR_SPEC(o) ((o) & SPEC_EAGER_NULL_PTR) |
| #define | Set_EAGER_NULL_PTR_SPEC(o) ((o) |= SPEC_EAGER_NULL_PTR) |
| #define | Reset_EAGER_NULL_PTR_SPEC(o) ((o) &= ~SPEC_EAGER_NULL_PTR) |
| #define | CIRC_PTR_SPEC(o) ((o) & SPEC_CIRC_PTR_ABOVE) |
| #define | Set_CIRC_PTR_SPEC(o) ((o) |= SPEC_CIRC_PTR_ABOVE) |
| #define | Reset_CIRC_PTR_SPEC(o) ((o) &= ~SPEC_CIRC_PTR_ABOVE) |
| #define | CSAFE_PTR_SPEC(o) ((o) & SPEC_CSAFE_PTR) |
| #define | Set_CSAFE_PTR_SPEC(o) ((o) |= SPEC_CSAFE_PTR) |
| #define | Reset_CSAFE_PTR_SPEC(o) ((o) &= ~SPEC_CSAFE_PTR) |
| #define | DSAFE_PTR_SPEC(o) ((o) & SPEC_DSAFE_PTR) |
| #define | Set_DSAFE_PTR_SPEC(o) ((o) |= SPEC_DSAFE_PTR) |
| #define | Reset_DSAFE_PTR_SPEC(o) ((o) &= ~SPEC_DSAFE_PTR) |
| #define | CDSAFE_PTR_SPEC(o) ((o) & SPEC_CDSAFE_PTR) |
| #define | Set_CDSAFE_PTR_SPEC(o) ((o) |= SPEC_CDSAFE_PTR) |
| #define | Reset_CDSAFE_PTR_SPEC(o) ((o) &= ~SPEC_CDSAFE_PTR) |
| #define | PSAFE_PTR_SPEC(o) ((o) & SPEC_PSAFE_PTR) |
| #define | Set_PSAFE_PTR_SPEC(o) ((o) |= SPEC_PSAFE_PTR) |
| #define | Reset_PSAFE_PTR_SPEC(o) ((o) &= ~SPEC_PSAFE_PTR) |
| #define | BB_cycle_set(bb) ((BS *)BB_MAP_Get(bb_cycle_set_map, (bb))) |
| #define | Set_BB_cycle_set(bb, bs) (BB_MAP_Set(bb_cycle_set_map, (bb), (bs))) |
| #define | Large_BB(bb, loop) |
| #define | Null_Ptr_Offset_ok(op) OP_Offset_Within_Limit(op, -1, 256) |
Functions/Subroutines | |
| static INT | sort_by_bb_frequency (const void *bb1, const void *bb2) |
| static INT | sort_by_edge_probability (const void *bl1, const void *bl2) |
| static INT | sort_by_bb_live_in (const void *bb1, const void *bb2) |
| static BOOL | Is_BB_Empty (BB *bb) |
| static void | Print_Trace_File (OP *cand_op, BB *src_bb, BB *cand_bb, BOOL success) |
| static BOOL | OP_Is_Expensive (OP *cur_op) |
| static OP * | First_Inst_Of_BB (BB *bb) |
| BOOL | within_bounds (INT num1, INT num2, INT lower_bound, INT upper_bound) |
| static BOOL | OP_Offset_Within_Limit (OP *mem_op1, OP *mem_op2, INT lower_bound, INT upper_bound) |
| static BOOL | Check_If_Ignore_BB (BB *bb, LOOP_DESCR *loop) |
| BOOL | Similar_Ptr_Offset_ok (OP *cur_op, OP *deref_op) |
| static BOOL | Similar_Ptr_Addrs_Match (OP *pred_op, OP *succ_op) |
| static BOOL | OP_Has_Restrictions (OP *op, BB *source_bb, BB *target_bb, mINT32 motion_type) |
| BOOL | Can_Do_Safe_Predicate_Movement (OP *cur_op, BB *src_bb, BB *tgt_bb, mINT32 motion_type) |
| static BOOL | Eager_Ptr_Deref_Spec (OP *deref_op, BB *dest_bb, BOOL forw) |
| static BOOL | Null_Ptr_Deref_Spec (OP *deref_op, BB *src, BB *dest) |
| static BOOL | Can_Mem_Op_Be_Moved (OP *mem_op, BB *cur_bb, BB *src_bb, BB *dest_bb, mINT32 motion_type) |
| static BOOL | Can_Inst_Be_Moved (OP *op, VECTOR succs_vector, INT succ_num) |
| static INT16 | Find_Vacant_Slots_BB (BB *bb, INT targ_alignment) |
| static OP * | Find_OP_For_Delay_Slot (BB *bb) |
| static BOOL | Fill_From_Successor (BB *bb, OP *xfer_op, VECTOR succs_vector, INT succ_num) |
| void | GCM_Fill_Branch_Delay_Slots (void) |
| static OP * | Find_Limit_OP (OP *cur_op, BB *cur_bb, BB *src_bb, BB *tgt_bb) |
| static BOOL | Can_OP_Move (OP *cur_op, BB *src_bb, BB *tgt_bb, BB_SET **pred_bbs, void *defs[2], void *uses[2], mINT32 motion_type, mUINT8 *spec_type) |
| static BOOL | GTN_Live_Out_From_BB (BB *cand_bb, TN *use_tn) |
| static void | Update_Live_In_Sets (TN *use_tn, BB *src_bb, BB *tgt_bb, BB_SET **pred_bbs) |
| static void | Update_Live_Use_Counts (BB *cur_bb, OP *cur_op, hTN_MAP *usage_map) |
| static void | Update_GRA_Live_Sets (OP *cand_op, BB *bb, BB *cand_bb, BB_SET **pred_bbs) |
| static BOOL | Is_OP_Move_Better (OP *cur_op, OP *best_op, mINT32 motion_type) |
| static mINT32 | Determine_Motion_Type (LOOP_DESCR *loop, BB *bb, BBSCH *bbsch) |
| static void | Determine_Candidate_Blocks (BB *bb, LOOP_DESCR *loop, mINT32 motion_type, VECTOR *priority_vector, VECTOR *cand_bbvector) |
| static void | Perform_Post_GCM_Steps (BB *bb, BB *cand_bb, OP *cand_op, mINT32 motion_type, mUINT8 spec_type, BB_SET **pred_bbs, LOOP_DESCR *loop, BOOL success) |
| static void | Add_Fail_TNs (OP *cur_op, TN_SET **pfailed_tn_uses, TN_SET **pfailed_tn_defs, TN_SET **pfailed_gtn_uses, TN_SET **pfailed_gtn_defs, REGISTER_SET *failed_reg_uses, REGISTER_SET *failed_reg_defs) |
| static OP * | OP_To_Move (BB *bb, BB *tgt_bb, BB_SET **pred_bbs, mINT32 motion_type, mUINT8 *spec_type) |
| static void | Adjust_Qualifying_Predicate (OP *cand_op, BB *src_bb, BB *tgt_bb, mINT32 motion_type, mUINT8 spec_type) |
| static BOOL | Dependent_Between_OPs (OP *op_a, OP *op_b) |
| static BOOL | Append_Op_To_BB (OP *cand_op, BB *cand_bb, BB *src_bb, mINT32 motion_type, mUINT8 spec_type) |
| static void | Adjust_BBSCH (OP *cand_op, BB *cand_bb, BB *bb, BBSCH *new_cand_bbsch, BBSCH *new_bbsch) |
| static BOOL | Is_Schedule_Worse (BB *bb, BB *cand_bb, BBSCH *new_bbsch, BBSCH *new_cand_bbsch, BBSCH *old_bbsch, BBSCH *old_cand_bbsch) |
| static BBSCH * | Schedule_BB_For_GCM (BB *bb, HBS_TYPE hb_type, HB_Schedule **Sched) |
| static void | Visit_BB_Preds (BB *bb, BB *head, BB_SET *loop_bbs, INT icycle, INT ncycles) |
| static INT | GCM_For_Loop (LOOP_DESCR *loop, BB_SET *processed_bbs, HBS_TYPE hb_type) |
| void | GCM_Schedule_Region (HBS_TYPE hbs_type) |
Variables | |
| BOOL | GCM_POST_Spec_Loads = TRUE |
| BOOL | GCM_PRE_Spec_Loads = TRUE |
| BOOL | GCM_Use_Sched_Est = FALSE |
| BOOL | GCM_Forw_Circ_Motion = TRUE |
| BOOL | GCM_POST_Force_Scheduling = FALSE |
| BOOL | CG_Skip_GCM = FALSE |
| INT32 | GCM_From_BB = -1 |
| INT32 | GCM_To_BB = -1 |
| INT32 | GCM_Result_TN = -1 |
| INT32 | loop_id |
| static float | speculation_ratio_wfb = 0.35 |
| static float | speculation_ratio_fb = 0.75 |
| static BOOL | Trace_GCM = FALSE |
| static BOOL | Trace_GCM_Reg_Usage = FALSE |
| static BOOL | Trace_Fill_Delay_Slots = FALSE |
| static BOOL | GCM_Internal_Flag = TRUE |
| static BOOL | Trace_GCM_Dump_IR = FALSE |
| static BOOL | Trace_GCM_Dump_Preprocess = FALSE |
| static BOOL | Trace_GCM_Merge_BBs = FALSE |
| static BB * | GCM_Loop_Prolog |
| static INT32 | mispredict |
| static INT32 | fixed |
| static INT32 | taken |
| static double | times |
| static BB_MAP | bbsch_map |
| static MEM_POOL | loop_descr_pool |
| static MEM_POOL | gcm_loop_pool |
| static HBS_TYPE | cur_hbs_type |
| static BB_MAP | bb_cycle_set_map |
| static BOOL | Run_Cflow_Delay |
| BOOL | Run_Cflow_GCM |
| GCM_TYPE | Cur_Gcm_Type |
| static BOOL | Ignore_TN_Dep |
| static INT | cur_pc = 0 |
| #define BB_cycle_set | ( | bb | ) | ((BS *)BB_MAP_Get(bb_cycle_set_map, (bb))) |
Definition at line 142 of file gcm.cxx.
Referenced by CGTARG_Can_Be_Speculative(), CGTARG_Check_OP_For_HB_Suitability(), OPCODE_Can_Be_Speculative(), and TOP_Can_Be_Speculative().
Value:
(LOOP_DESCR_nestlevel((loop)) == 0 && \ BB_length((bb)) >= (Split_BB_Length/2 - 60))
Definition at line 452 of file gcm.cxx.
Referenced by Check_If_Ignore_BB(), and GCM_For_Loop().
Definition at line 163 of file gcm.cxx.
Referenced by Adjust_Qualifying_Predicate(), and Perform_Post_GCM_Steps().
| #define Set_BB_cycle_set | ( | bb, | |||
| bs | ) | (BB_MAP_Set(bb_cycle_set_map, (bb), (bs))) |
| #define SPEC_CDSAFE_PTR (SPEC_CSAFE_PTR | SPEC_DSAFE_PTR) |
| #define SPEC_CIRC_PTR_ABOVE 0x04 |
| #define SPEC_CSAFE_PTR 0x08 |
| #define SPEC_DSAFE_PTR 0x10 |
| #define SPEC_EAGER_NULL_PTR 0x02 |
| #define SPEC_EAGER_PTR 0x01 |
| #define SPEC_NONE 0x00 |
Definition at line 133 of file gcm.cxx.
Referenced by Can_OP_Move(), SCHED_SPEC_HANDSHAKE::Change_Load_Spec_Form(), SCHEDULER::Collect_And_Analyse_Unresolved_Dep(), SCHEDULER::Commit_Schedule(), Derive_Spec_Type_If_Violate_Dep(), SCHEDULER::Get_OP_Prohibited_Spec_Type(), CANDIDATE::Get_Up_to_Date_Spec_Type(), SCHEDULER::Identify_Cannot_Spec_OPs(), UNRESOLVED_DEP::Init(), CANDIDATE::Init(), CANDIDATE::Is_Spec(), SCHED_SPEC_HANDSHAKE::OP_Can_not_be_Candidate(), and FAVOR_DELAY_HEUR::Upward_Spec_Global_Sched_Is_Profitable().
| #define SPEC_PSAFE_PTR 0x20 |
| static void Add_Fail_TNs | ( | OP * | cur_op, | |
| TN_SET ** | pfailed_tn_uses, | |||
| TN_SET ** | pfailed_tn_defs, | |||
| TN_SET ** | pfailed_gtn_uses, | |||
| TN_SET ** | pfailed_gtn_defs, | |||
| REGISTER_SET * | failed_reg_uses, | |||
| REGISTER_SET * | failed_reg_defs | |||
| ) | [static] |
Definition at line 3206 of file gcm.cxx.
References GTN_UNIVERSE_size, i, Ignore_TN_Dep, INT, Last_TN, MEM_local_pool, OP_opnd, OP_opnds, OP_result, OP_results, REGISTER_SET_Union1(), REGSET_CLEAR(), REGSET_OR(), TN_is_constant, TN_is_global_reg, TN_register, and TN_register_class.
Referenced by OP_To_Move().
| static void Adjust_BBSCH | ( | OP * | cand_op, | |
| BB * | cand_bb, | |||
| BB * | bb, | |||
| BBSCH * | new_cand_bbsch, | |||
| BBSCH * | new_bbsch | |||
| ) | [static] |
Definition at line 3791 of file gcm.cxx.
References BB_live_out, BBSCH_global_regcost, BBSCH_local_regcost, i, INT, OP_has_result, OP_opnd, OP_opnds, OP_result, TN_is_constant, and TN_is_global_reg.
Referenced by GCM_For_Loop().
| static void Adjust_Qualifying_Predicate | ( | OP * | cand_op, | |
| BB * | src_bb, | |||
| BB * | tgt_bb, | |||
| mINT32 | motion_type, | |||
| mUINT8 | spec_type | |||
| ) | [static] |
Definition at line 3641 of file gcm.cxx.
References BB_Fall_Thru_Successor(), BB_xfer_op(), BOOL, CGTARG_Analyze_Compare(), CGTARG_Branches_On_True(), GCM_CIRC_ABOVE, GCM_SPEC_ABOVE, GTN_UNIVERSE_Add_TN(), OP_bb, OP_has_predicate, OP_opnd, OP_PREDICATE_OPND, OP_result, OP_results, PSAFE_PTR_SPEC, Set_OP_opnd, and TN_is_global_reg.
Referenced by Append_Op_To_BB().
| static BOOL Append_Op_To_BB | ( | OP * | cand_op, | |
| BB * | cand_bb, | |||
| BB * | src_bb, | |||
| mINT32 | motion_type, | |||
| mUINT8 | spec_type | |||
| ) | [static] |
Definition at line 3740 of file gcm.cxx.
References Adjust_Qualifying_Predicate(), BB_Append_Op(), BB_Insert_Op_Before(), BB_loop_op(), BB_xfer_op(), BOOL, Dependent_Between_OPs(), FALSE, FmtAssert, NULL, OP_code, OP_cond, succeed, and TRUE.
Referenced by GCM_For_Loop(), LOOP_INVAR_CODE_MOTION::Perform_Code_Motion(), and Perform_Post_GCM_Steps().
Definition at line 862 of file gcm.cxx.
References BB_branch_op(), BB_Unique_Source(), CGTARG_Analyze_Compare(), CGTARG_Can_Be_Speculative(), cmp_op(), FALSE, GCM_CIRC_ABOVE, GCM_SPEC_ABOVE, Ignore_TN_Dep, OP_has_predicate, OP_opnd, OP_PREDICATE_OPND, OP_result, OP_results, r0, TN_is_global_reg, TN_is_true_pred, and TRUE.
Referenced by Can_OP_Move().
Definition at line 1430 of file gcm.cxx.
References BBLIST_item, CGTARG_Can_Be_Speculative(), FALSE, i, INT, OP_has_hazard, OP_idiv, OP_imul, OP_result, OP_results, REG_LIVE_Into_BB(), result, TN_register, TN_register_class, TRUE, VECTOR_count, and VECTOR_element.
Referenced by Fill_From_Successor().
| static BOOL Can_Mem_Op_Be_Moved | ( | OP * | mem_op, | |
| BB * | cur_bb, | |||
| BB * | src_bb, | |||
| BB * | dest_bb, | |||
| mINT32 | motion_type | |||
| ) | [static] |
Definition at line 1216 of file gcm.cxx.
References alias, BB_call, BB_first_op, BB_last_op, BB_prev, BB_xfer_op(), BOOL, CG_DEP_Mem_Ops_Alias(), Cur_Gcm_Type, FALSE, GCM_AFTER_GRA, GCM_BEFORE_GRA, GCM_CIRC_ABOVE, GCM_DUP_ABOVE, GCM_EQUIV_FWD, GCM_POST_Spec_Loads, GCM_PRE_Spec_Loads, GCM_SPEC_ABOVE, GCM_SPEC_BELOW, Get_WN_From_Memory_OP(), Ignore_TN_Dep, Motion_Is_CIRC_ABOVE, NULL, OP_code, OP_dummy, OP_load, OP_memory, OP_next, OP_opnd, OP_prefetch, OP_prev, OP_store, OP_volatile, prev, TN_is_register, TN_number, TN_register, top, TOP, TRUE, wn, WN_MAP_Get, and WN_MAP_PREFETCH.
Referenced by Can_OP_Move().
| static BOOL Can_OP_Move | ( | OP * | cur_op, | |
| BB * | src_bb, | |||
| BB * | tgt_bb, | |||
| BB_SET ** | pred_bbs, | |||
| void * | defs[2], | |||
| void * | uses[2], | |||
| mINT32 | motion_type, | |||
| mUINT8 * | spec_type | |||
| ) | [static] |
Definition at line 1848 of file gcm.cxx.
References ASM_OP_clobber_set, ASM_OP_opnd_memory, ASM_OP_result_memory, BB_dom_set, BB_first_op, BB_id, BB_last_op, BB_live_def, BB_live_in, BB_pdom_set, BBLIST_item, BOOL, BS_MemberP(), Build_Dedicated_TN(), Can_Do_Safe_Predicate_Movement(), Can_Mem_Op_Be_Moved(), CG_DEP_Can_OP_Move_Across_Call(), CG_Skip_GCM, CGTARG_Can_Be_Speculative(), CGTARG_Is_OP_Barrier(), cl(), Eager_Ptr_Deref_Spec(), FALSE, Find_Limit_OP(), FOR_ALL_BB_SUCCS, FOR_ALL_ISA_REGISTER_CLASS(), FOR_ALL_REGISTER_SET_members, GCM_CIRC_ABOVE, GCM_DUP_ABOVE, GCM_Eager_Null_Ptr_Deref, GCM_Eager_Ptr_Deref, GCM_EQUIV_FWD, GCM_Pointer_Spec, GCM_Predicated_Loads, GCM_Result_TN, GCM_SPEC_ABOVE, GCM_SPEC_BELOW, GCM_Speculative_Loads, GCM_To_BB, GTN_UNIVERSE_size, i, Ignore_TN_Dep, INT, Is_Target_Itanium, Last_TN, MEM_local_pool, Motion_Is_CIRC_ABOVE, mUINT32, NULL, Null_Ptr_Deref_Spec(), OP_Asm_Map, OP_br, OP_call, OP_code, OP_dummy, OP_Is_Expensive(), OP_load, OP_MAP_Get(), OP_memory, OP_next, OP_opnd, OP_opnds, OP_prev, OP_result, OP_results, REG_LIVE_Into_BB(), REGISTER_SET_Union(), REGISTER_SET_Union1(), REGISTER_UNDEFINED, REGSET_CLEAR(), REGSET_INTERSECT(), result, Set_CSAFE_PTR_SPEC, Set_EAGER_NULL_PTR_SPEC, Set_EAGER_PTR_SPEC, Set_PSAFE_PTR_SPEC, SPEC_CDSAFE_PTR, SPEC_CIRC_PTR_ABOVE, SPEC_CSAFE_PTR, SPEC_DSAFE_PTR, SPEC_EAGER_NULL_PTR, SPEC_EAGER_PTR, SPEC_NONE, SPEC_PSAFE_PTR, TN_is_constant, TN_is_dedicated, TN_is_global_reg, TN_number, TN_register, TN_register_class, TRUE, and Use_Page_Zero.
Referenced by OP_To_Move(), and Perform_Global_Schedule().
| static BOOL Check_If_Ignore_BB | ( | BB * | bb, | |
| LOOP_DESCR * | loop | |||
| ) | [static] |
Definition at line 478 of file gcm.cxx.
References BB_freq, BB_length, BB_scheduled, BB_scheduled_hbs, Cur_Gcm_Type, FALSE, GCM_AFTER_GRA, GCM_POST_Force_Scheduling, Large_BB, LOOP_DESCR_nestlevel, Split_BB_Length, and TRUE.
Referenced by GCM_For_Loop().
Definition at line 3698 of file gcm.cxx.
References FALSE, i, OP_opnd, OP_opnds, OP_result, OP_results, TN_is_constant, TN_number, and TRUE.
Referenced by Append_Op_To_BB().
| static void Determine_Candidate_Blocks | ( | BB * | bb, | |
| LOOP_DESCR * | loop, | |||
| mINT32 | motion_type, | |||
| VECTOR * | priority_vector, | |||
| VECTOR * | cand_bbvector | |||
| ) | [static] |
Definition at line 2765 of file gcm.cxx.
References BB_branch_op(), BB_dom_set, BB_freq, BB_Has_One_Succ(), BB_id, BB_in_succs(), BB_length, BB_loop_head_bb, BB_pdom_set, BB_preds_len(), BB_scheduled, BB_scheduled_hbs, BB_Unique_Predecessor(), BOOL, BS_MemberP(), CG_PU_Has_Feedback, cond, FALSE, FmtAssert, GCM_CIRC_ABOVE, GCM_DUP_ABOVE, GCM_DUP_BELOW, GCM_EQUIV, GCM_EQUIV_BKWD, GCM_EQUIV_FWD, GCM_SPEC_ABOVE, GCM_SPEC_BELOW, GCM_Test, i, INT, Is_BB_Empty(), LOOP_DESCR_Find_Unique_Tail(), LOOP_DESCR_nestlevel, Motion_Is_CIRC_ABOVE, NULL, speculation_ratio_fb, speculation_ratio_wfb, TRUE, VECTOR_Add_Element(), VECTOR_count, and VECTOR_element.
Referenced by GCM_For_Loop().
| static mINT32 Determine_Motion_Type | ( | LOOP_DESCR * | loop, | |
| BB * | bb, | |||
| BBSCH * | bbsch | |||
| ) | [static] |
Get_Trace(TP_GCM, 0x0080) &&
Definition at line 2706 of file gcm.cxx.
References BB_CIRC_ABOVE, BB_EQUIV_FWD, BB_MEM_BARRIER, BB_rid, BB_SPEC_ABOVE, BB_unrolled_fully, GCM_CIRC_ABOVE, GCM_EQUIV_FWD, GCM_Forw_Circ_Motion, GCM_NONE, GCM_SPEC_ABOVE, Ignore_TN_Dep, LOOP_DESCR_Can_Retarget_Loop_Entrances(), LOOP_DESCR_loophead, mINT32, NULL, Set_BB_CIRC_ABOVE, Set_BB_EQUIV_FWD, and Set_BB_SPEC_ABOVE.
Referenced by GCM_For_Loop().
Definition at line 938 of file gcm.cxx.
References BB_first_op, BB_last_op, BOOL, CG_DEP_Can_OP_Move_Across_Call(), FALSE, i, Ignore_TN_Dep, INT, NULL, OP_call, OP_code, OP_dummy, OP_load, OP_next, OP_opnd, OP_prev, OP_result, OP_results, OP_store, result, Similar_Ptr_Addrs_Match(), Similar_Ptr_Offset_ok(), TN_register, TNs_Are_Equivalent(), and TRUE.
Referenced by Can_OP_Move().
| static BOOL Fill_From_Successor | ( | BB * | bb, | |
| OP * | xfer_op, | |||
| VECTOR | succs_vector, | |||
| INT | succ_num | |||
| ) | [static] |
Definition at line 1516 of file gcm.cxx.
References BB_Append_Op(), BB_freq, BB_id, BB_last_op, BB_Move_Op_To_End(), BB_next, BB_preds, BB_Remove_Op(), BB_rid, BB_Unique_Predecessor(), BBLIST_item, BBlist_Len(), BBLIST_prob, BOOL, Can_Inst_Be_Moved(), CGTARG_Can_Change_To_Brlikely(), CGTARG_Use_Brlikely(), Dup_OP(), FALSE, Find_OP_For_Delay_Slot(), FmtAssert, fprintf(), GCM_DUP_ABOVE, Gen_Adjusted_TN(), i, INT, Is_BB_Empty(), Is_Delay_Slot_Op(), NULL, OP_bb, OP_br, OP_call, OP_Change_Opcode(), OP_cond, OP_Has_Restrictions(), OP_ijump, OP_opnd, OP_opnds, Print_OP_No_SrcLine(), REGION_First_BB, Run_Cflow_Delay, Set_OP_opnd, single_pred(), TFile, TN_is_label, TOP, Trace_Fill_Delay_Slots, TRUE, VECTOR_count, and VECTOR_element.
Referenced by GCM_Fill_Branch_Delay_Slots().
Definition at line 1755 of file gcm.cxx.
References BB_copy_xfer_op(), BB_last_op, BB_xfer_op(), Cur_Gcm_Type, GCM_BEFORE_GRA, NULL, and OP_prev.
Referenced by Can_OP_Move().
Definition at line 1506 of file gcm.cxx.
References First_Inst_Of_BB().
Referenced by Fill_From_Successor().
Definition at line 1464 of file gcm.cxx.
References BB_loop_head_bb, BB_MAP_Get(), BB_MAP_Set(), BBLIST_item, BBSCH_bb_start_pc, BBSCH_num_real_ops, FOR_ALL_BB_PREDS, INT16, and MAX.
Referenced by GCM_For_Loop().
Definition at line 395 of file gcm.cxx.
References BB_preds, BB_succs, BBLIST_item, BBlist_Len(), FOR_ALL_BB_OPs_FWD, NULL, and OP_dummy.
Referenced by Find_OP_For_Delay_Slot().
Definition at line 1652 of file gcm.cxx.
References BB_branch_op(), BB_call, BB_exit, BB_id, BB_last_op, BB_length, BB_next, BB_rid, BB_succs, BBLIST_item, BBlist_Len(), bl, br, CFLOW_BRANCH, CFLOW_FILL_DELAY_SLOTS, CFLOW_Optimize(), CFLOW_UNREACHABLE, FALSE, Fill_From_Successor(), FOR_ALL_BB_PREDS, FOR_ALL_BB_SUCCS, fprintf(), GCM_Enable_Cflow, GCM_Enable_Fill_Delay_Slots, Get_Trace(), i, INT, Is_BB_Empty(), L_Free, L_Save, MEM_local_pool, NULL, num_succs(), OP_br, OP_cond, OP_noop, OP_prev, pool, REG_LIVE_Analyze_Region(), REG_LIVE_Finish(), REGION_First_BB, RID_level, RL_CGSCHED, Run_Cflow_Delay, Run_Cflow_GCM, sort_by_edge_probability(), TFile, TP_GCM, Trace_Fill_Delay_Slots, TRUE, VECTOR_Init(), and VECTOR_Sorted_Add_Element().
Referenced by IGLS_Schedule_Region().
| static INT GCM_For_Loop | ( | LOOP_DESCR * | loop, | |
| BB_SET * | processed_bbs, | |||
| HBS_TYPE | hb_type | |||
| ) | [static] |
Definition at line 4289 of file gcm.cxx.
References Adjust_BBSCH(), Align_Instructions, Append_Op_To_BB(), BB_ALIGNED, BB_cycle_set, BB_exit, BB_freq, BB_id, BB_in_preds(), BB_Insert_Op_After(), BB_last_op, BB_length, BB_MAP_Create, BB_preds_len(), BB_Prepend_Op(), BB_Remove_Op(), BB_rid, BB_scheduled, BB_scheduled_hbs, BB_succs_len(), BBLIST_item, BBSCH_flags, BBSCH_schedule_length, BCOPY, bcopy(), BOOL, BS_EqualP(), bzero(), CG_Skip_GCM, CGTARG_Text_Alignment(), Check_If_Ignore_BB(), count, Cur_Gcm_Type, DBar, Determine_Candidate_Blocks(), Determine_Motion_Type(), fail, FALSE, find(), Find_Vacant_Slots_BB(), FmtAssert, FOR_ALL_BB_OPs, FOR_ALL_BB_PREDS, FOR_ALL_BB_SUCCS, fprintf(), GCM_Dead_Code_Elimination(), GCM_From_BB, GCM_Internal_Flag, GCM_MINIMIZE_REGS, GCM_NONE, GCM_Test, GCM_To_BB, Get_OP_Tag(), HBS_BEFORE_GRA, HBS_BEFORE_LRA, HBS_FROM_GCM_FROM_BB, HBS_FROM_GCM_TO_BB, HBS_FROM_POST_GCM_SCHED, HBS_FROM_POST_GCM_SCHED_AGAIN, HBS_FROM_PRE_GCM_SCHED, HBS_FROM_PRE_GCM_SCHED_AGAIN, i, Ignore_TN_Dep, INST_BYTES, INT, INT16, Is_BB_Empty(), Is_Schedule_Worse(), Is_True, L_Free, L_Save, Large_BB, Last_TN, LOOP_DESCR_bbset, LOOP_DESCR_loophead, LOOP_DESCR_nestlevel, loop_id, MEM_local_pool, mINT32, Motion_Is_CIRC_ABOVE, Motion_Is_DUP_ABOVE, Motion_Is_DUP_BELOW, Motion_Is_EQUIV_BKWD, Motion_Is_EQUIV_FWD, Motion_Is_SPEC_ABOVE, Motion_Is_SPEC_BELOW, mUINT8, NULL, OP_has_tag, OP_load, OP_noop, OP_opnd, OP_PREDICATE_OPND, OP_prev, OP_To_Move(), Perform_Post_GCM_Steps(), pos(), Print_BB_No_Srclines(), Print_OP_No_SrcLine(), Print_Trace_File(), PU_BB_Count, Reset_BB_SCHEDULE, Reset_BB_scheduled, Reset_OP_has_tag, Reset_OP_moved, Reset_OP_visited, RID_level, RL_CGSCHED, Run_Cflow_GCM, Schedule_BB_For_GCM(), Set_BB_flags, Set_BB_SCHEDULE, Set_OP_moved, Set_OP_opnd, Set_OP_Tag(), Set_OP_visited, SORT_BY_BB_FREQ, sort_by_bb_frequency(), SORT_BY_BB_PARALLELISM, SORT_BY_REG_USAGE, Split_BB_Length, TFile, Trace_GCM, Trace_GCM_Dump_IR, TRUE, TYPE_MEM_POOL_ALLOC, VECTOR_Add_Element(), VECTOR_count, VECTOR_element, VECTOR_Init(), VECTOR_size, VECTOR_Sort(), and Visit_BB_Preds().
Referenced by GCM_Schedule_Region().
Definition at line 5252 of file gcm.cxx.
References BB_call, BB_entry, BB_first_op, BB_MAP_Create, BB_MAP_Delete(), BB_MAP_Get(), BB_MAP_Set(), BB_Mark_Unreachable_Blocks(), BB_next, BB_rid, BB_scheduled, BB_scheduled_hbs, BB_unreachable, BOOL, BZERO, Calculate_Dominators(), CG_opt_level, CGTARG_Compute_Branch_Parameters(), Check_for_Dump(), Check_If_Should_Align_BB(), Cur_Gcm_Type, cur_hbs_type, cur_pc, Cur_PU_Name, FALSE, fixed, fprintf(), Free_Dominators_Memory(), GCM_AFTER_GRA, GCM_BEFORE_GRA, GCM_For_Loop(), GCM_Min_Reg_Usage, GCM_MINIMIZE_REGS, GCM_POST_Enable_Scheduling, GCM_PRE_Enable_Scheduling, GCM_TRACE_DUMP_IR, GCM_TRACE_MERGE_BBS, GCM_TRACE_NORMAL, GCM_TRACE_PREPROCESS, Get_Trace(), HBS_BEFORE_GRA, HBS_BEFORE_LRA, HBS_FROM_GCM, Ignore_TN_Dep, INST_BYTES, INT, INT16, L_Free, L_Save, LOOP_DESCR_bbset, LOOP_DESCR_Detect_Loops(), LOOP_DESCR_flags, LOOP_DESCR_loophead, LOOP_DESCR_loopinfo, LOOP_DESCR_nestlevel, LOOP_DESCR_next, LOOP_DESCR_num_exits, loop_id, loop_list, LOOP_Redundant_Copy_Elimination(), LOOP_DESCR::mem_pool, MEM_POOL_Delete(), MEM_POOL_Initialize, MEM_POOL_Pop, MEM_POOL_Push, mispredict, NULL, OP_next, OP_Real_Ops(), Perform_Loop_Invariant_Code_Motion(), PU_BB_Count, REG_LIVE_Analyze_Region(), REG_LIVE_Finish(), REGION_First_BB, RID_level, RL_CGSCHED, Run_Cflow_GCM, Set_BB_ALIGNED, Set_BB_num_align_nops, Set_BB_num_real_ops, Set_BB_SCHEDULE, Set_BB_start_pc, Set_Call_Loop, Set_Error_Phase(), Set_Exit_Loop, Set_Inner_Loop, Set_Multibb_Loop, Start_Timer(), Stop_Timer(), T_GCM_CU, taken, TFile, times, TP_GCM, Trace_GCM, Trace_GCM_Dump_IR, Trace_GCM_Dump_Preprocess, Trace_GCM_Merge_BBs, TRUE, TYPE_L_ALLOC, and TYPE_MEM_POOL_ALLOC.
Referenced by IGLS_Schedule_Region().
Definition at line 2319 of file gcm.cxx.
References BB_live_in, BBLIST_item, FALSE, FOR_ALL_BB_SUCCS, TN_is_global_reg, and TRUE.
Referenced by Update_GRA_Live_Sets().
Definition at line 351 of file gcm.cxx.
References BB_first_op, FALSE, NULL, OP_next, OP_Real_Ops(), and TRUE.
Definition at line 2647 of file gcm.cxx.
References FALSE, FmtAssert, GCM_CIRC_ABOVE, GCM_DUP_ABOVE, GCM_DUP_BELOW, GCM_EQUIV, GCM_EQUIV_BKWD, GCM_EQUIV_FWD, GCM_SPEC_ABOVE, GCM_SPEC_BELOW, OP_scycle, and TRUE.
Referenced by OP_To_Move().
| static BOOL Is_Schedule_Worse | ( | BB * | bb, | |
| BB * | cand_bb, | |||
| BBSCH * | new_bbsch, | |||
| BBSCH * | new_cand_bbsch, | |||
| BBSCH * | old_bbsch, | |||
| BBSCH * | old_cand_bbsch | |||
| ) | [static] |
Definition at line 3833 of file gcm.cxx.
References BB_dom_set, BB_freq, BB_id, BB_pdom_set, BBSCH_global_regcost, BBSCH_local_regcost, BBSCH_schedule_length, BOOL, BS_MemberP(), CG_DEP_Adjust_OOO_Latency, Cur_Gcm_Type, FOR_ALL_ISA_REGISTER_CLASS(), fprintf(), GCM_Internal_Flag, GCM_MINIMIZE_REGS, GCM_Test, i, INT, mINT8, mispredict, REGISTER_CLASS_info, REGISTER_CLASS_INFO::register_count, REGISTER_MAX, TFile, times, Trace_GCM, Trace_GCM_Reg_Usage, TRUE, UINT32, and UINT8.
Referenced by GCM_For_Loop().
Definition at line 1105 of file gcm.cxx.
References BB_branch_op(), BB_dom_set, BB_id, BB_pdom_set, BB_prev, BOOL, BS_MemberP(), CGTARG_Analyze_Branch(), FALSE, Ignore_TN_Dep, INT, Is_True, NULL, OP_code, OP_cond, OP_load, OP_opnd, TN_is_zero(), TN_number, TN_register, TN_value, TRUE, V_BR_I8EQ, V_BR_I8GE, V_BR_I8GT, V_BR_I8LE, V_BR_I8LT, and V_BR_I8NE.
Referenced by Can_OP_Move().
| static BOOL OP_Has_Restrictions | ( | OP * | op, | |
| BB * | source_bb, | |||
| BB * | target_bb, | |||
| mINT32 | motion_type | |||
| ) | [static] |
Definition at line 639 of file gcm.cxx.
References ASM_OP_opnd_subclass, ASM_OP_result_subclass, BB_entry, BB_entry_sp_adj_op(), BB_exit, BB_exit_sp_adj_op(), BB_length, BB_prev, CGTARG_Is_OP_Intrinsic(), CLASS_VAR, cur_hbs_type, DEFAULT_BRP_BRANCH_LIMIT, FALSE, GCM_CIRC_ABOVE, HBS_BEFORE_GRA, i, Ignore_TN_Dep, INST_BYTES, INT, KIND_ARRAY, Motion_Is_CIRC_ABOVE, NULL, OP_access_reg_bank, OP_Asm_Map, OP_branch_predict, OP_code, OP_copy, OP_Defs_Reg(), OP_Defs_TN(), OP_glue, OP_has_hazard, OP_has_predicate, OP_icmp, OP_MAP_Get(), OP_memory, OP_no_alias, OP_no_move_before_gra, OP_opnd, OP_opnd_reg_subclass(), OP_opnds, OP_prefetch, OP_Refs_Reg(), OP_Refs_TN(), OP_result, OP_result_reg_subclass(), OP_results, REGISTER_CLASS_sp, REGISTER_Is_Rotating(), REGISTER_sp, REGISTER_UNDEFINED, Single_Register_Subclass(), SP_TN, ST_class, ST_type, TN_is_constant, TN_is_dedicated, TN_is_gra_homeable, TN_is_register, TN_is_symbol, TN_register, TN_register_class, TN_var, TRUE, TY_kind, and UINT64.
Referenced by Fill_From_Successor(), and OP_To_Move().
Definition at line 384 of file gcm.cxx.
References CGTARG_Is_Long_Latency(), and OP_code.
Referenced by Can_OP_Move().
| static BOOL OP_Offset_Within_Limit | ( | OP * | mem_op1, | |
| OP * | mem_op2, | |||
| INT | lower_bound, | |||
| INT | upper_bound | |||
| ) | [static] |
Definition at line 424 of file gcm.cxx.
References FALSE, INT, NULL, OP_code, OP_opnd, TN_has_value, TN_value, and within_bounds().
Referenced by Similar_Ptr_Offset_ok().
| static OP* OP_To_Move | ( | BB * | bb, | |
| BB * | tgt_bb, | |||
| BB_SET ** | pred_bbs, | |||
| mINT32 | motion_type, | |||
| mUINT8 * | spec_type | |||
| ) | [static] |
Definition at line 3320 of file gcm.cxx.
References Add_Fail_TNs(), BB_Add_Ancestors(), BB_call, BB_first_op, BB_last_op, BB_xfer_op(), BOOL, Can_OP_Move(), CG_DEP_Can_OP_Move_Across_Call(), CGTARG_Is_OP_Barrier(), fprintf(), GCM_CIRC_ABOVE, GCM_DUP_ABOVE, GCM_EQUIV_FWD, GCM_SPEC_ABOVE, GTN_UNIVERSE_size, i, Ignore_TN_Dep, INT, Is_OP_Move_Better(), Last_TN, MEM_local_pool, Motion_Is_CIRC_ABOVE, NULL, OP_Has_Restrictions(), OP_is_loop, OP_next, OP_noop, OP_opnd, OP_opnds, OP_prev, OP_Real_Ops(), OP_result, OP_results, OP_unsafe, OP_visited, Print_OP_No_SrcLine(), REGISTER_SET_Union1(), REGSET_CLEAR(), REGSET_INTERSECT(), REGSET_OR(), TFile, TN_is_constant, TN_is_global_reg, TN_register, TN_register_class, Trace_GCM, and TRUE.
Referenced by GCM_For_Loop().
| static void Perform_Post_GCM_Steps | ( | BB * | bb, | |
| BB * | cand_bb, | |||
| OP * | cand_op, | |||
| mINT32 | motion_type, | |||
| mUINT8 | spec_type, | |||
| BB_SET ** | pred_bbs, | |||
| LOOP_DESCR * | loop, | |||
| BOOL | success | |||
| ) | [static] |
Definition at line 2967 of file gcm.cxx.
References Append_Op_To_BB(), BB_Append_Op(), BB_branch_op(), BB_dom_set, BB_id, BB_MAP_Get(), BB_MAP_Set(), BB_pdom_set, BBSCH_bb_start_pc, BBSCH_num_real_ops, BOOL, BS_Create_Empty(), BS_Difference1D(), BS_Union1D(), BS_UnionD(), CG_LOOP_Append_BB_To_Prolog(), CG_LOOP_Gen_And_Prepend_To_Prolog(), CGTARG_Is_OP_Addr_Incr(), DevWarn, Dup_OP(), FALSE, Fixup_Ldst_Offset(), FmtAssert, fprintf(), GCM_CIRC_ABOVE, GCM_EQUIV_FWD, GCM_SPEC_ABOVE, GRA_LIVE_Compute_Liveness_For_BB(), HBS_FROM_GCM, i, Ignore_TN_Dep, INT, INT64, Is_True, LOOP_DESCR_loophead, MEM_local_pool, Memory_OP_Base_Opndnum(), Memory_OP_Offset_Opndnum(), Motion_Is_CIRC_ABOVE, NULL, OP_has_tag, OP_memory, OP_next, OP_opnd, OP_PREDICATE_OPND, OP_result, OP_results, Print_Trace_File(), PSAFE_PTR_SPEC, PU_BB_Count, REG_LIVE_Analyze_Region(), REG_LIVE_Finish(), REG_LIVE_Update(), Reset_OP_has_tag, result, Run_Cflow_GCM, Set_BB_dom_set(), Set_BB_pdom_set(), Set_OP_opnd, TFile, TN_has_value, TN_is_sp_reg, TN_number, TN_register, TN_register_class, TN_value, Trace_GCM, TRUE, True_TN, and Update_GRA_Live_Sets().
Referenced by GCM_For_Loop().
Definition at line 365 of file gcm.cxx.
References BB_id, fprintf(), Ignore_TN_Dep, Print_OP_No_SrcLine(), str, and TFile.
Referenced by GCM_For_Loop(), and Perform_Post_GCM_Steps().
| static BBSCH* Schedule_BB_For_GCM | ( | BB * | bb, | |
| HBS_TYPE | hb_type, | |||
| HB_Schedule ** | Sched | |||
| ) | [static] |
Definition at line 3985 of file gcm.cxx.
References BB_MAP_Get(), BB_MAP_Set(), BB_SCHEDULE, BBSCH_schedule_length, bzero(), CG_SCHED_EST_BB_Cycles(), Cur_Gcm_Type, CXX_NEW, GCM_Use_Sched_Est, GCM_USE_SCHED_EST, INT32_MAX, MEM_local_pool, NULL, SCHED_EST_FOR_GCM, Set_BB_SCHEDULE, and TYPE_MEM_POOL_ALLOC.
Referenced by GCM_For_Loop().
Definition at line 565 of file gcm.cxx.
References BOOL, CG_DEP_Mem_Ops_Offsets_Overlap(), FALSE, INT, OP_code, OP_opnd, OP_unalign_mem, TN_is_zero_reg, TNs_Are_Equivalent(), and TRUE.
Referenced by Eager_Ptr_Deref_Spec().
Definition at line 521 of file gcm.cxx.
References CG_opt_level, FALSE, INT, OP_code, OP_iadd, OP_Offset_Within_Limit(), OP_opnd, TN_has_value, TN_Reaching_Value_At_Op(), TRUE, and VAL_KNOWN.
Referenced by Eager_Ptr_Deref_Spec().
Definition at line 318 of file gcm.cxx.
References BBLIST_prob.
Referenced by GCM_Fill_Branch_Delay_Slots().
| static void Update_GRA_Live_Sets | ( | OP * | cand_op, | |
| BB * | bb, | |||
| BB * | cand_bb, | |||
| BB_SET ** | pred_bbs | |||
| ) | [static] |
Definition at line 2433 of file gcm.cxx.
References alloca, BB_live_def, BB_live_in, BB_live_out, BOOL, count, DevWarn, FALSE, FOR_ALL_BB_OPs_FWD, GRA_LIVE_Add_Defreach_In_GTN(), GRA_LIVE_Add_Defreach_Out_GTN(), GRA_LIVE_Add_Live_Def_GTN(), GRA_LIVE_Add_Live_In_GTN(), GRA_LIVE_Add_Live_Out_GTN(), GRA_LIVE_Add_Live_Use_GTN(), GRA_LIVE_Remove_Defreach_Out_GTN(), GRA_LIVE_Remove_Live_Def_GTN(), GRA_LIVE_Remove_Live_In_GTN(), GRA_LIVE_Remove_Live_Out_GTN(), GRA_LIVE_Remove_Live_Use_GTN(), GTN_Live_Out_From_BB(), GTN_UNIVERSE_Add_TN(), hTN_MAP_Create(), hTN_MAP_Get(), hTN_MAP_Set(), i, INT, MEM_local_pool, MEM_POOL_Pop, MEM_POOL_Push, Motion_Is_CIRC_ABOVE, NULL, OP_cond_def(), OP_dummy, OP_opnd, OP_opnds, OP_result, OP_results, result, TN_is_constant, TN_is_global_reg, TN_number, TRUE, UINT32, Update_Live_In_Sets(), and Update_Live_Use_Counts().
Referenced by Perform_Post_GCM_Steps().
| static void Update_Live_In_Sets | ( | TN * | use_tn, | |
| BB * | src_bb, | |||
| BB * | tgt_bb, | |||
| BB_SET ** | pred_bbs | |||
| ) | [static] |
Definition at line 2339 of file gcm.cxx.
References BB_live_def, BB_live_in, BB_live_use, BBLIST_item, BOOL, FALSE, FOR_ALL_BB_SUCCS, GRA_LIVE_Remove_Live_In_GTN(), GRA_LIVE_Remove_Live_Out_GTN(), and TRUE.
Referenced by Update_GRA_Live_Sets().
Definition at line 2384 of file gcm.cxx.
References BB_live_def, BB_live_in, BB_live_use, BBLIST_item, BOOL, count, FALSE, FOR_ALL_BB_SUCCS, hTN_MAP_Get(), hTN_MAP_Set(), i, INT, malloc, OP_opnd, OP_opnds, TN_is_constant, TN_is_global_reg, TRUE, and UINT32.
Referenced by Update_GRA_Live_Sets().
| static void Visit_BB_Preds | ( | BB * | bb, | |
| BB * | head, | |||
| BB_SET * | loop_bbs, | |||
| INT | icycle, | |||
| INT | ncycles | |||
| ) | [static] |
Definition at line 4021 of file gcm.cxx.
References BB_cycle_set, BBLIST_item, BS_Create_Empty(), BS_MemberP(), BS_Union1D(), FOR_ALL_BB_PREDS, MEM_local_pool, NULL, and Set_BB_cycle_set.
Referenced by GCM_For_Loop().
BB_MAP bb_cycle_set_map [static] |
| BOOL CG_Skip_GCM = FALSE |
Definition at line 218 of file gcm.cxx.
Referenced by Can_Mem_Op_Be_Moved(), Check_If_Ignore_BB(), HB_Schedule::Compute_BBSCH(), Find_Limit_OP(), GCM_For_Loop(), GCM_Schedule_Region(), Is_Schedule_Worse(), and Schedule_BB_For_GCM().
HBS_TYPE cur_hbs_type [static] |
Definition at line 197 of file gcm.cxx.
Referenced by GCM_Schedule_Region(), and OP_Has_Restrictions().
Definition at line 221 of file gcm.cxx.
Referenced by Fixup_Long_Branches(), GCM_Schedule_Region(), and Recompute_Label_Offset().
Definition at line 186 of file gcm.cxx.
Referenced by CFLOW_Initialize(), clipper_movstr(), GCM_Schedule_Region(), m88k_builtin_saveregs(), m88k_va_start(), resolves_to_fixed_type_p(), and IF_CONVERTOR::Worth_If_Convert().
| BOOL GCM_Forw_Circ_Motion = TRUE |
| INT32 GCM_From_BB = -1 |
BOOL GCM_Internal_Flag = TRUE [static] |
MEM_POOL gcm_loop_pool [static] |
BB* GCM_Loop_Prolog [static] |
| BOOL GCM_POST_Force_Scheduling = FALSE |
| BOOL GCM_POST_Spec_Loads = TRUE |
| BOOL GCM_PRE_Spec_Loads = TRUE |
| INT32 GCM_Result_TN = -1 |
| BOOL GCM_Use_Sched_Est = FALSE |
BOOL Ignore_TN_Dep [static] |
Definition at line 220 of file gcm.cxx.
Referenced by Add_Fail_TNs(), Can_Do_Safe_Predicate_Movement(), Can_Mem_Op_Be_Moved(), Can_OP_Move(), Determine_Motion_Type(), Eager_Ptr_Deref_Spec(), GCM_For_Loop(), GCM_Schedule_Region(), Null_Ptr_Deref_Spec(), OP_Has_Restrictions(), OP_To_Move(), Perform_Post_GCM_Steps(), and Print_Trace_File().
MEM_POOL loop_descr_pool [static] |
Definition at line 192 of file gcm.cxx.
Referenced by Perform_Loop_Invariant_Code_Motion(), and Perform_Loop_Optimizations().
Definition at line 168 of file gcm.cxx.
Referenced by Convert_Section_To_Pdo(), Fission(), GCM_For_Loop(), GCM_Schedule_Region(), ARA_LOOP_INFO::Generate_Copyout_Loop(), ARA_LOOP_INFO::Generate_Parallel_Pragma(), merge_scc_to_form_new_loop(), simd_fis_merge_scc_to_form_new_loop(), SNL_Regtile_Loop(), and vintr_fis_merge_scc_to_form_new_loop().
INT32 mispredict [static] |
Definition at line 186 of file gcm.cxx.
Referenced by Calculate_Path_Priorities(), GCM_Schedule_Region(), and Is_Schedule_Worse().
BOOL Run_Cflow_Delay [static] |
Definition at line 215 of file gcm.cxx.
Referenced by Fill_From_Successor(), and GCM_Fill_Branch_Delay_Slots().
Definition at line 217 of file gcm.cxx.
Referenced by GCM_Fill_Branch_Delay_Slots(), GCM_For_Loop(), GCM_Schedule_Region(), and Perform_Post_GCM_Steps().
float speculation_ratio_fb = 0.75 [static] |
float speculation_ratio_wfb = 0.35 [static] |
Definition at line 186 of file gcm.cxx.
Referenced by CFLOW_Initialize(), cse_basic_block(), expand_builtin_expect_jump(), FEEDBACK::FB_lower_icall(), GCM_Schedule_Region(), WN_INSTRUMENT_WALKER::Instrument_Branch(), WN_INSTRUMENT_WALKER::Instrument_Circuit(), WN_INSTRUMENT_WALKER::Instrument_Cselect(), make_reorder_chain_1(), mips_output_conditional_branch(), print_operand(), process_note_prediction(), SUMMARIZE< program >::Process_procedure(), and Resolve_Conditional_Branch().
BOOL Trace_Fill_Delay_Slots = FALSE [static] |
Definition at line 178 of file gcm.cxx.
Referenced by Fill_From_Successor(), and GCM_Fill_Branch_Delay_Slots().
Definition at line 176 of file gcm.cxx.
Referenced by GCM_For_Loop(), GCM_Schedule_Region(), Is_Schedule_Worse(), OP_To_Move(), and Perform_Post_GCM_Steps().
BOOL Trace_GCM_Dump_IR = FALSE [static] |
BOOL Trace_GCM_Dump_Preprocess = FALSE [static] |
BOOL Trace_GCM_Merge_BBs = FALSE [static] |
BOOL Trace_GCM_Reg_Usage = FALSE [static] |
1.5.6