BPFMCTargetDesc.h revision 321369
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
20283625Sdimnamespace llvm {
21283625Sdimclass MCAsmBackend;
22283625Sdimclass MCCodeEmitter;
23283625Sdimclass MCContext;
24283625Sdimclass MCInstrInfo;
25283625Sdimclass MCObjectWriter;
26283625Sdimclass MCRegisterInfo;
27283625Sdimclass MCSubtargetInfo;
28314564Sdimclass MCTargetOptions;
29284734Sdimclass StringRef;
30283625Sdimclass Target;
31284734Sdimclass Triple;
32283625Sdimclass raw_ostream;
33283625Sdimclass raw_pwrite_stream;
34283625Sdim
35314564SdimTarget &getTheBPFleTarget();
36314564SdimTarget &getTheBPFbeTarget();
37314564SdimTarget &getTheBPFTarget();
38283625Sdim
39283625SdimMCCodeEmitter *createBPFMCCodeEmitter(const MCInstrInfo &MCII,
40283625Sdim                                      const MCRegisterInfo &MRI,
41283625Sdim                                      MCContext &Ctx);
42284236SdimMCCodeEmitter *createBPFbeMCCodeEmitter(const MCInstrInfo &MCII,
43284236Sdim                                        const MCRegisterInfo &MRI,
44284236Sdim                                        MCContext &Ctx);
45283625Sdim
46283625SdimMCAsmBackend *createBPFAsmBackend(const Target &T, const MCRegisterInfo &MRI,
47314564Sdim                                  const Triple &TT, StringRef CPU,
48314564Sdim                                  const MCTargetOptions &Options);
49284236SdimMCAsmBackend *createBPFbeAsmBackend(const Target &T, const MCRegisterInfo &MRI,
50314564Sdim                                    const Triple &TT, StringRef CPU,
51314564Sdim                                    const MCTargetOptions &Options);
52283625Sdim
53284236SdimMCObjectWriter *createBPFELFObjectWriter(raw_pwrite_stream &OS,
54284236Sdim                                         uint8_t OSABI, bool IsLittleEndian);
55285181Sdim}
56283625Sdim
57283625Sdim// Defines symbolic names for BPF registers.  This defines a mapping from
58283625Sdim// register name to register number.
59283625Sdim//
60283625Sdim#define GET_REGINFO_ENUM
61283625Sdim#include "BPFGenRegisterInfo.inc"
62283625Sdim
63283625Sdim// Defines symbolic names for the BPF instructions.
64283625Sdim//
65283625Sdim#define GET_INSTRINFO_ENUM
66283625Sdim#include "BPFGenInstrInfo.inc"
67283625Sdim
68283625Sdim#define GET_SUBTARGETINFO_ENUM
69283625Sdim#include "BPFGenSubtargetInfo.inc"
70283625Sdim
71283625Sdim#endif
72