< prev index next >

src/hotspot/share/opto/matcher.cpp

Print this page




2341     case Op_StrCompressedCopy:
2342     case Op_StrInflatedCopy:
2343     case Op_EncodeISOArray: {
2344       // Restructure into a binary tree for Matching.
2345       Node* pair = new BinaryNode(n->in(3), n->in(4));
2346       n->set_req(3, pair);
2347       n->del_req(4);
2348       break;
2349     }
2350     case Op_FmaD:
2351     case Op_FmaF:
2352     case Op_FmaVD:
2353     case Op_FmaVF: {
2354       // Restructure into a binary tree for Matching.
2355       Node* pair = new BinaryNode(n->in(1), n->in(2));
2356       n->set_req(2, pair);
2357       n->set_req(1, n->in(3));
2358       n->del_req(3);
2359       break;
2360     }














2361     case Op_MulAddS2I: {
2362       Node* pair1 = new BinaryNode(n->in(1), n->in(2));
2363       Node* pair2 = new BinaryNode(n->in(3), n->in(4));
2364       n->set_req(1, pair1);
2365       n->set_req(2, pair2);
2366       n->del_req(4);
2367       n->del_req(3);
2368       break;
2369     }








2370     default:
2371       break;
2372   }
2373 }
2374 
2375 #ifdef ASSERT
2376 // machine-independent root to machine-dependent root
2377 void Matcher::dump_old2new_map() {
2378   _old2new_map.dump();
2379 }
2380 #endif
2381 
2382 //---------------------------collect_null_checks-------------------------------
2383 // Find null checks in the ideal graph; write a machine-specific node for
2384 // it.  Used by later implicit-null-check handling.  Actually collects
2385 // either an IfTrue or IfFalse for the common NOT-null path, AND the ideal
2386 // value being tested.
2387 void Matcher::collect_null_checks( Node *proj, Node *orig_proj ) {
2388   Node *iff = proj->in(0);
2389   if( iff->Opcode() == Op_If ) {




2341     case Op_StrCompressedCopy:
2342     case Op_StrInflatedCopy:
2343     case Op_EncodeISOArray: {
2344       // Restructure into a binary tree for Matching.
2345       Node* pair = new BinaryNode(n->in(3), n->in(4));
2346       n->set_req(3, pair);
2347       n->del_req(4);
2348       break;
2349     }
2350     case Op_FmaD:
2351     case Op_FmaF:
2352     case Op_FmaVD:
2353     case Op_FmaVF: {
2354       // Restructure into a binary tree for Matching.
2355       Node* pair = new BinaryNode(n->in(1), n->in(2));
2356       n->set_req(2, pair);
2357       n->set_req(1, n->in(3));
2358       n->del_req(3);
2359       break;
2360     }
2361     case Op_VectorBlend:
2362     case Op_VectorInsert: {
2363       Node* pair = new BinaryNode(n->in(1), n->in(2));
2364       n->set_req(1, pair);
2365       n->set_req(2, n->in(3));
2366       n->del_req(3);
2367       break;
2368     }
2369     case Op_StoreVectorScatter: {
2370       Node* pair = new BinaryNode(n->in(MemNode::ValueIn), n->in(MemNode::ValueIn+1));
2371       n->set_req(MemNode::ValueIn, pair);
2372       n->del_req(MemNode::ValueIn+1);
2373       break;
2374     }
2375     case Op_MulAddS2I: {
2376       Node* pair1 = new BinaryNode(n->in(1), n->in(2));
2377       Node* pair2 = new BinaryNode(n->in(3), n->in(4));
2378       n->set_req(1, pair1);
2379       n->set_req(2, pair2);
2380       n->del_req(4);
2381       n->del_req(3);
2382       break;
2383     }
2384 #ifdef X86
2385     case Op_VectorMaskCmp: {
2386       n->set_req(1, new BinaryNode(n->in(1), n->in(2)));
2387       n->set_req(2, n->in(3));
2388       n->del_req(3);
2389       break;
2390     }
2391 #endif
2392     default:
2393       break;
2394   }
2395 }
2396 
2397 #ifdef ASSERT
2398 // machine-independent root to machine-dependent root
2399 void Matcher::dump_old2new_map() {
2400   _old2new_map.dump();
2401 }
2402 #endif
2403 
2404 //---------------------------collect_null_checks-------------------------------
2405 // Find null checks in the ideal graph; write a machine-specific node for
2406 // it.  Used by later implicit-null-check handling.  Actually collects
2407 // either an IfTrue or IfFalse for the common NOT-null path, AND the ideal
2408 // value being tested.
2409 void Matcher::collect_null_checks( Node *proj, Node *orig_proj ) {
2410   Node *iff = proj->in(0);
2411   if( iff->Opcode() == Op_If ) {


< prev index next >