xref: /llvm-project/llvm/lib/Target/SPIRV/MCTargetDesc/SPIRVMCTargetDesc.h (revision 3e0bf1c7a9a4df5880f7a2c2d987c61b78fb499d)
16c69427eSIlia Diachkov //===-- SPIRVMCTargetDesc.h - SPIR-V Target Descriptions --------*- C++ -*-===//
26c69427eSIlia Diachkov //
36c69427eSIlia Diachkov // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
46c69427eSIlia Diachkov // See https://llvm.org/LICENSE.txt for license information.
56c69427eSIlia Diachkov // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
66c69427eSIlia Diachkov //
76c69427eSIlia Diachkov //===----------------------------------------------------------------------===//
86c69427eSIlia Diachkov //
96c69427eSIlia Diachkov // This file provides SPIR-V specific target descriptions.
106c69427eSIlia Diachkov //
116c69427eSIlia Diachkov //===----------------------------------------------------------------------===//
126c69427eSIlia Diachkov 
136c69427eSIlia Diachkov #ifndef LLVM_LIB_TARGET_SPIRV_MCTARGETDESC_SPIRVMCTARGETDESC_H
146c69427eSIlia Diachkov #define LLVM_LIB_TARGET_SPIRV_MCTARGETDESC_SPIRVMCTARGETDESC_H
156c69427eSIlia Diachkov 
166c69427eSIlia Diachkov #include "llvm/Support/DataTypes.h"
176c69427eSIlia Diachkov #include <memory>
186c69427eSIlia Diachkov 
196c69427eSIlia Diachkov namespace llvm {
206c69427eSIlia Diachkov class MCAsmBackend;
216c69427eSIlia Diachkov class MCCodeEmitter;
226c69427eSIlia Diachkov class MCContext;
236c69427eSIlia Diachkov class MCInstrInfo;
246c69427eSIlia Diachkov class MCObjectTargetWriter;
256c69427eSIlia Diachkov class MCRegisterInfo;
266c69427eSIlia Diachkov class MCSubtargetInfo;
276c69427eSIlia Diachkov class MCTargetOptions;
286c69427eSIlia Diachkov class Target;
296c69427eSIlia Diachkov 
306c69427eSIlia Diachkov MCCodeEmitter *createSPIRVMCCodeEmitter(const MCInstrInfo &MCII,
316c69427eSIlia Diachkov                                         MCContext &Ctx);
326c69427eSIlia Diachkov 
336c69427eSIlia Diachkov MCAsmBackend *createSPIRVAsmBackend(const Target &T, const MCSubtargetInfo &STI,
346c69427eSIlia Diachkov                                     const MCRegisterInfo &MRI,
356c69427eSIlia Diachkov                                     const MCTargetOptions &Options);
366c69427eSIlia Diachkov 
376c69427eSIlia Diachkov std::unique_ptr<MCObjectTargetWriter> createSPIRVObjectTargetWriter();
386c69427eSIlia Diachkov } // namespace llvm
396c69427eSIlia Diachkov 
406c69427eSIlia Diachkov // Defines symbolic names for SPIR-V registers.  This defines a mapping from
416c69427eSIlia Diachkov // register name to register number.
426c69427eSIlia Diachkov #define GET_REGINFO_ENUM
436c69427eSIlia Diachkov #include "SPIRVGenRegisterInfo.inc"
446c69427eSIlia Diachkov 
456c69427eSIlia Diachkov // Defines symbolic names for the SPIR-V instructions.
466c69427eSIlia Diachkov #define GET_INSTRINFO_ENUM
47*3e0bf1c7SDavid Green #define GET_INSTRINFO_MC_HELPER_DECLS
486c69427eSIlia Diachkov #include "SPIRVGenInstrInfo.inc"
496c69427eSIlia Diachkov 
506c69427eSIlia Diachkov #define GET_SUBTARGETINFO_ENUM
516c69427eSIlia Diachkov #include "SPIRVGenSubtargetInfo.inc"
526c69427eSIlia Diachkov 
536c69427eSIlia Diachkov #endif // LLVM_LIB_TARGET_SPIRV_MCTARGETDESC_SPIRVMCTARGETDESC_H
54