osprey/be/lno/move.h File Reference

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions/Subroutines

void Hoist_Statement (WN *wn_stat, INT hoist_level)
INT Hoistable_Statement (WN *wn_stat, DU_MANAGER *du)
void Hoist_Statements (WN *wn_outer_loop, DU_MANAGER *du)
void Hoist_Necessary_Code_Up (WN *wn_sunk, DU_MANAGER *du)
BOOL Statement_Sinkable_Out_Of_Loop (WN *wn_stat, WN *wn_loop)
void Sink_Out_Sandwiched_Statement (WN *wn_stat, WN *wn_sink_loop)
BOOL Sandwiched_Code_Sinkable_In (WN *wn_outer_loop, WN *wn_sink_loop, DU_MANAGER *du)
WNSink_Sandwiched_Code_In (WN *wn_outer_loop, WN *wn_sink_loop)
void SNL_Sink_Out_Sandwiched_Statements (WN *wn_loop, INT nloops, BOOL test_legality, ARRAY_DIRECTED_GRAPH16 *dg, DU_MANAGER *du)
void Hoist_And_Sink_For_Nested_Doacross (WN *wn_loop, ARRAY_DIRECTED_GRAPH16 *dg, DU_MANAGER *du)
WNInitial_Hoist_Place (WN *wn_stat)
WNHoist_Merge (WN *wn1, WN *wn2)
WNHoistable_Place (WN *wn_stat, DU_MANAGER *du)
WNFind_Sibling_Containing (WN *wn_stat, WN *wn_contained)
BOOL Maybe_Assigned_Exp (WN *wn_exp, WN *wn_first, WN *wn_last)


Function Documentation

WN* Find_Sibling_Containing ( WN wn_stat,
WN wn_contained 
)

Definition at line 878 of file move.cxx.

References LWN_Get_Parent, NULL, wn, and WN_next().

Referenced by Forward_Substitutable(), and Sinkable_Into_Loop().

void Hoist_And_Sink_For_Nested_Doacross ( WN wn_loop,
ARRAY_DIRECTED_GRAPH16 dg,
DU_MANAGER du 
)

WN* Hoist_Merge ( WN wn1,
WN wn2 
)

Definition at line 252 of file move.cxx.

References NULL, and Wn_Is_Inside().

Referenced by Hoist_Place(), Hoist_Reshaped_Reference(), and Scalar_Store_Hoist_Place().

void Hoist_Necessary_Code_Up ( WN wn_sunk,
DU_MANAGER du 
)

void Hoist_Statement ( WN wn_stat,
INT  hoist_level 
)

Description: This file contains functions to do hoisting and sinking (mainly for lego tiling and nested doacrosses.)

void Hoist_Statement(WN* stat, INT hoist_level);

Hoist the statement 'stat' so that it is enclosed by a loop of level 'hoist_level'. If 'hoist_level' is -1, hoist 'stat' out of all loops.

INT Hoistable_Statement(WN* stat, DU_MANAGER* du);

Returns the depth to which 'stat' can be hoisted. This is the depth of the loop enclosing 'stat' if there will be one, and -1 if 'stat' can be hoisted out of all loops.

void Hoist_Statements(WN* outer_loop, DU_MANAGER* du)

Hoist all of the statements which are sandwiched code in 'outer_loop' and can be legally hoisted out of the loop.

BOOL Statement_Sinkable_Out_Of_Loop(WN* wn_stat, WN* wn_loop)

Returns TRUE if 'wn_stat' is sinkable out of the loop 'wn_loop' Returns FALSE if not, or if we can't prove it.

void Sink_Out_Sandwiched_Statement(WN* wn_stat, WN* wn_sink_loop)

Sink the sandwiched statement 'wn_stat' out of the loop 'wn_sink_loop'.

BOOL Sandwiched_Code_Sinkable_In(WN* wn_outer_loop, WN* wn_sink_loop, DU_MANAGER* du)

Returns TRUE if the sandwiched code within 'wn_outer_loop' and 'wn_sink_loop' can be sunk inside 'wn_sink_loop'. Returns FALSE otherwise.

WN* Sink_Sandwiched_Code_In(WN* wn_outer_loop, WN* wn_sink_loop)

Sink the sandwiched code between 'wn_outer_loop' and 'wn_sink_loop' inside 'wn_sink_loop'. Returns the first statement sunk.

void SNL_Sink_Out_Sandwiched_Statements(WN* wn_loop, INT nloops, BOOL test_legality, ARRAY_DIRECTED_GRAPH16* dg, DU_MANAGER* du)

Sink the sandwiched code out of the SNL whose outermost loop is 'wn_loop' and which consists of 'nloops' loops. If 'test_ legality', test for legality and sink only those statements which are proved to be sinkable.

void Hoist_And_Sink_For_Nested_Doacross(WN* wn_loop, ARRAY_DIRECTED_GRAPH16* dg, DU_MANAGER* du)

Hoist and sink sandwiched code out of the nested doacross loop 'wn_loop'.

WN* Find_Sibling_Containing(WN* wn_stat, WN* wn_contained)

Returns the sibling of 'wn_stat' after or including 'wn_stat' which contains 'wn_contained' if there is one, NULL otherwise.

BOOL Maybe_Assigned_Exp(WN* wn_exp, WN* wn_first, WN* wn_last)

Returns TRUE if any node in 'wn_exp' may be assigned in the code segment between 'wn_first' and 'wn_last' inclusive.

Definition at line 107 of file move.cxx.

References DO_LOOP_INFO::Depth, FmtAssert, Get_Do_Loop_Info(), Loop_Depth(), LWN_Extract_From_Block(), LWN_Get_Parent, LWN_Insert_Block_Before(), NULL, OPC_DO_LOOP, wn, and WN_opcode().

Referenced by Hoist_Iload_Ldid_Upper_Bound_One_Level(), Hoist_Out_Nested_Statements(), Hoist_Statements(), and Mp_Nested_Last_Thread().

void Hoist_Statements ( WN wn_outer_loop,
DU_MANAGER du 
)

WN* Hoistable_Place ( WN wn_stat,
DU_MANAGER du 
)

INT Hoistable_Statement ( WN wn_stat,
DU_MANAGER du 
)

WN* Initial_Hoist_Place ( WN wn_stat  ) 

BOOL Maybe_Assigned_Exp ( WN wn_exp,
WN wn_first,
WN wn_last 
)

Definition at line 820 of file move.cxx.

References Maybe_Assigned_Exp_Traverse().

Referenced by Forward_Substitutable().

BOOL Sandwiched_Code_Sinkable_In ( WN wn_outer_loop,
WN wn_sink_loop,
DU_MANAGER du 
)

Definition at line 1141 of file move.cxx.

References FALSE, LWN_Get_Parent, NULL, Sinkable_Into_Loop(), TRUE, wn, WN_do_body, WN_next(), and WN_prev().

Referenced by SNL_Legal_Permutation().

void Sink_Out_Sandwiched_Statement ( WN wn_stat,
WN wn_sink_loop 
)

WN* Sink_Sandwiched_Code_In ( WN wn_outer_loop,
WN wn_sink_loop 
)

void SNL_Sink_Out_Sandwiched_Statements ( WN wn_loop,
INT  nloops,
BOOL  test_legality,
ARRAY_DIRECTED_GRAPH16 dg,
DU_MANAGER du 
)

BOOL Statement_Sinkable_Out_Of_Loop ( WN wn_stat,
WN wn_loop 
)


Generated on Wed Apr 8 14:33:54 2009 for Open64 by  doxygen 1.5.6