BPFMCTargetDesc.h revision 284734
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
17283625Sdim#include "llvm/Support/DataTypes.h"
18283625Sdim#include "llvm/Config/config.h"
19283625Sdim
20283625Sdimnamespace llvm {
21283625Sdimclass MCAsmBackend;
22283625Sdimclass MCCodeEmitter;
23283625Sdimclass MCContext;
24283625Sdimclass MCInstrInfo;
25283625Sdimclass MCObjectWriter;
26283625Sdimclass MCRegisterInfo;
27283625Sdimclass MCSubtargetInfo;
28284734Sdimclass StringRef;
29283625Sdimclass Target;
30284734Sdimclass Triple;
31283625Sdimclass raw_ostream;
32283625Sdimclass raw_pwrite_stream;
33283625Sdim
34284236Sdimextern Target TheBPFleTarget;
35284236Sdimextern Target TheBPFbeTarget;
36283625Sdimextern Target TheBPFTarget;
37283625Sdim
38283625SdimMCCodeEmitter *createBPFMCCodeEmitter(const MCInstrInfo &MCII,
39283625Sdim                                      const MCRegisterInfo &MRI,
40283625Sdim                                      MCContext &Ctx);
41284236SdimMCCodeEmitter *createBPFbeMCCodeEmitter(const MCInstrInfo &MCII,
42284236Sdim                                        const MCRegisterInfo &MRI,
43284236Sdim                                        MCContext &Ctx);
44283625Sdim
45283625SdimMCAsmBackend *createBPFAsmBackend(const Target &T, const MCRegisterInfo &MRI,
46284734Sdim                                  const Triple &TT, StringRef CPU);
47284236SdimMCAsmBackend *createBPFbeAsmBackend(const Target &T, const MCRegisterInfo &MRI,
48284734Sdim                                    const Triple &TT, StringRef CPU);
49283625Sdim
50284236SdimMCObjectWriter *createBPFELFObjectWriter(raw_pwrite_stream &OS,
51284236Sdim                                         uint8_t OSABI, bool IsLittleEndian);
52284734Sdim} // namespace llvm
53283625Sdim
54283625Sdim// Defines symbolic names for BPF registers.  This defines a mapping from
55283625Sdim// register name to register number.
56283625Sdim//
57283625Sdim#define GET_REGINFO_ENUM
58283625Sdim#include "BPFGenRegisterInfo.inc"
59283625Sdim
60283625Sdim// Defines symbolic names for the BPF instructions.
61283625Sdim//
62283625Sdim#define GET_INSTRINFO_ENUM
63283625Sdim#include "BPFGenInstrInfo.inc"
64283625Sdim
65283625Sdim#define GET_SUBTARGETINFO_ENUM
66283625Sdim#include "BPFGenSubtargetInfo.inc"
67283625Sdim
68283625Sdim#endif
69