101095a5dSDimitry Andric //===-- LanaiMCTargetDesc.h - Lanai Target Descriptions ---------*- C++ -*-===// 201095a5dSDimitry Andric // 3e6d15924SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4e6d15924SDimitry Andric // See https://llvm.org/LICENSE.txt for license information. 5e6d15924SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 601095a5dSDimitry Andric // 701095a5dSDimitry Andric //===----------------------------------------------------------------------===// 801095a5dSDimitry Andric // 901095a5dSDimitry Andric // This file provides Lanai specific target descriptions. 1001095a5dSDimitry Andric // 1101095a5dSDimitry Andric //===----------------------------------------------------------------------===// 1201095a5dSDimitry Andric 1301095a5dSDimitry Andric #ifndef LLVM_LIB_TARGET_LANAI_MCTARGETDESC_LANAIMCTARGETDESC_H 1401095a5dSDimitry Andric #define LLVM_LIB_TARGET_LANAI_MCTARGETDESC_LANAIMCTARGETDESC_H 1501095a5dSDimitry Andric 1601095a5dSDimitry Andric #include "llvm/MC/MCRegisterInfo.h" 17b915e9e0SDimitry Andric #include "llvm/MC/MCTargetOptions.h" 1801095a5dSDimitry Andric #include "llvm/Support/DataTypes.h" 1901095a5dSDimitry Andric 2001095a5dSDimitry Andric namespace llvm { 2101095a5dSDimitry Andric class MCAsmBackend; 2201095a5dSDimitry Andric class MCCodeEmitter; 2301095a5dSDimitry Andric class MCContext; 2401095a5dSDimitry Andric class MCInstrInfo; 25eb11fae6SDimitry Andric class MCObjectTargetWriter; 2601095a5dSDimitry Andric class MCSubtargetInfo; 2701095a5dSDimitry Andric class Target; 2801095a5dSDimitry Andric 2901095a5dSDimitry Andric MCCodeEmitter *createLanaiMCCodeEmitter(const MCInstrInfo &MCII, 3001095a5dSDimitry Andric MCContext &Ctx); 3101095a5dSDimitry Andric 32eb11fae6SDimitry Andric MCAsmBackend *createLanaiAsmBackend(const Target &T, const MCSubtargetInfo &STI, 33eb11fae6SDimitry Andric const MCRegisterInfo &MRI, 34b915e9e0SDimitry Andric const MCTargetOptions &Options); 3501095a5dSDimitry Andric 36eb11fae6SDimitry Andric std::unique_ptr<MCObjectTargetWriter> createLanaiELFObjectWriter(uint8_t OSABI); 3701095a5dSDimitry Andric } // namespace llvm 3801095a5dSDimitry Andric 3901095a5dSDimitry Andric // Defines symbolic names for Lanai registers. This defines a mapping from 4001095a5dSDimitry Andric // register name to register number. 4101095a5dSDimitry Andric #define GET_REGINFO_ENUM 4201095a5dSDimitry Andric #include "LanaiGenRegisterInfo.inc" 4301095a5dSDimitry Andric 4401095a5dSDimitry Andric // Defines symbolic names for the Lanai instructions. 4501095a5dSDimitry Andric #define GET_INSTRINFO_ENUM 461f917f69SDimitry Andric #define GET_INSTRINFO_MC_HELPER_DECLS 4701095a5dSDimitry Andric #include "LanaiGenInstrInfo.inc" 4801095a5dSDimitry Andric 4901095a5dSDimitry Andric #define GET_SUBTARGETINFO_ENUM 5001095a5dSDimitry Andric #include "LanaiGenSubtargetInfo.inc" 5101095a5dSDimitry Andric 5201095a5dSDimitry Andric #endif // LLVM_LIB_TARGET_LANAI_MCTARGETDESC_LANAIMCTARGETDESC_H 53