mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-23 01:24:30 +00:00
CalcSpillWeights: allow overidding the spill weight normalizing function
This will enable the PBQP register allocator to provide its own normalizing function. No functionnal change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194417 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -43,16 +43,23 @@ namespace llvm {
|
||||
/// \brief Calculate auxiliary information for a virtual register such as its
|
||||
/// spill weight and allocation hint.
|
||||
class VirtRegAuxInfo {
|
||||
public:
|
||||
typedef float (*NormalizingFn)(float, unsigned);
|
||||
|
||||
private:
|
||||
MachineFunction &MF;
|
||||
LiveIntervals &LIS;
|
||||
const MachineLoopInfo &Loops;
|
||||
const MachineBlockFrequencyInfo &MBFI;
|
||||
DenseMap<unsigned, float> Hint;
|
||||
NormalizingFn normalize;
|
||||
|
||||
public:
|
||||
VirtRegAuxInfo(MachineFunction &mf, LiveIntervals &lis,
|
||||
const MachineLoopInfo &loops,
|
||||
const MachineBlockFrequencyInfo &mbfi)
|
||||
: MF(mf), LIS(lis), Loops(loops), MBFI(mbfi) {}
|
||||
const MachineBlockFrequencyInfo &mbfi,
|
||||
NormalizingFn norm = normalizeSpillWeight)
|
||||
: MF(mf), LIS(lis), Loops(loops), MBFI(mbfi), normalize(norm) {}
|
||||
|
||||
/// \brief (re)compute li's spill weight and allocation hint.
|
||||
void calculateSpillWeightAndHint(LiveInterval &li);
|
||||
@ -62,7 +69,9 @@ namespace llvm {
|
||||
/// live intervals.
|
||||
void calculateSpillWeightsAndHints(LiveIntervals &LIS, MachineFunction &MF,
|
||||
const MachineLoopInfo &MLI,
|
||||
const MachineBlockFrequencyInfo &MBFI);
|
||||
const MachineBlockFrequencyInfo &MBFI,
|
||||
VirtRegAuxInfo::NormalizingFn norm =
|
||||
normalizeSpillWeight);
|
||||
}
|
||||
|
||||
#endif // LLVM_CODEGEN_CALCSPILLWEIGHTS_H
|
||||
|
Reference in New Issue
Block a user