< prev index next >

src/hotspot/share/opto/divnode.cpp

Print this page

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

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