xref: /src/contrib/llvm-project/llvm/lib/Target/Lanai/MCTargetDesc/LanaiMCTargetDesc.h (revision 753f127f3ace09432b2baeffd71a308760641a62)
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