475 const Type *bottom_type() const { return Type::DOUBLE; } |
475 const Type *bottom_type() const { return Type::DOUBLE; } |
476 virtual uint ideal_reg() const { return Op_RegD; } |
476 virtual uint ideal_reg() const { return Op_RegD; } |
477 virtual const Type *Value( PhaseTransform *phase ) const; |
477 virtual const Type *Value( PhaseTransform *phase ) const; |
478 }; |
478 }; |
479 |
479 |
480 //------------------------------ExpDNode--------------------------------------- |
|
481 // Exponentiate a double |
|
482 class ExpDNode : public Node { |
|
483 public: |
|
484 ExpDNode(Compile* C, Node *c, Node *in1) : Node(c, in1) { |
|
485 init_flags(Flag_is_expensive); |
|
486 C->add_expensive_node(this); |
|
487 } |
|
488 virtual int Opcode() const; |
|
489 const Type *bottom_type() const { return Type::DOUBLE; } |
|
490 virtual uint ideal_reg() const { return Op_RegD; } |
|
491 virtual const Type *Value( PhaseTransform *phase ) const; |
|
492 }; |
|
493 |
|
494 //------------------------------LogDNode--------------------------------------- |
480 //------------------------------LogDNode--------------------------------------- |
495 // Log_e of a double |
481 // Log_e of a double |
496 class LogDNode : public Node { |
482 class LogDNode : public Node { |
497 public: |
483 public: |
498 LogDNode(Compile* C, Node *c, Node *in1) : Node(c, in1) { |
484 LogDNode(Compile* C, Node *c, Node *in1) : Node(c, in1) { |