Lines Matching refs:Scope

241     auto *Scope = new CHRScope(TailRegInfos, TailSubs);  in split()  local
244 return Scope; in split()
295 for (CHRScope *Scope : Scopes) { in ~CHR()
296 delete Scope; in ~CHR()
308 if (CHRScope *Scope = findScopes(R, nullptr, nullptr, Output)) { in findScopes() local
309 Output.push_back(Scope); in findScopes()
315 void checkScopeHoistable(CHRScope *Scope);
319 SmallVector<CHRScope *, 8> splitScope(CHRScope *Scope,
327 void classifyBiasedScopes(CHRScope *Scope, CHRScope *OutermostScope);
334 void setCHRRegions(CHRScope *Scope, CHRScope *OutermostScope);
340 void transformScopes(CHRScope *Scope, DenseSet<PHINode *> &TrivialPHIs);
341 void cloneScopeBlocks(CHRScope *Scope,
350 void fixupBranchesAndSelects(CHRScope *Scope, BasicBlock *PreEntryBlock,
352 void fixupBranch(Region *R, CHRScope *Scope, IRBuilder<> &IRB,
354 void fixupSelect(SelectInst *SI, CHRScope *Scope, IRBuilder<> &IRB,
357 Instruction *BranchOrSelect, CHRScope *Scope,
408 raw_ostream &operator<<(raw_ostream &OS, const CHRScope &Scope) { in operator <<() argument
409 Scope.print(OS); in operator <<()
872 void CHR::checkScopeHoistable(CHRScope *Scope) { in checkScopeHoistable() argument
873 RegInfo &RI = Scope->RegInfos[0]; in checkScopeHoistable()
1105 static void getSelectsInScope(CHRScope *Scope, in getSelectsInScope() argument
1107 for (RegInfo &RI : Scope->RegInfos) in getSelectsInScope()
1110 for (CHRScope *Sub : Scope->Subs) in getSelectsInScope()
1116 for (CHRScope *Scope : Input) { in splitScopes()
1117 assert(!Scope->BranchInsertPoint && in splitScopes()
1120 getSelectsInScope(Scope, Unhoistables); in splitScopes()
1121 splitScope(Scope, nullptr, nullptr, nullptr, Output, Unhoistables); in splitScopes()
1124 for (CHRScope *Scope : Output) { in splitScopes()
1125 assert(Scope->BranchInsertPoint && "BranchInsertPoint must be set"); in splitScopes()
1131 CHRScope *Scope, in splitScope() argument
1148 SmallVector<RegInfo, 8> RegInfos(Scope->RegInfos); // Copy in splitScope()
1194 CHRScope *Tail = Scope->split(RI.R); in splitScope()
1196 Splits.push_back(Scope); in splitScope()
1200 Scope = Tail; in splitScope()
1217 Splits.push_back(Scope); in splitScope()
1261 for (CHRScope *Scope : Scopes) { in classifyBiasedScopes()
1262 assert(Scope->TrueBiasedRegions.empty() && Scope->FalseBiasedRegions.empty() && "Empty"); in classifyBiasedScopes()
1263 classifyBiasedScopes(Scope, Scope); in classifyBiasedScopes()
1265 dbgs() << "classifyBiasedScopes " << *Scope << "\n"; in classifyBiasedScopes()
1267 for (Region *R : Scope->TrueBiasedRegions) { in classifyBiasedScopes()
1272 for (Region *R : Scope->FalseBiasedRegions) { in classifyBiasedScopes()
1277 for (SelectInst *SI : Scope->TrueBiasedSelects) { in classifyBiasedScopes()
1282 for (SelectInst *SI : Scope->FalseBiasedSelects) { in classifyBiasedScopes()
1289 void CHR::classifyBiasedScopes(CHRScope *Scope, CHRScope *OutermostScope) { in classifyBiasedScopes() argument
1290 for (RegInfo &RI : Scope->RegInfos) { in classifyBiasedScopes()
1309 for (CHRScope *Sub : Scope->Subs) { in classifyBiasedScopes()
1314 static bool hasAtLeastTwoBiasedBranches(CHRScope *Scope) { in hasAtLeastTwoBiasedBranches() argument
1315 unsigned NumBiased = Scope->TrueBiasedRegions.size() + in hasAtLeastTwoBiasedBranches()
1316 Scope->FalseBiasedRegions.size() + in hasAtLeastTwoBiasedBranches()
1317 Scope->TrueBiasedSelects.size() + in hasAtLeastTwoBiasedBranches()
1318 Scope->FalseBiasedSelects.size(); in hasAtLeastTwoBiasedBranches()
1324 for (CHRScope *Scope : Input) { in filterScopes()
1326 if (!hasAtLeastTwoBiasedBranches(Scope)) { in filterScopes()
1328 << Scope->TrueBiasedRegions.size() in filterScopes()
1329 << " falsy-regions " << Scope->FalseBiasedRegions.size() in filterScopes()
1330 << " true-selects " << Scope->TrueBiasedSelects.size() in filterScopes()
1331 << " false-selects " << Scope->FalseBiasedSelects.size() << "\n"); in filterScopes()
1336 Scope->RegInfos[0].R->getEntry()->getTerminator()) in filterScopes()
1343 Output.push_back(Scope); in filterScopes()
1349 for (CHRScope *Scope : Input) { in setCHRRegions()
1350 assert(Scope->HoistStopMap.empty() && Scope->CHRRegions.empty() && in setCHRRegions()
1352 setCHRRegions(Scope, Scope); in setCHRRegions()
1353 Output.push_back(Scope); in setCHRRegions()
1355 dbgs() << "setCHRRegions HoistStopMap " << *Scope << "\n"; in setCHRRegions()
1356 for (auto pair : Scope->HoistStopMap) { in setCHRRegions()
1364 for (RegInfo &RI : Scope->CHRRegions) { in setCHRRegions()
1370 void CHR::setCHRRegions(CHRScope *Scope, CHRScope *OutermostScope) { in setCHRRegions() argument
1375 for (RegInfo &RI : Scope->RegInfos) { in setCHRRegions()
1381 for (RegInfo &RI : Scope->RegInfos) { in setCHRRegions()
1415 for (CHRScope *Sub : Scope->Subs) in setCHRRegions()
1480 static void hoistScopeConditions(CHRScope *Scope, Instruction *HoistPoint, in hoistScopeConditions() argument
1484 for (const RegInfo &RI : Scope->CHRRegions) { in hoistScopeConditions()
1486 bool IsTrueBiased = Scope->TrueBiasedRegions.count(R); in hoistScopeConditions()
1487 bool IsFalseBiased = Scope->FalseBiasedRegions.count(R); in hoistScopeConditions()
1490 hoistValue(BI->getCondition(), HoistPoint, R, Scope->HoistStopMap, in hoistScopeConditions()
1494 bool IsTrueBiased = Scope->TrueBiasedSelects.count(SI); in hoistScopeConditions()
1495 bool IsFalseBiased = Scope->FalseBiasedSelects.count(SI); in hoistScopeConditions()
1498 hoistValue(SI->getCondition(), HoistPoint, R, Scope->HoistStopMap, in hoistScopeConditions()
1508 CHRScope *Scope) { in negateICmpIfUsedByBranchOrSelectOnly() argument
1535 if (Scope->TrueBiasedSelects.count(SI)) { in negateICmpIfUsedByBranchOrSelectOnly()
1536 assert(!Scope->FalseBiasedSelects.contains(SI) && in negateICmpIfUsedByBranchOrSelectOnly()
1538 Scope->FalseBiasedSelects.insert(SI); in negateICmpIfUsedByBranchOrSelectOnly()
1539 } else if (Scope->FalseBiasedSelects.count(SI)) { in negateICmpIfUsedByBranchOrSelectOnly()
1540 assert(!Scope->TrueBiasedSelects.contains(SI) && in negateICmpIfUsedByBranchOrSelectOnly()
1542 Scope->TrueBiasedSelects.insert(SI); in negateICmpIfUsedByBranchOrSelectOnly()
1555 static void insertTrivialPHIs(CHRScope *Scope, in insertTrivialPHIs() argument
1559 for (RegInfo &RI : Scope->RegInfos) { in insertTrivialPHIs()
1618 assertCHRRegionsHaveBiasedBranchOrSelect(CHRScope *Scope) { in assertCHRRegionsHaveBiasedBranchOrSelect() argument
1620 auto HasBiasedBranchOrSelect = [](RegInfo &RI, CHRScope *Scope) { in assertCHRRegionsHaveBiasedBranchOrSelect() argument
1621 if (Scope->TrueBiasedRegions.count(RI.R) || in assertCHRRegionsHaveBiasedBranchOrSelect()
1622 Scope->FalseBiasedRegions.count(RI.R)) in assertCHRRegionsHaveBiasedBranchOrSelect()
1625 if (Scope->TrueBiasedSelects.count(SI) || in assertCHRRegionsHaveBiasedBranchOrSelect()
1626 Scope->FalseBiasedSelects.count(SI)) in assertCHRRegionsHaveBiasedBranchOrSelect()
1630 for (RegInfo &RI : Scope->CHRRegions) { in assertCHRRegionsHaveBiasedBranchOrSelect()
1631 assert(HasBiasedBranchOrSelect(RI, Scope) && in assertCHRRegionsHaveBiasedBranchOrSelect()
1640 CHRScope *Scope, BasicBlock *PreEntryBlock) { in assertBranchOrSelectConditionHoisted() argument
1642 for (RegInfo &RI : Scope->CHRRegions) { in assertBranchOrSelectConditionHoisted()
1644 bool IsTrueBiased = Scope->TrueBiasedRegions.count(R); in assertBranchOrSelectConditionHoisted()
1645 bool IsFalseBiased = Scope->FalseBiasedRegions.count(R); in assertBranchOrSelectConditionHoisted()
1653 !Scope->contains(I)) && in assertBranchOrSelectConditionHoisted()
1658 bool IsTrueBiased = Scope->TrueBiasedSelects.count(SI); in assertBranchOrSelectConditionHoisted()
1659 bool IsFalseBiased = Scope->FalseBiasedSelects.count(SI); in assertBranchOrSelectConditionHoisted()
1667 !Scope->contains(I)) && in assertBranchOrSelectConditionHoisted()
1674 void CHR::transformScopes(CHRScope *Scope, DenseSet<PHINode *> &TrivialPHIs) { in transformScopes() argument
1675 CHR_DEBUG(dbgs() << "transformScopes " << *Scope << "\n"); in transformScopes()
1677 assert(Scope->RegInfos.size() >= 1 && "Should have at least one Region"); in transformScopes()
1679 for (RegInfo &RI : Scope->RegInfos) { in transformScopes()
1695 for (RegInfo &RI : Scope->RegInfos) { in transformScopes()
1699 Region *FirstRegion = Scope->RegInfos[0].R; in transformScopes()
1701 Region *LastRegion = Scope->RegInfos[Scope->RegInfos.size() - 1].R; in transformScopes()
1712 insertTrivialPHIs(Scope, EntryBlock, ExitBlock, TrivialPHIs); in transformScopes()
1723 << " at " << *Scope->BranchInsertPoint << "\n"); in transformScopes()
1725 SplitBlock(EntryBlock, Scope->BranchInsertPoint, &DT); in transformScopes()
1735 cloneScopeBlocks(Scope, PreEntryBlock, ExitBlock, LastRegion, VMap); in transformScopes()
1743 assertCHRRegionsHaveBiasedBranchOrSelect(Scope); in transformScopes()
1747 hoistScopeConditions(Scope, PreEntryBlock->getTerminator(), TrivialPHIs, DT); in transformScopes()
1750 assertBranchOrSelectConditionHoisted(Scope, PreEntryBlock); in transformScopes()
1755 fixupBranchesAndSelects(Scope, PreEntryBlock, MergedBr, in transformScopes()
1762 void CHR::cloneScopeBlocks(CHRScope *Scope, in cloneScopeBlocks() argument
1773 for (RegInfo &RI : Scope->RegInfos) in cloneScopeBlocks()
1847 void CHR::fixupBranchesAndSelects(CHRScope *Scope, in fixupBranchesAndSelects() argument
1855 for (RegInfo &RI : Scope->CHRRegions) { in fixupBranchesAndSelects()
1858 fixupBranch(R, Scope, IRB, MergedCondition, CHRBranchBias); in fixupBranchesAndSelects()
1862 fixupSelect(SI, Scope, IRB, MergedCondition, CHRBranchBias); in fixupBranchesAndSelects()
1888 void CHR::fixupBranch(Region *R, CHRScope *Scope, in fixupBranch() argument
1892 bool IsTrueBiased = Scope->TrueBiasedRegions.count(R); in fixupBranch()
1893 assert((IsTrueBiased || Scope->FalseBiasedRegions.count(R)) && in fixupBranch()
1918 addToMergedCondition(ConditionTrue, Cond, BI, Scope, IRB, in fixupBranch()
1931 void CHR::fixupSelect(SelectInst *SI, CHRScope *Scope, in fixupSelect() argument
1935 bool IsTrueBiased = Scope->TrueBiasedSelects.count(SI); in fixupSelect()
1937 Scope->FalseBiasedSelects.count(SI)) && "Must be biased"); in fixupSelect()
1945 addToMergedCondition(IsTrueBiased, Cond, SI, Scope, IRB, in fixupSelect()
1956 Instruction *BranchOrSelect, CHRScope *Scope, in addToMergedCondition() argument
1964 !negateICmpIfUsedByBranchOrSelectOnly(ICmp, BranchOrSelect, Scope)) in addToMergedCondition()
1979 for (CHRScope *Scope : CHRScopes) { in transformScopes()
1980 transformScopes(Scope, TrivialPHIs); in transformScopes()
1992 for (CHRScope *Scope : Scopes) { in dumpScopes()
1993 dbgs() << *Scope << "\n"; in dumpScopes()