src/share/vm/opto/superword.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 7069452 Cdiff src/share/vm/opto/superword.cpp

src/share/vm/opto/superword.cpp

Print this page

        

*** 1165,1175 **** const TypePtr* atyp = n->adr_type(); vn = VectorLoadNode::make(_phase->C, opc, ctl, mem, adr, atyp, vlen); } else if (n->is_Store()) { // Promote value to be stored to vector ! VectorNode* val = vector_opd(p, MemNode::ValueIn); int opc = n->Opcode(); Node* ctl = n->in(MemNode::Control); Node* mem = first->in(MemNode::Memory); Node* adr = low_adr->in(MemNode::Address); --- 1165,1175 ---- const TypePtr* atyp = n->adr_type(); vn = VectorLoadNode::make(_phase->C, opc, ctl, mem, adr, atyp, vlen); } else if (n->is_Store()) { // Promote value to be stored to vector ! Node* val = vector_opd(p, MemNode::ValueIn); int opc = n->Opcode(); Node* ctl = n->in(MemNode::Control); Node* mem = first->in(MemNode::Memory); Node* adr = low_adr->in(MemNode::Address);
*** 1197,1207 **** } } //------------------------------vector_opd--------------------------- // Create a vector operand for the nodes in pack p for operand: in(opd_idx) ! VectorNode* SuperWord::vector_opd(Node_List* p, int opd_idx) { Node* p0 = p->at(0); uint vlen = p->size(); Node* opd = p0->in(opd_idx); bool same_opd = true; --- 1197,1207 ---- } } //------------------------------vector_opd--------------------------- // Create a vector operand for the nodes in pack p for operand: in(opd_idx) ! Node* SuperWord::vector_opd(Node_List* p, int opd_idx) { Node* p0 = p->at(0); uint vlen = p->size(); Node* opd = p0->in(opd_idx); bool same_opd = true;
*** 1213,1225 **** break; } } if (same_opd) { ! if (opd->is_Vector()) { ! return (VectorNode*)opd; // input is matching vector } // Convert scalar input to vector. Use p0's type because it's container // maybe smaller than the operand's container. const Type* opd_t = velt_type(!in_bb(opd) ? p0 : opd); const Type* p0_t = velt_type(p0); if (p0_t->higher_equal(opd_t)) opd_t = p0_t; --- 1213,1226 ---- break; } } if (same_opd) { ! if (opd->is_Vector() || opd->is_VectorLoad()) { ! return opd; // input is matching vector } + assert(!opd->is_VectorStore(), "such vector is not expected here"); // Convert scalar input to vector. Use p0's type because it's container // maybe smaller than the operand's container. const Type* opd_t = velt_type(!in_bb(opd) ? p0 : opd); const Type* p0_t = velt_type(p0); if (p0_t->higher_equal(opd_t)) opd_t = p0_t;
src/share/vm/opto/superword.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File