BPFMCTargetDesc.h revision 353358
1//===-- BPFMCTargetDesc.h - BPF Target Descriptions -------------*- C++ -*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8//
9// This file provides BPF specific target descriptions.
10//
11//===----------------------------------------------------------------------===//
12
13#ifndef LLVM_LIB_TARGET_BPF_MCTARGETDESC_BPFMCTARGETDESC_H
14#define LLVM_LIB_TARGET_BPF_MCTARGETDESC_BPFMCTARGETDESC_H
15
16#include "llvm/Config/config.h"
17#include "llvm/Support/DataTypes.h"
18
19#include <memory>
20
21namespace llvm {
22class MCAsmBackend;
23class MCCodeEmitter;
24class MCContext;
25class MCInstrInfo;
26class MCObjectTargetWriter;
27class MCRegisterInfo;
28class MCSubtargetInfo;
29class MCTargetOptions;
30class StringRef;
31class Target;
32class Triple;
33class raw_ostream;
34class raw_pwrite_stream;
35
36MCCodeEmitter *createBPFMCCodeEmitter(const MCInstrInfo &MCII,
37                                      const MCRegisterInfo &MRI,
38                                      MCContext &Ctx);
39MCCodeEmitter *createBPFbeMCCodeEmitter(const MCInstrInfo &MCII,
40                                        const MCRegisterInfo &MRI,
41                                        MCContext &Ctx);
42
43MCAsmBackend *createBPFAsmBackend(const Target &T, const MCSubtargetInfo &STI,
44                                  const MCRegisterInfo &MRI,
45                                  const MCTargetOptions &Options);
46MCAsmBackend *createBPFbeAsmBackend(const Target &T, const MCSubtargetInfo &STI,
47                                    const MCRegisterInfo &MRI,
48                                    const MCTargetOptions &Options);
49
50std::unique_ptr<MCObjectTargetWriter> createBPFELFObjectWriter(uint8_t OSABI);
51}
52
53// Defines symbolic names for BPF registers.  This defines a mapping from
54// register name to register number.
55//
56#define GET_REGINFO_ENUM
57#include "BPFGenRegisterInfo.inc"
58
59// Defines symbolic names for the BPF instructions.
60//
61#define GET_INSTRINFO_ENUM
62#include "BPFGenInstrInfo.inc"
63
64#define GET_SUBTARGETINFO_ENUM
65#include "BPFGenSubtargetInfo.inc"
66
67#endif
68