src/hotspot/share/opto/superword.cpp
changeset 48145 f913f6dba2d3
parent 48136 c035fbb1beb4
child 48309 1a0499fd252e
equal deleted inserted replaced
48144:364207a23251 48145:f913f6dba2d3
  1351     num_s1_uses++;
  1351     num_s1_uses++;
  1352     if (!in_bb(t1)) continue;
  1352     if (!in_bb(t1)) continue;
  1353     for (DUIterator_Fast jmax, j = s2->fast_outs(jmax); j < jmax; j++) {
  1353     for (DUIterator_Fast jmax, j = s2->fast_outs(jmax); j < jmax; j++) {
  1354       Node* t2 = s2->fast_out(j);
  1354       Node* t2 = s2->fast_out(j);
  1355       if (!in_bb(t2)) continue;
  1355       if (!in_bb(t2)) continue;
       
  1356       if (t2->Opcode() == Op_AddI && t2 == _lp->as_CountedLoop()->incr()) continue; // don't mess with the iv
  1356       if (!opnd_positions_match(s1, t1, s2, t2))
  1357       if (!opnd_positions_match(s1, t1, s2, t2))
  1357         continue;
  1358         continue;
  1358       if (stmts_can_pack(t1, t2, align)) {
  1359       if (stmts_can_pack(t1, t2, align)) {
  1359         int my_savings = est_savings(t1, t2);
  1360         int my_savings = est_savings(t1, t2);
  1360         if (my_savings > savings) {
  1361         if (my_savings > savings) {
  3311   // the loop entry is inappropriate.
  3312   // the loop entry is inappropriate.
  3312   if (!PhaseIdealLoop::is_canonical_loop_entry(cl)) {
  3313   if (!PhaseIdealLoop::is_canonical_loop_entry(cl)) {
  3313     return NULL;
  3314     return NULL;
  3314   }
  3315   }
  3315 
  3316 
  3316   Node* p_f = cl->in(LoopNode::EntryControl)->in(0)->in(0);
  3317   Node* p_f = cl->skip_strip_mined()->in(LoopNode::EntryControl)->in(0)->in(0);
  3317   if (!p_f->is_IfFalse()) return NULL;
  3318   if (!p_f->is_IfFalse()) return NULL;
  3318   if (!p_f->in(0)->is_CountedLoopEnd()) return NULL;
  3319   if (!p_f->in(0)->is_CountedLoopEnd()) return NULL;
  3319   CountedLoopEndNode* pre_end = p_f->in(0)->as_CountedLoopEnd();
  3320   CountedLoopEndNode* pre_end = p_f->in(0)->as_CountedLoopEnd();
  3320   CountedLoopNode* loop_node = pre_end->loopnode();
  3321   CountedLoopNode* loop_node = pre_end->loopnode();
  3321   if (loop_node == NULL || !loop_node->is_pre_loop()) return NULL;
  3322   if (loop_node == NULL || !loop_node->is_pre_loop()) return NULL;