< 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 >