< prev index next >

src/hotspot/share/opto/subnode.hpp

Print this page
rev 47825 : Support vectorization of sqrt for float


 425   virtual int Opcode() const;
 426   const Type *bottom_type() const { return Type::DOUBLE; }
 427   virtual uint ideal_reg() const { return Op_RegD; }
 428 };
 429 
 430 
 431 //------------------------------SqrtDNode--------------------------------------
 432 // square root a double
 433 class SqrtDNode : public Node {
 434 public:
 435   SqrtDNode(Compile* C, Node *c, Node *in1) : Node(c, in1) {
 436     init_flags(Flag_is_expensive);
 437     C->add_expensive_node(this);
 438   }
 439   virtual int Opcode() const;
 440   const Type *bottom_type() const { return Type::DOUBLE; }
 441   virtual uint ideal_reg() const { return Op_RegD; }
 442   virtual const Type* Value(PhaseGVN* phase) const;
 443 };
 444 














 445 //-------------------------------ReverseBytesINode--------------------------------
 446 // reverse bytes of an integer
 447 class ReverseBytesINode : public Node {
 448 public:
 449   ReverseBytesINode(Node *c, Node *in1) : Node(c, in1) {}
 450   virtual int Opcode() const;
 451   const Type *bottom_type() const { return TypeInt::INT; }
 452   virtual uint ideal_reg() const { return Op_RegI; }
 453 };
 454 
 455 //-------------------------------ReverseBytesLNode--------------------------------
 456 // reverse bytes of a long
 457 class ReverseBytesLNode : public Node {
 458 public:
 459   ReverseBytesLNode(Node *c, Node *in1) : Node(c, in1) {}
 460   virtual int Opcode() const;
 461   const Type *bottom_type() const { return TypeLong::LONG; }
 462   virtual uint ideal_reg() const { return Op_RegL; }
 463 };
 464 




 425   virtual int Opcode() const;
 426   const Type *bottom_type() const { return Type::DOUBLE; }
 427   virtual uint ideal_reg() const { return Op_RegD; }
 428 };
 429 
 430 
 431 //------------------------------SqrtDNode--------------------------------------
 432 // square root a double
 433 class SqrtDNode : public Node {
 434 public:
 435   SqrtDNode(Compile* C, Node *c, Node *in1) : Node(c, in1) {
 436     init_flags(Flag_is_expensive);
 437     C->add_expensive_node(this);
 438   }
 439   virtual int Opcode() const;
 440   const Type *bottom_type() const { return Type::DOUBLE; }
 441   virtual uint ideal_reg() const { return Op_RegD; }
 442   virtual const Type* Value(PhaseGVN* phase) const;
 443 };
 444 
 445 //------------------------------SqrtFNode--------------------------------------
 446 // square root a float
 447 class SqrtFNode : public Node {
 448 public:
 449   SqrtFNode(Compile* C, Node *c, Node *in1) : Node(c, in1) {
 450     init_flags(Flag_is_expensive);
 451     C->add_expensive_node(this);
 452   }
 453   virtual int Opcode() const;
 454   const Type *bottom_type() const { return Type::FLOAT; }
 455   virtual uint ideal_reg() const { return Op_RegF; }
 456   virtual const Type* Value(PhaseGVN* phase) const;
 457 };
 458 
 459 //-------------------------------ReverseBytesINode--------------------------------
 460 // reverse bytes of an integer
 461 class ReverseBytesINode : public Node {
 462 public:
 463   ReverseBytesINode(Node *c, Node *in1) : Node(c, in1) {}
 464   virtual int Opcode() const;
 465   const Type *bottom_type() const { return TypeInt::INT; }
 466   virtual uint ideal_reg() const { return Op_RegI; }
 467 };
 468 
 469 //-------------------------------ReverseBytesLNode--------------------------------
 470 // reverse bytes of a long
 471 class ReverseBytesLNode : public Node {
 472 public:
 473   ReverseBytesLNode(Node *c, Node *in1) : Node(c, in1) {}
 474   virtual int Opcode() const;
 475   const Type *bottom_type() const { return TypeLong::LONG; }
 476   virtual uint ideal_reg() const { return Op_RegL; }
 477 };
 478 


< prev index next >