46 virtual int Opcode() const; |
46 virtual int Opcode() const; |
47 |
47 |
48 uint length() const { return _length; } // Vector length |
48 uint length() const { return _length; } // Vector length |
49 |
49 |
50 static uint max_vlen(BasicType bt) { // max vector length |
50 static uint max_vlen(BasicType bt) { // max vector length |
51 return (uint)(Matcher::vector_width_in_bytes() / type2aelembytes[bt]); |
51 return (uint)(Matcher::vector_width_in_bytes() / type2aelembytes(bt)); |
52 } |
52 } |
53 |
53 |
54 // Element and vector type |
54 // Element and vector type |
55 const Type* elt_type() const { return Type::get_const_basic_type(elt_basic_type()); } |
55 const Type* elt_type() const { return Type::get_const_basic_type(elt_basic_type()); } |
56 const Type* vect_type() const { return vect_type(elt_basic_type(), length()); } |
56 const Type* vect_type() const { return vect_type(elt_basic_type(), length()); } |
390 const Type* elt_type() const { return Type::get_const_basic_type(elt_basic_type()); } |
390 const Type* elt_type() const { return Type::get_const_basic_type(elt_basic_type()); } |
391 const Type* vect_type() const { return VectorNode::vect_type(elt_basic_type(), length()); } |
391 const Type* vect_type() const { return VectorNode::vect_type(elt_basic_type(), length()); } |
392 |
392 |
393 virtual uint ideal_reg() const { return Matcher::vector_ideal_reg(); } |
393 virtual uint ideal_reg() const { return Matcher::vector_ideal_reg(); } |
394 virtual BasicType memory_type() const { return T_VOID; } |
394 virtual BasicType memory_type() const { return T_VOID; } |
395 virtual int memory_size() const { return length()*type2aelembytes[elt_basic_type()]; } |
395 virtual int memory_size() const { return length()*type2aelembytes(elt_basic_type()); } |
396 |
396 |
397 // Vector opcode from scalar opcode |
397 // Vector opcode from scalar opcode |
398 static int opcode(int sopc, uint vlen); |
398 static int opcode(int sopc, uint vlen); |
399 |
399 |
400 static VectorLoadNode* make(Compile* C, int opc, Node* ctl, Node* mem, |
400 static VectorLoadNode* make(Compile* C, int opc, Node* ctl, Node* mem, |
618 const Type* elt_type() const { return Type::get_const_basic_type(elt_basic_type()); } |
618 const Type* elt_type() const { return Type::get_const_basic_type(elt_basic_type()); } |
619 const Type* vect_type() const { return VectorNode::vect_type(elt_basic_type(), length()); } |
619 const Type* vect_type() const { return VectorNode::vect_type(elt_basic_type(), length()); } |
620 |
620 |
621 virtual uint ideal_reg() const { return Matcher::vector_ideal_reg(); } |
621 virtual uint ideal_reg() const { return Matcher::vector_ideal_reg(); } |
622 virtual BasicType memory_type() const { return T_VOID; } |
622 virtual BasicType memory_type() const { return T_VOID; } |
623 virtual int memory_size() const { return length()*type2aelembytes[elt_basic_type()]; } |
623 virtual int memory_size() const { return length()*type2aelembytes(elt_basic_type()); } |
624 |
624 |
625 // Vector opcode from scalar opcode |
625 // Vector opcode from scalar opcode |
626 static int opcode(int sopc, uint vlen); |
626 static int opcode(int sopc, uint vlen); |
627 |
627 |
628 static VectorStoreNode* make(Compile* C, int opc, Node* ctl, Node* mem, |
628 static VectorStoreNode* make(Compile* C, int opc, Node* ctl, Node* mem, |