1081 // Return the (unique) control output node that's in the loop (if it exists.)
1082 Node* stay_in_loop( Node* n, IdealLoopTree *loop);
1083 // Insert a signed compare loop exit cloned from an unsigned compare.
1084 IfNode* insert_cmpi_loop_exit(IfNode* if_cmpu, IdealLoopTree *loop);
1085 void remove_cmpi_loop_exit(IfNode* if_cmp, IdealLoopTree *loop);
1086 // Utility to register node "n" with PhaseIdealLoop
1087 void register_node(Node* n, IdealLoopTree *loop, Node* pred, int ddepth);
1088 // Utility to create an if-projection
1089 ProjNode* proj_clone(ProjNode* p, IfNode* iff);
1090 // Force the iff control output to be the live_proj
1091 Node* short_circuit_if(IfNode* iff, ProjNode* live_proj);
1092 // Insert a region before an if projection
1093 RegionNode* insert_region_before_proj(ProjNode* proj);
1094 // Insert a new if before an if projection
1095 ProjNode* insert_if_before_proj(Node* left, bool Signed, BoolTest::mask relop, Node* right, ProjNode* proj);
1096
1097 // Passed in a Phi merging (recursively) some nearly equivalent Bool/Cmps.
1098 // "Nearly" because all Nodes have been cloned from the original in the loop,
1099 // but the fall-in edges to the Cmp are different. Clone bool/Cmp pairs
1100 // through the Phi recursively, and return a Bool.
1101 BoolNode *clone_iff( PhiNode *phi, IdealLoopTree *loop );
1102 CmpNode *clone_bool( PhiNode *phi, IdealLoopTree *loop );
1103
1104
1105 // Rework addressing expressions to get the most loop-invariant stuff
1106 // moved out. We'd like to do all associative operators, but it's especially
1107 // important (common) to do address expressions.
1108 Node *remix_address_expressions( Node *n );
1109
1110 // Attempt to use a conditional move instead of a phi/branch
1111 Node *conditional_move( Node *n );
1112
1113 // Reorganize offset computations to lower register pressure.
1114 // Mostly prevent loop-fallout uses of the pre-incremented trip counter
1115 // (which are then alive with the post-incremented trip counter
1116 // forcing an extra register move)
1117 void reorg_offsets( IdealLoopTree *loop );
1118
1119 // Check for aggressive application of 'split-if' optimization,
1120 // using basic block level info.
1121 void split_if_with_blocks ( VectorSet &visited, Node_Stack &nstack );
|
1081 // Return the (unique) control output node that's in the loop (if it exists.)
1082 Node* stay_in_loop( Node* n, IdealLoopTree *loop);
1083 // Insert a signed compare loop exit cloned from an unsigned compare.
1084 IfNode* insert_cmpi_loop_exit(IfNode* if_cmpu, IdealLoopTree *loop);
1085 void remove_cmpi_loop_exit(IfNode* if_cmp, IdealLoopTree *loop);
1086 // Utility to register node "n" with PhaseIdealLoop
1087 void register_node(Node* n, IdealLoopTree *loop, Node* pred, int ddepth);
1088 // Utility to create an if-projection
1089 ProjNode* proj_clone(ProjNode* p, IfNode* iff);
1090 // Force the iff control output to be the live_proj
1091 Node* short_circuit_if(IfNode* iff, ProjNode* live_proj);
1092 // Insert a region before an if projection
1093 RegionNode* insert_region_before_proj(ProjNode* proj);
1094 // Insert a new if before an if projection
1095 ProjNode* insert_if_before_proj(Node* left, bool Signed, BoolTest::mask relop, Node* right, ProjNode* proj);
1096
1097 // Passed in a Phi merging (recursively) some nearly equivalent Bool/Cmps.
1098 // "Nearly" because all Nodes have been cloned from the original in the loop,
1099 // but the fall-in edges to the Cmp are different. Clone bool/Cmp pairs
1100 // through the Phi recursively, and return a Bool.
1101 Node *clone_iff( PhiNode *phi, IdealLoopTree *loop );
1102 CmpNode *clone_bool( PhiNode *phi, IdealLoopTree *loop );
1103
1104
1105 // Rework addressing expressions to get the most loop-invariant stuff
1106 // moved out. We'd like to do all associative operators, but it's especially
1107 // important (common) to do address expressions.
1108 Node *remix_address_expressions( Node *n );
1109
1110 // Attempt to use a conditional move instead of a phi/branch
1111 Node *conditional_move( Node *n );
1112
1113 // Reorganize offset computations to lower register pressure.
1114 // Mostly prevent loop-fallout uses of the pre-incremented trip counter
1115 // (which are then alive with the post-incremented trip counter
1116 // forcing an extra register move)
1117 void reorg_offsets( IdealLoopTree *loop );
1118
1119 // Check for aggressive application of 'split-if' optimization,
1120 // using basic block level info.
1121 void split_if_with_blocks ( VectorSet &visited, Node_Stack &nstack );
|