LLVM: lib/Target/AMDGPU/AMDGPUTargetMachine.h Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

13

14#ifndef LLVM_LIB_TARGET_AMDGPU_AMDGPUTARGETMACHINE_H

15#define LLVM_LIB_TARGET_AMDGPU_AMDGPUTARGETMACHINE_H

16

22#include

23#include

24

25namespace llvm {

26

27

28

29

30

32protected:

33 std::unique_ptr TLOF;

34

37

38public:

41

44 std::optionalReloc::Model RM,

47

51

53 return TLOF.get();

54 }

55

58

59

61

63

65

66 std::pair<const Value *, unsigned>

68

70

72 function_ref<void(std::unique_ptr MPart)>

73 ModuleCallback) override;

74};

75

76

77

78

79

81private:

83

84public:

87 std::optionalReloc::Model RM,

89 bool JIT);

90

92

94

96

97 bool useIPRA() const override { return true; }

98

104

106

110

117 SMRange &SourceRange) const override;

118};

119

120

121

122

123

125public:

127

129 return getTM();

130 }

131

134

142

143 std::unique_ptr getCSEConfig() const override;

144

145

146

147

148

152 return Opt;

154 return false;

155 return Opt;

156 }

157};

158

159

160

161

162

164 : public CodeGenPassBuilder<AMDGPUCodeGenPassBuilder, GCNTargetMachine> {

166

167public:

171

174 void addPreISel(AddIRPass &addPass) const;

175 void addILPOpts(AddMachinePass &) const;

180

181

182

183

188};

189

190}

191

192#endif

Interfaces for producing common pass manager configurations.

AMD GCN specific subclass of TargetSubtarget.

PassInstrumentationCallbacks PIC

PassBuilder PB(Machine, PassOpts->PTO, std::nullopt, &PIC)

Target-Independent Code Generator Pass Configuration Options pass.

A manager for alias analyses.

Error addInstSelector(AddMachinePass &) const

void addMachineSSAOptimization(AddMachinePass &) const

void addEarlyCSEOrGVNPass(AddIRPass &) const

void addStraightLineScalarOptimizationPasses(AddIRPass &) const

void addIRPasses(AddIRPass &) const

void addPreISel(AddIRPass &addPass) const

void addAsmPrinter(AddMachinePass &, CreateMCStreamer) const

void addCodeGenPrepare(AddIRPass &) const

void addILPOpts(AddMachinePass &) const

void addPostRegAlloc(AddMachinePass &) const

bool isPassEnabled(const cl::opt< bool > &Opt, CodeGenOptLevel Level=CodeGenOptLevel::Default) const

Check if a pass is enabled given Opt option.

AMDGPUTargetMachine & getAMDGPUTargetMachine() const

std::unique_ptr< CSEConfigBase > getCSEConfig() const override

Returns the CSEConfig object to use for the current optimization level.

ScheduleDAGInstrs * createMachineScheduler(MachineSchedContext *C) const override

Create an instance of ScheduleDAGInstrs to be run within the standard MachineScheduler pass for this ...

bool isPassEnabled(const cl::opt< bool > &Opt, CodeGenOptLevel Level=CodeGenOptLevel::Default) const

Check if a pass is enabled given Opt option.

bool addPreISel() override

Methods with trivial inline returns are convenient points in the common codegen pass pipeline where t...

bool addInstSelector() override

addInstSelector - This method should install an instruction selector pass, which converts from LLVM c...

bool addGCPasses() override

addGCPasses - Add late codegen passes that analyze code for garbage collection.

void addStraightLineScalarOptimizationPasses()

void addIRPasses() override

Add common target configurable passes that perform LLVM IR to IR transforms following machine indepen...

void addEarlyCSEOrGVNPass()

void addCodeGenPrepare() override

Add pass to prepare the LLVM IR for code generation.

std::unique_ptr< TargetLoweringObjectFile > TLOF

static int64_t getNullPointerValue(unsigned AddrSpace)

Get the integer value of a null pointer in the given address space.

unsigned getAddressSpaceForPseudoSourceKind(unsigned Kind) const override

getAddressSpaceForPseudoSourceKind - Given the kind of memory (e.g.

const TargetSubtargetInfo * getSubtargetImpl() const

TargetLoweringObjectFile * getObjFileLowering() const override

void registerDefaultAliasAnalyses(AAManager &) override

Allow the target to register alias analyses with the AAManager for use with the new pass manager.

~AMDGPUTargetMachine() override

std::pair< const Value *, unsigned > getPredicatedAddrSpace(const Value *V) const override

If the specified predicate checks whether a generic pointer falls within a specified address space,...

StringRef getFeatureString(const Function &F) const

static bool EnableFunctionCalls

bool isNoopAddrSpaceCast(unsigned SrcAS, unsigned DestAS) const override

Returns true if a cast between SrcAS and DestAS is a noop.

void registerPassBuilderCallbacks(PassBuilder &PB) override

Allow the target to modify the pass pipeline.

static bool EnableLowerModuleLDS

StringRef getGPUName(const Function &F) const

unsigned getAssumedAddrSpace(const Value *V) const override

If the specified generic pointer could be assumed as a pointer to a specific address space,...

bool splitModule(Module &M, unsigned NumParts, function_ref< void(std::unique_ptr< Module > MPart)> ModuleCallback) override

Entry point for module splitting.

const TargetSubtargetInfo * getSubtargetImpl(const Function &) const override=0

Virtual method implemented by subclasses that returns a reference to that target's TargetSubtargetInf...

Allocate memory in an ever growing pool, as if by bump-pointer.

This class provides access to building LLVM's passes.

std::function< Expected< std::unique_ptr< MCStreamer > >(MCContext &)> CreateMCStreamer

PassInstrumentationCallbacks * PIC

implements a set of functionality in the TargetMachine class for targets that make use of the indepen...

Lightweight error class with error context and mandatory checking.

TargetTransformInfo getTargetTransformInfo(const Function &F) const override

Get a TargetTransformInfo implementation for the target.

void registerMachineRegisterInfoCallback(MachineFunction &MF) const override

bool parseMachineFunctionInfo(const yaml::MachineFunctionInfo &, PerFunctionMIParsingState &PFS, SMDiagnostic &Error, SMRange &SourceRange) const override

Parse out the target's MachineFunctionInfo from the YAML reprsentation.

yaml::MachineFunctionInfo * convertFuncInfoToYAML(const MachineFunction &MF) const override

Allocate and initialize an instance of the YAML representation of the MachineFunctionInfo.

Error buildCodeGenPipeline(ModulePassManager &MPM, raw_pwrite_stream &Out, raw_pwrite_stream *DwoOut, CodeGenFileType FileType, const CGPassBuilderOption &Opts, PassInstrumentationCallbacks *PIC) override

yaml::MachineFunctionInfo * createDefaultFuncInfoYAML() const override

Allocate and return a default initialized instance of the YAML representation for the MachineFunction...

TargetPassConfig * createPassConfig(PassManagerBase &PM) override

Create a pass configuration object to be used by addPassToEmitX methods for generating a pipeline of ...

bool useIPRA() const override

True if the target wants to use interprocedural register allocation by default.

MachineFunctionInfo * createMachineFunctionInfo(BumpPtrAllocator &Allocator, const Function &F, const TargetSubtargetInfo *STI) const override

Create the target's instance of MachineFunctionInfo.

A Module instance is used to store all the information related to an LLVM module.

This class provides access to building LLVM's passes.

Instances of this class encapsulate one diagnostic report, allowing printing to a raw_ostream as a ca...

Represents a range in source code.

A ScheduleDAG for scheduling lists of MachineInstr.

StringMap - This is an unconventional map that is specialized for handling keys that are "strings",...

StringRef - Represent a constant reference to a string, i.e.

Primary interface to the complete machine description for the target machine.

CodeGenOptLevel getOptLevel() const

Returns the optimization level: None, Less, Default, or Aggressive.

std::unique_ptr< const MCSubtargetInfo > STI

Target-Independent Code Generator Pass Configuration Options.

TargetSubtargetInfo - Generic base class for all target subtargets.

This pass provides access to the codegen interfaces that are needed for IR-level transformations.

Target - Wrapper for Target specific information.

Triple - Helper class for working with autoconf configuration names.

LLVM Value Representation.

int getNumOccurrences() const

An efficient, type-erasing, non-owning reference to a callable.

PassManagerBase - An abstract interface to allow code to add passes to a pass manager without having ...

An abstract base class for streams implementations that also support a pwrite operation.

@ C

The default llvm calling convention, compatible with C.

This is an optimization pass for GlobalISel generic memory operations.

CodeGenFileType

These enums are meant to be passed into addPassesToEmitFile to indicate what type of file to emit,...

CodeGenOptLevel

Code generation optimization level.

MachineFunctionInfo - This class can be derived from and used by targets to hold private target-speci...

MachineSchedContext provides enough context from the MachineScheduler pass for the target to instanti...

This class manages callbacks registration, as well as provides a way for PassInstrumentation to pass ...

Targets should override this in a way that mirrors the implementation of llvm::MachineFunctionInfo.