LLVM: lib/Target/VE/VETargetMachine.cpp Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

14#include "VE.h"

22#include

23

24using namespace llvm;

25

26#define DEBUG_TYPE "ve"

27

29

31

34}

35

37

38 std::string Ret = "e";

39

40

41 Ret += "-m:e";

42

43

44 Ret += "-i64:64";

45

46

47 Ret += "-n32:64";

48

49

50 Ret += "-S128";

51

52

53

54

55 Ret += "-v64:64:64";

56 Ret += "-v128:64:64";

57 Ret += "-v256:64:64";

58 Ret += "-v512:64:64";

59 Ret += "-v1024:64:64";

60 Ret += "-v2048:64:64";

61 Ret += "-v4096:64:64";

62 Ret += "-v8192:64:64";

63 Ret += "-v16384:64:64";

64

65 return Ret;

66}

67

70}

71

72namespace {

77 }

78};

79}

80

81static std::unique_ptr createTLOF() {

82 return std::make_unique();

83}

84

85

89 std::optionalReloc::Model RM,

90 std::optionalCodeModel::Model CM,

98}

99

101

105}

106

110 return VEMachineFunctionInfo::create(Allocator, F,

112}

113

114namespace {

115

117public:

120

122 return getTM();

123 }

124

125 void addIRPasses() override;

126 bool addInstSelector() override;

127 void addPreEmitPass() override;

128};

129}

130

132 return new VEPassConfig(*this, PM);

133}

134

135void VEPassConfig::addIRPasses() {

136

139}

140

141bool VEPassConfig::addInstSelector() {

143 return false;

144}

145

146void VEPassConfig::addPreEmitPass() {

147

149}

#define LLVM_EXTERNAL_VISIBILITY

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

static std::string computeDataLayout()

Target-Independent Code Generator Pass Configuration Options pass.

LLVM_EXTERNAL_VISIBILITY void LLVMInitializeVETarget()

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

static std::unique_ptr< TargetLoweringObjectFile > createTLOF()

This file a TargetTransformInfo::Concept conforming object specific to the VE target machine.

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

Context object for machine code objects.

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

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.

void Initialize(MCContext &Ctx, const TargetMachine &TM) override

This method must be called before any actual lowering is done.

void InitializeELF(bool UseInitArray_)

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

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.

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.

~VETargetMachine() override

VETargetMachine(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)

Create an Aurora VE architecture model.

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

Create the target's instance of MachineFunctionInfo.

TargetPassConfig * createPassConfig(PassManagerBase &PM) override

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

TargetTransformInfo getTargetTransformInfo(const Function &F) const override

Get a TargetTransformInfo implementation for the target.

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 initializeVEDAGToDAGISelLegacyPass(PassRegistry &)

FunctionPass * createLVLGenPass()

FunctionPass * createVEISelDag(VETargetMachine &TM)

createVEISelDag - This pass converts a legalized DAG into a VE-specific DAG, ready for instruction sc...

Target & getTheVETarget()

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.

CodeGenOptLevel

Code generation optimization level.

FunctionPass * createAtomicExpandLegacyPass()

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

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