--- old/src/share/vm/opto/vectornode.hpp 2015-05-08 11:59:49.000000000 -0700 +++ new/src/share/vm/opto/vectornode.hpp 2015-05-08 11:59:49.000000000 -0700 @@ -90,6 +90,30 @@ virtual int Opcode() const; }; +//------------------------------AddVLNode-------------------------------------- +// Vector add long +class AddVLNode : public VectorNode { +public: + AddVLNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1, in2, vt) {} + virtual int Opcode() const; +}; + +//------------------------------AddVFNode-------------------------------------- +// Vector add float +class AddVFNode : public VectorNode { +public: + AddVFNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1, in2, vt) {} + virtual int Opcode() const; +}; + +//------------------------------AddVDNode-------------------------------------- +// Vector add double +class AddVDNode : public VectorNode { +public: + AddVDNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1, in2, vt) {} + virtual int Opcode() const; +}; + //------------------------------ReductionNode------------------------------------ // Perform reduction of a vector class ReductionNode : public Node { @@ -121,22 +145,6 @@ virtual uint ideal_reg() const { return Op_RegL; } }; -//------------------------------AddVLNode-------------------------------------- -// Vector add long -class AddVLNode : public VectorNode { - public: - AddVLNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {} - virtual int Opcode() const; -}; - -//------------------------------AddVFNode-------------------------------------- -// Vector add float -class AddVFNode : public VectorNode { - public: - AddVFNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {} - virtual int Opcode() const; -}; - //------------------------------AddReductionVFNode-------------------------------------- // Vector add float as a reduction class AddReductionVFNode : public ReductionNode { @@ -147,14 +155,6 @@ virtual uint ideal_reg() const { return Op_RegF; } }; -//------------------------------AddVDNode-------------------------------------- -// Vector add double -class AddVDNode : public VectorNode { - public: - AddVDNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {} - virtual int Opcode() const; -}; - //------------------------------AddReductionVDNode-------------------------------------- // Vector add double as a reduction class AddReductionVDNode : public ReductionNode { @@ -229,6 +229,30 @@ virtual int Opcode() const; }; +//------------------------------MulVLNode-------------------------------------- +// Vector multiply long +class MulVLNode : public VectorNode { +public: + MulVLNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1, in2, vt) {} + virtual int Opcode() const; +}; + +//------------------------------MulVFNode-------------------------------------- +// Vector multiply float +class MulVFNode : public VectorNode { +public: + MulVFNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1, in2, vt) {} + virtual int Opcode() const; +}; + +//------------------------------MulVDNode-------------------------------------- +// Vector multiply double +class MulVDNode : public VectorNode { +public: + MulVDNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1, in2, vt) {} + virtual int Opcode() const; +}; + //------------------------------MulReductionVINode-------------------------------------- // Vector multiply int as a reduction class MulReductionVINode : public ReductionNode { @@ -239,12 +263,14 @@ virtual uint ideal_reg() const { return Op_RegI; } }; -//------------------------------MulVFNode-------------------------------------- -// Vector multiply float -class MulVFNode : public VectorNode { - public: - MulVFNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {} +//------------------------------MulReductionVLNode-------------------------------------- +// Vector multiply int as a reduction +class MulReductionVLNode : public ReductionNode { +public: + MulReductionVLNode(Node *ctrl, Node* in1, Node* in2) : ReductionNode(ctrl, in1, in2) {} virtual int Opcode() const; + virtual const Type* bottom_type() const { return TypeLong::LONG; } + virtual uint ideal_reg() const { return Op_RegI; } }; //------------------------------MulReductionVFNode-------------------------------------- @@ -257,14 +283,6 @@ virtual uint ideal_reg() const { return Op_RegF; } }; -//------------------------------MulVDNode-------------------------------------- -// Vector multiply double -class MulVDNode : public VectorNode { - public: - MulVDNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {} - virtual int Opcode() const; -}; - //------------------------------MulReductionVDNode-------------------------------------- // Vector multiply double as a reduction class MulReductionVDNode : public ReductionNode {