1303231Sdim//===-- LanaiMCTargetDesc.h - Lanai Target Descriptions ---------*- C++ -*-===//
2303231Sdim//
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
6303231Sdim//
7303231Sdim//===----------------------------------------------------------------------===//
8303231Sdim//
9303231Sdim// This file provides Lanai specific target descriptions.
10303231Sdim//
11303231Sdim//===----------------------------------------------------------------------===//
12303231Sdim
13303231Sdim#ifndef LLVM_LIB_TARGET_LANAI_MCTARGETDESC_LANAIMCTARGETDESC_H
14303231Sdim#define LLVM_LIB_TARGET_LANAI_MCTARGETDESC_LANAIMCTARGETDESC_H
15303231Sdim
16303231Sdim#include "llvm/MC/MCRegisterInfo.h"
17314564Sdim#include "llvm/MC/MCTargetOptions.h"
18303231Sdim#include "llvm/Support/DataTypes.h"
19303231Sdim
20303231Sdimnamespace llvm {
21303231Sdimclass MCAsmBackend;
22303231Sdimclass MCCodeEmitter;
23303231Sdimclass MCContext;
24303231Sdimclass MCInstrInfo;
25303231Sdimclass MCInstrAnalysis;
26341825Sdimclass MCObjectTargetWriter;
27303231Sdimclass MCRelocationInfo;
28303231Sdimclass MCSubtargetInfo;
29303231Sdimclass Target;
30303231Sdimclass Triple;
31303231Sdimclass StringRef;
32303231Sdimclass raw_pwrite_stream;
33303231Sdim
34303231SdimMCCodeEmitter *createLanaiMCCodeEmitter(const MCInstrInfo &MCII,
35303231Sdim                                        const MCRegisterInfo &MRI,
36303231Sdim                                        MCContext &Ctx);
37303231Sdim
38327952SdimMCAsmBackend *createLanaiAsmBackend(const Target &T, const MCSubtargetInfo &STI,
39327952Sdim                                    const MCRegisterInfo &MRI,
40314564Sdim                                    const MCTargetOptions &Options);
41303231Sdim
42341825Sdimstd::unique_ptr<MCObjectTargetWriter> createLanaiELFObjectWriter(uint8_t OSABI);
43303231Sdim} // namespace llvm
44303231Sdim
45303231Sdim// Defines symbolic names for Lanai registers.  This defines a mapping from
46303231Sdim// register name to register number.
47303231Sdim#define GET_REGINFO_ENUM
48303231Sdim#include "LanaiGenRegisterInfo.inc"
49303231Sdim
50303231Sdim// Defines symbolic names for the Lanai instructions.
51303231Sdim#define GET_INSTRINFO_ENUM
52303231Sdim#include "LanaiGenInstrInfo.inc"
53303231Sdim
54303231Sdim#define GET_SUBTARGETINFO_ENUM
55303231Sdim#include "LanaiGenSubtargetInfo.inc"
56303231Sdim
57303231Sdim#endif // LLVM_LIB_TARGET_LANAI_MCTARGETDESC_LANAIMCTARGETDESC_H
58