/arkcompiler/runtime_core/compiler/tests/ |
D | irBuilder_tests.cpp | 155 for (auto bb : graph->GetBlocksRPO()) { in __anone7b938de0302() local 156 EXPECT_NE(bb, nullptr); in __anone7b938de0302() 157 if (bb->IsTryBegin()) { in __anone7b938de0302() 158 EXPECT_TRUE(bb->GetPredsBlocks().size() == 1); in __anone7b938de0302() 159 EXPECT_TRUE(bb->GetSuccsBlocks().size() == 2); in __anone7b938de0302() 160 EXPECT_TRUE(bb->GetSuccessor(0)->IsTry()); in __anone7b938de0302() 161 EXPECT_TRUE(bb->GetSuccessor(1)->IsCatch()); in __anone7b938de0302() 162 EXPECT_TRUE(bb->GetSuccessor(1)->IsCatchBegin()); in __anone7b938de0302() 164 EXPECT_TRUE(bb->GetFirstInst()->IsTry()); in __anone7b938de0302() 168 if (bb->IsTry()) { in __anone7b938de0302() [all …]
|
D | dominators_tree_new_test.cpp | 55 for (auto bb : graph->GetBlocksRPO()) { in __anonc1de51c10102() local 56 EXPECT_NE(bb, nullptr); in __anonc1de51c10102() 57 if (!bb->IsCatchBegin()) { in __anonc1de51c10102() 61 bb->GetPredecessor(1)->SetDominator(bb->GetPredecessor(0)); in __anonc1de51c10102() 62 EXPECT_NE(bb->GetPredecessor(1)->GetDominator(), nullptr); in __anonc1de51c10102() 63 bb->GetPredecessor(0)->AddDominatedBlock(bb->GetPredecessor(1)); in __anonc1de51c10102() 64 … dominators_tree.UpdateAfterResolverInsertion(bb->GetPredecessor(0), bb->GetPredecessor(1), in __anonc1de51c10102() 65 bb->GetPredecessor(0)->GetSuccsBlocks()[0]); in __anonc1de51c10102() 90 for (auto bb : graph->GetBlocksRPO()) { in __anonc1de51c10202() local 91 EXPECT_NE(bb, nullptr); in __anonc1de51c10202() [all …]
|
D | loop_analyzer_new_test.cpp | 79 for (auto bb : graph->GetBlocksRPO()) { in __anonb00bd9110202() local 80 EXPECT_NE(bb, nullptr); in __anonb00bd9110202() 81 if (!bb->IsTryBegin()) { in __anonb00bd9110202() 84 Loop loop(graph->GetAllocator(), bb->GetSuccessor(0), 1); in __anonb00bd9110202() 85 Loop other(graph->GetAllocator(), bb->GetSuccessor(0), 1); in __anonb00bd9110202() 113 for (auto bb : graph->GetBlocksRPO()) { in __anonb00bd9110302() local 114 EXPECT_NE(bb, nullptr); in __anonb00bd9110302() 115 if (!bb->IsTryBegin()) { in __anonb00bd9110302() 118 Loop loop(graph->GetAllocator(), bb->GetSuccessor(0), 1); in __anonb00bd9110302() 119 loop.AppendBackEdge(bb->GetSuccessor(1)); in __anonb00bd9110302() [all …]
|
D | compiler_basicblock_test.cpp | 59 for (auto bb : graph->GetBlocksRPO()) { in __anonba0391b00102() local 60 if (!bb->IsCatchBegin()) { in __anonba0391b00102() 64 EXPECT_TRUE(BlocksPathDfsSearch(mrk, start_block, end_block, bb->GetSuccessor(0))); in __anonba0391b00102() 65 EXPECT_FALSE(BlocksPathDfsSearch(mrk, start_block, bb->GetSuccessor(0), end_block)); in __anonba0391b00102() 66 EXPECT_FALSE(BlocksPathDfsSearch(mrk, end_block, start_block, bb->GetSuccessor(0))); in __anonba0391b00102() 87 for (auto bb : graph->GetBlocksRPO()) { in __anonba0391b00202() local 88 if (!bb->IsTry()) { in __anonba0391b00202() 91 graph->GetEndBlock()->InsertBlockBefore(bb->GetPredecessor(0)); in __anonba0391b00202() 92 graph->GetStartBlock()->InsertBlockBefore(bb->GetPredecessor(0)); in __anonba0391b00202() 116 for (auto bb : graph->GetBlocksRPO()) { in __anonba0391b00302() local [all …]
|
/arkcompiler/ets_runtime/ecmascript/compiler/codegen/maple/maple_be/src/cg/ |
D | live.cpp | 36 FOR_ALL_BB(bb, cgFunc) { in InitAndGetDefUse() 37 if (!bb->GetEhPreds().empty()) { in InitAndGetDefUse() 38 InitEhDefine(*bb); in InitAndGetDefUse() 40 InitBB(*bb); in InitAndGetDefUse() 41 GetBBDefUse(*bb); in InitAndGetDefUse() 42 if (bb->GetEhPreds().empty()) { in InitAndGetDefUse() 45 bb->RemoveInsn(*bb->GetFirstInsn()->GetNext()); in InitAndGetDefUse() 47 bb->RemoveInsn(*bb->GetFirstInsn()); in InitAndGetDefUse() 53 bool LiveAnalysis::GenerateLiveOut(BB &bb) in GenerateLiveOut() argument 55 const MapleSparseBitVector<> bbLiveOutBak(bb.GetLiveOut()->GetInfo()); in GenerateLiveOut() [all …]
|
D | cg_dominance.cpp | 26 void DomAnalysis::PostOrderWalk(const BB &bb, int32 &pid, MapleVector<bool> &visitedMap) in PostOrderWalk() argument 28 DEBUG_ASSERT(bb.GetId() < visitedMap.size(), "index out of range in Dominance::PostOrderWalk"); in PostOrderWalk() 29 if (visitedMap[bb.GetId()]) { in PostOrderWalk() 32 visitedMap[bb.GetId()] = true; in PostOrderWalk() 33 for (const BB *suc : bb.GetSuccs()) { in PostOrderWalk() 36 …DEBUG_ASSERT(bb.GetId() < postOrderIDVec.size(), "index out of range in Dominance::PostOrderWalk"); in PostOrderWalk() 37 postOrderIDVec[bb.GetId()] = pid++; in PostOrderWalk() 73 bool DominanceBase::CommonEntryBBIsPred(const BB &bb) const in CommonEntryBBIsPred() 76 if (suc == &bb) { in CommonEntryBBIsPred() 91 BB *bb = reversePostOrder[i]; in ComputeDominance() local [all …]
|
D | cgbb.cpp | 143 void BB::AppendBBInsns(BB &bb) in AppendBBInsns() argument 146 firstInsn = bb.firstInsn; in AppendBBInsns() 147 lastInsn = bb.lastInsn; in AppendBBInsns() 149 FOR_BB_INSNS(i, &bb) { in AppendBBInsns() 155 if ((bb.firstInsn == nullptr) || (bb.lastInsn == nullptr)) { in AppendBBInsns() 158 FOR_BB_INSNS_SAFE(insn, &bb, nextInsn) { in AppendBBInsns() 164 void BB::InsertAtBeginning(BB &bb) in InsertAtBeginning() argument 166 if (bb.firstInsn == nullptr) { /* nothing to add */ in InsertAtBeginning() 170 FOR_BB_INSNS(insn, &bb) { in InsertAtBeginning() 175 firstInsn = bb.firstInsn; in InsertAtBeginning() [all …]
|
D | reaching.cpp | 67 void ReachingDefinition::InitOut(const BB &bb) in InitOut() argument 70 *regOut[bb.GetId()] = *regGen[bb.GetId()]; in InitOut() 73 *memOut[bb.GetId()] = *memGen[bb.GetId()]; in InitOut() 91 FOR_ALL_BB(bb, cgFunc) { in ClearDefUseInfo() 92 delete (regGen[bb->GetId()]); in ClearDefUseInfo() 93 regGen[bb->GetId()] = nullptr; in ClearDefUseInfo() 94 delete (regUse[bb->GetId()]); in ClearDefUseInfo() 95 regUse[bb->GetId()] = nullptr; in ClearDefUseInfo() 96 delete (regIn[bb->GetId()]); in ClearDefUseInfo() 97 regIn[bb->GetId()] = nullptr; in ClearDefUseInfo() [all …]
|
D | cg_cfg.cpp | 35 bool CanBBThrow(const BB &bb) in CanBBThrow() argument 37 FOR_BB_INSNS_CONST(insn, &bb) { in CanBBThrow() 163 FOR_ALL_BB(bb, cgFunc) { in CheckCFG() 164 for (BB *sucBB : bb->GetSuccs()) { in CheckCFG() 167 if (sucPred == bb) { in CheckCFG() 177 …nfo::MapleLogger() << "non pred for sucBB " << sucBB->GetId() << " for BB " << bb->GetId() << "\n"; in CheckCFG() 181 FOR_ALL_BB(bb, cgFunc) { in CheckCFG() 182 for (BB *predBB : bb->GetPreds()) { in CheckCFG() 185 if (predSucc == bb) { in CheckCFG() 195 … LogInfo::MapleLogger() << "non succ for predBB " << predBB->GetId() << " for BB " << bb->GetId() in CheckCFG() [all …]
|
D | loop.cpp | 36 for (auto *bb : loop.GetBackedge()) { in PrintLoopInfo() local 37 LogInfo::MapleLogger() << bb->GetId() << " "; in PrintLoopInfo() 40 for (auto *bb : loop.GetLoopMembers()) { in PrintLoopInfo() local 41 LogInfo::MapleLogger() << bb->GetId() << " "; in PrintLoopInfo() 77 for (auto bb : iloop->loopMembers) { in CheckOverlappingInnerLoops() local 78 if (find(loopMem.begin(), loopMem.end(), bb) != loopMem.end()) { in CheckOverlappingInnerLoops() 140 for (auto bb : funcLoop.multiEntries) { in PrintLoops() local 141 LogInfo::MapleLogger() << bb->GetId() << " "; in PrintLoops() 148 for (auto *bb : funcLoop.GetBackedge()) { in PrintLoops() local 149 LogInfo::MapleLogger() << bb->GetId() << " "; in PrintLoops() [all …]
|
/arkcompiler/runtime_core/static_core/compiler/optimizer/optimizations/ |
D | if_conversion.cpp | 53 bool IfConversion::TryTriangle(BasicBlock *bb) in TryTriangle() argument 55 ASSERT(bb->GetSuccsBlocks().size() == MAX_SUCCS_NUM); in TryTriangle() 60 if (bb->GetTrueSuccessor()->GetPredsBlocks().size() == 1) { in TryTriangle() 61 tbb = bb->GetTrueSuccessor(); in TryTriangle() 62 fbb = bb->GetFalseSuccessor(); in TryTriangle() 63 } else if (bb->GetFalseSuccessor()->GetPredsBlocks().size() == 1) { in TryTriangle() 64 tbb = bb->GetFalseSuccessor(); in TryTriangle() 65 fbb = bb->GetTrueSuccessor(); in TryTriangle() 75 if (LoopInvariantPreventConversion(bb)) { in TryTriangle() 81 auto limit = GetIfcLimit(bb); in TryTriangle() [all …]
|
D | if_merging.cpp | 113 bool IfMerging::TryMergeEquivalentIfs(BasicBlock *bb) in TryMergeEquivalentIfs() argument 115 auto ifImm = GetIfImm(bb); in TryMergeEquivalentIfs() 116 if (ifImm == nullptr || bb->GetGraph() == nullptr || bb->IsTry()) { in TryMergeEquivalentIfs() 119 if (bb->GetPredsBlocks().size() != MAX_SUCCS_NUM) { in TryMergeEquivalentIfs() 122 auto dom = bb->GetDominator(); in TryMergeEquivalentIfs() 127 auto invertedIf = IsIfInverted(bb, domIf); in TryMergeEquivalentIfs() 134 if (!MarkInstBranches(bb, trueBb, falseBb)) { in TryMergeEquivalentIfs() 139 << ", dominated block id = " << bb->GetId(); in TryMergeEquivalentIfs() 140 bb->RemoveInst(ifImm); in TryMergeEquivalentIfs() 141 SplitBlockWithEquivalentIf(bb, trueBb, *invertedIf); in TryMergeEquivalentIfs() [all …]
|
D | condition_chain_manager.cpp | 25 ConditionChain *ConditionChainManager::FindConditionChain(BasicBlock *bb) in FindConditionChain() argument 27 if (bb->GetSuccsBlocks().size() != MAX_SUCCS_NUM) { in FindConditionChain() 31 auto conditionChain = TryConditionChain(bb, bb->GetTrueSuccessor(), bb->GetFalseSuccessor()); in FindConditionChain() 36 return TryConditionChain(bb, bb->GetFalseSuccessor(), bb->GetTrueSuccessor()); in FindConditionChain() 39 ConditionChain *ConditionChainManager::TryConditionChain(BasicBlock *bb, BasicBlock *multiplePredsS… in TryConditionChain() argument 42 auto loop = bb->GetLoop(); in TryConditionChain() 50 conditionChainBb_.push_back(bb); in TryConditionChain() 73 … bb->GetSuccBlockIndex(multiplePredsSucc), singlePredSuccIndex); in TryConditionChain() 81 bool ConditionChainManager::IsConditionChainCandidate(const BasicBlock *bb) in IsConditionChainCandidate() argument 83 auto loop = bb->GetLoop(); in IsConditionChainCandidate() [all …]
|
D | cleanup.cpp | 28 bool Cleanup::CanBeMerged(BasicBlock *bb) in CanBeMerged() argument 31 if (!GetGraph()->IsBytecodeOptimizer() && !GetGraph()->IsAotMode() && bb->IsCatchBegin()) { in CanBeMerged() 34 return bb->GetSuccsBlocks().size() == 1 && bb->GetSuccessor(0)->GetPredsBlocks().size() == 1 && in CanBeMerged() 35 … !bb->GetSuccessor(0)->IsPseudoControlFlowBlock() && bb->IsTry() == bb->GetSuccessor(0)->IsTry(); in CanBeMerged() 52 for (auto bb : GetGraph()->GetVectorBlocks()) { in RunImpl() local 53 if (!SkipBasicBlock(bb) && bb->IsEmpty()) { in RunImpl() 54 emptyBlocks->insert(bb); in RunImpl() 87 for (auto bb : GetGraph()->GetVectorBlocks()) { in RunImpl() local 88 if (bb == nullptr || bb->IsPseudoControlFlowBlock()) { in RunImpl() 92 while (CanBeMerged(bb)) { in RunImpl() [all …]
|
/arkcompiler/runtime_core/static_core/compiler/optimizer/optimizations/regalloc/ |
D | cleanup_empty_blocks.cpp | 27 static bool CheckSpecialTriangle(BasicBlock *bb) in CheckSpecialTriangle() argument 29 auto succ = bb->GetSuccessor(0); in CheckSpecialTriangle() 30 for (auto pred : bb->GetPredsBlocks()) { in CheckSpecialTriangle() 39 static bool TryRemoveEmptyBlock(BasicBlock *bb) in TryRemoveEmptyBlock() argument 41 if (CheckSpecialTriangle(bb)) { in TryRemoveEmptyBlock() 45 bool badLoop = bb->GetLoop()->IsIrreducible(); in TryRemoveEmptyBlock() 46 bb->GetGraph()->RemoveEmptyBlockWithPhis(bb, badLoop); in TryRemoveEmptyBlock() 48 bb->GetGraph()->InvalidateAnalysis<LoopAnalyzer>(); in TryRemoveEmptyBlock() 49 bb->GetGraph()->RunPass<LoopAnalyzer>(); in TryRemoveEmptyBlock() 62 for (auto bb : graph->GetVectorBlocks()) { in CleanupEmptyBlocks() local [all …]
|
/arkcompiler/runtime_core/static_core/compiler/docs/ |
D | licm_conditions_doc.md | 50 succs: [bb 14] 52 BB 14 preds: [bb 0] 54 succs: [bb 2] 56 BB 2 preds: [bb 14, bb 8] 62 succs: [bb 3, bb 4] 64 BB 4 preds: [bb 2] 67 succs: [bb 5, bb 6] 69 BB 6 preds: [bb 4] 72 succs: [bb 5, bb 7] 74 BB 7 preds: [bb 6] [all …]
|
D | cleanup_doc.md | 92 for (auto bb : GetGraph()->GetVectorBlocks()) { 93 if (!SkipBasicBlock(bb) && bb->IsEmpty()) { 94 empty_blocks->insert(bb); 108 for (auto bb : GetGraph()->GetVectorBlocks()) { 109 if (!SkipBasicBlock(bb)) { 110 while (bb and successor are suitable) { 111 bb->JoinSuccessorBlock(); 122 for (auto bb : *empty_blocks) { 123 modified |= ProcessBB(bb, dead_mrk, new_empty_blocks); 129 bool Cleanup::ProcessBB(bb, dead_mrk, new_empty_blocks) [all …]
|
D | if_merging_doc.md | 90 for (auto bb : GetGraph()->GetVectorBlocks()) { 96 bool TryMergeEquivalentIfs(BasicBlock *bb) { 97 auto dom = bb->GetDominator(); 98 if ((dom and bb end with same Ifs) && (true and false branches of dom meet only in bb)) { 99 remove If from bb 100 split bb into two blocks 105 bool IfMerging::TrySimplifyConstantPhi(BasicBlock *bb) 108 while (TryRemoveConstantPhiIf(bb)) { 114 bool TryRemoveConstantPhiIf(BasicBlock *bb) { 115 auto if = bb->GetLastInst(); [all …]
|
/arkcompiler/ets_runtime/ecmascript/compiler/codegen/maple/maple_be/src/cg/aarch64/ |
D | aarch64_alignment.cpp | 52 bool AArch64AlignAnalysis::IsIncludeCall(BB &bb) in IsIncludeCall() argument 54 return bb.HasCall(); in IsIncludeCall() 57 bool AArch64AlignAnalysis::IsInSizeRange(BB &bb) in IsInSizeRange() argument 60 FOR_BB_INSNS_CONST(insn, &bb) { in IsInSizeRange() 67 BB *curBB = &bb; in IsInSizeRange() 92 bool AArch64AlignAnalysis::HasFallthruEdge(BB &bb) in HasFallthruEdge() argument 94 for (auto *iter : bb.GetPreds()) { in HasFallthruEdge() 95 if (iter == bb.GetPrev()) { in HasFallthruEdge() 107 for (BB *bb : loopHeaderBBs) { in ComputeLoopAlign() 108 if (bb == cgFunc->GetFirstBB() || IsIncludeCall(*bb) || !IsInSizeRange(*bb)) { in ComputeLoopAlign() [all …]
|
/arkcompiler/runtime_core/compiler/docs/ |
D | cleanup_doc.md | 92 for (auto bb : GetGraph()->GetVectorBlocks()) { 93 if (!SkipBasicBlock(bb) && bb->IsEmpty()) { 94 empty_blocks->insert(bb); 108 for (auto bb : GetGraph()->GetVectorBlocks()) { 109 if (!SkipBasicBlock(bb)) { 110 while (bb and successor are suitable) { 111 bb->JoinSuccessorBlock(); 122 for (auto bb : *empty_blocks) { 123 modified |= ProcessBB(bb, dead_mrk, new_empty_blocks); 129 bool Cleanup::ProcessBB(bb, dead_mrk, new_empty_blocks) [all …]
|
/arkcompiler/ets_runtime/ecmascript/compiler/ |
D | bytecode_circuit_builder.cpp | 218 auto &bb = RegionAt(i); in BuildCatchBlocks() local 219 auto startIndex = bb.start; in BuildCatchBlocks() 231 bb.catches.insert(bb.catches.cbegin(), &catchBB); in BuildCatchBlocks() 232 bb.succs.emplace_back(&catchBB); in BuildCatchBlocks() 233 catchBB.preds.emplace_back(&bb); in BuildCatchBlocks() 240 bb.SortCatches(); in BuildCatchBlocks() 247 auto &bb = RegionAt(i); in CollectTryPredsInfo() local 248 if (bb.catches.empty()) { in CollectTryPredsInfo() 250 } else if (bb.catches.size() > 1) { // 1: cache size in CollectTryPredsInfo() 251 for (auto it = bb.catches.begin() + 1; it != bb.catches.end();) { // 1: invalid catch bb in CollectTryPredsInfo() [all …]
|
/arkcompiler/runtime_core/static_core/compiler/optimizer/analysis/ |
D | monitor_analysis.cpp | 22 void MonitorAnalysis::MarkedMonitorRec(BasicBlock *bb, int32_t numMonitors) in MarkedMonitorRec() argument 26 bb->SetMonitorBlock(true); in MarkedMonitorRec() 27 if (bb->IsEndBlock()) { in MarkedMonitorRec() 33 for (auto inst : bb->Insts()) { in MarkedMonitorRec() 40 bb->SetMonitorBlock(true); in MarkedMonitorRec() 42 bb->SetMonitorEntryBlock(true); in MarkedMonitorRec() 52 bb->SetMonitorExitBlock(true); in MarkedMonitorRec() 56 enteredMonitorsCount_->at(bb->GetId()) = numMonitors; in MarkedMonitorRec() 60 for (auto succ : bb->GetSuccsBlocks()) { in MarkedMonitorRec() 78 for (auto bb : GetGraph()->GetBlocksRPO()) { in RunImpl() local [all …]
|
/arkcompiler/runtime_core/compiler/optimizer/optimizations/ |
D | cleanup.cpp | 26 static bool SkipBasicBlock(BasicBlock *bb) in SkipBasicBlock() argument 29 …return bb == nullptr || bb->IsStartBlock() || bb->IsEndBlock() || bb->IsCatchBegin() || bb->IsTryE… in SkipBasicBlock() 47 for (auto bb : GetGraph()->GetVectorBlocks()) { in RunImpl() local 48 if (!SkipBasicBlock(bb) && bb->IsEmpty()) { in RunImpl() 49 empty_blocks->insert(bb); in RunImpl() 82 for (auto bb : GetGraph()->GetVectorBlocks()) { in RunImpl() local 83 if (bb == nullptr || bb->IsPseudoControlFlowBlock()) { in RunImpl() 87 … while (bb->GetSuccsBlocks().size() == 1 && bb->GetSuccessor(0)->GetPredsBlocks().size() == 1 && in RunImpl() 88 … !bb->GetSuccessor(0)->IsPseudoControlFlowBlock() && bb->IsTry() == bb->GetSuccessor(0)->IsTry()) { in RunImpl() 89 ASSERT(!bb->GetSuccessor(0)->HasPhi()); in RunImpl() [all …]
|
/arkcompiler/runtime_core/static_core/irtoc/lang/ |
D | ir_generator.rb | 40 @func.basic_blocks.each { |bb| generate_bb(bb) } 54 @func.basic_blocks.each do |bb| 55 if false && bb.terminator? 56 Output << "auto* bb_#{bb.index} = end_bb;" 58 Output << "auto* bb_#{bb.index} = graph->CreateEmptyBlock(pc);" 59 Output << "bb_#{bb.index}->CopyTryCatchProps(cur_bb);" 60 Output << "cur_bb->GetLoop()->AppendBlock(bb_#{bb.index});" 64 @func.basic_blocks.each do |bb| 65 name = "bb_#{bb.index}" 66 if bb.terminator? [all …]
|
D | basic_block.rb | 57 def set_successor(dir, bb) argument 59 @true_succ = bb 61 @false_succ = bb 63 bb.add_predecessor(self) 66 def set_true_succ(bb) argument 67 set_successor(true, bb) 70 def set_false_succ(bb) argument 71 set_successor(false, bb) 74 def add_predecessor(bb) argument 75 @preds << bb
|