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

147 std::unique_ptr Provider;

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