src/share/vm/opto/vectornode.hpp

changeset 4001
006050192a5a
parent 3882
8c92982cbbc4
child 4006
5af51c882207
     1.1 --- a/src/share/vm/opto/vectornode.hpp	Wed Aug 15 16:49:38 2012 -0700
     1.2 +++ b/src/share/vm/opto/vectornode.hpp	Mon Aug 20 09:07:21 2012 -0700
     1.3 @@ -46,6 +46,7 @@
     1.4  
     1.5    const TypeVect* vect_type() const { return type()->is_vect(); }
     1.6    uint length() const { return vect_type()->length(); } // Vector length
     1.7 +  uint length_in_bytes() const { return vect_type()->length_in_bytes(); }
     1.8  
     1.9    virtual int Opcode() const;
    1.10  
    1.11 @@ -57,7 +58,8 @@
    1.12  
    1.13    static int  opcode(int opc, uint vlen, BasicType bt);
    1.14    static bool implemented(int opc, uint vlen, BasicType bt);
    1.15 -
    1.16 +  static bool is_shift(Node* n);
    1.17 +  static bool is_invariant_vector(Node* n);
    1.18  };
    1.19  
    1.20  //===========================Vector=ALU=Operations====================================
    1.21 @@ -158,6 +160,22 @@
    1.22    virtual int Opcode() const;
    1.23  };
    1.24  
    1.25 +//------------------------------MulVSNode---------------------------------------
    1.26 +// Vector multiply short
    1.27 +class MulVSNode : public VectorNode {
    1.28 + public:
    1.29 +  MulVSNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
    1.30 +  virtual int Opcode() const;
    1.31 +};
    1.32 +
    1.33 +//------------------------------MulVINode---------------------------------------
    1.34 +// Vector multiply int
    1.35 +class MulVINode : public VectorNode {
    1.36 + public:
    1.37 +  MulVINode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
    1.38 +  virtual int Opcode() const;
    1.39 +};
    1.40 +
    1.41  //------------------------------MulVFNode---------------------------------------
    1.42  // Vector multiply float
    1.43  class MulVFNode : public VectorNode {
    1.44 @@ -191,7 +209,7 @@
    1.45  };
    1.46  
    1.47  //------------------------------LShiftVBNode---------------------------------------
    1.48 -// Vector lshift byte
    1.49 +// Vector left shift bytes
    1.50  class LShiftVBNode : public VectorNode {
    1.51   public:
    1.52    LShiftVBNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
    1.53 @@ -199,7 +217,7 @@
    1.54  };
    1.55  
    1.56  //------------------------------LShiftVSNode---------------------------------------
    1.57 -// Vector lshift shorts
    1.58 +// Vector left shift shorts
    1.59  class LShiftVSNode : public VectorNode {
    1.60   public:
    1.61    LShiftVSNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
    1.62 @@ -207,39 +225,88 @@
    1.63  };
    1.64  
    1.65  //------------------------------LShiftVINode---------------------------------------
    1.66 -// Vector lshift ints
    1.67 +// Vector left shift ints
    1.68  class LShiftVINode : public VectorNode {
    1.69   public:
    1.70    LShiftVINode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
    1.71    virtual int Opcode() const;
    1.72  };
    1.73  
    1.74 -//------------------------------URShiftVBNode---------------------------------------
    1.75 -// Vector urshift bytes
    1.76 +//------------------------------LShiftVLNode---------------------------------------
    1.77 +// Vector left shift longs
    1.78 +class LShiftVLNode : public VectorNode {
    1.79 + public:
    1.80 +  LShiftVLNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
    1.81 +  virtual int Opcode() const;
    1.82 +};
    1.83 +
    1.84 +//------------------------------RShiftVBNode---------------------------------------
    1.85 +// Vector right arithmetic (signed) shift bytes
    1.86  class RShiftVBNode : public VectorNode {
    1.87   public:
    1.88    RShiftVBNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
    1.89    virtual int Opcode() const;
    1.90  };
    1.91  
    1.92 -//------------------------------URShiftVSNode---------------------------------------
    1.93 -// Vector urshift shorts
    1.94 +//------------------------------RShiftVSNode---------------------------------------
    1.95 +// Vector right arithmetic (signed) shift shorts
    1.96  class RShiftVSNode : public VectorNode {
    1.97   public:
    1.98    RShiftVSNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
    1.99    virtual int Opcode() const;
   1.100  };
   1.101  
   1.102 -//------------------------------URShiftVINode---------------------------------------
   1.103 -// Vector urshift ints
   1.104 +//------------------------------RShiftVINode---------------------------------------
   1.105 +// Vector right arithmetic (signed) shift ints
   1.106  class RShiftVINode : public VectorNode {
   1.107   public:
   1.108    RShiftVINode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
   1.109    virtual int Opcode() const;
   1.110  };
   1.111  
   1.112 +//------------------------------RShiftVLNode---------------------------------------
   1.113 +// Vector right arithmetic (signed) shift longs
   1.114 +class RShiftVLNode : public VectorNode {
   1.115 + public:
   1.116 +  RShiftVLNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
   1.117 +  virtual int Opcode() const;
   1.118 +};
   1.119 +
   1.120 +//------------------------------URShiftVBNode---------------------------------------
   1.121 +// Vector right logical (unsigned) shift bytes
   1.122 +class URShiftVBNode : public VectorNode {
   1.123 + public:
   1.124 +  URShiftVBNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
   1.125 +  virtual int Opcode() const;
   1.126 +};
   1.127 +
   1.128 +//------------------------------URShiftVSNode---------------------------------------
   1.129 +// Vector right logical (unsigned) shift shorts
   1.130 +class URShiftVSNode : public VectorNode {
   1.131 + public:
   1.132 +  URShiftVSNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
   1.133 +  virtual int Opcode() const;
   1.134 +};
   1.135 +
   1.136 +//------------------------------URShiftVINode---------------------------------------
   1.137 +// Vector right logical (unsigned) shift ints
   1.138 +class URShiftVINode : public VectorNode {
   1.139 + public:
   1.140 +  URShiftVINode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
   1.141 +  virtual int Opcode() const;
   1.142 +};
   1.143 +
   1.144 +//------------------------------URShiftVLNode---------------------------------------
   1.145 +// Vector right logical (unsigned) shift longs
   1.146 +class URShiftVLNode : public VectorNode {
   1.147 + public:
   1.148 +  URShiftVLNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
   1.149 +  virtual int Opcode() const;
   1.150 +};
   1.151 +
   1.152 +
   1.153  //------------------------------AndVNode---------------------------------------
   1.154 -// Vector and
   1.155 +// Vector and integer
   1.156  class AndVNode : public VectorNode {
   1.157   public:
   1.158    AndVNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
   1.159 @@ -247,7 +314,7 @@
   1.160  };
   1.161  
   1.162  //------------------------------OrVNode---------------------------------------
   1.163 -// Vector or
   1.164 +// Vector or integer
   1.165  class OrVNode : public VectorNode {
   1.166   public:
   1.167    OrVNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
   1.168 @@ -255,7 +322,7 @@
   1.169  };
   1.170  
   1.171  //------------------------------XorVNode---------------------------------------
   1.172 -// Vector xor
   1.173 +// Vector xor integer
   1.174  class XorVNode : public VectorNode {
   1.175   public:
   1.176    XorVNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}

mercurial