< prev index next >

src/hotspot/share/opto/vectornode.cpp

Print this page
rev 50140 : Vector cast support


 278   case Op_NegVF:
 279   case Op_NegVD:
 280   case Op_SqrtVF:
 281   case Op_SqrtVD:
 282   case Op_NotV:
 283   case Op_LShiftVB:
 284   case Op_LShiftVS:
 285   case Op_LShiftVI:
 286   case Op_LShiftVL:
 287   case Op_RShiftVB:
 288   case Op_RShiftVS:
 289   case Op_RShiftVI:
 290   case Op_RShiftVL:
 291   case Op_URShiftVB:
 292   case Op_URShiftVS:
 293   case Op_URShiftVI:
 294   case Op_URShiftVL:
 295   case Op_AndV:
 296   case Op_OrV:
 297   case Op_XorV:










 298     // When op is already vectorized, return that directly.
 299     return sopc;
 300 
 301   default:
 302     return 0; // Unimplemented
 303   }
 304 }
 305 
 306 int VectorNode::replicate_opcode(BasicType bt) {
 307   switch(bt) {
 308     case T_BOOLEAN:
 309     case T_BYTE:
 310       return Op_ReplicateB;
 311     case T_SHORT:
 312     case T_CHAR:
 313       return Op_ReplicateS;
 314     case T_INT:
 315       return Op_ReplicateI;
 316     case T_LONG:
 317       return Op_ReplicateL;


 467 
 468   case Op_LShiftVB: return new LShiftVBNode(n1, n2, vt);
 469   case Op_LShiftVS: return new LShiftVSNode(n1, n2, vt);
 470   case Op_LShiftVI: return new LShiftVINode(n1, n2, vt);
 471   case Op_LShiftVL: return new LShiftVLNode(n1, n2, vt);
 472 
 473   case Op_RShiftVB: return new RShiftVBNode(n1, n2, vt);
 474   case Op_RShiftVS: return new RShiftVSNode(n1, n2, vt);
 475   case Op_RShiftVI: return new RShiftVINode(n1, n2, vt);
 476   case Op_RShiftVL: return new RShiftVLNode(n1, n2, vt);
 477 
 478   case Op_URShiftVB: return new URShiftVBNode(n1, n2, vt);
 479   case Op_URShiftVS: return new URShiftVSNode(n1, n2, vt);
 480   case Op_URShiftVI: return new URShiftVINode(n1, n2, vt);
 481   case Op_URShiftVL: return new URShiftVLNode(n1, n2, vt);
 482 
 483   case Op_AndV: return new AndVNode(n1, n2, vt);
 484   case Op_OrV:  return new OrVNode (n1, n2, vt);
 485   case Op_XorV: return new XorVNode(n1, n2, vt);
 486   
 487   case Op_ConvertVF2VD:
 488     if (bt == T_DOUBLE) {
 489       return new ConvertVF2VDNode(n1, vt);
 490     }



 491   default:
 492     fatal("Missed vector creation for '%s'", NodeClassNames[vopc]);
 493     return NULL;
 494   }
 495 }
 496 
 497 VectorNode* VectorNode::make(int opc, Node* n1, Node* n2, Node* n3, uint vlen, BasicType bt) {
 498   const TypeVect* vt = TypeVect::make(bt, vlen);
 499   int vopc = VectorNode::opcode(opc, bt);
 500   // This method should not be called for unimplemented vectors.
 501   guarantee(vopc > 0, "Vector for '%s' is not implemented", NodeClassNames[opc]);
 502   switch (vopc) {
 503   case Op_FmaVD: return new FmaVDNode(n1, n2, n3, vt);
 504   case Op_FmaVF: return new FmaVFNode(n1, n2, n3, vt);
 505   default:
 506     fatal("Missed vector creation for '%s'", NodeClassNames[vopc]);
 507     return NULL;
 508   }
 509 }
 510 




 278   case Op_NegVF:
 279   case Op_NegVD:
 280   case Op_SqrtVF:
 281   case Op_SqrtVD:
 282   case Op_NotV:
 283   case Op_LShiftVB:
 284   case Op_LShiftVS:
 285   case Op_LShiftVI:
 286   case Op_LShiftVL:
 287   case Op_RShiftVB:
 288   case Op_RShiftVS:
 289   case Op_RShiftVI:
 290   case Op_RShiftVL:
 291   case Op_URShiftVB:
 292   case Op_URShiftVS:
 293   case Op_URShiftVI:
 294   case Op_URShiftVL:
 295   case Op_AndV:
 296   case Op_OrV:
 297   case Op_XorV:
 298   case Op_VectorBlend:
 299   case Op_VectorReinterpret:
 300   case Op_VectorTest:
 301   case Op_VectorMaskCmp:
 302   case Op_VectorCastB2X:
 303   case Op_VectorCastS2X:
 304   case Op_VectorCastI2X:
 305   case Op_VectorCastL2X:
 306   case Op_VectorCastF2X:
 307   case Op_VectorCastD2X:
 308     // When op is already vectorized, return that directly.
 309     return sopc;
 310 
 311   default:
 312     return 0; // Unimplemented
 313   }
 314 }
 315 
 316 int VectorNode::replicate_opcode(BasicType bt) {
 317   switch(bt) {
 318     case T_BOOLEAN:
 319     case T_BYTE:
 320       return Op_ReplicateB;
 321     case T_SHORT:
 322     case T_CHAR:
 323       return Op_ReplicateS;
 324     case T_INT:
 325       return Op_ReplicateI;
 326     case T_LONG:
 327       return Op_ReplicateL;


 477 
 478   case Op_LShiftVB: return new LShiftVBNode(n1, n2, vt);
 479   case Op_LShiftVS: return new LShiftVSNode(n1, n2, vt);
 480   case Op_LShiftVI: return new LShiftVINode(n1, n2, vt);
 481   case Op_LShiftVL: return new LShiftVLNode(n1, n2, vt);
 482 
 483   case Op_RShiftVB: return new RShiftVBNode(n1, n2, vt);
 484   case Op_RShiftVS: return new RShiftVSNode(n1, n2, vt);
 485   case Op_RShiftVI: return new RShiftVINode(n1, n2, vt);
 486   case Op_RShiftVL: return new RShiftVLNode(n1, n2, vt);
 487 
 488   case Op_URShiftVB: return new URShiftVBNode(n1, n2, vt);
 489   case Op_URShiftVS: return new URShiftVSNode(n1, n2, vt);
 490   case Op_URShiftVI: return new URShiftVINode(n1, n2, vt);
 491   case Op_URShiftVL: return new URShiftVLNode(n1, n2, vt);
 492 
 493   case Op_AndV: return new AndVNode(n1, n2, vt);
 494   case Op_OrV:  return new OrVNode (n1, n2, vt);
 495   case Op_XorV: return new XorVNode(n1, n2, vt);
 496 
 497   case Op_VectorCastB2X: return new VectorCastB2XNode(n1, vt);
 498   case Op_VectorCastS2X: return new VectorCastS2XNode(n1, vt);
 499   case Op_VectorCastI2X: return new VectorCastI2XNode(n1, vt);
 500   case Op_VectorCastL2X: return new VectorCastL2XNode(n1, vt);
 501   case Op_VectorCastF2X: return new VectorCastF2XNode(n1, vt);
 502   case Op_VectorCastD2X: return new VectorCastD2XNode(n1, vt);
 503 
 504   default:
 505     fatal("Missed vector creation for '%s'", NodeClassNames[vopc]);
 506     return NULL;
 507   }
 508 }
 509 
 510 VectorNode* VectorNode::make(int opc, Node* n1, Node* n2, Node* n3, uint vlen, BasicType bt) {
 511   const TypeVect* vt = TypeVect::make(bt, vlen);
 512   int vopc = VectorNode::opcode(opc, bt);
 513   // This method should not be called for unimplemented vectors.
 514   guarantee(vopc > 0, "Vector for '%s' is not implemented", NodeClassNames[opc]);
 515   switch (vopc) {
 516   case Op_FmaVD: return new FmaVDNode(n1, n2, n3, vt);
 517   case Op_FmaVF: return new FmaVFNode(n1, n2, n3, vt);
 518   default:
 519     fatal("Missed vector creation for '%s'", NodeClassNames[vopc]);
 520     return NULL;
 521   }
 522 }
 523 


< prev index next >