< prev index next >

src/share/vm/opto/vectornode.hpp

Print this page

        

*** 60,69 **** --- 60,70 ---- virtual uint ideal_reg() const { return Matcher::vector_ideal_reg(vect_type()->length_in_bytes()); } static VectorNode* scalar2vector(Node* s, uint vlen, const Type* opd_t); static VectorNode* shift_count(Node* shift, Node* cnt, uint vlen, BasicType bt); static VectorNode* make(int opc, Node* n1, Node* n2, uint vlen, BasicType bt); + static VectorNode* make(int opc, Node* n1, Node* n2, Node* n3, uint vlen, BasicType bt); static int opcode(int opc, BasicType bt); static bool implemented(int opc, uint vlen, BasicType bt); static bool is_shift(Node* n); static bool is_invariant_vector(Node* n);
*** 258,267 **** --- 259,284 ---- public: MulVDNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1, in2, vt) {} virtual int Opcode() const; }; + //------------------------------FmaVDNode-------------------------------------- + // Vector multiply double + class FmaVDNode : public VectorNode { + public: + FmaVDNode(Node* in1, Node* in2, Node* in3, const TypeVect* vt) : VectorNode(in1, in2, in3, vt) {} + virtual int Opcode() const; + }; + + //------------------------------FmaVFNode-------------------------------------- + // Vector multiply float + class FmaVFNode : public VectorNode { + public: + FmaVFNode(Node* in1, Node* in2, Node* in3, const TypeVect* vt) : VectorNode(in1, in2, in3, vt) {} + virtual int Opcode() const; + }; + //------------------------------CMoveVDNode-------------------------------------- // Vector multiply double class CMoveVDNode : public VectorNode { public: CMoveVDNode(Node* in1, Node* in2, Node* in3, const TypeVect* vt) : VectorNode(in1, in2, in3, vt) {}
< prev index next >