/art/compiler/optimizing/ |
D | loop_analysis.cc | 25 void LoopAnalysis::CalculateLoopBasicProperties(HLoopInformation* loop_info, in CalculateLoopBasicProperties() argument 30 for (HBlocksInLoopIterator block_it(*loop_info); in CalculateLoopBasicProperties() 37 if (!loop_info->Contains(*successor)) { in CalculateLoopBasicProperties() 46 if (hif != nullptr && !loop_info->Contains(*hif->InputAt(0)->GetBlock())) { in CalculateLoopBasicProperties() 67 int64_t LoopAnalysis::GetLoopTripCount(HLoopInformation* loop_info, in GetLoopTripCount() argument 70 if (!induction_range->HasKnownTripCount(loop_info, &trip_count)) { in GetLoopTripCount() 313 uint32_t GetUnrollingFactor(HLoopInformation* loop_info, HBasicBlock* header) const; 323 HLoopInformation* loop_info = block->GetLoopInformation(); in GetSIMDUnrollingFactor() local 324 DCHECK(loop_info); in GetSIMDUnrollingFactor() 325 HBasicBlock* header = loop_info->GetHeader(); in GetSIMDUnrollingFactor() [all …]
|
D | licm.cc | 101 HLoopInformation* loop_info = block->GetLoopInformation(); in Run() local 103 HBasicBlock* pre_header = loop_info->GetPreHeader(); in Run() 105 for (HBlocksInLoopIterator it_loop(*loop_info); !it_loop.Done(); it_loop.Advance()) { in Run() 108 if (inner->GetLoopInformation() != loop_info) { in Run() 117 if (loop_info->ContainsIrreducibleLoop()) { in Run() 122 DCHECK(!loop_info->IsIrreducible()); in Run() 155 UpdateLoopPhisIn(instruction->GetEnvironment(), loop_info); in Run()
|
D | loop_optimization.cc | 73 static bool IsEarlyExit(HLoopInformation* loop_info) { in IsEarlyExit() argument 74 HBlocksInLoopReversePostOrderIterator it_loop(*loop_info); in IsEarlyExit() 77 if (!loop_info->Contains(*successor)) { in IsEarlyExit() 429 static void PeelByCount(HLoopInformation* loop_info, in PeelByCount() argument 434 LoopClonerSimpleHelper helper(loop_info, induction_range); in PeelByCount() 467 static bool HasLoopDiamondStructure(HLoopInformation* loop_info) { in HasLoopDiamondStructure() argument 468 HBasicBlock* header = loop_info->GetHeader(); in HasLoopDiamondStructure() 469 if (loop_info->NumberOfBackEdges() != 1 || header->GetSuccessors().size() != 2) { in HasLoopDiamondStructure() 474 HBasicBlock* diamond_top = loop_info->Contains(*header_succ_0) ? in HasLoopDiamondStructure() 491 back_edge != loop_info->GetBackEdges()[0]) { in HasLoopDiamondStructure() [all …]
|
D | cha_guard_optimization.cc | 182 HLoopInformation* loop_info = block->GetLoopInformation(); in HoistGuard() local 183 if (loop_info != nullptr && in HoistGuard() 184 !loop_info->IsIrreducible() && in HoistGuard() 185 loop_info->IsDefinedOutOfTheLoop(receiver)) { in HoistGuard() 197 HBasicBlock* pre_header = loop_info->GetPreHeader(); in HoistGuard() 202 HInstruction* suspend = loop_info->GetSuspendCheck(); in HoistGuard() 210 suspend->GetEnvironment(), loop_info->GetHeader()); in HoistGuard()
|
D | superblock_cloner_test.cc | 164 HLoopInformation* loop_info = header->GetLoopInformation(); in TEST_F() local 165 orig_bb_set.Union(&loop_info->GetBlocks()); in TEST_F() 243 HLoopInformation* loop_info = header->GetLoopInformation(); in TEST_F() local 244 orig_bb_set.Union(&loop_info->GetBlocks()); in TEST_F() 261 EXPECT_EQ(header->GetLoopInformation(), loop_info); in TEST_F() 262 EXPECT_EQ(loop_info->GetHeader(), header); in TEST_F() 263 EXPECT_TRUE(loop_info->Contains(*loop_body)); in TEST_F() 264 EXPECT_TRUE(loop_info->IsBackEdge(*loop_body)); in TEST_F() 307 HLoopInformation* loop_info = header->GetLoopInformation(); in TEST_F() local 308 LoopClonerHelper helper(loop_info, &bb_map, &hir_map, /* induction_range= */ nullptr); in TEST_F() [all …]
|
D | loop_analysis.h | 37 explicit LoopAnalysisInfo(HLoopInformation* loop_info) in LoopAnalysisInfo() argument 46 loop_info_(loop_info) {} in LoopAnalysisInfo() 103 static void CalculateLoopBasicProperties(HLoopInformation* loop_info, 108 static int64_t GetLoopTripCount(HLoopInformation* loop_info,
|
D | loop_optimization.h | 62 : loop_info(lp_info), in LoopNode() 77 HLoopInformation* loop_info; member 235 void AddLoop(HLoopInformation* loop_info); 466 bool IsOnlyUsedAfterLoop(HLoopInformation* loop_info, 470 bool IsUsedOutsideLoop(HLoopInformation* loop_info, 472 bool TryReplaceWithLastValue(HLoopInformation* loop_info, 475 bool TryAssignLastValue(HLoopInformation* loop_info,
|
D | nodes.cc | 459 HLoopInformation* loop_info = header->GetLoopInformation(); in FixControlForNewSinglePreheader() local 462 if (!loop_info->IsBackEdge(*predecessor) && predecessor != new_preheader) { in FixControlForNewSinglePreheader() 499 HLoopInformation* loop_info = header->GetLoopInformation(); in TransformLoopToSinglePreheaderFormat() local 517 if (!loop_info->IsBackEdge(*predecessor)) { in TransformLoopToSinglePreheaderFormat() 549 if (loop_info->Contains(*pred_block)) { in TransformLoopToSinglePreheaderFormat() 550 DCHECK(loop_info->IsBackEdge(*pred_block)); in TransformLoopToSinglePreheaderFormat() 2338 HLoopInformation* loop_info = GetLoopInformation(); in DisconnectAndDelete() local 2342 DCHECK(!loop_info->IsIrreducible()); in DisconnectAndDelete() 2343 DCHECK_EQ(loop_info->GetBlocks().NumSetBits(), 1u); in DisconnectAndDelete() 2344 DCHECK_EQ(static_cast<uint32_t>(loop_info->GetBlocks().GetHighestBitSet()), GetBlockId()); in DisconnectAndDelete() [all …]
|
D | superblock_cloner.h | 396 static bool IsLoopClonable(HLoopInformation* loop_info); 531 HLoopInformation* loop_info,
|
D | superblock_cloner.cc | 1077 HLoopInformation* loop_info, in CollectRemappingInfoForPeelUnroll() argument 1081 DCHECK(loop_info != nullptr); in CollectRemappingInfoForPeelUnroll() 1082 HBasicBlock* loop_header = loop_info->GetHeader(); in CollectRemappingInfoForPeelUnroll() 1085 for (HBasicBlock* back_edge_block : loop_info->GetBackEdges()) { in CollectRemappingInfoForPeelUnroll() 1097 remap_incoming->insert(HEdge(loop_info->GetPreHeader(), loop_header)); in CollectRemappingInfoForPeelUnroll() 1143 bool LoopClonerHelper::IsLoopClonable(HLoopInformation* loop_info) { in IsLoopClonable() argument 1145 loop_info, /* bb_map= */ nullptr, /* hir_map= */ nullptr, /* induction_range= */ nullptr); in IsLoopClonable()
|
D | graph_visualizer.cc | 730 HLoopInformation* loop_info = (block != nullptr) ? block->GetLoopInformation() : nullptr; in PrintInstruction() local 731 if (loop_info == nullptr) { in PrintInstruction() 734 StartAttributeStream("loop") << namer_.GetName(loop_info->GetHeader()); in PrintInstruction() 735 HLoopInformation* outer = loop_info->GetPreHeader()->GetLoopInformation(); in PrintInstruction() 742 << std::boolalpha << loop_info->IsIrreducible() << std::noboolalpha; in PrintInstruction()
|
D | code_sinking.cc | 241 const HLoopInformation* loop_info = instruction->GetBlock()->GetLoopInformation(); in FindIdealPosition() local 242 while (target_block->IsInLoop() && target_block->GetLoopInformation() != loop_info) { in FindIdealPosition()
|
D | load_store_elimination.cc | 1456 HLoopInformation* loop_info = block->GetLoopInformation(); in PrepareLoopValue() local 1457 uint32_t pre_header_block_id = loop_info->GetPreHeader()->GetBlockId(); in PrepareLoopValue() 1471 if (index != nullptr && loop_info->Contains(*index->GetBlock())) { in PrepareLoopValue() 1852 HLoopInformation* loop_info = loop_header->GetLoopInformation(); in MayAliasOnBackEdge() local 1853 if (loop_info->Contains(*loc1->GetIndex()->GetBlock()) || in MayAliasOnBackEdge() 1854 loop_info->Contains(*loc2->GetIndex()->GetBlock())) { in MayAliasOnBackEdge() 1918 HLoopInformation* loop_info = in TryReplacingLoopPhiPlaceholderWithDefault() local 1920 record = heap_values_for_[loop_info->GetPreHeader()->GetBlockId()][i]; in TryReplacingLoopPhiPlaceholderWithDefault()
|
D | nodes.h | 1162 HLoopInformation* loop_info = GetLoopInformation(); in IsSingleJump() local 1165 && (loop_info == nullptr || !loop_info->IsBackEdge(*this)); in IsSingleJump()
|