BPFMCTargetDesc.h revision 341825
1283625Sdim//===-- BPFMCTargetDesc.h - BPF Target Descriptions -------------*- C++ -*-===//
2283625Sdim//
3283625Sdim//                     The LLVM Compiler Infrastructure
4283625Sdim//
5283625Sdim// This file is distributed under the University of Illinois Open Source
6283625Sdim// License. See LICENSE.TXT for details.
7283625Sdim//
8283625Sdim//===----------------------------------------------------------------------===//
9283625Sdim//
10283625Sdim// This file provides BPF specific target descriptions.
11283625Sdim//
12283625Sdim//===----------------------------------------------------------------------===//
13283625Sdim
14283625Sdim#ifndef LLVM_LIB_TARGET_BPF_MCTARGETDESC_BPFMCTARGETDESC_H
15283625Sdim#define LLVM_LIB_TARGET_BPF_MCTARGETDESC_BPFMCTARGETDESC_H
16283625Sdim
17321369Sdim#include "llvm/Config/config.h"
18283625Sdim#include "llvm/Support/DataTypes.h"
19283625Sdim
20327952Sdim#include <memory>
21327952Sdim
22283625Sdimnamespace llvm {
23283625Sdimclass MCAsmBackend;
24283625Sdimclass MCCodeEmitter;
25283625Sdimclass MCContext;
26283625Sdimclass MCInstrInfo;
27341825Sdimclass MCObjectTargetWriter;
28283625Sdimclass MCRegisterInfo;
29283625Sdimclass MCSubtargetInfo;
30314564Sdimclass MCTargetOptions;
31284734Sdimclass StringRef;
32283625Sdimclass Target;
33284734Sdimclass Triple;
34283625Sdimclass raw_ostream;
35283625Sdimclass raw_pwrite_stream;
36283625Sdim
37314564SdimTarget &getTheBPFleTarget();
38314564SdimTarget &getTheBPFbeTarget();
39314564SdimTarget &getTheBPFTarget();
40283625Sdim
41283625SdimMCCodeEmitter *createBPFMCCodeEmitter(const MCInstrInfo &MCII,
42283625Sdim                                      const MCRegisterInfo &MRI,
43283625Sdim                                      MCContext &Ctx);
44284236SdimMCCodeEmitter *createBPFbeMCCodeEmitter(const MCInstrInfo &MCII,
45284236Sdim                                        const MCRegisterInfo &MRI,
46284236Sdim                                        MCContext &Ctx);
47283625Sdim
48327952SdimMCAsmBackend *createBPFAsmBackend(const Target &T, const MCSubtargetInfo &STI,
49327952Sdim                                  const MCRegisterInfo &MRI,
50314564Sdim                                  const MCTargetOptions &Options);
51327952SdimMCAsmBackend *createBPFbeAsmBackend(const Target &T, const MCSubtargetInfo &STI,
52327952Sdim                                    const MCRegisterInfo &MRI,
53314564Sdim                                    const MCTargetOptions &Options);
54283625Sdim
55341825Sdimstd::unique_ptr<MCObjectTargetWriter> createBPFELFObjectWriter(uint8_t OSABI);
56285181Sdim}
57283625Sdim
58283625Sdim// Defines symbolic names for BPF registers.  This defines a mapping from
59283625Sdim// register name to register number.
60283625Sdim//
61283625Sdim#define GET_REGINFO_ENUM
62283625Sdim#include "BPFGenRegisterInfo.inc"
63283625Sdim
64283625Sdim// Defines symbolic names for the BPF instructions.
65283625Sdim//
66283625Sdim#define GET_INSTRINFO_ENUM
67283625Sdim#include "BPFGenInstrInfo.inc"
68283625Sdim
69283625Sdim#define GET_SUBTARGETINFO_ENUM
70283625Sdim#include "BPFGenSubtargetInfo.inc"
71283625Sdim
72283625Sdim#endif
73