equal
deleted
inserted
replaced
468 n = n->in(MemNode::Memory); |
468 n = n->in(MemNode::Memory); |
469 } |
469 } |
470 } |
470 } |
471 |
471 |
472 //------------------------------stmts_can_pack--------------------------- |
472 //------------------------------stmts_can_pack--------------------------- |
473 // Can s1 and s2 be in a pack with s1 immediately preceeding s2 and |
473 // Can s1 and s2 be in a pack with s1 immediately preceding s2 and |
474 // s1 aligned at "align" |
474 // s1 aligned at "align" |
475 bool SuperWord::stmts_can_pack(Node* s1, Node* s2, int align) { |
475 bool SuperWord::stmts_can_pack(Node* s1, Node* s2, int align) { |
476 if (isomorphic(s1, s2)) { |
476 if (isomorphic(s1, s2)) { |
477 if (independent(s1, s2)) { |
477 if (independent(s1, s2)) { |
478 if (!exists_at(s1, 0) && !exists_at(s2, 1)) { |
478 if (!exists_at(s1, 0) && !exists_at(s2, 1)) { |
867 |
867 |
868 // Return false if some input is not vector and inside block |
868 // Return false if some input is not vector and inside block |
869 for (uint i = start; i < end; i++) { |
869 for (uint i = start; i < end; i++) { |
870 if (!is_vector_use(p0, i)) { |
870 if (!is_vector_use(p0, i)) { |
871 // For now, return false if not scalar promotion case (inputs are the same.) |
871 // For now, return false if not scalar promotion case (inputs are the same.) |
872 // Later, implement PackNode and allow differring, non-vector inputs |
872 // Later, implement PackNode and allow differing, non-vector inputs |
873 // (maybe just the ones from outside the block.) |
873 // (maybe just the ones from outside the block.) |
874 Node* p0_def = p0->in(i); |
874 Node* p0_def = p0->in(i); |
875 for (uint j = 1; j < p->size(); j++) { |
875 for (uint j = 1; j < p->size(); j++) { |
876 Node* use = p->at(j); |
876 Node* use = p->at(j); |
877 Node* def = use->in(i); |
877 Node* def = use->in(i); |