Home
last modified time | relevance | path

Searched refs:bb (Results 1 – 25 of 336) sorted by relevance

12345678910>>...14

/arkcompiler/runtime_core/compiler/tests/
DirBuilder_tests.cpp155 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 …]
Ddominators_tree_new_test.cpp55 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 …]
Dloop_analyzer_new_test.cpp79 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 …]
Dcompiler_basicblock_test.cpp59 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/
Dlive.cpp36 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 …]
Dcg_dominance.cpp26 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 …]
Dcgbb.cpp143 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 …]
Dreaching.cpp67 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 …]
Dcg_cfg.cpp35 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 …]
Dloop.cpp36 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/
Dif_conversion.cpp53 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 …]
Dif_merging.cpp113 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 …]
Dcondition_chain_manager.cpp25 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()
73bb->GetSuccBlockIndex(multiplePredsSucc), singlePredSuccIndex); in TryConditionChain()
81 bool ConditionChainManager::IsConditionChainCandidate(const BasicBlock *bb) in IsConditionChainCandidate() argument
83 auto loop = bb->GetLoop(); in IsConditionChainCandidate()
[all …]
Dcleanup.cpp28 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/
Dcleanup_empty_blocks.cpp27 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/
Dlicm_conditions_doc.md50 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 …]
Dcleanup_doc.md92 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 …]
Dif_merging_doc.md90 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/
Daarch64_alignment.cpp52 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/
Dcleanup_doc.md92 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/
Dbytecode_circuit_builder.cpp218 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/
Dmonitor_analysis.cpp22 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/
Dcleanup.cpp26 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/
Dir_generator.rb40 @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 …]
Dbasic_block.rb57 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

12345678910>>...14