471 |
471 |
472 //------------------------------stmts_can_pack--------------------------- |
472 //------------------------------stmts_can_pack--------------------------- |
473 // Can s1 and s2 be in a pack with s1 immediately preceding 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 |
|
477 // Do not use superword for non-primitives |
|
478 if((s1->is_Mem() && !is_java_primitive(s1->as_Mem()->memory_type())) || |
|
479 (s2->is_Mem() && !is_java_primitive(s2->as_Mem()->memory_type()))) |
|
480 return false; |
|
481 |
476 if (isomorphic(s1, s2)) { |
482 if (isomorphic(s1, s2)) { |
477 if (independent(s1, s2)) { |
483 if (independent(s1, s2)) { |
478 if (!exists_at(s1, 0) && !exists_at(s2, 1)) { |
484 if (!exists_at(s1, 0) && !exists_at(s2, 1)) { |
479 if (!s1->is_Mem() || are_adjacent_refs(s1, s2)) { |
485 if (!s1->is_Mem() || are_adjacent_refs(s1, s2)) { |
480 int s1_align = alignment(s1); |
486 int s1_align = alignment(s1); |