< prev index next >

src/share/vm/opto/vectornode.hpp

Print this page




  73   AddVBNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
  74   virtual int Opcode() const;
  75 };
  76 
  77 //------------------------------AddVSNode--------------------------------------
  78 // Vector add char/short
  79 class AddVSNode : public VectorNode {
  80  public:
  81   AddVSNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
  82   virtual int Opcode() const;
  83 };
  84 
  85 //------------------------------AddVINode--------------------------------------
  86 // Vector add int
  87 class AddVINode : public VectorNode {
  88  public:
  89   AddVINode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
  90   virtual int Opcode() const;
  91 };
  92 































  93 //------------------------------AddVLNode--------------------------------------
  94 // Vector add long
  95 class AddVLNode : public VectorNode {
  96  public:
  97   AddVLNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
  98   virtual int Opcode() const;
  99 };
 100 
 101 //------------------------------AddVFNode--------------------------------------
 102 // Vector add float
 103 class AddVFNode : public VectorNode {
 104  public:
 105   AddVFNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
 106   virtual int Opcode() const;
 107 };
 108 










 109 //------------------------------AddVDNode--------------------------------------
 110 // Vector add double
 111 class AddVDNode : public VectorNode {
 112  public:
 113   AddVDNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
 114   virtual int Opcode() const;
 115 };
 116 










 117 //------------------------------SubVBNode--------------------------------------
 118 // Vector subtract byte
 119 class SubVBNode : public VectorNode {
 120  public:
 121   SubVBNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
 122   virtual int Opcode() const;
 123 };
 124 
 125 //------------------------------SubVSNode--------------------------------------
 126 // Vector subtract short
 127 class SubVSNode : public VectorNode {
 128  public:
 129   SubVSNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
 130   virtual int Opcode() const;
 131 };
 132 
 133 //------------------------------SubVINode--------------------------------------
 134 // Vector subtract int
 135 class SubVINode : public VectorNode {
 136  public:


 161   SubVDNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
 162   virtual int Opcode() const;
 163 };
 164 
 165 //------------------------------MulVSNode--------------------------------------
 166 // Vector multiply short
 167 class MulVSNode : public VectorNode {
 168  public:
 169   MulVSNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
 170   virtual int Opcode() const;
 171 };
 172 
 173 //------------------------------MulVINode--------------------------------------
 174 // Vector multiply int
 175 class MulVINode : public VectorNode {
 176  public:
 177   MulVINode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
 178   virtual int Opcode() const;
 179 };
 180 










 181 //------------------------------MulVFNode--------------------------------------
 182 // Vector multiply float
 183 class MulVFNode : public VectorNode {
 184  public:
 185   MulVFNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
 186   virtual int Opcode() const;
 187 };
 188 










 189 //------------------------------MulVDNode--------------------------------------
 190 // Vector multiply double
 191 class MulVDNode : public VectorNode {
 192  public:
 193   MulVDNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
 194   virtual int Opcode() const;










 195 };
 196 
 197 //------------------------------DivVFNode--------------------------------------
 198 // Vector divide float
 199 class DivVFNode : public VectorNode {
 200  public:
 201   DivVFNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
 202   virtual int Opcode() const;
 203 };
 204 
 205 //------------------------------DivVDNode--------------------------------------
 206 // Vector Divide double
 207 class DivVDNode : public VectorNode {
 208  public:
 209   DivVDNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
 210   virtual int Opcode() const;
 211 };
 212 
 213 //------------------------------LShiftVBNode-----------------------------------
 214 // Vector left shift bytes




  73   AddVBNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
  74   virtual int Opcode() const;
  75 };
  76 
  77 //------------------------------AddVSNode--------------------------------------
  78 // Vector add char/short
  79 class AddVSNode : public VectorNode {
  80  public:
  81   AddVSNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
  82   virtual int Opcode() const;
  83 };
  84 
  85 //------------------------------AddVINode--------------------------------------
  86 // Vector add int
  87 class AddVINode : public VectorNode {
  88  public:
  89   AddVINode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
  90   virtual int Opcode() const;
  91 };
  92 
  93 //------------------------------ReductionNode------------------------------------
  94 // Perform reduction of a vector
  95 class ReductionNode : public Node {
  96  public:
  97   ReductionNode(Node *ctrl, Node* in1, Node* in2) : Node(ctrl, in1, in2) {}
  98 
  99   static ReductionNode* make(int opc, Node *ctrl, Node* in1, Node* in2, BasicType bt);
 100   static int  opcode(int opc, BasicType bt);
 101   static bool implemented(int opc, uint vlen, BasicType bt);
 102 };
 103 
 104 //------------------------------AddReductionVINode--------------------------------------
 105 // Vector add int as a reduction
 106 class AddReductionVINode : public ReductionNode {
 107 public:
 108   AddReductionVINode(Node * ctrl, Node* in1, Node* in2) : ReductionNode(ctrl, in1, in2) {}
 109   virtual int Opcode() const;
 110   virtual const Type* bottom_type() const { return TypeInt::INT; }
 111   virtual uint ideal_reg() const { return Op_RegI; }
 112 };
 113 
 114 //------------------------------AddReductionVLNode--------------------------------------
 115 // Vector add long as a reduction
 116 class AddReductionVLNode : public ReductionNode {
 117 public:
 118   AddReductionVLNode(Node *ctrl, Node* in1, Node* in2) : ReductionNode(ctrl, in1, in2) {}
 119   virtual int Opcode() const;
 120   virtual const Type* bottom_type() const { return TypeLong::LONG; }
 121   virtual uint ideal_reg() const { return Op_RegL; }
 122 };
 123 
 124 //------------------------------AddVLNode--------------------------------------
 125 // Vector add long
 126 class AddVLNode : public VectorNode {
 127  public:
 128   AddVLNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
 129   virtual int Opcode() const;
 130 };
 131 
 132 //------------------------------AddVFNode--------------------------------------
 133 // Vector add float
 134 class AddVFNode : public VectorNode {
 135  public:
 136   AddVFNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
 137   virtual int Opcode() const;
 138 };
 139 
 140 //------------------------------AddReductionVFNode--------------------------------------
 141 // Vector add float as a reduction
 142 class AddReductionVFNode : public ReductionNode {
 143 public:
 144   AddReductionVFNode(Node *ctrl, Node* in1, Node* in2) : ReductionNode(ctrl, in1, in2) {}
 145   virtual int Opcode() const;
 146   virtual const Type* bottom_type() const { return Type::FLOAT; }
 147   virtual uint ideal_reg() const { return Op_RegF; }
 148 };
 149 
 150 //------------------------------AddVDNode--------------------------------------
 151 // Vector add double
 152 class AddVDNode : public VectorNode {
 153  public:
 154   AddVDNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
 155   virtual int Opcode() const;
 156 };
 157 
 158 //------------------------------AddReductionVDNode--------------------------------------
 159 // Vector add double as a reduction
 160 class AddReductionVDNode : public ReductionNode {
 161 public:
 162   AddReductionVDNode(Node *ctrl, Node* in1, Node* in2) : ReductionNode(ctrl, in1, in2) {}
 163   virtual int Opcode() const;
 164   virtual const Type* bottom_type() const { return Type::DOUBLE; }
 165   virtual uint ideal_reg() const { return Op_RegD; }
 166 };
 167 
 168 //------------------------------SubVBNode--------------------------------------
 169 // Vector subtract byte
 170 class SubVBNode : public VectorNode {
 171  public:
 172   SubVBNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
 173   virtual int Opcode() const;
 174 };
 175 
 176 //------------------------------SubVSNode--------------------------------------
 177 // Vector subtract short
 178 class SubVSNode : public VectorNode {
 179  public:
 180   SubVSNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
 181   virtual int Opcode() const;
 182 };
 183 
 184 //------------------------------SubVINode--------------------------------------
 185 // Vector subtract int
 186 class SubVINode : public VectorNode {
 187  public:


 212   SubVDNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
 213   virtual int Opcode() const;
 214 };
 215 
 216 //------------------------------MulVSNode--------------------------------------
 217 // Vector multiply short
 218 class MulVSNode : public VectorNode {
 219  public:
 220   MulVSNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
 221   virtual int Opcode() const;
 222 };
 223 
 224 //------------------------------MulVINode--------------------------------------
 225 // Vector multiply int
 226 class MulVINode : public VectorNode {
 227  public:
 228   MulVINode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
 229   virtual int Opcode() const;
 230 };
 231 
 232 //------------------------------MulReductionVINode--------------------------------------
 233 // Vector multiply int as a reduction
 234 class MulReductionVINode : public ReductionNode {
 235 public:
 236   MulReductionVINode(Node *ctrl, Node* in1, Node* in2) : ReductionNode(ctrl, in1, in2) {}
 237   virtual int Opcode() const;
 238   virtual const Type* bottom_type() const { return TypeInt::INT; }
 239   virtual uint ideal_reg() const { return Op_RegI; }
 240 };
 241 
 242 //------------------------------MulVFNode--------------------------------------
 243 // Vector multiply float
 244 class MulVFNode : public VectorNode {
 245  public:
 246   MulVFNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
 247   virtual int Opcode() const;
 248 };
 249 
 250 //------------------------------MulReductionVFNode--------------------------------------
 251 // Vector multiply float as a reduction
 252 class MulReductionVFNode : public ReductionNode {
 253 public:
 254   MulReductionVFNode(Node *ctrl, Node* in1, Node* in2) : ReductionNode(ctrl, in1, in2) {}
 255   virtual int Opcode() const;
 256   virtual const Type* bottom_type() const { return Type::FLOAT; }
 257   virtual uint ideal_reg() const { return Op_RegF; }
 258 };
 259 
 260 //------------------------------MulVDNode--------------------------------------
 261 // Vector multiply double
 262 class MulVDNode : public VectorNode {
 263  public:
 264   MulVDNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
 265   virtual int Opcode() const;
 266 };
 267 
 268 //------------------------------MulReductionVDNode--------------------------------------
 269 // Vector multiply double as a reduction
 270 class MulReductionVDNode : public ReductionNode {
 271 public:
 272   MulReductionVDNode(Node *ctrl, Node* in1, Node* in2) : ReductionNode(ctrl, in1, in2) {}
 273   virtual int Opcode() const;
 274   virtual const Type* bottom_type() const { return Type::DOUBLE; }
 275   virtual uint ideal_reg() const { return Op_RegD; }
 276 };
 277 
 278 //------------------------------DivVFNode--------------------------------------
 279 // Vector divide float
 280 class DivVFNode : public VectorNode {
 281  public:
 282   DivVFNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
 283   virtual int Opcode() const;
 284 };
 285 
 286 //------------------------------DivVDNode--------------------------------------
 287 // Vector Divide double
 288 class DivVDNode : public VectorNode {
 289  public:
 290   DivVDNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
 291   virtual int Opcode() const;
 292 };
 293 
 294 //------------------------------LShiftVBNode-----------------------------------
 295 // Vector left shift bytes


< prev index next >