#include "cg_dep_graph.h"#include "cg_loop_scc.h"#include "op_list.h"#include "whirl2ops.h"#include "findloops.h"#include "tn_map.h"

Go to the source code of this file.
| #define _CG_LOOP_BP_actual_ptr | ( | bp | ) | ((struct cg_loop_backpatch *)(((INTPTR)(bp)) & ~1)) |
Definition at line 367 of file cg_loop.h.
Referenced by CG_LOOP_Backpatch_Delete(), CG_LOOP_Backpatch_Next(), and CG_LOOP_Backpatch_Trace().
| #define _CG_LOOP_BP_iter_limited | ( | bp | ) | ((INTPTR)(bp) & 1) |
| #define _CG_LOOP_BP_limit_iter | ( | bp | ) | ((struct cg_loop_backpatch *)((INTPTR)(bp) | 1)) |
Definition at line 365 of file cg_loop.h.
Referenced by CG_LOOP_Backpatch_First(), and CG_LOOP_Backpatch_Next().
| #define _CG_LOOP_info | ( | op | ) | ((_CG_LOOP_INFO *)OP_MAP_Get(_CG_LOOP_info_map, op)) |
Definition at line 349 of file cg_loop.h.
Referenced by CG_LOOP_Clear_SCCs(), Find_BB_TNs(), Set_OP_omega(), and BB_REGION::Verify().
| #define CG_LOOP_Add_SCC_Arc | ( | ancestor, | |||
| descendent, | |||||
| omega, | |||||
| latency | ) |
Value:
CG_DEP_Add_SCC_Arc(ancestor, descendent, omega, latency, \ &_CG_LOOP_info(descendent)->scc_ancestors, \ &_CG_LOOP_info(ancestor)->scc_descendents)
Definition at line 415 of file cg_loop.h.
Referenced by Calculate_Component_Max_Costs_And_Min_Recurrence_II().
| #define CG_LOOP_BACKPATCH_body_tn | ( | bp | ) | (_CG_LOOP_BP_actual_ptr(bp)->body_tn+0) |
Definition at line 423 of file cg_loop.h.
Referenced by Apply_Back_Sub_Variant(), CG_LOOP_Backpatch_Find_Body_TN(), Count_Copies_Needed(), Fix_Backpatches(), KEY_SCH::Gen_PKE(), Generate_Copy_TNs(), GRA_LIVE_Compute_Local_Info(), Interleave_Base_Update(), RECUR_OP_DESC::RECUR_OP_DESC(), Remove_Non_Definite_Dependence(), Remove_Notations_With_Copies(), Remove_Notations_Without_Copies(), SWP_Gather_Lifetimes(), SWP_Rename_TNs(), tn_is_needed_in_epilog(), Unroll_Make_Remainder_Loop(), unroll_remove_notations(), and unroll_rename_backpatches().
| #define CG_LOOP_BACKPATCH_non_body_tn | ( | bp | ) | (_CG_LOOP_BP_actual_ptr(bp)->non_body_tn+0) |
Definition at line 421 of file cg_loop.h.
Referenced by Apply_Back_Sub_Variant(), CG_LOOP_Backpatch_Find_Body_TN(), CG_LOOP_Backpatch_Find_Non_Body_TN(), KEY_SCH::Gen_PKE(), Generate_Copy_TNs(), GRA_LIVE_Compute_Local_Info(), Interleave_Base_Update(), Remove_Notations_With_Copies(), Remove_Notations_Without_Copies(), SWP_Rename_TNs(), Unroll_Make_Remainder_Loop(), and unroll_remove_notations().
| #define CG_LOOP_BACKPATCH_omega | ( | bp | ) | (_CG_LOOP_BP_actual_ptr(bp)->omega+0) |
Definition at line 425 of file cg_loop.h.
Referenced by Apply_Back_Sub_Variant(), CG_LOOP_Backpatch_Find_Body_TN(), CG_LOOP_Backpatch_Find_Non_Body_TN(), CIO_RWTRAN::CIO_Copy_Remove(), Count_Copies_Needed(), Generate_Copy_TNs(), RECUR_OP_DESC::RECUR_OP_DESC(), Remove_Notations_With_Copies(), Remove_Notations_Without_Copies(), SWP_Gather_Lifetimes(), SWP_Rename_TNs(), Unroll_Make_Remainder_Loop(), unroll_remove_notations(), and unroll_rename_backpatches().
| #define CG_LOOP_BACKPATCH_Set_body_tn | ( | bp, | |||
| newtn | ) | (_CG_LOOP_BP_actual_ptr(bp)->body_tn = (newtn)) |
Definition at line 430 of file cg_loop.h.
Referenced by Interleave_Base_Update(), Remove_Notations_With_Copies(), and unroll_rename_backpatches().
| #define CG_LOOP_BACKPATCH_Set_non_body_tn | ( | bp, | |||
| newtn | ) | (_CG_LOOP_BP_actual_ptr(bp)->non_body_tn = (newtn)) |
Definition at line 428 of file cg_loop.h.
Referenced by Remove_Notations_With_Copies(), Remove_Notations_Without_Copies(), and Unroll_Make_Remainder_Loop().
| #define CG_LOOP_BACKPATCH_Set_omega | ( | bp, | |||
| om | ) | (_CG_LOOP_BP_actual_ptr(bp)->omega = (om)) |
Definition at line 432 of file cg_loop.h.
Referenced by Remove_Notations_With_Copies(), and unroll_rename_backpatches().
| #define Is_CG_LOOP_Op | ( | op | ) | (_CG_LOOP_info_map && _CG_LOOP_info(op) ? TRUE : FALSE) |
Definition at line 383 of file cg_loop.h.
Referenced by addr_omega(), ARC_LIST_Find_Defining_Op(), CG_DEP_Trace_Op_SCC_Arcs(), CGPREP_Copy_TN(), CGPREP_Copy_TN_Into_BB(), CGSPILL_Force_Rematerialization_For_BB(), KEY_SCH::Emit_Src_DDG(), get_mem_dep(), GRA_LIVE_Compute_Local_Info(), Print_OP(), Print_OP_No_SrcLine(), CG_LOOP::Recompute_Liveness(), and sPrint_OP().
| #define MAX_OMEGA 32 |
Definition at line 381 of file cg_loop.h.
Referenced by CIO_RWTRAN::CIO_Copy_Remove(), CIO_RWTRAN::Copy_Ops_To_Epilog(), get_mem_dep(), CIO_RWTRAN::Read_Candidate_Arc(), CIO_RWTRAN::Write_Candidate_Arc(), and CIO_RWTRAN::Write_Removal().
Definition at line 402 of file cg_loop.h.
Referenced by Calculate_Min_Resource_II(), Calculate_Self_Recurrence_Min_II(), CG_SCHED_EST_Create(), and Unroll_Replicate_Body().
Definition at line 385 of file cg_loop.h.
Referenced by addr_omega(), Apply_Back_Sub_Invariant(), Apply_Back_Sub_Variant(), Apply_Interleave(), ARC_LIST_Find_Defining_Op(), Build_Cyclic_Arcs(), CGTARG_Generate_Countdown_Loop(), CIO_RWTRAN::CICSE_Transform(), CIO_RWTRAN::CIO_Copy_Remove(), Convert_OP_to_base_update_form(), Count_Copies_Needed(), EBO_Copy_OP_omega(), KEY_SCH::Emit_Src_DDG(), Exchange_Opnd(), Find_BB_TNs(), KEY_SCH::Gen_PKE(), GRA_LIVE_Compute_Local_Info(), Identify_and_delete_incr(), OP_info::Init(), Interleave_Base_Update(), KEY_SCH::KEY_SCH(), Print_OP(), Print_OP_No_SrcLine(), CG_LOOP::Recompute_Liveness(), RECUR_OP_DESC::RECUR_OP_DESC(), KEY_SCH::register_allocation_init(), Remove_Notations_With_Copies(), CIO_RWTRAN::Replace_Tn(), sPrint_OP(), SWP_Gather_Lifetime_Extents(), SWP_Rename_TNs(), TN_DU::TN_can_use_non_rotating_reg(), unroll_names_init(), unroll_remove_notations(), Unroll_Replicate_Body(), use_crosses_def(), BB_REGION::Verify(), and CG_LOOP::Verify().
Definition at line 395 of file cg_loop.h.
Referenced by KEY_SCH::Emit_Src_DDG(), new_arc_with_latency(), Print_OP(), Print_OP_No_SrcLine(), and sPrint_OP().
| #define OP_scc | ( | op | ) | ((struct cg_loop_scc *)_CG_LOOP_info(op)->scc) |
Definition at line 406 of file cg_loop.h.
Referenced by Calculate_Component_Direct_Costs_And_Min_Recurrence_II().
Definition at line 412 of file cg_loop.h.
Referenced by CG_DEP_Trace_Op_SCC_Arcs(), and Print_OP_Vec().
Definition at line 413 of file cg_loop.h.
Referenced by CG_DEP_Trace_Op_SCC_Arcs(), and Print_OP_Vec().
Definition at line 409 of file cg_loop.h.
Referenced by Calculate_Component_Direct_Costs_And_Min_Recurrence_II(), and Print_OP_Vec().
Definition at line 404 of file cg_loop.h.
Referenced by Induction_Variables_Removal(), and Shorten_Critical_Recurrence_By_Reassociation().
Definition at line 403 of file cg_loop.h.
Referenced by Induction_Variables_Removal(), Shorten_Critical_Recurrence_By_Reassociation(), and Unroll_Replicate_Body().
| typedef struct cg_loop_backpatch CG_LOOP_BACKPATCH |
| typedef vector<SWP_FIXUP> SWP_FIXUP_VECTOR |
| enum CG_LOOP_FLAGS |
Definition at line 336 of file cg_loop.h.
References mUINT8, OP_MAX_FIXED_OPNDS, OP_opnds, and UINT.
Referenced by CG_LOOP_Init_Op().
Definition at line 323 of file cg_loop.cxx.
References INT, Is_True, OP_code, OP_find_opnd_use, and opnd.
Referenced by CG_LOOP_Append_BB_To_Prolog(), Gen_Counted_Loop_Branch(), Gen_SWP_Branch(), Gen_SWP_Branch_Predict(), KEY_SCH::Peeling_For_Unknown_Trip(), Undo_SWP_Branch(), Unroll_Do_Loop(), Unroll_Dowhile_Loop(), Unroll_Make_Remainder_Loop(), unroll_multi_bb(), and Unroll_Replicate_Body().
Definition at line 4249 of file cg_loop.cxx.
References Add_Goto(), BB_branch_op(), BB_freq, BB_freq_fb_based, BB_Remove_Op(), BB_rid, BOOL, Branch_Target_Operand(), Change_Succ(), FREQ_Frequencies_Computed(), Gen_And_Insert_BB_After(), Is_Label_For_BB(), Is_True, LOOP_DESCR_Add_BB(), LOOP_DESCR_Find_Loop, OP_opnd, Set_BB_freq_fb_based, TN_is_label, and TN_label.
Referenced by Perform_Post_GCM_Steps().
| CG_LOOP_BACKPATCH* CG_LOOP_Backpatch_Add | ( | BB * | bb, | |
| TN * | non_body_tn, | |||
| TN * | body_tn, | |||
| UINT8 | omega | |||
| ) |
Definition at line 1306 of file cg_loop.cxx.
References cg_loop_backpatch::body_tn, BOOL, CG_LOOP_Backpatch_Next(), FmtAssert, Is_True, MEM_phase_nz_pool, cg_loop_backpatch::next, cg_loop_backpatch::non_body_tn, NULL, cg_loop_backpatch::omega, TN_is_zero_reg, TN_number, and TYPE_MEM_POOL_ALLOC.
Referenced by Apply_Back_Sub_Invariant(), Apply_Back_Sub_Variant(), Apply_Interleave(), CIO_RWTRAN::Backpatch_Op_In_Prolog(), CG_LOOP::Build_CG_LOOP_Info(), Convert_While_Loop_to_Fully_Predicated_Form(), KEY_SCH::Gen_PKE(), Interleave_Base_Update(), CIO_RWTRAN::Mark_Op_For_Epilog(), KEY_SCH::New_live_in_tn(), KEY_SCH::New_live_out_tn(), CIO_RWTRAN::Replace_Tn(), and Unroll_Make_Remainder_Loop().
| void CG_LOOP_Backpatch_Delete | ( | BB * | bb, | |
| CG_LOOP_BACKPATCH * | bp | |||
| ) |
Definition at line 1391 of file cg_loop.cxx.
References _CG_LOOP_BP_actual_ptr, Is_True, cg_loop_backpatch::next, and NULL.
Referenced by Count_Copies_Needed(), KEY_SCH::Delete_Backpatches(), Fix_Backpatches(), Interleave_Base_Update(), CIO_RWTRAN::Replace_Tn(), Unroll_Make_Remainder_Loop(), and unroll_remove_notations().
Definition at line 1280 of file cg_loop.cxx.
References CG_LOOP_BACKPATCH_body_tn, CG_LOOP_Backpatch_First(), CG_LOOP_Backpatch_Next(), CG_LOOP_BACKPATCH_non_body_tn, CG_LOOP_BACKPATCH_omega, and NULL.
Referenced by KEY_SCH::New_live_in_tn(), and KEY_SCH::New_live_out_tn().
Definition at line 1294 of file cg_loop.cxx.
References CG_LOOP_Backpatch_First(), CG_LOOP_Backpatch_Next(), CG_LOOP_BACKPATCH_non_body_tn, CG_LOOP_BACKPATCH_omega, and NULL.
Referenced by Apply_Back_Sub_Invariant(), Apply_Interleave(), CG_LOOP::Build_CG_LOOP_Info(), CIO_RWTRAN::CICSE_Transform(), CIO_RWTRAN::CIO_Copy_Remove(), KEY_SCH::Gen_PKE(), CIO_RWTRAN::Mark_Op_For_Epilog(), RECUR_OP_DESC::RECUR_OP_DESC(), Unroll_Make_Remainder_Loop(), and unroll_remove_notations().
| CG_LOOP_BACKPATCH* CG_LOOP_Backpatch_First | ( | BB * | bb, | |
| TN * | body_tn | |||
| ) |
Definition at line 1351 of file cg_loop.cxx.
References _CG_LOOP_BP_limit_iter, cg_loop_backpatch::body_tn, Is_True, cg_loop_backpatch::next, and NULL.
Referenced by Apply_Back_Sub_Variant(), CG_LOOP_Backpatch_Find_Body_TN(), CG_LOOP_Backpatch_Find_Non_Body_TN(), CIO_RWTRAN::CIO_Copy_Remove(), Convert_While_Loop_to_Fully_Predicated_Form(), Count_Copies_Needed(), KEY_SCH::Delete_Backpatches(), Fix_Backpatches(), KEY_SCH::Gen_PKE(), Generate_Copy_TNs(), Interleave_Base_Update(), RECUR_OP_DESC::RECUR_OP_DESC(), Remove_Non_Definite_Dependence(), Remove_Notations_With_Copies(), Remove_Notations_Without_Copies(), CIO_RWTRAN::Replace_Tn(), SWP_Gather_Lifetimes(), SWP_Rename_TNs(), tn_is_needed_in_epilog(), Unroll_Do_Loop(), Unroll_Do_Loop_Fully(), Unroll_Make_Remainder_Loop(), and unroll_remove_notations().
| CG_LOOP_BACKPATCH* CG_LOOP_Backpatch_Next | ( | CG_LOOP_BACKPATCH * | bp | ) |
Definition at line 1369 of file cg_loop.cxx.
References _CG_LOOP_BP_actual_ptr, _CG_LOOP_BP_iter_limited, _CG_LOOP_BP_limit_iter, cg_loop_backpatch::body_tn, cg_loop_backpatch::next, and NULL.
Referenced by Apply_Back_Sub_Variant(), CG_LOOP_Backpatch_Add(), CG_LOOP_Backpatch_Find_Body_TN(), CG_LOOP_Backpatch_Find_Non_Body_TN(), CIO_RWTRAN::CIO_Copy_Remove(), Count_Copies_Needed(), KEY_SCH::Delete_Backpatches(), Fix_Backpatches(), KEY_SCH::Gen_PKE(), Generate_Copy_TNs(), GRA_LIVE_Compute_Local_Info(), Interleave_Base_Update(), RECUR_OP_DESC::RECUR_OP_DESC(), Remove_Non_Definite_Dependence(), Remove_Notations_With_Copies(), Remove_Notations_Without_Copies(), CIO_RWTRAN::Replace_Tn(), SWP_Gather_Lifetimes(), SWP_Rename_TNs(), tn_is_needed_in_epilog(), Unroll_Make_Remainder_Loop(), unroll_remove_notations(), and unroll_rename_backpatches().
Definition at line 1443 of file cg_loop.cxx.
References cg_loop_backpatch::body_tn, Is_True, cg_loop_backpatch::next, and cg_loop_backpatch::omega.
Referenced by CIO_RWTRAN::CIO_Copy_Remove(), and CIO_RWTRAN::Replace_Tn().
Definition at line 1424 of file cg_loop.cxx.
References Is_True, cg_loop_backpatch::next, and cg_loop_backpatch::non_body_tn.
| void CG_LOOP_Backpatch_Trace | ( | BB * | bb, | |
| CG_LOOP_BACKPATCH * | bp | |||
| ) |
Definition at line 1468 of file cg_loop.cxx.
References _CG_LOOP_BP_actual_ptr, cg_loop_backpatch::body_tn, BOOL, CG_LOOP_Backpatch_Trace(), fprintf(), Is_True, cg_loop_backpatch::next, cg_loop_backpatch::non_body_tn, NULL, cg_loop_backpatch::omega, TFile, and TN_number.
Referenced by CG_LOOP_Backpatch_Trace(), CG_LOOP_Trace_Loop(), KEY_SCH::Gen_PKE(), and SWP_Emit().
| void CG_LOOP_Clear_SCCs | ( | LOOP_DESCR * | loop | ) |
Definition at line 2070 of file cg_loop.cxx.
References _CG_LOOP_info, CG_DEP_Delete_SCC_Arcs(), FOR_ALL_BB_OPs, info, LOOP_DESCR_loophead, NULL, _CG_LOOP_INFO::scc, _CG_LOOP_INFO::scc_ancestors, and _CG_LOOP_INFO::scc_descendents.
Referenced by Perform_SWP().
| void CG_LOOP_Coalesce_Backedges | ( | LOOP_DESCR * | loop | ) |
Definition at line 4288 of file cg_loop.cxx.
References Add_Goto(), BB_freq, BB_preds, BB_Retarget_Branch(), BBLIST_item, BBLIST_next, Change_Succ(), Gen_And_Insert_BB_Before(), GRA_LIVE_Compute_Liveness_For_BB(), LOOP_DESCR_Add_BB(), LOOP_DESCR_bbset, LOOP_DESCR_loophead, and preds.
| void CG_LOOP_Finish | ( | ) |
Definition at line 4180 of file cg_loop.cxx.
| BB* CG_LOOP_Gen_And_Prepend_To_Prolog | ( | BB * | loop_head, | |
| LOOP_DESCR * | loop | |||
| ) |
Definition at line 4197 of file cg_loop.cxx.
References Add_Goto(), all_bbs_in(), BB_Fall_Thru_Predecessor(), BB_freq, BB_freq_fb_based, BB_nest_level, BB_next, BB_preds, BB_prev, BOOL, CG_localize_tns, FREQ_Frequencies_Computed(), Gen_BB_Like(), Insert_BB(), last_bb, Link_Pred_Succ_with_Prob(), LOOP_DESCR_Add_BB(), LOOP_DESCR_bbset, LOOP_DESCR_nestlevel, LOOP_DESCR_Next_Enclosing_Loop(), LOOP_DESCR_Retarget_Loop_Entrances(), REGION_First_BB, Set_BB_freq_fb_based, and Set_BB_gra_spill.
Referenced by CG_LOOP::Attach_Prolog_And_Epilog(), Create_Loop_Prologue(), LOOP_RCE::Find_Prolog(), LOOP_INVAR_CODE_MOTION::Find_Prolog(), LOOP_DCE::Find_Prolog(), and Perform_Post_GCM_Steps().
| OP_LIST* CG_LOOP_Identify_Loop_Overhead | ( | LOOP_DESCR * | loop, | |
| INT32 * | loop_overhead_count, | |||
| MEM_POOL * | pool | |||
| ) |
| void CG_LOOP_Init | ( | ) |
Definition at line 273 of file cg_loop.cxx.
References CG_opt_level, FALSE, NULL, and unroll_names_valid.
Referenced by CG_PU_Initialize().
Definition at line 291 of file cg_loop.cxx.
References _CG_LOOP_info_sizeof(), bzero(), info, INT, MEM_phase_nz_pool, MEM_POOL_Alloc, next_free_loop_info, OP_MAP_Set(), OP_MAX_FIXED_OPNDS, and OP_opnds.
Referenced by Apply_Back_Sub_Variant(), CG_LOOP::Build_CG_LOOP_Info(), CG_LOOP_Init_OPS(), CGPREP_Copy_TN(), CGPREP_Copy_TN_Into_BB(), CGSPILL_Force_Rematerialization_For_BB(), CGTARG_Generate_Countdown_Loop(), Compose_Mem_Op_And_Copy_Info(), Convert_OP_to_base_update_form(), delete_memory_op(), EBO_Copy_OP_omega(), EBO_OPS_omega(), EBO_Set_OP_omega(), find_previous_constant(), KEY_SCH::Gen_PKE(), KEY_SCH::Loop_Peeling(), KEY_SCH::Loop_Preconditioning(), CIO_RWTRAN::Mark_Op_For_Prolog(), KEY_SCH::Peeling_For_Known_Trip(), KEY_SCH::Peeling_For_Unknown_Trip(), Remove_Non_Definite_Dependence(), Undo_SWP_Branch(), Unroll_Do_Loop(), Unroll_Make_Remainder_Loop(), and Unroll_Replicate_Body().
Definition at line 316 of file cg_loop.cxx.
References CG_LOOP_Init_Op(), NULL, OP_next, and OPS_first.
Referenced by Gen_Implicit_Prefetches().
| BOOL CG_LOOP_Optimize | ( | LOOP_DESCR * | loop, | |
| SWP_FIXUP_VECTOR & | fixup | |||
| ) |
Definition at line 530 of file cg_loop.h.
References Get_WN_From_Memory_OP(), Is_True, s1, s2, UINT32, WN_pf_stride_1L, and WN_pf_stride_2L.
Referenced by Calculate_Min_Resource_II().
| void CG_LOOP_Recompute_Liveness | ( | LOOP_DESCR * | loop | ) |
Definition at line 1272 of file cg_loop.cxx.
References Is_True, CG_LOOP::Loop(), and CG_LOOP::Recompute_Liveness().
Referenced by Perform_Read_Write_Removal().
Definition at line 730 of file cg_loop.cxx.
References BB_Find_Succ(), BB_id, BB_next, BB_preds, BB_prev, BB_Remove_All(), BBLIST_item, BBLIST_next, BBLIST_prob, FALSE, Is_True, Link_Pred_Succ_with_Prob(), NULL, remove_prolog_or_epilog_bbs(), and Unlink_Pred_Succ().
| void CG_LOOP_Remove_Notations | ( | LOOP_DESCR * | loop, | |
| BB * | head, | |||
| BB * | tail | |||
| ) |
Definition at line 1931 of file cg_loop.cxx.
References CG_LOOP_Trace_Loop(), Count_Copies_Needed(), FALSE, Generate_Copy_TNs(), Get_Trace(), hTN_MAP32_Create(), hTN_MAP_Create(), CG_LOOP::Loop(), LOOP_DESCR_loophead, CG_LOOP::Loop_header(), NULL, pool, Remove_Notations_With_Copies(), Remove_Notations_Without_Copies(), and TP_CGLOOP.
Referenced by CG_LOOP_Optimize(), and KEY_SCH::KEY_SCH().
Definition at line 681 of file cg_loop.cxx.
References BB_Find_Succ(), BB_id, BB_next, BB_prev, BB_succs, BBLIST_item, BBLIST_next, BBLIST_prob, FALSE, Is_True, Link_Pred_Succ_with_Prob(), NULL, remove_prolog_or_epilog_bbs(), and Unlink_Pred_Succ().
| BOOL CG_LOOP_TN_Is_Invariant | ( | LOOP_DESCR * | loop, | |
| TN * | tn | |||
| ) |
Definition at line 569 of file cg_loop.cxx.
References BB_next, BB_prev, fprintf(), Print_BB(), and TFile.
Referenced by CG_LOOP_Trace_Loop().
| void CG_LOOP_Trace_Loop | ( | LOOP_DESCR * | loop, | |
| const char * | fmt, | |||
| ... | ||||
| ) |
Definition at line 771 of file cg_loop.cxx.
References args, CG_LOOP_Backpatch_Trace(), CG_LOOP_Trace_Epilog(), CG_LOOP_Trace_Prolog(), DBar, fputs(), LOOP_DESCR_bbset, NULL, Print_BB(), SBar, TFile, va_end, va_start, and vfprintf().
Referenced by CG_LOOP_Optimize(), CG_LOOP_Remove_Notations(), KEY_SCH::KEY_SCH(), KEY_SCH::Peeling_For_Unknown_Trip(), Perform_SWP(), CIO_RWTRAN::Read_CICSE_Write_Removal(), trace_loop(), Unroll_Do_Loop(), Unroll_Do_Loop_Fully(), Unroll_Dowhile_Loop(), and Unroll_Make_Remainder_Loop().
Definition at line 553 of file cg_loop.cxx.
References BB_next, BB_prev, fprintf(), Print_BB(), and TFile.
Referenced by CG_LOOP_Trace_Loop().
| TN* CG_LOOP_Trip_Count | ( | LOOP_DESCR * | loop | ) | [inline] |
Definition at line 477 of file cg_loop.h.
References info, LOOP_DESCR_loopinfo, LOOPINFO_trip_count_tn, and NULL.
Referenced by CG_LOOP::Attach_Prolog_And_Epilog(), CG_LOOP_Optimize(), CG_LOOP_Statistics(), CGTARG_LOOP_Optimize(), CG_LOOP::Determine_SWP_Unroll_Factor(), Skip_Loop_For_Reason(), CG_LOOP::Trip_count_tn(), Unroll_Do_Loop(), and Unroll_Do_Loop_Fully().
| BB* CG_LOOP_Unroll | ( | LOOP_DESCR * | loop, | |
| BOOL | ||||
| ) |
| void Perform_Loop_Optimizations | ( | ) |
Definition at line 7374 of file cg_loop.cxx.
References BB_id, BB_innermost, BB_Loop_Lineno(), BOOL, Calculate_Dominators(), CG_LOOP_Optimize(), CG_LOOP_Skip(), CG_LOOP_Statistics(), CG_opt_level, DBar, DevWarn, Enable_SWP, fprintf(), Free_Dominators_Memory(), Get_Trace(), INT, INT32, IPFEC_Enable_Region_Formation, LOOP_DESCR_bbset, LOOP_DESCR_Detect_Loops(), LOOP_DESCR_loophead, LOOP_DESCR_nestlevel, LOOP_DESCR_next, loop_descr_pool, MEM_POOL_Delete(), MEM_POOL_Initialize, MEM_POOL_Pop, MEM_POOL_Push, NULL, SWP_OPTIONS::PU_Configure(), Rebuild_Loop_Region(), REGISTER_Request_Stacked_Rotating_Register(), SWP_Fixup(), SWP_Options, TFile, TP_CGLOOP, and TRUE.
Referenced by CG_Generate_Code().
| BOOL Perform_SWP | ( | CG_LOOP & | cl, | |
| SWP_FIXUP_VECTOR & | fixup, | |||
| bool | is_doloop | |||
| ) |
Definition at line 444 of file cg_swp.cxx.
References SWP_REG_ASSIGNMENT::Allocate_Loop_Variants(), BOOL, SWP_OP_vector::branch, SWP_OPTIONS::Budget, CG_DEP_Trace_Graph(), CG_LOOP_Calculate_Min_Recurrence_II(), CG_LOOP_Calculate_Min_Resource_II(), CG_LOOP_Clear_SCCs(), CG_LOOP_epilog, CG_LOOP_Make_Strongly_Connected_Components(), CG_LOOP_min_ii, CG_LOOP_prolog, CG_LOOP_rec_min_ii, CG_LOOP_res_min_ii, CG_LOOP_Trace_Loop(), CG_skip_local_swp, SWP_OP_vector::code_gen_time, SWP_REG_ASSIGNMENT::control_predicate_loc, Detect_SWP_Constraints(), DevWarn, SWP_OPTIONS::Enable_Bundling, SWP_REG_ASSIGNMENT::Enough_Non_Rotating_Registers(), FALSE, MinDist::Found_ii(), Get_Trace(), Get_User_Time(), SWP_OPTIONS::II_Incr_Alpha, SWP_OPTIONS::II_Incr_Beta, info, INT, Is_Loop_Skipped(), Is_True, linear_func(), CG_LOOP::Loop(), LOOP_DESCR_bbset, LOOP_DESCR_loophead, LOOP_DESCR_loopinfo, LOOPINFO_trip_count_tn, MAX, max, SWP_OPTIONS::Max_II_Alpha, SWP_OPTIONS::Max_II_Beta, MEM_local_pool, MEM_POOL_Pop, MEM_POOL_Push, MOD_SCHED_FAILED, Modulo_Schedule(), NON_ROT_REG_ALLOC_FAILED, NULL, SWP_OPTIONS::Opt_Level, SWP_OP_vector::prep_time, SWP_OP_vector::Print(), Prune_Regout_Deps(), REG_ALLOC_FAILED, SWP_OP_vector::reg_alloc_time, REGISTER_Reserve_Rotating_Registers(), SWP_REG_ASSIGNMENT::rotating_reg_used, SWP_OP_vector::sched_time, Set_Error_Phase(), SWP_OP_vector::start, Start_Timer(), SWP_OPTIONS::Starting_II, SWP_OP_vector::stop, Stop_Timer(), SWP_OP_vector::succeeded, SWP_Bundle(), SWP_Dont_Bundle(), SWP_Emit(), SWP_Failure(), SWP_OK, SWP_Show_Statistics(), SWP_Undo_Bundle(), T_SWpipe_CU, tail, TFile, time0, SWP_OP_vector::tn_non_rotating, TP_SWPIPE, and TRUE.
Referenced by CG_LOOP_Optimize().
Definition at line 387 of file cg_loop.h.
References _CG_LOOP_info, info, Is_True, _CG_LOOP_INFO::omega, OP_opnd, and TN_is_dedicated.
Referenced by Apply_Back_Sub_Invariant(), Apply_Back_Sub_Variant(), Apply_Interleave(), CG_LOOP::Build_CG_LOOP_Info(), CGPREP_Copy_TN(), CGPREP_Copy_TN_Into_BB(), CGTARG_Generate_Countdown_Loop(), CIO_RWTRAN::CIO_Copy_Remove(), Compose_Mem_Op_And_Copy_Info(), Convert_OP_to_base_update_form(), Convert_While_Loop_to_Fully_Predicated_Form(), delete_memory_op(), EBO_Copy_OP_omega(), EBO_OPS_omega(), EBO_Set_OP_omega(), EBO_Set_Predicate_omega(), Exchange_Opnd(), Find_BB_TNs(), find_previous_constant(), KEY_SCH::Gen_PKE(), Interleave_Base_Update(), merge_memory_offsets(), Remove_Non_Definite_Dependence(), Remove_Notations_With_Copies(), CIO_RWTRAN::Replace_Tn(), sxt_sequence(), unroll_remove_notations(), and Unroll_Replicate_Body().
Definition at line 864 of file cg_swp_emit.cxx.
References ANNOT_Get(), ANNOT_rotating_kernel, ANNOT_ROTATING_KERNEL, BB_annotations, BB_branch_op(), SWP_FIXUP::body, BOOL, br, SWP_FIXUP::epilog, FALSE, FOR_ALL_BB_OPs, FOR_ALL_ISA_REGISTER_CLASS(), fprintf(), Get_Trace(), i, ii, info, INT, Is_True, OP_result, OP_results, OP_scycle, SWP_FIXUP::prolog, rc, REGISTER_First_Rotating_Registers(), REGISTER_Number_Stacked_Rotating(), REGISTER_SET_Print(), REGISTER_SET_Union1(), ROTATING_KERNEL_INFO_ii, ROTATING_KERNEL_INFO_kill, ROTATING_KERNEL_INFO_live_in, SWP_Fixup_Rotating_Registers(), TFile, TN_is_register, TN_register, TN_register_class, TP_SWPIPE, and SWP_REG_ASSIGNMENT::Trace().
Referenced by Perform_Loop_Optimizations().
| void unroll_do_loop | ( | LOOP_DESCR * | , | |
| UINT32 | ||||
| ) |
| void unroll_do_loop_fully | ( | LOOP_DESCR * | , | |
| UINT32 | ||||
| ) |
| void unroll_dowhile_loop | ( | LOOP_DESCR * | , | |
| UINT32 | ||||
| ) |
Definition at line 216 of file cg_loop.cxx.
Definition at line 236 of file cg_loop.cxx.
Definition at line 245 of file cg_loop.cxx.
Definition at line 244 of file cg_loop.cxx.
Definition at line 212 of file cg_loop.cxx.
Referenced by CIO_RWTRAN::CICSE_Transform(), CIO_RWTRAN::CIO_Copy_Remove(), CIO_RWTRAN::Copy_Ops_To_Epilog(), Fix_Recurrences_After_Unrolling(), Fix_Recurrences_Before_Unrolling(), KEY_SCH::Gen_PKE(), KEY_SCH::KEY_SCH(), KEY_SCH::Loop_Preconditioning(), KEY_SCH::Loop_Unrolling(), CIO_RWTRAN::Mark_Op_For_Epilog(), KEY_SCH::Peeling_For_Unknown_Trip(), Perform_SWP(), Remove_Non_Definite_Dependence(), CIO_RWTRAN::Replace_Tn(), and tn_is_needed_in_epilog().
Definition at line 214 of file cg_loop.cxx.
Definition at line 231 of file cg_loop.cxx.
Definition at line 234 of file cg_loop.cxx.
Definition at line 211 of file cg_loop.cxx.
Referenced by Apply_Back_Sub_Variant(), CIO_RWTRAN::Backpatch_Op_In_Prolog(), CIO_RWTRAN::CICSE_Transform(), CIO_RWTRAN::CIO_Copy_Remove(), CIO_RWTRAN::Copy_Ops_To_Prolog(), Fix_Recurrences_After_Unrolling(), Fix_Recurrences_Before_Unrolling(), KEY_SCH::Gen_PKE(), KEY_SCH::KEY_SCH(), KEY_SCH::Loop_Peeling(), KEY_SCH::Loop_Preconditioning(), KEY_SCH::Loop_Unrolling(), CIO_RWTRAN::Mark_Op_For_Prolog(), KEY_SCH::Peeling_For_Known_Trip(), KEY_SCH::Peeling_For_Unknown_Trip(), Perform_SWP(), RECUR_OP_DESC::RECUR_OP_DESC(), and CIO_RWTRAN::Replace_Tn().
Definition at line 213 of file cg_loop.cxx.
Definition at line 235 of file cg_loop.cxx.
Definition at line 232 of file cg_loop.cxx.
Definition at line 218 of file cg_loop.cxx.
Referenced by CG_LOOP::Determine_Unroll_Factor(), CG_LOOP::Determine_Unroll_Fully(), and unroll_multi_bb().
Definition at line 241 of file cg_loop.cxx.
Definition at line 257 of file cg_loop.cxx.
Referenced by Configure_CG_Options(), CG_LOOP::Determine_Unroll_Factor(), and CG_LOOP::Determine_Unroll_Fully().
Definition at line 258 of file cg_loop.cxx.
Referenced by Configure_CG_Options(), CG_LOOP::Determine_SWP_Unroll_Factor(), CG_LOOP::Determine_Unroll_Factor(), and CG_LOOP::Determine_Unroll_Fully().
Definition at line 209 of file cg_loop.cxx.
1.5.6