LLVM: lib/Target/AVR/AVRTargetMachine.cpp Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

14

18

24

25#include

26

27namespace llvm {

28

30 "e-P1-p:16:8-i8:8-i16:8-i32:8-i64:8-f32:8-f64:8-n8-a:8";

31

32

34 if (CPU.empty() || CPU == "generic") {

35 return "avr2";

36 }

37

38 return CPU;

39}

40

43}

44

48 std::optionalReloc::Model RM,

49 std::optionalCodeModel::Model CM,

55 this->TLOF = std::make_unique();

57}

58

59namespace {

60

62public:

65

66 AVRTargetMachine &getAVRTargetMachine() const {

67 return getTM();

68 }

69

70 void addIRPasses() override;

71 bool addInstSelector() override;

72 void addPreSched2() override;

73 void addPreEmitPass() override;

74};

75}

76

78 return new AVRPassConfig(*this, PM);

79}

80

81void AVRPassConfig::addIRPasses() {

82

83

84

86

88}

89

91

93

98}

99

101 return &SubTarget;

102}

103

105 return &SubTarget;

106}

107

111 return AVRMachineFunctionInfo::create(Allocator, F,

113}

114

115

116

117

118

119bool AVRPassConfig::addInstSelector() {

120

121 addPass(createAVRISelDag(getAVRTargetMachine(), getOptLevel()));

122

124

125 return false;

126}

127

128void AVRPassConfig::addPreSched2() {

130}

131

132void AVRPassConfig::addPreEmitPass() {

133

135}

136

137}

#define LLVM_EXTERNAL_VISIBILITY

static GCMetadataPrinterRegistry::Add< ErlangGCPrinter > X("erlang", "erlang-compatible garbage collector")

Target-Independent Code Generator Pass Configuration Options pass.

A specific AVR target MCU.

A generic AVR implementation.

const AVRSubtarget * getSubtargetImpl() const

TargetPassConfig * createPassConfig(PassManagerBase &PM) override

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

AVRTargetMachine(const Target &T, const Triple &TT, StringRef CPU, StringRef FS, const TargetOptions &Options, std::optional< Reloc::Model > RM, std::optional< CodeModel::Model > CM, CodeGenOptLevel OL, bool JIT)

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

Create the target's instance of MachineFunctionInfo.

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

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

static PassRegistry * getPassRegistry()

getPassRegistry - Access the global registry object, which is automatically initialized at applicatio...

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

constexpr bool empty() const

empty - Check if the string is empty.

std::unique_ptr< const MCSubtargetInfo > STI

Target-Independent Code Generator Pass Configuration Options.

virtual void addIRPasses()

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

TargetSubtargetInfo - Generic base class for all target subtargets.

Target - Wrapper for Target specific information.

Triple - Helper class for working with autoconf configuration names.

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

This is an optimization pass for GlobalISel generic memory operations.

void initializeAVRShiftExpandPass(PassRegistry &)

void initializeAVRExpandPseudoPass(PassRegistry &)

Target & getTheAVRTarget()

static StringRef getCPU(StringRef CPU)

Processes a CPU name.

FunctionPass * createAVRFrameAnalyzerPass()

Creates instance of the frame analyzer pass.

FunctionPass * createAVRISelDag(AVRTargetMachine &TM, CodeGenOptLevel OptLevel)

static Reloc::Model getEffectiveRelocModel(std::optional< Reloc::Model > RM)

CodeModel::Model getEffectiveCodeModel(std::optional< CodeModel::Model > CM, CodeModel::Model Default)

Helper method for getting the code model, returning Default if CM does not have a value.

FunctionPass * createAVRExpandPseudoPass()

char & BranchRelaxationPassID

BranchRelaxation - This pass replaces branches that need to jump further than is supported by a branc...

void initializeAVRDAGToDAGISelLegacyPass(PassRegistry &)

CodeGenOptLevel

Code generation optimization level.

LLVM_EXTERNAL_VISIBILITY void LLVMInitializeAVRTarget()

static const char * AVRDataLayout

Pass * createAVRShiftExpandPass()

Implement std::hash so that hash_code can be used in STL containers.

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

RegisterTargetMachine - Helper template for registering a target machine implementation,...