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 { | 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 if (c != NULL) { 452 // Treat node only as expensive if a control input is set because it might 453 // be created from a SqrtDNode in ConvD2FNode::Ideal() that was found to 454 // be unique and therefore has no control input. 455 C->add_expensive_node(this); 456 } 457 } 458 virtual int Opcode() const; 459 const Type *bottom_type() const { return Type::FLOAT; } 460 virtual uint ideal_reg() const { return Op_RegF; } 461 virtual const Type* Value(PhaseGVN* phase) const; 462 }; 463 464 //-------------------------------ReverseBytesINode-------------------------------- 465 // reverse bytes of an integer 466 class ReverseBytesINode : public Node { 467 public: 468 ReverseBytesINode(Node *c, Node *in1) : Node(c, in1) {} 469 virtual int Opcode() const; 470 const Type *bottom_type() const { return TypeInt::INT; } 471 virtual uint ideal_reg() const { return Op_RegI; } 472 }; 473 474 //-------------------------------ReverseBytesLNode-------------------------------- 475 // reverse bytes of a long 476 class ReverseBytesLNode : public Node { |