LLVM: lib/Target/AArch64/AArch64TargetMachine.h Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

13#ifndef LLVM_LIB_TARGET_AARCH64_AARCH64TARGETMACHINE_H

14#define LLVM_LIB_TARGET_AARCH64_AARCH64TARGETMACHINE_H

15

20#include

21

22namespace llvm {

23

25protected:

26 std::unique_ptr TLOF;

28

29

30 void reset() override;

31

32public:

35 std::optionalReloc::Model RM,

37 bool JIT, bool IsLittleEndian);

38

41

42

43

45

46

48

50

52

54 return TLOF.get();

55 }

56

60

67 SMRange &SourceRange) const override;

68

69

75

78

81

82

84

85private:

86 bool isLittle;

87 bool UseNewSMEABILowering;

88};

89

90

91

93 virtual void anchor();

94

95public:

98 std::optionalReloc::Model RM,

100 bool JIT);

101};

102

103

104

106 virtual void anchor();

107

108public:

111 std::optionalReloc::Model RM,

113 bool JIT);

114};

115

116}

117

118#endif

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

size_t clearLinkerOptimizationHints(const SmallPtrSetImpl< MachineInstr * > &MIs) const override

Remove all Linker Optimization Hints (LOH) associated with instructions in MIs and.

bool isNoopAddrSpaceCast(unsigned SrcAS, unsigned DestAS) const override

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

Definition AArch64TargetMachine.h:70

StringMap< std::unique_ptr< AArch64Subtarget > > SubtargetMap

Definition AArch64TargetMachine.h:27

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

Create the target's instance of MachineFunctionInfo.

void registerPassBuilderCallbacks(PassBuilder &PB) override

Allow the target to modify the pass pipeline.

const AArch64Subtarget * getSubtargetImpl() const =delete

yaml::MachineFunctionInfo * createDefaultFuncInfoYAML() const override

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

ScheduleDAGInstrs * createPostMachineScheduler(MachineSchedContext *C) const override

Similar to createMachineScheduler but used when postRA machine scheduling is enabled.

~AArch64TargetMachine() override

std::unique_ptr< TargetLoweringObjectFile > TLOF

Definition AArch64TargetMachine.h:26

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

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

bool useNewSMEABILowering() const

Returns true if the new SME ABI lowering should be used.

Definition AArch64TargetMachine.h:83

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

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

TargetPassConfig * createPassConfig(PassManagerBase &PM) override

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

void reset() override

Reset internal state.

AArch64TargetMachine(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 IsLittleEndian)

Create an AArch64 architecture model.

ScheduleDAGInstrs * createMachineScheduler(MachineSchedContext *C) const override

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

TargetLoweringObjectFile * getObjFileLowering() const override

Definition AArch64TargetMachine.h:53

TargetTransformInfo getTargetTransformInfo(const Function &F) const override

Return a TargetTransformInfo for a given function.

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

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

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

Lightweight error class with error context and mandatory checking.

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.

A templated base class for SmallPtrSet which provides the typesafe interface that is common across al...

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.

unsigned getPointerSize(unsigned AS) const

Get the pointer size for this target.

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.

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

@ C

The default llvm calling convention, compatible with C.

This is an optimization pass for GlobalISel generic memory operations.

CodeGenOptLevel

Code generation optimization level.

BumpPtrAllocatorImpl<> BumpPtrAllocator

The standard BumpPtrAllocator which just uses the default template parameters.

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

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