src/share/vm/opto/connode.hpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File
*** old/src/share/vm/opto/connode.hpp	Mon May  4 21:36:30 2009
--- new/src/share/vm/opto/connode.hpp	Mon May  4 21:36:30 2009

*** 634,657 **** --- 634,697 ---- virtual const Type *bottom_type() const { return TypeLong::LONG; } virtual uint ideal_reg() const { return Op_RegL; } virtual const Type* Value( PhaseTransform *phase ) const; }; + //---------- CountBitsNode ----------------------------------------------------- + class CountBitsNode : public Node { + public: + CountBitsNode(Node* in1) : Node(0, in1) {} + const Type* bottom_type() const { return TypeInt::INT; } + virtual uint ideal_reg() const { return Op_RegI; } + }; + + //---------- CountLeadingZerosINode -------------------------------------------- + // Count leading zeros (0-bit count starting from MSB) of an integer. + class CountLeadingZerosINode : public CountBitsNode { + public: + CountLeadingZerosINode(Node* in1) : CountBitsNode(in1) {} + virtual int Opcode() const; + virtual Node* Ideal(PhaseGVN* phase, bool can_reshape); + }; + + //---------- CountLeadingZerosLNode -------------------------------------------- + // Count leading zeros (0-bit count starting from MSB) of a long. + class CountLeadingZerosLNode : public CountBitsNode { + public: + CountLeadingZerosLNode(Node* in1) : CountBitsNode(in1) {} + virtual int Opcode() const; + virtual Node* Ideal(PhaseGVN* phase, bool can_reshape); + }; + + //---------- CountTrailingZerosINode ------------------------------------------- + // Count trailing zeros (0-bit count starting from LSB) of an integer. + class CountTrailingZerosINode : public CountBitsNode { + public: + CountTrailingZerosINode(Node* in1) : CountBitsNode(in1) {} + virtual int Opcode() const; + virtual Node* Ideal(PhaseGVN* phase, bool can_reshape); + }; + + //---------- CountTrailingZerosLNode ------------------------------------------- + // Count trailing zeros (0-bit count starting from LSB) of a long. + class CountTrailingZerosLNode : public CountBitsNode { + public: + CountTrailingZerosLNode(Node* in1) : CountBitsNode(in1) {} + virtual int Opcode() const; + virtual Node* Ideal(PhaseGVN* phase, bool can_reshape); + }; + //---------- PopCountINode ----------------------------------------------------- // Population count (bit count) of an integer. ! class PopCountINode : public CountBitsNode { public: ! PopCountINode(Node* in1) : Node(0, in1) {} ! PopCountINode(Node* in1) : CountBitsNode(in1) {} virtual int Opcode() const; const Type* bottom_type() const { return TypeInt::INT; } virtual uint ideal_reg() const { return Op_RegI; } }; //---------- PopCountLNode ----------------------------------------------------- // Population count (bit count) of a long. ! class PopCountLNode : public CountBitsNode { public: ! PopCountLNode(Node* in1) : Node(0, in1) {} ! PopCountLNode(Node* in1) : CountBitsNode(in1) {} virtual int Opcode() const; const Type* bottom_type() const { return TypeInt::INT; } virtual uint ideal_reg() const { return Op_RegI; } };

src/share/vm/opto/connode.hpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File