src/share/vm/opto/superword.cpp

changeset 1040
98cb887364d3
parent 993
3b5ac9e7e6ea
child 1063
7bb995fbd3c0
equal deleted inserted replaced
1039:ec59443af135 1040:98cb887364d3
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);

mercurial