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
|