1283625Sdim//===-- BPFMCTargetDesc.h - BPF Target Descriptions -------------*- C++ -*-===// 2283625Sdim// 3353358Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4353358Sdim// See https://llvm.org/LICENSE.txt for license information. 5353358Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6283625Sdim// 7283625Sdim//===----------------------------------------------------------------------===// 8283625Sdim// 9283625Sdim// This file provides BPF specific target descriptions. 10283625Sdim// 11283625Sdim//===----------------------------------------------------------------------===// 12283625Sdim 13283625Sdim#ifndef LLVM_LIB_TARGET_BPF_MCTARGETDESC_BPFMCTARGETDESC_H 14283625Sdim#define LLVM_LIB_TARGET_BPF_MCTARGETDESC_BPFMCTARGETDESC_H 15283625Sdim 16321369Sdim#include "llvm/Config/config.h" 17283625Sdim#include "llvm/Support/DataTypes.h" 18283625Sdim 19327952Sdim#include <memory> 20327952Sdim 21283625Sdimnamespace llvm { 22283625Sdimclass MCAsmBackend; 23283625Sdimclass MCCodeEmitter; 24283625Sdimclass MCContext; 25283625Sdimclass MCInstrInfo; 26341825Sdimclass MCObjectTargetWriter; 27283625Sdimclass MCRegisterInfo; 28283625Sdimclass MCSubtargetInfo; 29314564Sdimclass MCTargetOptions; 30284734Sdimclass StringRef; 31283625Sdimclass Target; 32284734Sdimclass Triple; 33283625Sdimclass raw_ostream; 34283625Sdimclass raw_pwrite_stream; 35283625Sdim 36283625SdimMCCodeEmitter *createBPFMCCodeEmitter(const MCInstrInfo &MCII, 37283625Sdim const MCRegisterInfo &MRI, 38283625Sdim MCContext &Ctx); 39284236SdimMCCodeEmitter *createBPFbeMCCodeEmitter(const MCInstrInfo &MCII, 40284236Sdim const MCRegisterInfo &MRI, 41284236Sdim MCContext &Ctx); 42283625Sdim 43327952SdimMCAsmBackend *createBPFAsmBackend(const Target &T, const MCSubtargetInfo &STI, 44327952Sdim const MCRegisterInfo &MRI, 45314564Sdim const MCTargetOptions &Options); 46327952SdimMCAsmBackend *createBPFbeAsmBackend(const Target &T, const MCSubtargetInfo &STI, 47327952Sdim const MCRegisterInfo &MRI, 48314564Sdim const MCTargetOptions &Options); 49283625Sdim 50341825Sdimstd::unique_ptr<MCObjectTargetWriter> createBPFELFObjectWriter(uint8_t OSABI); 51285181Sdim} 52283625Sdim 53283625Sdim// Defines symbolic names for BPF registers. This defines a mapping from 54283625Sdim// register name to register number. 55283625Sdim// 56283625Sdim#define GET_REGINFO_ENUM 57283625Sdim#include "BPFGenRegisterInfo.inc" 58283625Sdim 59283625Sdim// Defines symbolic names for the BPF instructions. 60283625Sdim// 61283625Sdim#define GET_INSTRINFO_ENUM 62283625Sdim#include "BPFGenInstrInfo.inc" 63283625Sdim 64283625Sdim#define GET_SUBTARGETINFO_ENUM 65283625Sdim#include "BPFGenSubtargetInfo.inc" 66283625Sdim 67283625Sdim#endif 68