src/share/vm/opto/mathexactnode.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
hotspot Cdiff src/share/vm/opto/mathexactnode.cpp
src/share/vm/opto/mathexactnode.cpp
Print this page
rev 5514 : 8026844: Various Math functions needs intrinsification
Reviewed-by: duke
rev 5515 : [mq]: fixes
*** 29,42 ****
#include "opto/machnode.hpp"
#include "opto/matcher.hpp"
#include "opto/mathexactnode.hpp"
#include "opto/subnode.hpp"
! MathExactNode::MathExactNode(Node* ctrl, Node* n1, Node* n2) : MultiNode(3) {
init_req(0, ctrl);
! init_req(1, n1);
! init_req(2, n2);
}
BoolNode* MathExactNode::bool_node() const {
Node* flags = flags_node();
BoolNode* boolnode = flags->unique_out()->as_Bool();
--- 29,49 ----
#include "opto/machnode.hpp"
#include "opto/matcher.hpp"
#include "opto/mathexactnode.hpp"
#include "opto/subnode.hpp"
! MathExactNode::MathExactNode(Node* ctrl, Node* in1) : MultiNode(2) {
! init_class_id(Class_MathExact);
init_req(0, ctrl);
! init_req(1, in1);
! }
!
! MathExactNode::MathExactNode(Node* ctrl, Node* in1, Node* in2) : MultiNode(3) {
! init_class_id(Class_MathExact);
! init_req(0, ctrl);
! init_req(1, in1);
! init_req(2, in2);
}
BoolNode* MathExactNode::bool_node() const {
Node* flags = flags_node();
BoolNode* boolnode = flags->unique_out()->as_Bool();
*** 62,76 ****
return ifnode->proj_out(0);
}
return ifnode->proj_out(1);
}
- MathExactNode::MathExactNode(Node* ctrl, Node* n1) : MultiNode(2) {
- init_req(0, ctrl);
- init_req(1, n1);
- }
-
// If the MathExactNode won't overflow we have to replace the
// FlagsProjNode and ProjNode that is generated by the MathExactNode
Node* MathExactNode::no_overflow(PhaseGVN* phase, Node* new_result) {
PhaseIterGVN* igvn = phase->is_IterGVN();
if (igvn) {
--- 69,78 ----
*** 100,125 ****
}
}
return new_result;
}
- bool MathExactNode::is_MathExactOpcode(int opcode) {
- switch (opcode) {
- case Op_AddExactI:
- case Op_AddExactL:
- case Op_SubExactI:
- case Op_SubExactL:
- case Op_MulExactI:
- case Op_MulExactL:
- case Op_NegExactI:
- case Op_NegExactL:
- return true;
- default:
- return false;
- }
- }
-
Node* MathExactINode::match(const ProjNode* proj, const Matcher* m) {
uint ideal_reg = proj->ideal_reg();
RegMask rm;
if (proj->_con == result_proj_node) {
rm = m->mathExactI_result_proj_mask();
--- 102,111 ----
src/share/vm/opto/mathexactnode.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File