--- old/src/share/vm/opto/matcher.cpp 2016-07-13 16:45:57.845461500 -0700 +++ new/src/share/vm/opto/matcher.cpp 2016-07-13 16:45:57.501461500 -0700 @@ -2117,6 +2117,8 @@ case Op_StrInflatedCopy: case Op_StrCompressedCopy: case Op_EncodeISOArray: + case Op_FmaD: + case Op_FmaF: set_shared(n); // Force result into register (it will be anyways) break; case Op_ConP: { // Convert pointers above the centerline to NUL @@ -2305,6 +2307,15 @@ n->del_req(4); break; } + case Op_FmaD: + case Op_FmaF: { + // Restructure into a binary tree for Matching. + Node* pair = new BinaryNode(n->in(1), n->in(2)); + n->set_req(2, pair); + n->set_req(1, n->in(3)); + n->del_req(3); + break; + } default: break; }