440 const Type *bottom_type() const { return Type::DOUBLE; } |
440 const Type *bottom_type() const { return Type::DOUBLE; } |
441 virtual uint ideal_reg() const { return Op_RegD; } |
441 virtual uint ideal_reg() const { return Op_RegD; } |
442 virtual const Type* Value(PhaseGVN* phase) const; |
442 virtual const Type* Value(PhaseGVN* phase) const; |
443 }; |
443 }; |
444 |
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 |
445 //-------------------------------ReverseBytesINode-------------------------------- |
459 //-------------------------------ReverseBytesINode-------------------------------- |
446 // reverse bytes of an integer |
460 // reverse bytes of an integer |
447 class ReverseBytesINode : public Node { |
461 class ReverseBytesINode : public Node { |
448 public: |
462 public: |
449 ReverseBytesINode(Node *c, Node *in1) : Node(c, in1) {} |
463 ReverseBytesINode(Node *c, Node *in1) : Node(c, in1) {} |