3609 return 0;
3610 }
3611
3612 Node* SuperWord::last_node(Node* nd) {
3613 for (int ii = 0; ii < _iteration_last.length(); ii++) {
3614 Node* nnn = _iteration_last.at(ii);
3615 if (same_origin_idx(nnn, nd)) {
3616 #ifndef PRODUCT
3617 if (_vector_loop_debug) {
3618 tty->print_cr("SuperWord::last_node _clone_map.idx(nnn->_idx)=%d, _clone_map.idx(nd->_idx)=%d",
3619 _clone_map.idx(nnn->_idx), _clone_map.idx(nd->_idx));
3620 }
3621 #endif
3622 return nnn;
3623 }
3624 }
3625 return 0;
3626 }
3627
3628 int SuperWord::mark_generations() {
3629 Node *ii_err = 0, *tail_err;
3630 for (int i = 0; i < _mem_slice_head.length(); i++) {
3631 Node* phi = _mem_slice_head.at(i);
3632 assert(phi->is_Phi(), "must be phi");
3633
3634 Node* tail = _mem_slice_tail.at(i);
3635 if (_ii_last == -1) {
3636 tail_err = tail;
3637 _ii_last = _clone_map.gen(tail->_idx);
3638 }
3639 else if (_ii_last != _clone_map.gen(tail->_idx)) {
3640 #ifndef PRODUCT
3641 if (TraceSuperWord && Verbose) {
3642 tty->print_cr("SuperWord::mark_generations _ii_last error - found different generations in two tail nodes ");
3643 tail->dump();
3644 tail_err->dump();
3645 }
3646 #endif
3647 return -1;
3648 }
3649
|
3609 return 0;
3610 }
3611
3612 Node* SuperWord::last_node(Node* nd) {
3613 for (int ii = 0; ii < _iteration_last.length(); ii++) {
3614 Node* nnn = _iteration_last.at(ii);
3615 if (same_origin_idx(nnn, nd)) {
3616 #ifndef PRODUCT
3617 if (_vector_loop_debug) {
3618 tty->print_cr("SuperWord::last_node _clone_map.idx(nnn->_idx)=%d, _clone_map.idx(nd->_idx)=%d",
3619 _clone_map.idx(nnn->_idx), _clone_map.idx(nd->_idx));
3620 }
3621 #endif
3622 return nnn;
3623 }
3624 }
3625 return 0;
3626 }
3627
3628 int SuperWord::mark_generations() {
3629 Node *ii_err = NULL, *tail_err = NULL;
3630 for (int i = 0; i < _mem_slice_head.length(); i++) {
3631 Node* phi = _mem_slice_head.at(i);
3632 assert(phi->is_Phi(), "must be phi");
3633
3634 Node* tail = _mem_slice_tail.at(i);
3635 if (_ii_last == -1) {
3636 tail_err = tail;
3637 _ii_last = _clone_map.gen(tail->_idx);
3638 }
3639 else if (_ii_last != _clone_map.gen(tail->_idx)) {
3640 #ifndef PRODUCT
3641 if (TraceSuperWord && Verbose) {
3642 tty->print_cr("SuperWord::mark_generations _ii_last error - found different generations in two tail nodes ");
3643 tail->dump();
3644 tail_err->dump();
3645 }
3646 #endif
3647 return -1;
3648 }
3649
|