Lines Matching +full:keep +full:- +full:a +full:- +full:live
1 //===- RegAllocEvictionAdvisor.h - Interference resolution ------*- C++ -*-===//
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
16 #include "llvm/Config/llvm-config.h"
33 // Live ranges pass through a number of stages as we try to allocate them.
34 // Some of the stages may also create new live ranges:
36 // - Region splitting.
37 // - Per-block splitting.
38 // - Local splitting.
39 // - Spilling.
43 // that are unlikely to give any results. It also guarantees that the live
47 /// Newly created live range that has never been queued.
53 /// Attempt live range splitting if assignment is impossible.
56 /// Attempt more aggressive live range splitting that is guaranteed to make
61 /// Live range will be spilled. No more splitting will be attempted.
64 /// Live range is in memory. Because of other evictions, it might get moved
65 /// in a register in the end.
68 /// There is nothing more we can do to this live range. Abort compilation
73 /// Cost of evicting interference - used by default advisor, and the eviction
95 /// Interface to the eviction advisor, which is responsible for making a
96 /// decision as to which live ranges should be evicted (if any).
104 /// Find a physical register that can be freed by evicting the FixedRegisters,
106 /// no fixed live ranges are evicted) and profitable.
111 /// Find out if we can evict the live ranges occupying the given PhysReg,
112 /// which is a hint (preferred register) for VirtReg.
117 /// Returns true if the given \p PhysReg is a callee saved register and has
134 // TODO: this is a heuristic component we could consider learning, too.
156 /// - in the ML implementation case, the evaluator is stateless but (especially
159 /// - in the 'development' mode ML case, we want to capture the training log
160 /// during allocation (this is a log of features encountered and decisions
161 /// made), and then measure a score, potentially a few steps after allocation
162 /// completes. So we need the properties of an immutable pass to keep the logger
218 bool shouldEvict(const LiveInterval &A, bool, const LiveInterval &B,