/art/compiler/optimizing/ |
D | register_allocator_linear_scan.h | 33 class LiveInterval; variable 69 bool TryAllocateFreeReg(LiveInterval* interval); 70 bool AllocateBlockedReg(LiveInterval* interval); 73 static void AddSorted(ScopedArenaVector<LiveInterval*>* array, LiveInterval* interval); 84 void AllocateSpillSlotFor(LiveInterval* interval); 95 void DumpInterval(std::ostream& stream, LiveInterval* interval) const; 98 int FindAvailableRegister(size_t* next_use, LiveInterval* current) const; 110 ScopedArenaVector<LiveInterval*> unhandled_core_intervals_; 113 ScopedArenaVector<LiveInterval*> unhandled_fp_intervals_; 117 ScopedArenaVector<LiveInterval*>* unhandled_; [all …]
|
D | live_interval_test.cc | 25 TEST(LiveInterval, GetStart) { in TEST() argument 31 LiveInterval* interval = BuildInterval(ranges, arraysize(ranges), allocator); in TEST() 37 LiveInterval* interval = BuildInterval(ranges, arraysize(ranges), allocator); in TEST() 42 TEST(LiveInterval, IsDeadAt) { in TEST() argument 48 LiveInterval* interval = BuildInterval(ranges, arraysize(ranges), allocator); in TEST() 58 LiveInterval* interval = BuildInterval(ranges, arraysize(ranges), allocator); in TEST() 70 TEST(LiveInterval, Covers) { in TEST() argument 76 LiveInterval* interval = BuildInterval(ranges, arraysize(ranges), allocator); in TEST() 86 LiveInterval* interval = BuildInterval(ranges, arraysize(ranges), allocator); in TEST() 98 TEST(LiveInterval, FirstIntersectionWith) { in TEST() argument [all …]
|
D | register_allocator.h | 32 class LiveInterval; variable 67 static bool ValidateIntervals(ArrayRef<LiveInterval* const> intervals, 84 static LiveInterval* Split(LiveInterval* interval, size_t position); 88 LiveInterval* SplitBetween(LiveInterval* interval, size_t from, size_t to);
|
D | register_allocator_graph_color.h | 126 static LiveInterval* TrySplit(LiveInterval* interval, size_t position); 132 void SplitAtRegisterUses(LiveInterval* interval); 145 void ColorSpillSlots(ArrayRef<LiveInterval* const> nodes, /* out */ size_t* num_stack_slots_used); 157 ScopedArenaVector<LiveInterval*> core_intervals_; 158 ScopedArenaVector<LiveInterval*> fp_intervals_; 161 ScopedArenaVector<LiveInterval*> temp_intervals_;
|
D | register_allocator.cc | 59 LiveInterval* bad_live_interval = reinterpret_cast<LiveInterval*>(0xebad7113u); in ~RegisterAllocator() 84 explicit AllRangesIterator(LiveInterval* interval) in AllRangesIterator() 90 LiveInterval* CurrentInterval() const { return current_interval_; } in CurrentInterval() 103 LiveInterval* current_interval_; 109 bool RegisterAllocator::ValidateIntervals(ArrayRef<LiveInterval* const> intervals, in ValidateIntervals() 124 for (LiveInterval* start_interval : intervals) { in ValidateIntervals() 138 for (LiveInterval* start_interval : intervals) { in ValidateIntervals() 140 LiveInterval* current = it.CurrentInterval(); in ValidateIntervals() 188 for (LiveInterval* interval : intervals) { in ValidateIntervals() 215 LiveInterval* RegisterAllocator::Split(LiveInterval* interval, size_t position) { in Split() [all …]
|
D | register_allocator_linear_scan.cc | 39 static bool IsLowOfUnalignedPairInterval(LiveInterval* low) { in IsLowOfUnalignedPairInterval() 86 static bool ShouldProcess(bool processing_core_registers, LiveInterval* interval) { in ShouldProcess() 103 ArrayRef<LiveInterval* const>(temp_intervals_)); in AllocateRegisters() 134 LiveInterval* interval = location.IsRegister() in BlockRegister() 141 interval = LiveInterval::MakeFixedInterval(allocator_, reg, type); in BlockRegister() 192 for (LiveInterval* fixed : physical_core_register_intervals_) { in AllocateRegistersInternal() 212 for (LiveInterval* fixed : physical_fp_register_intervals_) { in AllocateRegistersInternal() 241 LiveInterval* interval = in ProcessInstruction() 242 LiveInterval::MakeTempInterval(allocator_, DataType::Type::kInt32); in ProcessInstruction() 250 LiveInterval* interval = in ProcessInstruction() [all …]
|
D | register_allocation_resolver.h | 31 class LiveInterval; variable 51 ArrayRef<LiveInterval* const> temp_intervals); 61 void ConnectSiblings(LiveInterval* interval); 64 void ConnectSplitSiblings(LiveInterval* interval, HBasicBlock* from, HBasicBlock* to) const;
|
D | ssa_liveness_analysis.cc | 59 LiveInterval::MakeInterval(allocator_, current->GetType(), current)); in NumberInstructions() 77 LiveInterval::MakeInterval(allocator_, current->GetType(), current)); in NumberInstructions() 250 LiveInterval* interval = current->GetLiveInterval(); in ComputeLiveRanges() 314 void LiveInterval::DumpWithContext(std::ostream& stream, in DumpWithContext() 339 int LiveInterval::FindFirstRegisterHint(size_t* free_until, in FindFirstRegisterHint() 365 LiveInterval* existing = GetParent()->GetSiblingAt(position); in FindFirstRegisterHint() 436 int LiveInterval::FindHintAtDefinition() const { in FindHintAtDefinition() 443 LiveInterval* input_interval = inputs[i]->GetLiveInterval()->GetSiblingAt(end - 1); in FindHintAtDefinition() 459 LiveInterval* input_interval = in FindHintAtDefinition() 475 bool LiveInterval::SameRegisterKind(Location other) const { in SameRegisterKind() [all …]
|
D | ssa_liveness_analysis.h | 101 friend class LiveInterval; variable 277 class LiveInterval : public ArenaObject<kArenaAllocSsaLiveness> { 279 static LiveInterval* MakeInterval(ScopedArenaAllocator* allocator, 282 return new (allocator) LiveInterval(allocator, type, instruction); 285 static LiveInterval* MakeFixedInterval(ScopedArenaAllocator* allocator, in MakeFixedInterval() 288 return new (allocator) LiveInterval(allocator, type, nullptr, true, reg, false); in MakeFixedInterval() 291 static LiveInterval* MakeTempInterval(ScopedArenaAllocator* allocator, DataType::Type type) { in MakeTempInterval() 292 return new (allocator) LiveInterval(allocator, type, nullptr, false, kNoRegister, true); in MakeTempInterval() 472 LiveInterval* GetParent() const { return parent_; } in GetParent() 512 size_t FirstIntersectionWith(LiveInterval* current) const { in FirstIntersectionWith() [all …]
|
D | register_allocation_resolver.cc | 39 ArrayRef<LiveInterval* const> temp_intervals) { in Resolve() 60 LiveInterval* current = instruction->GetLiveInterval(); in Resolve() 160 LiveInterval* interval = liveness_.GetInstructionFromSsaIndex(idx)->GetLiveInterval(); in Resolve() 161 LiveInterval* sibling = interval->GetSiblingAt(block->GetLifetimeStart()); in Resolve() 173 LiveInterval* interval = liveness_.GetInstructionFromSsaIndex(idx)->GetLiveInterval(); in Resolve() 202 for (LiveInterval* temp : temp_intervals) { in Resolve() 235 for (LiveInterval* current = instruction->GetLiveInterval(); in UpdateSafepointLiveRegisters() 298 void RegisterAllocationResolver::ConnectSiblings(LiveInterval* interval) { in ConnectSiblings() 299 LiveInterval* current = interval; in ConnectSiblings() 376 LiveInterval* next_sibling = current->GetNextSibling(); in ConnectSiblings() [all …]
|
D | live_ranges_test.cc | 68 LiveInterval* interval = liveness.GetInstructionFromSsaIndex(0)->GetLiveInterval(); in TEST_F() 112 LiveInterval* interval = liveness.GetInstructionFromSsaIndex(0)->GetLiveInterval(); in TEST_F() 160 LiveInterval* interval = liveness.GetInstructionFromSsaIndex(1)->GetLiveInterval(); in TEST_F() 235 LiveInterval* interval = graph->GetIntConstant(0)->GetLiveInterval(); in TEST_F() 311 LiveInterval* interval = constant->GetLiveInterval(); in TEST_F() 384 LiveInterval* interval = liveness.GetInstructionFromSsaIndex(0)->GetLiveInterval(); in TEST_F()
|
D | register_allocator_test.cc | 68 bool ValidateIntervals(const ScopedArenaVector<LiveInterval*>& intervals, in ValidateIntervals() 70 return RegisterAllocator::ValidateIntervals(ArrayRef<LiveInterval* const>(intervals), in ValidateIntervals() 106 ScopedArenaVector<LiveInterval*> intervals(GetScopedAllocator()->Adapter()); in TEST_F() 340 LiveInterval* phi_interval = phi->GetLiveInterval(); in Loop3() 341 LiveInterval* loop_update = phi->InputAt(1)->GetLiveInterval(); in Loop3() 369 LiveInterval* interval = first_xor->GetLiveInterval(); in TEST_F() 382 LiveInterval* new_interval = interval->SplitAt(last_xor->GetLifetimePosition() - 1); in TEST_F() 443 LiveInterval* unhandled = graph->GetEntryBlock()->GetFirstInstruction()->GetLiveInterval(); in TEST_F() 459 LiveInterval* interval = in TEST_F() 460 LiveInterval::MakeFixedInterval(GetScopedAllocator(), 0, DataType::Type::kInt32); in TEST_F() [all …]
|
D | optimizing_unit_test.h | 59 LiveInterval* BuildInterval(const size_t ranges[][2], 64 LiveInterval* interval = 65 LiveInterval::MakeInterval(allocator, DataType::Type::kInt32, defined_by);
|
D | graph_visualizer.cc | 634 LiveInterval* interval = instruction->GetLiveInterval(); in PrintInstruction()
|