| OLD | NEW |
| 1 //===- subzero/src/IceCfgNode.cpp - Basic block (node) implementation -----===// | 1 //===- subzero/src/IceCfgNode.cpp - Basic block (node) implementation -----===// |
| 2 // | 2 // |
| 3 // The Subzero Code Generator | 3 // The Subzero Code Generator |
| 4 // | 4 // |
| 5 // This file is distributed under the University of Illinois Open Source | 5 // This file is distributed under the University of Illinois Open Source |
| 6 // License. See LICENSE.TXT for details. | 6 // License. See LICENSE.TXT for details. |
| 7 // | 7 // |
| 8 //===----------------------------------------------------------------------===// | 8 //===----------------------------------------------------------------------===// |
| 9 /// | 9 /// |
| 10 /// \file | 10 /// \file |
| (...skipping 1324 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1335 I = Helper.getBundleLockStart(); | 1335 I = Helper.getBundleLockStart(); |
| 1336 } | 1336 } |
| 1337 continue; | 1337 continue; |
| 1338 } | 1338 } |
| 1339 | 1339 |
| 1340 // I points to a non bundle_lock/bundle_unlock instruction. | 1340 // I points to a non bundle_lock/bundle_unlock instruction. |
| 1341 if (Helper.isInBundleLockRegion()) { | 1341 if (Helper.isInBundleLockRegion()) { |
| 1342 I->emitIAS(Func); | 1342 I->emitIAS(Func); |
| 1343 // Only update stats during the final pass. | 1343 // Only update stats during the final pass. |
| 1344 if (Retrying) | 1344 if (Retrying) |
| 1345 updateStats(Func, I); | 1345 updateStats(Func, iteratorToInst(I)); |
| 1346 } else { | 1346 } else { |
| 1347 // Treat it as though there were an implicit bundle_lock and | 1347 // Treat it as though there were an implicit bundle_lock and |
| 1348 // bundle_unlock wrapping the instruction. | 1348 // bundle_unlock wrapping the instruction. |
| 1349 Helper.enterBundleLock(I); | 1349 Helper.enterBundleLock(I); |
| 1350 I->emitIAS(Func); | 1350 I->emitIAS(Func); |
| 1351 Helper.enterBundleUnlock(); | 1351 Helper.enterBundleUnlock(); |
| 1352 Helper.rollback(); | 1352 Helper.rollback(); |
| 1353 Helper.padToNextBundle(); | 1353 Helper.padToNextBundle(); |
| 1354 I->emitIAS(Func); | 1354 I->emitIAS(Func); |
| 1355 updateStats(Func, I); | 1355 updateStats(Func, iteratorToInst(I)); |
| 1356 Helper.leaveBundleLockRegion(); | 1356 Helper.leaveBundleLockRegion(); |
| 1357 } | 1357 } |
| 1358 } | 1358 } |
| 1359 | 1359 |
| 1360 // Don't allow bundle locking across basic blocks, to keep the backtracking | 1360 // Don't allow bundle locking across basic blocks, to keep the backtracking |
| 1361 // mechanism simple. | 1361 // mechanism simple. |
| 1362 assert(!Helper.isInBundleLockRegion()); | 1362 assert(!Helper.isInBundleLockRegion()); |
| 1363 assert(!Retrying); | 1363 assert(!Retrying); |
| 1364 } | 1364 } |
| 1365 | 1365 |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1466 auto *Instr = InstIntrinsicCall::create( | 1466 auto *Instr = InstIntrinsicCall::create( |
| 1467 Func, 5, Func->makeVariable(IceType_i64), RMWI64Name, Info->Info); | 1467 Func, 5, Func->makeVariable(IceType_i64), RMWI64Name, Info->Info); |
| 1468 Instr->addArg(AtomicRMWOp); | 1468 Instr->addArg(AtomicRMWOp); |
| 1469 Instr->addArg(Counter); | 1469 Instr->addArg(Counter); |
| 1470 Instr->addArg(One); | 1470 Instr->addArg(One); |
| 1471 Instr->addArg(OrderAcquireRelease); | 1471 Instr->addArg(OrderAcquireRelease); |
| 1472 Insts.push_front(Instr); | 1472 Insts.push_front(Instr); |
| 1473 } | 1473 } |
| 1474 | 1474 |
| 1475 } // end of namespace Ice | 1475 } // end of namespace Ice |
| OLD | NEW |