hotspot/src/share/vm/opto/superword.cpp
changeset 25932 15d133edd8f6
parent 25930 eae8b7490d2c
child 30211 442fbbb31f75
equal deleted inserted replaced
25931:87d502b41fb3 25932:15d133edd8f6
  1376       Node* first   = executed_first(p);
  1376       Node* first   = executed_first(p);
  1377       int   opc = n->Opcode();
  1377       int   opc = n->Opcode();
  1378       if (n->is_Load()) {
  1378       if (n->is_Load()) {
  1379         Node* ctl = n->in(MemNode::Control);
  1379         Node* ctl = n->in(MemNode::Control);
  1380         Node* mem = first->in(MemNode::Memory);
  1380         Node* mem = first->in(MemNode::Memory);
       
  1381         SWPointer p1(n->as_Mem(), this);
       
  1382         // Identify the memory dependency for the new loadVector node by
       
  1383         // walking up through memory chain.
       
  1384         // This is done to give flexibility to the new loadVector node so that
       
  1385         // it can move above independent storeVector nodes.
       
  1386         while (mem->is_StoreVector()) {
       
  1387           SWPointer p2(mem->as_Mem(), this);
       
  1388           int cmp = p1.cmp(p2);
       
  1389           if (SWPointer::not_equal(cmp) || !SWPointer::comparable(cmp)) {
       
  1390             mem = mem->in(MemNode::Memory);
       
  1391           } else {
       
  1392             break; // dependent memory
       
  1393           }
       
  1394         }
  1381         Node* adr = low_adr->in(MemNode::Address);
  1395         Node* adr = low_adr->in(MemNode::Address);
  1382         const TypePtr* atyp = n->adr_type();
  1396         const TypePtr* atyp = n->adr_type();
  1383         vn = LoadVectorNode::make(opc, ctl, mem, adr, atyp, vlen, velt_basic_type(n));
  1397         vn = LoadVectorNode::make(opc, ctl, mem, adr, atyp, vlen, velt_basic_type(n));
  1384         vlen_in_bytes = vn->as_LoadVector()->memory_size();
  1398         vlen_in_bytes = vn->as_LoadVector()->memory_size();
  1385       } else if (n->is_Store()) {
  1399       } else if (n->is_Store()) {