Go to the documentation of this file.
9 #ifndef LLVM_CODEGEN_REGALLOCPRIORITYADVISOR_H
10 #define LLVM_CODEGEN_REGALLOCPRIORITYADVISOR_H
18 class MachineFunction;
56 unsigned getPriority(
const LiveInterval &LI)
const override;
68 virtual std::unique_ptr<RegAllocPriorityAdvisor>
96 #endif // LLVM_CODEGEN_REGALLOCPRIORITYADVISOR_H
This is an optimization pass for GlobalISel generic memory operations.
RegAllocPriorityAdvisor(const RegAllocPriorityAdvisor &)=delete
print lazy value Lazy Value Info Printer Pass
ImmutablePass class - This class is used to provide information that does not need to be run.
MachineRegisterInfo - Keep track of information for virtual and physical registers,...
virtual unsigned getPriority(const LiveInterval &LI) const =0
Find the priority value for a live range.
RegAllocPriorityAdvisorAnalysis(AdvisorMode Mode)
const bool RegClassPriorityTrumpsGlobalness
virtual void logRewardIfNeeded(const MachineFunction &MF, llvm::function_ref< float()> GetReward)
Pass * callDefaultCtor< RegAllocPriorityAdvisorAnalysis >()
Specialization for the API used by the analysis infrastructure to create an instance of the priority ...
TargetRegisterInfo base class - We assume that the target defines a static array of TargetRegisterDes...
Interface to the priority advisor, which is responsible for prioritizing live ranges.
DefaultPriorityAdvisor(const MachineFunction &MF, const RAGreedy &RA, SlotIndexes *const Indexes)
virtual std::unique_ptr< RegAllocPriorityAdvisor > getAdvisor(const MachineFunction &MF, const RAGreedy &RA)=0
Get an advisor for the given context (i.e. machine function, etc)
SlotIndexes *const Indexes
RegAllocPriorityAdvisorAnalysis * createDevelopmentModePriorityAdvisor()
Clang compiles this i1 i64 store i64 i64 store i64 i64 store i64 i64 store i64 align Which gets codegen d xmm0 movaps rbp movaps rbp movaps rbp movaps rbp rbp rbp rbp rbp It would be better to have movq s of instead of the movaps s LLVM produces ret int
Represent the analysis usage information of a pass.
virtual ~RegAllocPriorityAdvisor()=default
const RegisterClassInfo & RegClassInfo
AdvisorMode getAdvisorMode() const
LiveInterval - This class represents the liveness of a register, or stack slot.
MachineRegisterInfo *const MRI
unsigned ID
LLVM IR allows to use arbitrary numbers as calling convention identifiers.
An efficient, type-erasing, non-owning reference to a callable.
void getAnalysisUsage(AnalysisUsage &AU) const override
getAnalysisUsage - This function should be overriden by passes that need analysis information to do t...
RegAllocPriorityAdvisorAnalysis * createReleaseModePriorityAdvisor()
const TargetRegisterInfo *const TRI
SI optimize exec mask operations pre RA
StringRef - Represent a constant reference to a string, i.e.
void setPreservesAll()
Set by analyses that do not transform their input at all.
const bool ReverseLocalAssignment