456 //-------------------------------ReverseBytesUSNode-------------------------------- 457 // reverse bytes of an unsigned short / char 458 class ReverseBytesUSNode : public Node { 459 public: 460 ReverseBytesUSNode(Node *c, Node *in1) : Node(c, in1) {} 461 virtual int Opcode() const; 462 const Type *bottom_type() const { return TypeInt::CHAR; } 463 virtual uint ideal_reg() const { return Op_RegI; } 464 }; 465 466 //-------------------------------ReverseBytesSNode-------------------------------- 467 // reverse bytes of a short 468 class ReverseBytesSNode : public Node { 469 public: 470 ReverseBytesSNode(Node *c, Node *in1) : Node(c, in1) {} 471 virtual int Opcode() const; 472 const Type *bottom_type() const { return TypeInt::SHORT; } 473 virtual uint ideal_reg() const { return Op_RegI; } 474 }; 475 476 #endif // SHARE_VM_OPTO_SUBNODE_HPP | 456 //-------------------------------ReverseBytesUSNode-------------------------------- 457 // reverse bytes of an unsigned short / char 458 class ReverseBytesUSNode : public Node { 459 public: 460 ReverseBytesUSNode(Node *c, Node *in1) : Node(c, in1) {} 461 virtual int Opcode() const; 462 const Type *bottom_type() const { return TypeInt::CHAR; } 463 virtual uint ideal_reg() const { return Op_RegI; } 464 }; 465 466 //-------------------------------ReverseBytesSNode-------------------------------- 467 // reverse bytes of a short 468 class ReverseBytesSNode : public Node { 469 public: 470 ReverseBytesSNode(Node *c, Node *in1) : Node(c, in1) {} 471 virtual int Opcode() const; 472 const Type *bottom_type() const { return TypeInt::SHORT; } 473 virtual uint ideal_reg() const { return Op_RegI; } 474 }; 475 476 //------------------------------FmaDNode-------------------------------------- 477 // fused-multiply-add double 478 class FmaDNode : public Node { 479 public: 480 FmaDNode(Node *c, Node *in1, Node *in2, Node *in3) : Node(c, in1, in2, in3) {} 481 virtual int Opcode() const; 482 const Type *bottom_type() const { return Type::DOUBLE; } 483 virtual uint match_edge(uint idx) const; 484 virtual uint ideal_reg() const { return Op_RegD; } 485 virtual const Type* Value(PhaseGVN* phase) const; 486 }; 487 488 //------------------------------FmaFNode-------------------------------------- 489 // fused-multiply-add float 490 class FmaFNode : public Node { 491 public: 492 FmaFNode(Node *c, Node *in1, Node *in2, Node *in3) : Node(c, in1, in2, in3) {} 493 virtual int Opcode() const; 494 const Type *bottom_type() const { return Type::FLOAT; } 495 virtual uint match_edge(uint idx) const; 496 virtual uint ideal_reg() const { return Op_RegF; } 497 virtual const Type* Value(PhaseGVN* phase) const; 498 }; 499 500 #endif // SHARE_VM_OPTO_SUBNODE_HPP |