BPFMCTargetDesc.h revision 327952
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;
27283625Sdimclass MCObjectWriter;
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
55327952Sdimstd::unique_ptr<MCObjectWriter> createBPFELFObjectWriter(raw_pwrite_stream &OS,
56327952Sdim                                                         uint8_t OSABI,
57327952Sdim                                                         bool IsLittleEndian);
58285181Sdim}
59283625Sdim
60283625Sdim// Defines symbolic names for BPF registers.  This defines a mapping from
61283625Sdim// register name to register number.
62283625Sdim//
63283625Sdim#define GET_REGINFO_ENUM
64283625Sdim#include "BPFGenRegisterInfo.inc"
65283625Sdim
66283625Sdim// Defines symbolic names for the BPF instructions.
67283625Sdim//
68283625Sdim#define GET_INSTRINFO_ENUM
69283625Sdim#include "BPFGenInstrInfo.inc"
70283625Sdim
71283625Sdim#define GET_SUBTARGETINFO_ENUM
72283625Sdim#include "BPFGenSubtargetInfo.inc"
73283625Sdim
74283625Sdim#endif
75