181ad6265SDimitry Andric //===- LoongArchMCTargetDesc.h - LoongArch Target Descriptions --*- C++ -*-===// 281ad6265SDimitry Andric // 381ad6265SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 481ad6265SDimitry Andric // See https://llvm.org/LICENSE.txt for license information. 581ad6265SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 681ad6265SDimitry Andric // 781ad6265SDimitry Andric //===----------------------------------------------------------------------===// 881ad6265SDimitry Andric // 981ad6265SDimitry Andric // This file provides LoongArch specific target descriptions. 1081ad6265SDimitry Andric // 1181ad6265SDimitry Andric //===----------------------------------------------------------------------===// 1281ad6265SDimitry Andric 1381ad6265SDimitry Andric #ifndef LLVM_LIB_TARGET_LOONGARCH_MCTARGETDESC_LOONGARCHMCTARGETDESC_H 1481ad6265SDimitry Andric #define LLVM_LIB_TARGET_LOONGARCH_MCTARGETDESC_LOONGARCHMCTARGETDESC_H 1581ad6265SDimitry Andric 1681ad6265SDimitry Andric #include "llvm/MC/MCTargetOptions.h" 1781ad6265SDimitry Andric #include "llvm/Support/DataTypes.h" 1881ad6265SDimitry Andric #include <memory> 1981ad6265SDimitry Andric 2081ad6265SDimitry Andric namespace llvm { 2181ad6265SDimitry Andric class MCAsmBackend; 2281ad6265SDimitry Andric class MCCodeEmitter; 2381ad6265SDimitry Andric class MCContext; 2481ad6265SDimitry Andric class MCInstrInfo; 2581ad6265SDimitry Andric class MCObjectTargetWriter; 2681ad6265SDimitry Andric class MCRegisterInfo; 2781ad6265SDimitry Andric class MCSubtargetInfo; 2881ad6265SDimitry Andric class Target; 2981ad6265SDimitry Andric 3081ad6265SDimitry Andric MCCodeEmitter *createLoongArchMCCodeEmitter(const MCInstrInfo &MCII, 3181ad6265SDimitry Andric MCContext &Ctx); 3281ad6265SDimitry Andric 3381ad6265SDimitry Andric MCAsmBackend *createLoongArchAsmBackend(const Target &T, 3481ad6265SDimitry Andric const MCSubtargetInfo &STI, 3581ad6265SDimitry Andric const MCRegisterInfo &MRI, 3681ad6265SDimitry Andric const MCTargetOptions &Options); 3781ad6265SDimitry Andric 3881ad6265SDimitry Andric std::unique_ptr<MCObjectTargetWriter> 39*5f757f3fSDimitry Andric createLoongArchELFObjectWriter(uint8_t OSABI, bool Is64Bit, bool Relax); 4081ad6265SDimitry Andric 41972a253aSDimitry Andric } // end namespace llvm 4281ad6265SDimitry Andric 4381ad6265SDimitry Andric // Defines symbolic names for LoongArch registers. 4481ad6265SDimitry Andric #define GET_REGINFO_ENUM 4581ad6265SDimitry Andric #include "LoongArchGenRegisterInfo.inc" 4681ad6265SDimitry Andric 4781ad6265SDimitry Andric // Defines symbolic names for LoongArch instructions. 4881ad6265SDimitry Andric #define GET_INSTRINFO_ENUM 49753f127fSDimitry Andric #define GET_INSTRINFO_MC_HELPER_DECLS 5081ad6265SDimitry Andric #include "LoongArchGenInstrInfo.inc" 5181ad6265SDimitry Andric 5281ad6265SDimitry Andric #define GET_SUBTARGETINFO_ENUM 5381ad6265SDimitry Andric #include "LoongArchGenSubtargetInfo.inc" 5481ad6265SDimitry Andric 5581ad6265SDimitry Andric #endif // LLVM_LIB_TARGET_LOONGARCH_MCTARGETDESC_LOONGARCHMCTARGETDESC_H 56