#include "defs.h"#include "cxx_template.h"#include "wn.h"#include "lnopt_main.h"#include "lnoutils.h"#include "ff_utils.h"


Go to the source code of this file.
Data Types | |
| module | SNL_INFO |
| module | FIZ_FUSE_INFO |
Enumerations | |
| enum | SNL_TYPE { Invalid = 0, Non_SNL = 1, Not_Inner = 2, Inner = 3 } |
Functions/Subroutines | |
| FISSION_FUSION_STATUS | Fuse_Level_By_Level (WN *loop1, WN *loop2, UINT *fusion_level, UINT peeling_limit, BOOL allow_partial_fusion=FALSE, BOOL allow_outer_peeling=FALSE, FIZ_FUSE_INFO *ffi=NULL) |
| FIZ_FUSE_INFO * | Fiz_Fuse (WN *loop, FIZ_FUSE_INFO *snls, MEM_POOL *mpool) |
| FIZ_FUSE_INFO * | If_While_Region_Fiz_Fuse (WN *wn, FIZ_FUSE_INFO *snls, MEM_POOL *mpool) |
| enum SNL_TYPE |
| FIZ_FUSE_INFO* Fiz_Fuse | ( | WN * | loop, | |
| FIZ_FUSE_INFO * | snls, | |||
| MEM_POOL * | mpool | |||
| ) |
Definition at line 808 of file fiz_fuse.cxx.
References Array_Dependence_Graph, BOOL, Cannot_Concurrentize(), FIZ_FUSE_INFO::Copy_Snl(), CXX_NEW, d1, d2, FIZ_FUSE_INFO::Delete_Last_Snl(), DevWarn, Do_Loop_Has_Calls(), Do_Loop_Has_Gotos(), Do_Loop_Is_Good(), Do_Loop_Is_Inner(), Do_Loop_Is_Mp(), Enclosing_Do_Loop(), FAIL, Failed, FALSE, Find_SCF_Inside(), Fission(), Fiz_Fuse(), fiz_fuse_analysis_info(), FIZ_FUSE_INFO::FIZ_FUSE_INFO(), fiz_fuse_tlog_info(), FmtAssert, DYN_ARRAY< T >::Free_array(), Fuse(), Fuse_Level_By_Level(), FIZ_FUSE_INFO::Get_Depth(), Get_Do_Loop_Info(), Get_Only_Loop_Inside(), FIZ_FUSE_INFO::Get_Type(), FIZ_FUSE_INFO::Get_Wn(), i, If_While_Region_Fiz_Fuse(), info, INFO, Inner, inside_parallelizable_loop(), INT, Invalid, DYN_ARRAY< T >::Lastidx(), LNO_Analysis, LNO_default_pool, LNO_Fission, LNO_Fusion, LNO_Fusion_Peeling_Limit, LNO_local_pool, LNO_Tlog, LWN_Get_Parent, MEM_POOL_Pop, MEM_POOL_Push, MIN, Move_Adjacent(), FIZ_FUSE_INFO::New_Snl(), DYN_ARRAY< T >::Newidx(), DO_LOOP_INFO::No_Fission, DO_LOOP_INFO::No_Fusion, Non_SNL, Not_Inner, NULL, FIZ_FUSE_INFO::Num_Snl(), opc, OPC_DO_LOOP, OPC_DO_WHILE, OPC_IF, OPC_REGION, OPC_WHILE_DO, DO_LOOP_INFO::Parallelizable, FIZ_FUSE_INFO::Set_Depth(), FIZ_FUSE_INFO::Set_Type(), FIZ_FUSE_INFO::Set_Wn(), SUCCEED, Succeeded, Succeeded_and_Inner_Loop_Removed, tmp, toplogical_reordering(), TRUE, Try_Level_By_Level, UINT, wn, WN_do_body, WN_first(), WN_Get_Linenum(), WN_next(), and WN_opcode().
Referenced by Fiz_Fuse(), Fiz_Fuse_Phase(), and If_While_Region_Fiz_Fuse().
| FISSION_FUSION_STATUS Fuse_Level_By_Level | ( | WN * | loop1, | |
| WN * | loop2, | |||
| UINT * | fusion_level, | |||
| UINT | peeling_limit, | |||
| BOOL | allow_partial_fusion = FALSE, |
|||
| BOOL | allow_outer_peeling = FALSE, |
|||
| FIZ_FUSE_INFO * | ffi = NULL | |||
| ) |
Definition at line 718 of file fiz_fuse.cxx.
References CXX_NEW_ARRAY, Extract_Branch(), Failed, FALSE, fast_fuse_check_ok(), Fuse(), INT, INT32_MAX, PROMPF_INFO::Is_Enabled(), LNO_local_pool, Move_Adjacent(), NULL, OPC_DO_LOOP, Partially_fused, Prompf_Info, Replace_Corresponding_Loops(), PROMPF_INFO::Save(), Save_Corresponding_Loops(), Succeeded, Succeeded_and_Inner_Loop_Removed, TRUE, UINT, Version_Loop_Pair(), wn, WN_do_body, WN_else, WN_first(), WN_next(), WN_opcode(), and WN_then.
Referenced by Fiz_Fuse(), and Fuse_Outer_Loops().
| FIZ_FUSE_INFO* If_While_Region_Fiz_Fuse | ( | WN * | wn, | |
| FIZ_FUSE_INFO * | snls, | |||
| MEM_POOL * | mpool | |||
| ) |
Definition at line 300 of file fiz_fuse.cxx.
References IF_INFO::Contains_Do_Loops, CXX_NEW, Do_Loop_Is_Mp(), Fiz_Fuse(), FIZ_FUSE_INFO::FIZ_FUSE_INFO(), Get_If_Info(), i, If_While_Region_Fiz_Fuse(), ii, INT, Is_True, LNO_default_pool, LNO_local_pool, MEM_POOL_Pop, MEM_POOL_Push, FIZ_FUSE_INFO::New_Snl(), Non_SNL, NULL, opc, OPC_DO_LOOP, OPC_DO_WHILE, OPC_IF, OPC_REGION, OPC_WHILE_DO, void, WN_else, WN_first(), WN_next(), WN_opcode(), WN_region_body, WN_then, and WN_while_body.
Referenced by Fiz_Fuse(), Fiz_Fuse_Phase(), and If_While_Region_Fiz_Fuse().
1.5.6