src/share/vm/opto/superword.cpp

changeset 3040
c7b60b601eb4
parent 2727
08eb13460b3a
child 3048
6987871cfb9b
     1.1 --- a/src/share/vm/opto/superword.cpp	Wed Jul 27 15:06:35 2011 -0700
     1.2 +++ b/src/share/vm/opto/superword.cpp	Wed Jul 27 17:28:36 2011 -0700
     1.3 @@ -1167,7 +1167,7 @@
     1.4  
     1.5        } else if (n->is_Store()) {
     1.6          // Promote value to be stored to vector
     1.7 -        VectorNode* val = vector_opd(p, MemNode::ValueIn);
     1.8 +        Node* val = vector_opd(p, MemNode::ValueIn);
     1.9  
    1.10          int   opc = n->Opcode();
    1.11          Node* ctl = n->in(MemNode::Control);
    1.12 @@ -1199,7 +1199,7 @@
    1.13  
    1.14  //------------------------------vector_opd---------------------------
    1.15  // Create a vector operand for the nodes in pack p for operand: in(opd_idx)
    1.16 -VectorNode* SuperWord::vector_opd(Node_List* p, int opd_idx) {
    1.17 +Node* SuperWord::vector_opd(Node_List* p, int opd_idx) {
    1.18    Node* p0 = p->at(0);
    1.19    uint vlen = p->size();
    1.20    Node* opd = p0->in(opd_idx);
    1.21 @@ -1215,9 +1215,10 @@
    1.22    }
    1.23  
    1.24    if (same_opd) {
    1.25 -    if (opd->is_Vector()) {
    1.26 -      return (VectorNode*)opd; // input is matching vector
    1.27 +    if (opd->is_Vector() || opd->is_VectorLoad()) {
    1.28 +      return opd; // input is matching vector
    1.29      }
    1.30 +    assert(!opd->is_VectorStore(), "such vector is not expected here");
    1.31      // Convert scalar input to vector. Use p0's type because it's container
    1.32      // maybe smaller than the operand's container.
    1.33      const Type* opd_t = velt_type(!in_bb(opd) ? p0 : opd);

mercurial