Home
last modified time | relevance | path

Searched refs:LiveInterval (Results 1 – 16 of 16) sorted by relevance

/art/compiler/optimizing/
Dregister_allocator_linear_scan.h33 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 …]
Dlive_interval_test.cc25 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 …]
Dregister_allocator.h32 class LiveInterval; variable
64 static bool ValidateIntervals(ArrayRef<LiveInterval* const> intervals,
81 static LiveInterval* Split(LiveInterval* interval, size_t position);
85 LiveInterval* SplitBetween(LiveInterval* interval, size_t from, size_t to);
Dregister_allocator_graph_color.h126 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_;
Dregister_allocator.cc59 LiveInterval* bad_live_interval = reinterpret_cast<LiveInterval*>(0xebad7113u); in ~RegisterAllocator()
73 explicit AllRangesIterator(LiveInterval* interval) in AllRangesIterator()
79 LiveInterval* CurrentInterval() const { return current_interval_; } in CurrentInterval()
92 LiveInterval* current_interval_;
98 bool RegisterAllocator::ValidateIntervals(ArrayRef<LiveInterval* const> intervals, in ValidateIntervals()
113 for (LiveInterval* start_interval : intervals) { in ValidateIntervals()
127 for (LiveInterval* start_interval : intervals) { in ValidateIntervals()
129 LiveInterval* current = it.CurrentInterval(); in ValidateIntervals()
177 for (LiveInterval* interval : intervals) { in ValidateIntervals()
204 LiveInterval* RegisterAllocator::Split(LiveInterval* interval, size_t position) { in Split()
[all …]
Dregister_allocator_linear_scan.cc39 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 …]
Dregister_allocator_graph_color.cc163 static float ComputeSpillWeight(LiveInterval* interval, const SsaLivenessAnalysis& liveness) { in ComputeSpillWeight()
220 InterferenceNode(LiveInterval* interval, in InterferenceNode()
277 LiveInterval* GetInterval() const { in GetInterval()
374 LiveInterval* const interval_;
457 void BuildInterferenceGraph(const ScopedArenaVector<LiveInterval*>& intervals,
531 ScopedArenaHashMap<LiveInterval*, InterferenceNode*> interval_node_map_;
567 static bool IsCoreInterval(LiveInterval* interval) { in IsCoreInterval()
601 LiveInterval* interval = LiveInterval::MakeFixedInterval(allocator_, i, DataType::Type::kInt32); in RegisterAllocatorGraphColor()
612 LiveInterval* interval = in RegisterAllocatorGraphColor()
613 LiveInterval::MakeFixedInterval(allocator_, i, DataType::Type::kFloat32); in RegisterAllocatorGraphColor()
[all …]
Dregister_allocation_resolver.h31 class LiveInterval; variable
51 ArrayRef<LiveInterval* const> temp_intervals);
61 void ConnectSiblings(LiveInterval* interval);
64 void ConnectSplitSiblings(LiveInterval* interval, HBasicBlock* from, HBasicBlock* to) const;
Dssa_liveness_analysis.cc59 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 …]
Dssa_liveness_analysis.h101 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 …]
Dregister_allocation_resolver.cc39 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 …]
Dlive_ranges_test.cc71 LiveInterval* interval = liveness.GetInstructionFromSsaIndex(0)->GetLiveInterval(); in TEST_F()
115 LiveInterval* interval = liveness.GetInstructionFromSsaIndex(0)->GetLiveInterval(); in TEST_F()
163 LiveInterval* interval = liveness.GetInstructionFromSsaIndex(1)->GetLiveInterval(); in TEST_F()
238 LiveInterval* interval = graph->GetIntConstant(0)->GetLiveInterval(); in TEST_F()
314 LiveInterval* interval = constant->GetLiveInterval(); in TEST_F()
387 LiveInterval* interval = liveness.GetInstructionFromSsaIndex(0)->GetLiveInterval(); in TEST_F()
Dregister_allocator_test.cc68 bool ValidateIntervals(const ScopedArenaVector<LiveInterval*>& intervals, in ValidateIntervals()
70 return RegisterAllocator::ValidateIntervals(ArrayRef<LiveInterval* const>(intervals), in ValidateIntervals()
108 ScopedArenaVector<LiveInterval*> intervals(GetScopedAllocator()->Adapter()); in TEST_F()
342 LiveInterval* phi_interval = phi->GetLiveInterval(); in Loop3()
343 LiveInterval* loop_update = phi->InputAt(1)->GetLiveInterval(); in Loop3()
371 LiveInterval* interval = first_xor->GetLiveInterval(); in TEST_F()
384 LiveInterval* new_interval = interval->SplitAt(last_xor->GetLifetimePosition() - 1); in TEST_F()
445 LiveInterval* unhandled = graph->GetEntryBlock()->GetFirstInstruction()->GetLiveInterval(); in TEST_F()
461 LiveInterval* interval = in TEST_F()
462 LiveInterval::MakeFixedInterval(GetScopedAllocator(), 0, DataType::Type::kInt32); in TEST_F()
[all …]
Doptimizing_unit_test.h59 inline LiveInterval* BuildInterval(const size_t ranges[][2],
64 LiveInterval* interval =
65 LiveInterval::MakeInterval(allocator, DataType::Type::kInt32, defined_by);
Dgraph_visualizer.cc637 LiveInterval* interval = instruction->GetLiveInterval(); in PrintInstruction()
Dnodes.h73 class LiveInterval; variable
2446 LiveInterval* GetLiveInterval() const { return live_interval_; } in GetLiveInterval()
2447 void SetLiveInterval(LiveInterval* interval) { live_interval_ = interval; } in SetLiveInterval()
2630 LiveInterval* live_interval_;