207 SubVLNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {} 208 virtual int Opcode() const; 209 }; 210 211 //------------------------------SubVFNode-------------------------------------- 212 // Vector subtract float 213 class SubVFNode : public VectorNode { 214 public: 215 SubVFNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {} 216 virtual int Opcode() const; 217 }; 218 219 //------------------------------SubVDNode-------------------------------------- 220 // Vector subtract double 221 class SubVDNode : public VectorNode { 222 public: 223 SubVDNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {} 224 virtual int Opcode() const; 225 }; 226 227 //------------------------------MulVSNode-------------------------------------- 228 // Vector multiply short 229 class MulVSNode : public VectorNode { 230 public: 231 MulVSNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {} 232 virtual int Opcode() const; 233 }; 234 235 //------------------------------MulVINode-------------------------------------- 236 // Vector multiply int 237 class MulVINode : public VectorNode { 238 public: 239 MulVINode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {} 240 virtual int Opcode() const; 241 }; 242 243 //------------------------------MulVLNode-------------------------------------- 244 // Vector multiply long 245 class MulVLNode : public VectorNode { 246 public: 340 public: 341 MulReductionVDNode(Node *ctrl, Node* in1, Node* in2) : ReductionNode(ctrl, in1, in2) {} 342 virtual int Opcode() const; 343 virtual const Type* bottom_type() const { return Type::DOUBLE; } 344 virtual uint ideal_reg() const { return Op_RegD; } 345 }; 346 347 //------------------------------DivVFNode-------------------------------------- 348 // Vector divide float 349 class DivVFNode : public VectorNode { 350 public: 351 DivVFNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {} 352 virtual int Opcode() const; 353 }; 354 355 //------------------------------DivVDNode-------------------------------------- 356 // Vector Divide double 357 class DivVDNode : public VectorNode { 358 public: 359 DivVDNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {} 360 virtual int Opcode() const; 361 }; 362 363 //------------------------------AbsVFNode-------------------------------------- 364 // Vector Abs float 365 class AbsVFNode : public VectorNode { 366 public: 367 AbsVFNode(Node* in, const TypeVect* vt) : VectorNode(in,vt) {} 368 virtual int Opcode() const; 369 }; 370 371 //------------------------------AbsVDNode-------------------------------------- 372 // Vector Abs double 373 class AbsVDNode : public VectorNode { 374 public: 375 AbsVDNode(Node* in, const TypeVect* vt) : VectorNode(in,vt) {} 376 virtual int Opcode() const; 377 }; 378 379 //------------------------------NegVFNode-------------------------------------- | 207 SubVLNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {} 208 virtual int Opcode() const; 209 }; 210 211 //------------------------------SubVFNode-------------------------------------- 212 // Vector subtract float 213 class SubVFNode : public VectorNode { 214 public: 215 SubVFNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {} 216 virtual int Opcode() const; 217 }; 218 219 //------------------------------SubVDNode-------------------------------------- 220 // Vector subtract double 221 class SubVDNode : public VectorNode { 222 public: 223 SubVDNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {} 224 virtual int Opcode() const; 225 }; 226 227 //------------------------------MulVBNode-------------------------------------- 228 // Vector multiply byte 229 class MulVBNode : public VectorNode { 230 public: 231 MulVBNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1, in2, vt) {} 232 virtual int Opcode() const; 233 }; 234 235 //------------------------------MulVSNode-------------------------------------- 236 // Vector multiply short 237 class MulVSNode : public VectorNode { 238 public: 239 MulVSNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {} 240 virtual int Opcode() const; 241 }; 242 243 //------------------------------MulVINode-------------------------------------- 244 // Vector multiply int 245 class MulVINode : public VectorNode { 246 public: 247 MulVINode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {} 248 virtual int Opcode() const; 249 }; 250 251 //------------------------------MulVLNode-------------------------------------- 252 // Vector multiply long 253 class MulVLNode : public VectorNode { 254 public: 348 public: 349 MulReductionVDNode(Node *ctrl, Node* in1, Node* in2) : ReductionNode(ctrl, in1, in2) {} 350 virtual int Opcode() const; 351 virtual const Type* bottom_type() const { return Type::DOUBLE; } 352 virtual uint ideal_reg() const { return Op_RegD; } 353 }; 354 355 //------------------------------DivVFNode-------------------------------------- 356 // Vector divide float 357 class DivVFNode : public VectorNode { 358 public: 359 DivVFNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {} 360 virtual int Opcode() const; 361 }; 362 363 //------------------------------DivVDNode-------------------------------------- 364 // Vector Divide double 365 class DivVDNode : public VectorNode { 366 public: 367 DivVDNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {} 368 virtual int Opcode() const; 369 }; 370 371 //------------------------------AbsVBNode-------------------------------------- 372 // Vector Abs byte 373 class AbsVBNode : public VectorNode { 374 public: 375 AbsVBNode(Node* in, const TypeVect* vt) : VectorNode(in, vt) {} 376 virtual int Opcode() const; 377 }; 378 379 //------------------------------AbsVSNode-------------------------------------- 380 // Vector Abs short 381 class AbsVSNode : public VectorNode { 382 public: 383 AbsVSNode(Node* in, const TypeVect* vt) : VectorNode(in, vt) {} 384 virtual int Opcode() const; 385 }; 386 387 //------------------------------AbsVINode-------------------------------------- 388 // Vector Abs int 389 class AbsVINode : public VectorNode { 390 public: 391 AbsVINode(Node* in, const TypeVect* vt) : VectorNode(in, vt) {} 392 virtual int Opcode() const; 393 }; 394 395 //------------------------------AbsVLNode-------------------------------------- 396 // Vector Abs long 397 class AbsVLNode : public VectorNode { 398 public: 399 AbsVLNode(Node* in, const TypeVect* vt) : VectorNode(in, vt) {} 400 virtual int Opcode() const; 401 }; 402 403 //------------------------------AbsVFNode-------------------------------------- 404 // Vector Abs float 405 class AbsVFNode : public VectorNode { 406 public: 407 AbsVFNode(Node* in, const TypeVect* vt) : VectorNode(in,vt) {} 408 virtual int Opcode() const; 409 }; 410 411 //------------------------------AbsVDNode-------------------------------------- 412 // Vector Abs double 413 class AbsVDNode : public VectorNode { 414 public: 415 AbsVDNode(Node* in, const TypeVect* vt) : VectorNode(in,vt) {} 416 virtual int Opcode() const; 417 }; 418 419 //------------------------------NegVFNode-------------------------------------- |