< prev index next >

src/hotspot/share/opto/divnode.cpp

Print this page

1370   DivModINode* divmod = new DivModINode(n->in(0), n->in(1), n->in(2));
1371   Node*        dproj  = new ProjNode(divmod, DivModNode::div_proj_num);
1372   Node*        mproj  = new ProjNode(divmod, DivModNode::mod_proj_num);
1373   return divmod;
1374 }
1375 
1376 //------------------------------make------------------------------------------
1377 DivModLNode* DivModLNode::make(Node* div_or_mod) {
1378   Node* n = div_or_mod;
1379   assert(n->Opcode() == Op_DivL || n->Opcode() == Op_ModL,
1380          "only div or mod input pattern accepted");
1381 
1382   DivModLNode* divmod = new DivModLNode(n->in(0), n->in(1), n->in(2));
1383   Node*        dproj  = new ProjNode(divmod, DivModNode::div_proj_num);
1384   Node*        mproj  = new ProjNode(divmod, DivModNode::mod_proj_num);
1385   return divmod;
1386 }
1387 
1388 //------------------------------match------------------------------------------
1389 // return result(s) along with their RegMask info
1390 Node *DivModINode::match( const ProjNode *proj, const Matcher *match ) {
1391   uint ideal_reg = proj->ideal_reg();
1392   RegMask rm;
1393   if (proj->_con == div_proj_num) {
1394     rm = match->divI_proj_mask();
1395   } else {
1396     assert(proj->_con == mod_proj_num, "must be div or mod projection");
1397     rm = match->modI_proj_mask();
1398   }
1399   return new MachProjNode(this, proj->_con, rm, ideal_reg);
1400 }
1401 
1402 
1403 //------------------------------match------------------------------------------
1404 // return result(s) along with their RegMask info
1405 Node *DivModLNode::match( const ProjNode *proj, const Matcher *match ) {
1406   uint ideal_reg = proj->ideal_reg();
1407   RegMask rm;
1408   if (proj->_con == div_proj_num) {
1409     rm = match->divL_proj_mask();
1410   } else {
1411     assert(proj->_con == mod_proj_num, "must be div or mod projection");
1412     rm = match->modL_proj_mask();
1413   }
1414   return new MachProjNode(this, proj->_con, rm, ideal_reg);
1415 }
1416 
1417 //------------------------------make------------------------------------------
1418 UDivModINode* UDivModINode::make(Node* div_or_mod) {
1419   Node* n = div_or_mod;
1420   assert(n->Opcode() == Op_UDivI || n->Opcode() == Op_UModI,
1421          "only div or mod input pattern accepted");
1422 
1423   UDivModINode* divmod = new UDivModINode(n->in(0), n->in(1), n->in(2));
1424   Node*        dproj  = new ProjNode(divmod, DivModNode::div_proj_num);
1425   Node*        mproj  = new ProjNode(divmod, DivModNode::mod_proj_num);
1426   return divmod;
1427 }
1428 
1429 //------------------------------make------------------------------------------
1430 UDivModLNode* UDivModLNode::make(Node* div_or_mod) {
1431   Node* n = div_or_mod;
1432   assert(n->Opcode() == Op_UDivL || n->Opcode() == Op_UModL,
1433          "only div or mod input pattern accepted");
1434 
1435   UDivModLNode* divmod = new UDivModLNode(n->in(0), n->in(1), n->in(2));
1436   Node*        dproj  = new ProjNode(divmod, DivModNode::div_proj_num);
1437   Node*        mproj  = new ProjNode(divmod, DivModNode::mod_proj_num);
1438   return divmod;
1439 }
1440 
1441 //------------------------------match------------------------------------------
1442 // return result(s) along with their RegMask info
1443 Node* UDivModINode::match( const ProjNode *proj, const Matcher *match ) {
1444   uint ideal_reg = proj->ideal_reg();
1445   RegMask rm;
1446   if (proj->_con == div_proj_num) {
1447     rm = match->divI_proj_mask();
1448   } else {
1449     assert(proj->_con == mod_proj_num, "must be div or mod projection");
1450     rm = match->modI_proj_mask();
1451   }
1452   return new MachProjNode(this, proj->_con, rm, ideal_reg);
1453 }
1454 
1455 
1456 //------------------------------match------------------------------------------
1457 // return result(s) along with their RegMask info
1458 Node* UDivModLNode::match( const ProjNode *proj, const Matcher *match ) {
1459   uint ideal_reg = proj->ideal_reg();
1460   RegMask rm;
1461   if (proj->_con == div_proj_num) {
1462     rm = match->divL_proj_mask();
1463   } else {
1464     assert(proj->_con == mod_proj_num, "must be div or mod projection");
1465     rm = match->modL_proj_mask();
1466   }
1467   return new MachProjNode(this, proj->_con, rm, ideal_reg);
1468 }

1370   DivModINode* divmod = new DivModINode(n->in(0), n->in(1), n->in(2));
1371   Node*        dproj  = new ProjNode(divmod, DivModNode::div_proj_num);
1372   Node*        mproj  = new ProjNode(divmod, DivModNode::mod_proj_num);
1373   return divmod;
1374 }
1375 
1376 //------------------------------make------------------------------------------
1377 DivModLNode* DivModLNode::make(Node* div_or_mod) {
1378   Node* n = div_or_mod;
1379   assert(n->Opcode() == Op_DivL || n->Opcode() == Op_ModL,
1380          "only div or mod input pattern accepted");
1381 
1382   DivModLNode* divmod = new DivModLNode(n->in(0), n->in(1), n->in(2));
1383   Node*        dproj  = new ProjNode(divmod, DivModNode::div_proj_num);
1384   Node*        mproj  = new ProjNode(divmod, DivModNode::mod_proj_num);
1385   return divmod;
1386 }
1387 
1388 //------------------------------match------------------------------------------
1389 // return result(s) along with their RegMask info
1390 Node *DivModINode::match(const ProjNode *proj, const Matcher *match, const RegMask* mask) {
1391   uint ideal_reg = proj->ideal_reg();
1392   RegMask rm;
1393   if (proj->_con == div_proj_num) {
1394     rm = match->divI_proj_mask();
1395   } else {
1396     assert(proj->_con == mod_proj_num, "must be div or mod projection");
1397     rm = match->modI_proj_mask();
1398   }
1399   return new MachProjNode(this, proj->_con, rm, ideal_reg);
1400 }
1401 
1402 
1403 //------------------------------match------------------------------------------
1404 // return result(s) along with their RegMask info
1405 Node *DivModLNode::match(const ProjNode *proj, const Matcher *match, const RegMask* mask) {
1406   uint ideal_reg = proj->ideal_reg();
1407   RegMask rm;
1408   if (proj->_con == div_proj_num) {
1409     rm = match->divL_proj_mask();
1410   } else {
1411     assert(proj->_con == mod_proj_num, "must be div or mod projection");
1412     rm = match->modL_proj_mask();
1413   }
1414   return new MachProjNode(this, proj->_con, rm, ideal_reg);
1415 }
1416 
1417 //------------------------------make------------------------------------------
1418 UDivModINode* UDivModINode::make(Node* div_or_mod) {
1419   Node* n = div_or_mod;
1420   assert(n->Opcode() == Op_UDivI || n->Opcode() == Op_UModI,
1421          "only div or mod input pattern accepted");
1422 
1423   UDivModINode* divmod = new UDivModINode(n->in(0), n->in(1), n->in(2));
1424   Node*        dproj  = new ProjNode(divmod, DivModNode::div_proj_num);
1425   Node*        mproj  = new ProjNode(divmod, DivModNode::mod_proj_num);
1426   return divmod;
1427 }
1428 
1429 //------------------------------make------------------------------------------
1430 UDivModLNode* UDivModLNode::make(Node* div_or_mod) {
1431   Node* n = div_or_mod;
1432   assert(n->Opcode() == Op_UDivL || n->Opcode() == Op_UModL,
1433          "only div or mod input pattern accepted");
1434 
1435   UDivModLNode* divmod = new UDivModLNode(n->in(0), n->in(1), n->in(2));
1436   Node*        dproj  = new ProjNode(divmod, DivModNode::div_proj_num);
1437   Node*        mproj  = new ProjNode(divmod, DivModNode::mod_proj_num);
1438   return divmod;
1439 }
1440 
1441 //------------------------------match------------------------------------------
1442 // return result(s) along with their RegMask info
1443 Node* UDivModINode::match(const ProjNode* proj, const Matcher* match, const RegMask* mask) {
1444   uint ideal_reg = proj->ideal_reg();
1445   RegMask rm;
1446   if (proj->_con == div_proj_num) {
1447     rm = match->divI_proj_mask();
1448   } else {
1449     assert(proj->_con == mod_proj_num, "must be div or mod projection");
1450     rm = match->modI_proj_mask();
1451   }
1452   return new MachProjNode(this, proj->_con, rm, ideal_reg);
1453 }
1454 
1455 
1456 //------------------------------match------------------------------------------
1457 // return result(s) along with their RegMask info
1458 Node* UDivModLNode::match( const ProjNode* proj, const Matcher* match, const RegMask* mask) {
1459   uint ideal_reg = proj->ideal_reg();
1460   RegMask rm;
1461   if (proj->_con == div_proj_num) {
1462     rm = match->divL_proj_mask();
1463   } else {
1464     assert(proj->_con == mod_proj_num, "must be div or mod projection");
1465     rm = match->modL_proj_mask();
1466   }
1467   return new MachProjNode(this, proj->_con, rm, ideal_reg);
1468 }
< prev index next >