src/share/vm/opto/superword.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
8148754 Cdiff src/share/vm/opto/superword.cpp
src/share/vm/opto/superword.cpp
Print this page
*** 3072,3096 ****
}
//----------------------------get_pre_loop_end---------------------------
// Find pre loop end from main loop. Returns null if none.
CountedLoopEndNode* SuperWord::get_pre_loop_end(CountedLoopNode* cl) {
! Node* ctrl = cl->in(LoopNode::EntryControl);
! if (!ctrl->is_IfTrue() && !ctrl->is_IfFalse()) return NULL;
! Node* iffm = ctrl->in(0);
! if (!iffm->is_If()) return NULL;
! Node* bolzm = iffm->in(1);
! if (!bolzm->is_Bool()) return NULL;
! Node* cmpzm = bolzm->in(1);
! if (!cmpzm->is_Cmp()) return NULL;
! Node* opqzm = cmpzm->in(2);
! // Can not optimize a loop if zero-trip Opaque1 node is optimized
! // away and then another round of loop opts attempted.
! if (opqzm->Opcode() != Op_Opaque1) {
return NULL;
}
! Node* p_f = iffm->in(0);
if (!p_f->is_IfFalse()) return NULL;
if (!p_f->in(0)->is_CountedLoopEnd()) return NULL;
CountedLoopEndNode* pre_end = p_f->in(0)->as_CountedLoopEnd();
CountedLoopNode* loop_node = pre_end->loopnode();
if (loop_node == NULL || !loop_node->is_pre_loop()) return NULL;
--- 3072,3088 ----
}
//----------------------------get_pre_loop_end---------------------------
// Find pre loop end from main loop. Returns null if none.
CountedLoopEndNode* SuperWord::get_pre_loop_end(CountedLoopNode* cl) {
! // The loop cannot be optimized if the graph shape at
! // the loop entry is inappropriate.
! if (!_phase->is_canonical_main_loop_entry(cl)) {
return NULL;
}
!
! Node* p_f = cl->in(LoopNode::EntryControl)->in(0)->in(0);
if (!p_f->is_IfFalse()) return NULL;
if (!p_f->in(0)->is_CountedLoopEnd()) return NULL;
CountedLoopEndNode* pre_end = p_f->in(0)->as_CountedLoopEnd();
CountedLoopNode* loop_node = pre_end->loopnode();
if (loop_node == NULL || !loop_node->is_pre_loop()) return NULL;
src/share/vm/opto/superword.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File