< prev index next >

src/hotspot/share/opto/vectornode.hpp

Print this page

        

*** 1264,1273 **** --- 1264,1286 ---- Node* vec1() const { return in(1); } Node* vec2() const { return in(2); } Node* vec_mask() const { return in(3); } }; + class VectorRearrangeNode : public VectorNode { + public: + VectorRearrangeNode(Node* vec1, Node* shuffle) + : VectorNode(vec1, shuffle, vec1->bottom_type()->is_vect()) { + // assert(mask->is_VectorMask(), "VectorBlendNode requires that third argument be a mask"); + } + + virtual int Opcode() const; + Node* vec1() const { return in(1); } + Node* vec_shuffle() const { return in(2); } + }; + + class VectorLoadMaskNode : public VectorNode { public: VectorLoadMaskNode(Node* in, const TypeVect* vt) : VectorNode(in, vt) { assert(in->is_LoadVector(), "expected load vector");
*** 1276,1285 **** --- 1289,1310 ---- int GetOutMaskSize() const { return type2aelembytes(vect_type()->element_basic_type()); } virtual int Opcode() const; }; + class VectorLoadShuffleNode : public VectorNode { + public: + VectorLoadShuffleNode(Node* in, const TypeVect* vt) + : VectorNode(in, vt) { + assert(in->is_LoadVector(), "expected load vector"); + assert(in->as_LoadVector()->vect_type()->element_basic_type() == T_BYTE, "must be BYTE"); + } + + int GetOutShuffleSize() const { return type2aelembytes(vect_type()->element_basic_type()); } + virtual int Opcode() const; + }; + class VectorStoreMaskNode : public VectorNode { private: int _mask_size; protected: uint size_of() const { return sizeof(*this); }
< prev index next >