LLVM: include/llvm/CodeGen/RegAllocPriorityAdvisor.h Source File (original) (raw)
1
2
3
4
5
6
7
8
9#ifndef LLVM_CODEGEN_REGALLOCPRIORITYADVISOR_H
10#define LLVM_CODEGEN_REGALLOCPRIORITYADVISOR_H
11
17
18namespace llvm {
19
23
24
25
27public:
31
32
33
35
38
39protected:
49};
50
52public:
56
57private:
58 unsigned getPriority(const LiveInterval &LI) const override;
59};
60
61
62
64public:
68
69private:
70 unsigned getPriority(const LiveInterval &LI) const override;
71};
72
73
74
75
76
77
78
80public:
82
84
86
89
90 virtual std::unique_ptr
93
95
96private:
98};
99
104
105public:
107
109
111 MachineFunctionAnalysisManager::Invalidator &Inv) {
113 return !PAC.preservedWhenStateless() ||
115 }
116 };
117
119
120private:
121 void initializeProvider(LLVMContext &Ctx);
124 std::unique_ptr Provider;
125};
126
128public:
133
134
139
140protected:
141
142
146
148
149private:
152};
153
154
155
157
160
163
166
169
170}
171
172#endif
#define LLVM_ATTRIBUTE_RETURNS_NONNULL
This header defines various interfaces for pass management in LLVM.
static cl::opt< RegAllocEvictionAdvisorAnalysisLegacy::AdvisorMode > Mode("regalloc-enable-advisor", cl::Hidden, cl::init(RegAllocEvictionAdvisorAnalysisLegacy::AdvisorMode::Default), cl::desc("Enable regalloc advisor mode"), cl::values(clEnumValN(RegAllocEvictionAdvisorAnalysisLegacy::AdvisorMode::Default, "default", "Default"), clEnumValN(RegAllocEvictionAdvisorAnalysisLegacy::AdvisorMode::Release, "release", "precompiled"), clEnumValN(RegAllocEvictionAdvisorAnalysisLegacy::AdvisorMode::Development, "development", "for training")))
SI optimize exec mask operations pre RA
Represent the analysis usage information of a pass.
void setPreservesAll()
Set by analyses that do not transform their input at all.
DefaultPriorityAdvisor(const MachineFunction &MF, const RAGreedy &RA, SlotIndexes *const Indexes)
Definition RegAllocPriorityAdvisor.h:53
DummyPriorityAdvisor(const MachineFunction &MF, const RAGreedy &RA, SlotIndexes *const Indexes)
Definition RegAllocPriorityAdvisor.h:65
This is an important class for using LLVM in a threaded context.
LiveInterval - This class represents the liveness of a register, or stack slot.
MachineRegisterInfo - Keep track of information for virtual and physical registers,...
Pass interface - Implemented by all 'passes'.
virtual StringRef getPassName() const
getPassName - Return a nice clean name for a pass.
A set of analyses that are preserved following a run of a transformation pass.
PreservedAnalysisChecker getChecker() const
Build a checker for this PreservedAnalyses and the specified analysis type.
void getAnalysisUsage(AnalysisUsage &AU) const override
getAnalysisUsage - This function should be overriden by passes that need analysis information to do t...
Definition RegAllocPriorityAdvisor.h:143
RegAllocPriorityAdvisorProvider & getProvider()
Get an advisor for the given context (i.e. machine function, etc)
Definition RegAllocPriorityAdvisor.h:135
AdvisorMode getAdvisorMode() const
Definition RegAllocPriorityAdvisor.h:136
static char ID
Definition RegAllocPriorityAdvisor.h:132
RegAllocPriorityAdvisorProvider::AdvisorMode AdvisorMode
Definition RegAllocPriorityAdvisor.h:129
virtual void logRewardIfNeeded(const MachineFunction &MF, llvm::function_ref< float()> GetReward)
Definition RegAllocPriorityAdvisor.h:137
std::unique_ptr< RegAllocPriorityAdvisorProvider > Provider
Definition RegAllocPriorityAdvisor.h:147
RegAllocPriorityAdvisorAnalysisLegacy(AdvisorMode Mode)
Definition RegAllocPriorityAdvisor.h:130
Result run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
Common provider for getting the priority advisor and logging rewards.
Definition RegAllocPriorityAdvisor.h:79
virtual ~RegAllocPriorityAdvisorProvider()=default
virtual void logRewardIfNeeded(const MachineFunction &MF, function_ref< float()> GetReward)
Definition RegAllocPriorityAdvisor.h:87
AdvisorMode getAdvisorMode() const
Definition RegAllocPriorityAdvisor.h:94
virtual std::unique_ptr< RegAllocPriorityAdvisor > getAdvisor(const MachineFunction &MF, const RAGreedy &RA, SlotIndexes &SI)=0
RegAllocPriorityAdvisorProvider(AdvisorMode Mode)
Definition RegAllocPriorityAdvisor.h:83
AdvisorMode
Definition RegAllocPriorityAdvisor.h:81
@ Development
Definition RegAllocPriorityAdvisor.h:81
@ Default
Definition RegAllocPriorityAdvisor.h:81
@ Release
Definition RegAllocPriorityAdvisor.h:81
@ Dummy
Definition RegAllocPriorityAdvisor.h:81
const RegisterClassInfo & RegClassInfo
Definition RegAllocPriorityAdvisor.h:45
MachineRegisterInfo *const MRI
Definition RegAllocPriorityAdvisor.h:43
LiveIntervals *const LIS
Definition RegAllocPriorityAdvisor.h:41
RegAllocPriorityAdvisor(const RegAllocPriorityAdvisor &)=delete
const bool RegClassPriorityTrumpsGlobalness
Definition RegAllocPriorityAdvisor.h:47
RegAllocPriorityAdvisor(RegAllocPriorityAdvisor &&)=delete
const bool ReverseLocalAssignment
Definition RegAllocPriorityAdvisor.h:48
virtual ~RegAllocPriorityAdvisor()=default
SlotIndexes *const Indexes
Definition RegAllocPriorityAdvisor.h:46
virtual unsigned getPriority(const LiveInterval &LI) const =0
Find the priority value for a live range.
const RAGreedy & RA
Definition RegAllocPriorityAdvisor.h:40
VirtRegMap *const VRM
Definition RegAllocPriorityAdvisor.h:42
const TargetRegisterInfo *const TRI
Definition RegAllocPriorityAdvisor.h:44
StringRef - Represent a constant reference to a string, i.e.
TargetRegisterInfo base class - We assume that the target defines a static array of TargetRegisterDes...
An efficient, type-erasing, non-owning reference to a callable.
This is an optimization pass for GlobalISel generic memory operations.
RegAllocPriorityAdvisorAnalysisLegacy * createReleaseModePriorityAdvisorAnalysis()
RegAllocPriorityAdvisorAnalysisLegacy * createDevelopmentModePriorityAdvisorAnalysis()
AnalysisManager< MachineFunction > MachineFunctionAnalysisManager
Pass * callDefaultCtor< RegAllocPriorityAdvisorAnalysisLegacy >()
Specialization for the API used by the analysis infrastructure to create an instance of the priority ...
LLVM_ATTRIBUTE_RETURNS_NONNULL RegAllocPriorityAdvisorProvider * createDevelopmentModePriorityAdvisorProvider(LLVMContext &Ctx)
LLVM_ATTRIBUTE_RETURNS_NONNULL RegAllocPriorityAdvisorProvider * createReleaseModePriorityAdvisorProvider()
A CRTP mix-in that provides informational APIs needed for analysis passes.
A special type used by analysis passes to provide an address that identifies that particular analysis...
RegAllocPriorityAdvisorProvider * Provider
Definition RegAllocPriorityAdvisor.h:108
bool invalidate(MachineFunction &MF, const PreservedAnalyses &PA, MachineFunctionAnalysisManager::Invalidator &Inv)
Definition RegAllocPriorityAdvisor.h:110