/arkcompiler/runtime_core/static_core/compiler/optimizer/optimizations/regalloc/ |
H A D | reg_alloc_linear_scan.h | 29 class LifeIntervals; 31 using InstructionsIntervals = ArenaList<LifeIntervals *>; 68 ArenaVector<LifeIntervals *> fixed; // NOLINT(misc-non-private-member-variables-in-classes) 77 ArenaVector<LifeIntervals *> fixed; // NOLINT(misc-non-private-member-variables-in-classes) 100 void PrepareInterval(LifeIntervals *interval) override; 124 bool TryToAssignRegister(LifeIntervals *currentInterval); 126 void SplitAndSpill(const InstructionsIntervals *intervals, const LifeIntervals *currentInterval); 128 void SplitActiveInterval(LifeIntervals *interval, LifeNumber splitPos); 130 void AddToQueue(LifeIntervals *interval); 132 void SplitBeforeUse(LifeIntervals *currentInterva [all...] |
H A D | reg_alloc_base.h | 26 void ConnectIntervals(SpillFillInst *spillFill, const LifeIntervals *src, const LifeIntervals *dst); 27 bool TryToSpillConstant(LifeIntervals *interval, Graph *graph); 93 StackSlot GetNextStackSlot(LifeIntervals *interval) in GetNextStackSlot() 98 StackSlot GetNextStackSlotImpl(LifeIntervals *interval) in GetNextStackSlotImpl() 122 virtual void PrepareInterval([[maybe_unused]] LifeIntervals *interval) {} in PrepareInterval() 134 void SetType(LifeIntervals *interval); 135 void SetPreassignedRegisters(LifeIntervals *interval);
|
H A D | reg_alloc_linear_scan.cpp | 27 static void AddInterval(LifeIntervals *interval, InstructionsIntervals *dest) in AddInterval() 29 auto cmp = [](LifeIntervals *lhs, LifeIntervals *rhs) { return lhs->GetBegin() >= rhs->GetBegin(); }; in AddInterval() 90 void RegAllocLinearScan::PrepareInterval(LifeIntervals *interval) in PrepareInterval() 236 bool RegAllocLinearScan::TryToAssignRegister(LifeIntervals *currentInterval) in TryToAssignRegister() 266 void RegAllocLinearScan::SplitAndSpill(const InstructionsIntervals *intervals, const LifeIntervals *currentInterval) in SplitAndSpill() 287 void RegAllocLinearScan::SplitActiveInterval(LifeIntervals *interval, LifeNumber splitPos) in SplitActiveInterval() 310 void RegAllocLinearScan::AddToQueue(LifeIntervals *interval) in AddToQueue() 316 Register RegAllocLinearScan::GetSuitableRegister(const LifeIntervals *currentInterval) in GetSuitableRegister() 335 Register RegAllocLinearScan::GetFreeRegister(const LifeIntervals *currentInterva [all...] |
H A D | split_resolver.h | 36 void ConnectSiblings(LifeIntervals *interval); 40 void ConnectSplitFromPredBlock(BasicBlock *srcBb, LifeIntervals *srcInterval, BasicBlock *targetBb, 41 LifeIntervals *targetSplit);
|
H A D | working_ranges.h | 23 using InstructionsRanges = ArenaDeque<LifeIntervals *>; 35 static inline void AddRange(LifeIntervals *interval, InstructionsRanges *dest) in AddRange()
|
H A D | reg_alloc_graph_coloring.h | 64 void AddAffinityEdge(InterferenceGraph *ig, IndexVector *affinityNodes, const ColorNode &node, LifeIntervals *li); 73 void SpillInterval(LifeIntervals *interval, WorkingRanges *ranges, WorkingRanges *stackRanges);
|
H A D | interference_graph.h | 33 class LifeIntervals; 77 void Assign(LifeIntervals *lifeIntervals) noexcept 103 LifeIntervals *GetLifeIntervals() const noexcept 129 LifeIntervals *lifeIntervals_ = nullptr; 221 const ColorNode *FindNode(const LifeIntervals *li) const in FindNode()
|
H A D | reg_alloc_base.cpp | 168 void RegAllocBase::SetType(LifeIntervals *interval) in SetType() 179 void RegAllocBase::SetPreassignedRegisters(LifeIntervals *interval) in SetPreassignedRegisters() 271 void ConnectIntervals(SpillFillInst *spillFill, const LifeIntervals *src, const LifeIntervals *dst) in ConnectIntervals() 281 bool TryToSpillConstant(LifeIntervals *interval, Graph *graph) in TryToSpillConstant()
|
H A D | split_resolver.cpp | 46 void SplitResolver::ConnectSiblings(LifeIntervals *interval) in ConnectSiblings() 105 void SplitResolver::ConnectSplitFromPredBlock(BasicBlock *srcBb, LifeIntervals *srcInterval, BasicBlock *targetBb, in ConnectSplitFromPredBlock() 106 LifeIntervals *targetSplit) in ConnectSplitFromPredBlock()
|
H A D | reg_alloc_stat.h | 24 explicit RegAllocStat(const ArenaVector<LifeIntervals *> &intervals);
|
/arkcompiler/runtime_core/static_core/compiler/optimizer/analysis/ |
H A D | liveness_analyzer.h | 88 class LifeIntervals { class 90 explicit LifeIntervals(ArenaAllocator *allocator) : LifeIntervals(allocator, nullptr) {} in LifeIntervals() function in ark::compiler::LifeIntervals 92 LifeIntervals(ArenaAllocator *allocator, Inst *inst) : LifeIntervals(allocator, inst, {}) {} in LifeIntervals() function in ark::compiler::LifeIntervals 94 LifeIntervals(ArenaAllocator *allocator, Inst *inst, LiveRange liveRange) in LifeIntervals() function in ark::compiler::LifeIntervals 112 DEFAULT_MOVE_SEMANTIC(LifeIntervals); 113 DEFAULT_COPY_SEMANTIC(LifeIntervals); 114 ~LifeIntervals() = default; 396 LifeIntervals *SplitA [all...] |
H A D | live_registers.cpp | 39 std::pair<LifeNumber, LifeNumber> CopyIntervals(const ArenaVector<LifeIntervals *> &source, 40 ArenaVector<LifeIntervals *> *destination) 93 LifeIntervalsTree *LifeIntervalsTree::BuildIntervalsTree(const ArenaVector<LifeIntervals *> &lifeIntervals, in BuildIntervalsTree() 98 auto intervals = alloc->New<ArenaVector<LifeIntervals *>>(alloc->Adapter()); in BuildIntervalsTree() 132 [](LifeIntervals *l, LifeIntervals *r) { return l->GetEnd() > r->GetEnd(); }); in BuildIntervalsTree()
|
H A D | liveness_analyzer.cpp | 408 void LivenessAnalyzer::ProcessOpcodeLiveOut(BasicBlock *block, LifeIntervals *interval, LifeNumber instLifeNumber) in ProcessOpcodeLiveOut() 550 auto interval = GetAllocator()->New<LifeIntervals>(GetAllocator(), inst); in CreateLifeIntervals() 557 auto interval = GetAllocator()->New<LifeIntervals>(GetAllocator()); in CreateIntervalForTemp() 565 LifeIntervals *LivenessAnalyzer::GetInstLifeIntervals(const Inst *inst) const in GetInstLifeIntervals() 621 const ArenaVector<LifeIntervals *> &LivenessAnalyzer::GetLifeIntervals() const in GetLifeIntervals() 646 LifeIntervals *LivenessAnalyzer::GetTmpRegInterval(const Inst *inst) in GetTmpRegInterval() 703 std::map<Register, std::vector<LifeIntervals *>> regsIntervals; in DumpLocationsUsage() 704 std::map<Register, std::vector<LifeIntervals *>> vregsIntervals; in DumpLocationsUsage() 705 std::map<Register, std::vector<LifeIntervals *>> slotsIntervals; in DumpLocationsUsage() 825 interval = GetGraph()->GetAllocator()->New<LifeIntervals>(GetGrap in BlockReg() [all...] |
/arkcompiler/runtime_core/static_core/compiler/tests/ |
H A D | live_registers_test.cpp | 27 auto intervals = ArenaVector<LifeIntervals *>(GetGraph()->GetAllocator()->Adapter()); in TEST_F() 34 auto intervals = ArenaVector<LifeIntervals *>(alloc->Adapter()); in TEST_F() 35 intervals.push_back(alloc->New<LifeIntervals>(alloc, GetGraph()->CreateInstAdd(), LiveRange(0U, 42U))); in TEST_F() 42 auto intervals = ArenaVector<LifeIntervals *>(alloc->Adapter()); in TEST_F() 43 intervals.push_back(alloc->New<LifeIntervals>(alloc, GetGraph()->CreateInstAdd(), LiveRange(0U, 10U))); in TEST_F() 44 intervals.push_back(alloc->New<LifeIntervals>(alloc, GetGraph()->CreateInstAdd(), LiveRange(0U, 2U))); in TEST_F() 45 intervals.push_back(alloc->New<LifeIntervals>(alloc, GetGraph()->CreateInstAdd(), LiveRange(2U, 3U))); in TEST_F() 46 intervals.push_back(alloc->New<LifeIntervals>(alloc, GetGraph()->CreateInstAdd(), LiveRange(5U, 6U))); in TEST_F() 47 intervals.push_back(alloc->New<LifeIntervals>(alloc, GetGraph()->CreateInstAdd(), LiveRange(6U, 8U))); in TEST_F() 48 intervals.push_back(alloc->New<LifeIntervals>(allo in TEST_F() [all...] |
H A D | life_intervals_test.cpp | 25 LifeIntervals *Create(std::initializer_list<std::pair<LifeNumber, LifeNumber>> lns) in Create() 28 auto li = GetAllocator()->New<LifeIntervals>(GetAllocator(), inst); in Create() 36 void CheckSiblings(std::initializer_list<LifeIntervals *> intervals) in CheckSiblings() 51 void CheckRanges(LifeIntervals *interval, std::initializer_list<std::pair<LifeNumber, LifeNumber>> ranges) in CheckRanges() 67 void CheckSiblingSequence(LifeIntervals *interval, std::initializer_list<std::pair<LifeNumber, LifeNumber>> ranges) in CheckSiblingSequence() 77 std::vector<std::function<LifeIntervals *()>> IsSameLocationFactories(Graph *graph); 179 std::vector<std::function<LifeIntervals *()>> LifeIntervalsTest::IsSameLocationFactories(Graph *graph) in IsSameLocationFactories() 185 auto li = GetAllocator()->New<LifeIntervals>(GetAllocator(), add); in IsSameLocationFactories() 190 auto li = GetAllocator()->New<LifeIntervals>(GetAllocator(), add); in IsSameLocationFactories() 195 auto li = GetAllocator()->New<LifeIntervals>(GetAllocato in IsSameLocationFactories() [all...] |
/arkcompiler/runtime_core/compiler/optimizer/analysis/ |
H A D | liveness_analyzer.h | 87 class LifeIntervals { class 89 explicit LifeIntervals(ArenaAllocator *allocator) : LifeIntervals(allocator, nullptr) {} in LifeIntervals() function in panda::compiler::LifeIntervals 91 LifeIntervals(ArenaAllocator *allocator, Inst *inst) : LifeIntervals(allocator, inst, {}) {} in LifeIntervals() function in panda::compiler::LifeIntervals 93 LifeIntervals(ArenaAllocator *allocator, Inst *inst, LiveRange live_range) in LifeIntervals() function in panda::compiler::LifeIntervals 108 DEFAULT_MOVE_SEMANTIC(LifeIntervals); 109 DEFAULT_COPY_SEMANTIC(LifeIntervals); 110 ~LifeIntervals() = default; 369 LifeIntervals *SplitA [all...] |
H A D | liveness_analyzer.cpp | 434 inst_life_intervals_.push_back(GetAllocator()->New<LifeIntervals>(GetAllocator(), inst)); in CreateLifeIntervals() 437 LifeIntervals *LivenessAnalyzer::GetInstLifeIntervals(const Inst *inst) const in GetInstLifeIntervals() 491 std::map<Register, std::vector<LifeIntervals *>> regs_intervals; in DumpLocationsUsage() 492 std::map<Register, std::vector<LifeIntervals *>> vregs_intervals; in DumpLocationsUsage() 493 std::map<Register, std::vector<LifeIntervals *>> slots_intervals; in DumpLocationsUsage() 567 interval = GetGraph()->GetAllocator()->New<LifeIntervals>(GetGraph()->GetAllocator()); in BlockReg() 587 LifeIntervals *LifeIntervals::SplitAt(LifeNumber ln, ArenaAllocator *alloc) in SplitAt() 591 auto split_child = alloc->New<LifeIntervals>(alloc, GetInst()); in SplitAt() 624 void LifeIntervals [all...] |
/arkcompiler/runtime_core/compiler/optimizer/optimizations/regalloc/ |
H A D | reg_alloc_base.h | 26 void ConnectIntervals(SpillFillInst *spill_fill, const LifeIntervals *src, const LifeIntervals *dst); 92 StackSlot GetNextStackSlot(LifeIntervals *interval) in GetNextStackSlot() 97 StackSlot GetNextStackSlotImpl(LifeIntervals *interval) in GetNextStackSlotImpl() 120 virtual void PrepareInterval([[maybe_unused]] LifeIntervals *interval) {} in PrepareInterval() 132 void SetType(LifeIntervals *interval); 133 void SetPreassignedRegisters(LifeIntervals *interval);
|
H A D | split_resolver.h | 36 void ConnectSiblings(LifeIntervals *interval); 40 void ConnectSpiltFromPredBlock(BasicBlock *src_bb, LifeIntervals *src_interval, BasicBlock *target_bb, 41 LifeIntervals *target_split);
|
H A D | reg_alloc_base.cpp | 151 void RegAllocBase::SetType(LifeIntervals *interval) in SetType() 162 void RegAllocBase::SetPreassignedRegisters(LifeIntervals *interval) in SetPreassignedRegisters() 246 void ConnectIntervals(SpillFillInst *spill_fill, const LifeIntervals *src, const LifeIntervals *dst) in ConnectIntervals()
|
H A D | reg_alloc_stat.h | 24 explicit RegAllocStat(const ArenaVector<LifeIntervals *> &intervals);
|
H A D | interference_graph.h | 31 class LifeIntervals; 73 void Assign(LifeIntervals *life_intervals) noexcept 95 LifeIntervals *GetLifeIntervals() const noexcept 111 LifeIntervals *life_intervals_ = nullptr;
|
H A D | split_resolver.cpp | 44 void SplitResolver::ConnectSiblings(LifeIntervals *interval) in ConnectSiblings() 103 void SplitResolver::ConnectSpiltFromPredBlock(BasicBlock *src_bb, LifeIntervals *src_interval, BasicBlock *target_bb, in ConnectSpiltFromPredBlock() 104 LifeIntervals *target_split) in ConnectSpiltFromPredBlock()
|
/arkcompiler/runtime_core/compiler/tests/ |
H A D | life_intervals_test.cpp | 24 LifeIntervals *Create(std::initializer_list<std::pair<LifeNumber, LifeNumber>> lns) in Create() 27 auto li = GetAllocator()->New<LifeIntervals>(GetAllocator(), inst); in Create() 34 void CheckSiblings(std::initializer_list<LifeIntervals *> intervals) in CheckSiblings() 49 void CheckRanges(LifeIntervals *interval, std::initializer_list<std::pair<LifeNumber, LifeNumber>> ranges) in CheckRanges() 184 std::vector<std::function<LifeIntervals *()>> factories = { in TEST_F() 186 auto li = GetAllocator()->New<LifeIntervals>(GetAllocator(), add); in TEST_F() 191 auto li = GetAllocator()->New<LifeIntervals>(GetAllocator(), add); in TEST_F() 196 auto li = GetAllocator()->New<LifeIntervals>(GetAllocator(), add); in TEST_F() 201 auto li = GetAllocator()->New<LifeIntervals>(GetAllocator(), add); in TEST_F() 206 auto li = GetAllocator()->New<LifeIntervals>(GetAllocato in TEST_F() [all...] |
H A D | liveness_analyzer_new_test.cpp | 264 LifeIntervals life_intervals(graph->GetAllocator(), bb->GetFirstInst(), live_range); in HWTEST_F() 274 LifeIntervals life_intervals1(graph->GetAllocator(), bb->GetFirstInst(), live_range1); in HWTEST_F() 301 LifeIntervals life_intervals(graph->GetAllocator(), bb->GetFirstInst(), live_range); in HWTEST_F() 333 LifeIntervals life_intervals(graph->GetAllocator(), bb->GetFirstInst(), live_range); in HWTEST_F() 365 LifeIntervals life_intervals(graph->GetAllocator(), bb->GetFirstInst(), live_range); in HWTEST_F() 393 LifeIntervals life_intervals(graph->GetAllocator(), bb->GetFirstInst(), live_range); in HWTEST_F() 423 LifeIntervals life_intervals(graph->GetAllocator(), bb->GetFirstInst(), live_range); in HWTEST_F() 425 LifeIntervals other(graph->GetAllocator()); in HWTEST_F() 453 LifeIntervals life_intervals(graph->GetAllocator(), bb->GetFirstInst(), live_range); in HWTEST_F() 455 LifeIntervals othe in HWTEST_F() [all...] |