LLVM: lib/Target/Lanai/MCTargetDesc/LanaiMCTargetDesc.cpp Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

28#include

29#include

30

31#define GET_INSTRINFO_MC_DESC

32#define ENABLE_INSTR_PREDICATE_VERIFIER

33#include "LanaiGenInstrInfo.inc"

34

35#define GET_SUBTARGETINFO_MC_DESC

36#include "LanaiGenSubtargetInfo.inc"

37

38#define GET_REGINFO_MC_DESC

39#include "LanaiGenRegisterInfo.inc"

40

41using namespace llvm;

42

45 InitLanaiMCInstrInfo(X);

46 return X;

47}

48

51 InitLanaiMCRegisterInfo(X, Lanai::RCA, 0, 0, Lanai::PC);

52 return X;

53}

54

57 std::string CPUName = std::string(CPU);

58 if (CPUName.empty())

59 CPUName = "generic";

60

61 return createLanaiMCSubtargetInfoImpl(TT, CPUName, CPUName, FS);

62}

63

65 std::unique_ptr &&MAB,

66 std::unique_ptr &&OW,

67 std::unique_ptr &&Emitter) {

68 if (T.isOSBinFormatELF())

70

73}

74

76 unsigned SyntaxVariant,

80 if (SyntaxVariant == 0)

82 return nullptr;

83}

84

89

90namespace {

91

93public:

94 explicit LanaiMCInstrAnalysis(const MCInstrInfo *Info)

95 : MCInstrAnalysis(Info) {}

96

97 bool evaluateBranch(const MCInst &Inst, uint64_t Addr, uint64_t Size,

98 uint64_t &Target) const override {

100 return false;

102 !isCall(Inst))

103 return false;

104

105 if (Info->get(Inst.getOpcode()).operands()[0].OperandType ==

109 return true;

110 } else {

112

113

114

115 if (Imm == 0)

116 return false;

117

119 return true;

120 }

121 }

122};

123

124}

125

127 return new LanaiMCInstrAnalysis(Info);

128}

129

132

134

135

138

139

142

143

146

147

150

151

154

155

158

159

161

162

165

166

169}

unsigned const MachineRegisterInfo * MRI

static bool isUnconditionalBranch(Instruction *Term)

static MCStreamer * createMCStreamer(const Triple &T, MCContext &Context, std::unique_ptr< MCAsmBackend > &&MAB, std::unique_ptr< MCObjectWriter > &&OW, std::unique_ptr< MCCodeEmitter > &&Emitter)

Analysis containing CSE Info

#define LLVM_EXTERNAL_VISIBILITY

dxil DXContainer Global Emitter

static MCInstrAnalysis * createLanaiInstrAnalysis(const MCInstrInfo *Info)

Definition LanaiMCTargetDesc.cpp:126

static MCInstrInfo * createLanaiMCInstrInfo()

Definition LanaiMCTargetDesc.cpp:43

static MCSubtargetInfo * createLanaiMCSubtargetInfo(const Triple &TT, StringRef CPU, StringRef FS)

Definition LanaiMCTargetDesc.cpp:56

static MCStreamer * createMCStreamer(const Triple &T, MCContext &Context, std::unique_ptr< MCAsmBackend > &&MAB, std::unique_ptr< MCObjectWriter > &&OW, std::unique_ptr< MCCodeEmitter > &&Emitter)

Definition LanaiMCTargetDesc.cpp:64

static MCInstPrinter * createLanaiMCInstPrinter(const Triple &, unsigned SyntaxVariant, const MCAsmInfo &MAI, const MCInstrInfo &MII, const MCRegisterInfo &MRI)

Definition LanaiMCTargetDesc.cpp:75

static MCRelocationInfo * createLanaiElfRelocation(const Triple &TheTriple, MCContext &Ctx)

Definition LanaiMCTargetDesc.cpp:85

static MCRegisterInfo * createLanaiMCRegisterInfo(const Triple &)

Definition LanaiMCTargetDesc.cpp:49

LLVM_ABI LLVM_EXTERNAL_VISIBILITY void LLVMInitializeLanaiTargetMC()

Definition LanaiMCTargetDesc.cpp:131

static TableGen::Emitter::OptClass< SkeletonEmitter > X("gen-skeleton-class", "Generate example skeleton class")

This class is intended to be used as a base class for asm properties and features specific to the tar...

Context object for machine code objects.

This is an instance of a target assembly language printer that converts an MCInst to valid target ass...

unsigned getNumOperands() const

unsigned getOpcode() const

const MCOperand & getOperand(unsigned i) const

Interface to description of machine instruction set.

MCRegisterInfo base class - We assume that the target defines a static array of MCRegisterDesc object...

Create MCExprs from relocations found in an object file.

Streaming machine code generation interface.

Generic base class for all target subtargets.

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

Triple - Helper class for working with autoconf configuration names.

#define llvm_unreachable(msg)

Marks that the current location is not supposed to be reachable.

This is an optimization pass for GlobalISel generic memory operations.

MCCodeEmitter * createLanaiMCCodeEmitter(const MCInstrInfo &MCII, MCContext &Ctx)

LLVM_ABI MCStreamer * createELFStreamer(MCContext &Ctx, std::unique_ptr< MCAsmBackend > &&TAB, std::unique_ptr< MCObjectWriter > &&OW, std::unique_ptr< MCCodeEmitter > &&CE)

Target & getTheLanaiTarget()

LLVM_ABI MCRelocationInfo * createMCRelocationInfo(const Triple &TT, MCContext &Ctx)

MCAsmBackend * createLanaiAsmBackend(const Target &T, const MCSubtargetInfo &STI, const MCRegisterInfo &MRI, const MCTargetOptions &Options)

RegisterMCAsmInfo - Helper template for registering a target assembly info implementation.

static void RegisterMCRegInfo(Target &T, Target::MCRegInfoCtorFnTy Fn)

RegisterMCRegInfo - Register a MCRegisterInfo implementation for the given target.

static void RegisterMCAsmBackend(Target &T, Target::MCAsmBackendCtorTy Fn)

RegisterMCAsmBackend - Register a MCAsmBackend implementation for the given target.

static void RegisterMCCodeEmitter(Target &T, Target::MCCodeEmitterCtorTy Fn)

RegisterMCCodeEmitter - Register a MCCodeEmitter implementation for the given target.

static void RegisterMCSubtargetInfo(Target &T, Target::MCSubtargetInfoCtorFnTy Fn)

RegisterMCSubtargetInfo - Register a MCSubtargetInfo implementation for the given target.

static void RegisterMCInstrAnalysis(Target &T, Target::MCInstrAnalysisCtorFnTy Fn)

RegisterMCInstrAnalysis - Register a MCInstrAnalysis implementation for the given target.

static void RegisterELFStreamer(Target &T, Target::ELFStreamerCtorTy Fn)

static void RegisterMCInstPrinter(Target &T, Target::MCInstPrinterCtorTy Fn)

RegisterMCInstPrinter - Register a MCInstPrinter implementation for the given target.

static void RegisterMCInstrInfo(Target &T, Target::MCInstrInfoCtorFnTy Fn)

RegisterMCInstrInfo - Register a MCInstrInfo implementation for the given target.

static void RegisterMCRelocationInfo(Target &T, Target::MCRelocationInfoCtorTy Fn)

RegisterMCRelocationInfo - Register an MCRelocationInfo implementation for the given target.