LLVM: lib/Target/Xtensa/XtensaTargetMachine.cpp Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

24#include

25

26using namespace llvm;

27

34

36 std::optionalReloc::Model RM) {

37 if (!RM || JIT)

39 return *RM;

40}

41

45 std::optionalReloc::Model RM,

46 std::optionalCodeModel::Model CM,

48 bool IsLittle)

54}

55

59 std::optionalReloc::Model RM,

60 std::optionalCodeModel::Model CM,

63

66 Attribute CPUAttr = F.getFnAttribute("target-cpu");

67 Attribute FSAttr = F.getFnAttribute("target-features");

68

71

73 if (I) {

74

75

76

78 I = std::make_unique(TargetTriple, CPU, FS, *this);

79 }

80 return I.get();

81}

82

89

90namespace {

91

93public:

96

99 }

100

101 bool addInstSelector() override;

102 void addIRPasses() override;

103 void addPreEmitPass() override;

104};

105}

106

107bool XtensaPassConfig::addInstSelector() {

109 return false;

110}

111

112void XtensaPassConfig::addIRPasses() {

115}

116

118

120 return new XtensaPassConfig(*this, PM);

121}

static Reloc::Model getEffectiveRelocModel()

static GCRegistry::Add< ErlangGC > A("erlang", "erlang-compatible garbage collector")

#define LLVM_EXTERNAL_VISIBILITY

const GCNTargetMachine & getTM(const GCNSubtarget *STI)

Target-Independent Code Generator Pass Configuration Options pass.

LLVM_EXTERNAL_VISIBILITY void LLVMInitializeXtensaTarget()

Definition XtensaTargetMachine.cpp:28

Functions, function parameters, and return types can have attributes to indicate how they should be t...

LLVM_ABI StringRef getValueAsString() const

Return the attribute's value as a string.

bool isValid() const

Return true if the attribute is any kind of attribute.

CodeGenTargetMachineImpl(const Target &T, StringRef DataLayoutString, const Triple &TT, StringRef CPU, StringRef FS, const TargetOptions &Options, Reloc::Model RM, CodeModel::Model CM, CodeGenOptLevel OL)

PassRegistry - This class manages the registration and intitialization of the pass subsystem as appli...

static LLVM_ABI PassRegistry * getPassRegistry()

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

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

std::string str() const

str - Get the contents as an std::string.

Triple TargetTriple

Triple string, CPU name, and target feature strings the TargetMachine instance is created with.

std::unique_ptr< const MCSubtargetInfo > STI

void resetTargetOptions(const Function &F) const

Reset the target options based on the function's attributes.

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.

TargetPassConfig * createPassConfig(PassManagerBase &PM) override

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

Definition XtensaTargetMachine.cpp:119

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

Create the target's instance of MachineFunctionInfo.

Definition XtensaTargetMachine.cpp:83

StringMap< std::unique_ptr< XtensaSubtarget > > SubtargetMap

XtensaTargetMachine(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, bool isLittle)

Definition XtensaTargetMachine.cpp:42

const XtensaSubtarget * getSubtargetImpl(const Function &F) const override

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

Definition XtensaTargetMachine.cpp:65

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.

FunctionPass * createXtensaISelDag(XtensaTargetMachine &TM, CodeGenOptLevel OptLevel)

void initializeXtensaAsmPrinterPass(PassRegistry &)

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.

LLVM_ABI char & BranchRelaxationPassID

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

Target & getTheXtensaTarget()

CodeGenOptLevel

Code generation optimization level.

LLVM_ABI FunctionPass * createAtomicExpandLegacyPass()

AtomicExpandPass - At IR level this pass replace atomic instructions with __atomic_* library calls,...

BumpPtrAllocatorImpl<> BumpPtrAllocator

The standard BumpPtrAllocator which just uses the default template parameters.

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...

static FuncInfoTy * create(BumpPtrAllocator &Allocator, const Function &F, const SubtargetTy *STI)

Factory function: default behavior is to call new using the supplied allocator.

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