src/share/vm/opto/vectornode.hpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File
*** old/src/share/vm/opto/vectornode.hpp	Thu Jul 26 18:06:28 2012
--- new/src/share/vm/opto/vectornode.hpp	Thu Jul 26 18:06:28 2012

*** 44,53 **** --- 44,54 ---- init_req(2, n2); } const TypeVect* vect_type() const { return type()->is_vect(); } uint length() const { return vect_type()->length(); } // Vector length + uint length_in_bytes() const { return vect_type()->length_in_bytes(); } virtual int Opcode() const; virtual uint ideal_reg() const { return Matcher::vector_ideal_reg(vect_type()->length_in_bytes()); }
*** 55,65 **** --- 56,67 ---- static VectorNode* make(Compile* C, int opc, Node* n1, Node* n2, uint vlen, BasicType bt); static int opcode(int opc, uint vlen, BasicType bt); static bool implemented(int opc, uint vlen, BasicType bt); + static bool is_shift(Node* n); + static bool is_invariant_vector(Node* n); }; //===========================Vector=ALU=Operations==================================== //------------------------------AddVBNode---------------------------------------
*** 156,165 **** --- 158,183 ---- public: SubVDNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {} virtual int Opcode() const; }; + //------------------------------MulVSNode--------------------------------------- + // Vector multiply short + class MulVSNode : public VectorNode { + public: + MulVSNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {} + virtual int Opcode() const; + }; + + //------------------------------MulVINode--------------------------------------- + // Vector multiply int + class MulVINode : public VectorNode { + public: + MulVINode(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) {}
*** 189,263 **** --- 207,330 ---- DivVDNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {} virtual int Opcode() const; }; //------------------------------LShiftVBNode--------------------------------------- ! // Vector lshift byte ! // Vector left shift bytes class LShiftVBNode : public VectorNode { public: LShiftVBNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {} virtual int Opcode() const; }; //------------------------------LShiftVSNode--------------------------------------- ! // Vector lshift shorts ! // Vector left shift shorts class LShiftVSNode : public VectorNode { public: LShiftVSNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {} virtual int Opcode() const; }; //------------------------------LShiftVINode--------------------------------------- ! // Vector lshift ints ! // Vector left shift ints class LShiftVINode : public VectorNode { public: LShiftVINode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {} virtual int Opcode() const; }; ! //------------------------------URShiftVBNode--------------------------------------- ! // Vector urshift bytes ! //------------------------------LShiftVLNode--------------------------------------- ! // Vector left shift longs + class LShiftVLNode : public VectorNode { + public: + LShiftVLNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {} + virtual int Opcode() const; + }; + + //------------------------------RShiftVBNode--------------------------------------- + // Vector right arithmetic (signed) shift bytes class RShiftVBNode : public VectorNode { public: RShiftVBNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {} virtual int Opcode() const; }; - //------------------------------URShiftVSNode--------------------------------------- ! // Vector urshift shorts ! // Vector right arithmetic (signed) shift shorts class RShiftVSNode : public VectorNode { public: RShiftVSNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {} virtual int Opcode() const; }; - //------------------------------URShiftVINode--------------------------------------- ! // Vector urshift ints ! // Vector right arithmetic (signed) shift ints class RShiftVINode : public VectorNode { public: RShiftVINode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {} virtual int Opcode() const; }; + //------------------------------RShiftVLNode--------------------------------------- + // Vector right arithmetic (signed) shift longs + class RShiftVLNode : public VectorNode { + public: + RShiftVLNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {} + virtual int Opcode() const; + }; + + //------------------------------URShiftVBNode--------------------------------------- + // Vector right logical (unsigned) shift bytes + class URShiftVBNode : public VectorNode { + public: + URShiftVBNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {} + virtual int Opcode() const; + }; + + //------------------------------URShiftVSNode--------------------------------------- + // Vector right logical (unsigned) shift shorts + class URShiftVSNode : public VectorNode { + public: + URShiftVSNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {} + virtual int Opcode() const; + }; + + //------------------------------URShiftVINode--------------------------------------- + // Vector right logical (unsigned) shift ints + class URShiftVINode : public VectorNode { + public: + URShiftVINode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {} + virtual int Opcode() const; + }; + + //------------------------------URShiftVLNode--------------------------------------- + // Vector right logical (unsigned) shift longs + class URShiftVLNode : public VectorNode { + public: + URShiftVLNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {} + virtual int Opcode() const; + }; + + //------------------------------AndVNode--------------------------------------- ! // Vector and integer class AndVNode : public VectorNode { public: AndVNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {} virtual int Opcode() const; }; //------------------------------OrVNode--------------------------------------- ! // Vector or integer class OrVNode : public VectorNode { public: OrVNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {} virtual int Opcode() const; }; //------------------------------XorVNode--------------------------------------- ! // Vector xor integer class XorVNode : public VectorNode { public: XorVNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {} virtual int Opcode() const; };

src/share/vm/opto/vectornode.hpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File