--- old/src/share/vm/opto/vectornode.hpp Mon Oct 1 15:59:08 2012 +++ new/src/share/vm/opto/vectornode.hpp Mon Oct 1 15:59:08 2012 @@ -53,7 +53,7 @@ virtual uint ideal_reg() const { return Matcher::vector_ideal_reg(vect_type()->length_in_bytes()); } static VectorNode* scalar2vector(Compile* C, Node* s, uint vlen, const Type* opd_t); - + static VectorNode* shift_count(Compile* C, Node* shift, Node* cnt, uint vlen, BasicType bt); static VectorNode* make(Compile* C, int opc, Node* n1, Node* n2, uint vlen, BasicType bt); static int opcode(int opc, BasicType bt); @@ -64,7 +64,7 @@ static void vector_operands(Node* n, uint* start, uint* end); }; -//===========================Vector=ALU=Operations==================================== +//===========================Vector=ALU=Operations============================== //------------------------------AddVBNode--------------------------------------- // Vector add byte @@ -210,7 +210,7 @@ virtual int Opcode() const; }; -//------------------------------LShiftVBNode--------------------------------------- +//------------------------------LShiftVBNode----------------------------------- // Vector left shift bytes class LShiftVBNode : public VectorNode { public: @@ -218,7 +218,7 @@ virtual int Opcode() const; }; -//------------------------------LShiftVSNode--------------------------------------- +//------------------------------LShiftVSNode----------------------------------- // Vector left shift shorts class LShiftVSNode : public VectorNode { public: @@ -226,7 +226,7 @@ virtual int Opcode() const; }; -//------------------------------LShiftVINode--------------------------------------- +//------------------------------LShiftVINode----------------------------------- // Vector left shift ints class LShiftVINode : public VectorNode { public: @@ -234,7 +234,7 @@ virtual int Opcode() const; }; -//------------------------------LShiftVLNode--------------------------------------- +//------------------------------LShiftVLNode----------------------------------- // Vector left shift longs class LShiftVLNode : public VectorNode { public: @@ -242,7 +242,7 @@ virtual int Opcode() const; }; -//------------------------------RShiftVBNode--------------------------------------- +//------------------------------RShiftVBNode----------------------------------- // Vector right arithmetic (signed) shift bytes class RShiftVBNode : public VectorNode { public: @@ -250,7 +250,7 @@ virtual int Opcode() const; }; -//------------------------------RShiftVSNode--------------------------------------- +//------------------------------RShiftVSNode----------------------------------- // Vector right arithmetic (signed) shift shorts class RShiftVSNode : public VectorNode { public: @@ -258,7 +258,7 @@ virtual int Opcode() const; }; -//------------------------------RShiftVINode--------------------------------------- +//------------------------------RShiftVINode----------------------------------- // Vector right arithmetic (signed) shift ints class RShiftVINode : public VectorNode { public: @@ -266,7 +266,7 @@ virtual int Opcode() const; }; -//------------------------------RShiftVLNode--------------------------------------- +//------------------------------RShiftVLNode----------------------------------- // Vector right arithmetic (signed) shift longs class RShiftVLNode : public VectorNode { public: @@ -274,7 +274,7 @@ virtual int Opcode() const; }; -//------------------------------URShiftVBNode--------------------------------------- +//------------------------------URShiftVBNode---------------------------------- // Vector right logical (unsigned) shift bytes class URShiftVBNode : public VectorNode { public: @@ -282,7 +282,7 @@ virtual int Opcode() const; }; -//------------------------------URShiftVSNode--------------------------------------- +//------------------------------URShiftVSNode---------------------------------- // Vector right logical (unsigned) shift shorts class URShiftVSNode : public VectorNode { public: @@ -290,7 +290,7 @@ virtual int Opcode() const; }; -//------------------------------URShiftVINode--------------------------------------- +//------------------------------URShiftVINode---------------------------------- // Vector right logical (unsigned) shift ints class URShiftVINode : public VectorNode { public: @@ -298,7 +298,7 @@ virtual int Opcode() const; }; -//------------------------------URShiftVLNode--------------------------------------- +//------------------------------URShiftVLNode---------------------------------- // Vector right logical (unsigned) shift longs class URShiftVLNode : public VectorNode { public: @@ -306,6 +306,24 @@ virtual int Opcode() const; }; +//------------------------------LShiftCntVNode--------------------------------- +// Vector left shift count +class LShiftCntVNode : public VectorNode { + public: + LShiftCntVNode(Node* cnt, const TypeVect* vt) : VectorNode(cnt,vt) {} + virtual int Opcode() const; + virtual uint ideal_reg() const { return Matcher::vector_shift_count_ideal_reg(vect_type()->length_in_bytes()); } +}; + +//------------------------------RShiftCntVNode--------------------------------- +// Vector right shift count +class RShiftCntVNode : public VectorNode { + public: + RShiftCntVNode(Node* cnt, const TypeVect* vt) : VectorNode(cnt,vt) {} + virtual int Opcode() const; + virtual uint ideal_reg() const { return Matcher::vector_shift_count_ideal_reg(vect_type()->length_in_bytes()); } +}; + //------------------------------AndVNode--------------------------------------- // Vector and integer