src/share/vm/opto/superword.cpp

changeset 1422
00977607da34
parent 1420
685e959d09ea
child 1493
73a726751507
equal deleted inserted replaced
1421:62001a362ce9 1422:00977607da34
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);

mercurial