src/share/vm/opto/mathexactnode.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hotspot Cdiff src/share/vm/opto/mathexactnode.hpp

src/share/vm/opto/mathexactnode.hpp

Print this page
rev 5514 : 8026844: Various Math functions needs intrinsification
Reviewed-by: duke
rev 5515 : [mq]: fixes

*** 37,47 **** class PhaseGVN; class PhaseTransform; class MathExactNode : public MultiNode { public: ! MathExactNode(Node* ctrl, Node* n1); MathExactNode(Node* ctrl, Node* in1, Node* in2); enum { result_proj_node = 0, flags_proj_node = 1 }; --- 37,47 ---- class PhaseGVN; class PhaseTransform; class MathExactNode : public MultiNode { public: ! MathExactNode(Node* ctrl, Node* in1); MathExactNode(Node* ctrl, Node* in1, Node* in2); enum { result_proj_node = 0, flags_proj_node = 1 };
*** 51,62 **** virtual const Type* Value(PhaseTransform* phase) const { return bottom_type(); } virtual uint hash() const { return Node::hash(); } virtual bool is_CFG() const { return false; } virtual uint ideal_reg() const { return NotAMachineReg; } - static bool is_MathExactOpcode(int opcode); - ProjNode* result_node() const { return proj_out(result_proj_node); } ProjNode* flags_node() const { return proj_out(flags_proj_node); } Node* control_node() const; Node* non_throwing_branch() const; protected: --- 51,60 ----
*** 65,142 **** Node* no_overflow(PhaseGVN *phase, Node* new_result); }; class MathExactINode : public MathExactNode { public: ! MathExactINode(Node* ctrl, Node* in1) : MathExactNode(ctrl, in1) {} ! MathExactINode(Node* ctrl, Node* in1, Node* in2) : MathExactNode(ctrl, in1, in2) {} virtual int Opcode() const; virtual Node* match(const ProjNode* proj, const Matcher* m); virtual const Type* bottom_type() const { return TypeTuple::INT_CC_PAIR; } }; class MathExactLNode : public MathExactNode { public: ! MathExactLNode(Node* ctrl, Node* in1) : MathExactNode(ctrl, in1) {} ! MathExactLNode(Node* ctrl, Node* in1, Node* in2) : MathExactNode(ctrl, in1, in2) {} virtual int Opcode() const; virtual Node* match(const ProjNode* proj, const Matcher* m); virtual const Type* bottom_type() const { return TypeTuple::LONG_CC_PAIR; } }; class AddExactINode : public MathExactINode { public: ! AddExactINode(Node* ctrl, Node* in1, Node* in2) : MathExactINode(ctrl, in1, in2) {} virtual int Opcode() const; virtual Node *Ideal(PhaseGVN *phase, bool can_reshape); }; class AddExactLNode : public MathExactLNode { public: ! AddExactLNode(Node* ctrl, Node* in1, Node* in2) : MathExactLNode(ctrl, in1, in2) {} virtual int Opcode() const; virtual Node* Ideal(PhaseGVN* phase, bool can_reshape); }; class SubExactINode : public MathExactINode { public: ! SubExactINode(Node* ctrl, Node* in1, Node* in2) : MathExactINode(ctrl, in1, in2) {} virtual int Opcode() const; virtual Node* Ideal(PhaseGVN* phase, bool can_reshape); }; class SubExactLNode : public MathExactLNode { public: ! SubExactLNode(Node* ctrl, Node* in1, Node* in2) : MathExactLNode(ctrl, in1, in2) {} virtual int Opcode() const; virtual Node* Ideal(PhaseGVN* phase, bool can_reshape); }; class NegExactINode : public MathExactINode { public: ! NegExactINode(Node* ctrl, Node* in1) : MathExactINode(ctrl, in1) {} virtual int Opcode() const; virtual Node* Ideal(PhaseGVN* phase, bool can_reshape); }; class NegExactLNode : public MathExactLNode { public: ! NegExactLNode(Node* ctrl, Node* in1) : MathExactLNode(ctrl, in1) {} virtual int Opcode() const; virtual Node* Ideal(PhaseGVN* phase, bool can_reshape); }; class MulExactINode : public MathExactINode { public: ! MulExactINode(Node* ctrl, Node* in1, Node* in2) : MathExactINode(ctrl, in1, in2) {} virtual int Opcode() const; virtual Node* Ideal(PhaseGVN* phase, bool can_reshape); }; class MulExactLNode : public MathExactLNode { public: ! MulExactLNode(Node* ctrl, Node* in1, Node* in2) : MathExactLNode(ctrl, in1, in2) {} virtual int Opcode() const; virtual Node* Ideal(PhaseGVN* phase, bool can_reshape); }; class FlagsProjNode : public ProjNode { --- 63,140 ---- Node* no_overflow(PhaseGVN *phase, Node* new_result); }; class MathExactINode : public MathExactNode { public: ! MathExactINode(Node* ctrl, Node* in1) : MathExactNode(ctrl, in1) { init_class_id(Class_MathExactI); } ! MathExactINode(Node* ctrl, Node* in1, Node* in2) : MathExactNode(ctrl, in1, in2) { init_class_id(Class_MathExactI); } virtual int Opcode() const; virtual Node* match(const ProjNode* proj, const Matcher* m); virtual const Type* bottom_type() const { return TypeTuple::INT_CC_PAIR; } }; class MathExactLNode : public MathExactNode { public: ! MathExactLNode(Node* ctrl, Node* in1) : MathExactNode(ctrl, in1) { init_class_id(Class_MathExactL); } ! MathExactLNode(Node* ctrl, Node* in1, Node* in2) : MathExactNode(ctrl, in1, in2) { init_class_id(Class_MathExactL); } virtual int Opcode() const; virtual Node* match(const ProjNode* proj, const Matcher* m); virtual const Type* bottom_type() const { return TypeTuple::LONG_CC_PAIR; } }; class AddExactINode : public MathExactINode { public: ! AddExactINode(Node* ctrl, Node* in1, Node* in2) : MathExactINode(ctrl, in1, in2) { init_class_id(Class_AddExactI); } virtual int Opcode() const; virtual Node *Ideal(PhaseGVN *phase, bool can_reshape); }; class AddExactLNode : public MathExactLNode { public: ! AddExactLNode(Node* ctrl, Node* in1, Node* in2) : MathExactLNode(ctrl, in1, in2) { init_class_id(Class_AddExactL); } virtual int Opcode() const; virtual Node* Ideal(PhaseGVN* phase, bool can_reshape); }; class SubExactINode : public MathExactINode { public: ! SubExactINode(Node* ctrl, Node* in1, Node* in2) : MathExactINode(ctrl, in1, in2) { init_class_id(Class_SubExactI); } virtual int Opcode() const; virtual Node* Ideal(PhaseGVN* phase, bool can_reshape); }; class SubExactLNode : public MathExactLNode { public: ! SubExactLNode(Node* ctrl, Node* in1, Node* in2) : MathExactLNode(ctrl, in1, in2) { init_class_id(Class_SubExactL); } virtual int Opcode() const; virtual Node* Ideal(PhaseGVN* phase, bool can_reshape); }; class NegExactINode : public MathExactINode { public: ! NegExactINode(Node* ctrl, Node* in1) : MathExactINode(ctrl, in1) { init_class_id(Class_NegExactI); } virtual int Opcode() const; virtual Node* Ideal(PhaseGVN* phase, bool can_reshape); }; class NegExactLNode : public MathExactLNode { public: ! NegExactLNode(Node* ctrl, Node* in1) : MathExactLNode(ctrl, in1) { init_class_id(Class_NegExactL); } virtual int Opcode() const; virtual Node* Ideal(PhaseGVN* phase, bool can_reshape); }; class MulExactINode : public MathExactINode { public: ! MulExactINode(Node* ctrl, Node* in1, Node* in2) : MathExactINode(ctrl, in1, in2) { init_class_id(Class_MulExactI); } virtual int Opcode() const; virtual Node* Ideal(PhaseGVN* phase, bool can_reshape); }; class MulExactLNode : public MathExactLNode { public: ! MulExactLNode(Node* ctrl, Node* in1, Node* in2) : MathExactLNode(ctrl, in1, in2) { init_class_id(Class_MulExactL); } virtual int Opcode() const; virtual Node* Ideal(PhaseGVN* phase, bool can_reshape); }; class FlagsProjNode : public ProjNode {
src/share/vm/opto/mathexactnode.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File