xref: /freebsd-src/contrib/llvm-project/llvm/lib/Target/M68k/MCTargetDesc/M68kMCTargetDesc.h (revision fe6060f10f634930ff71b7c50291ddc610da2475)
1*fe6060f1SDimitry Andric //===-- M68kMCTargetDesc.h - M68k Target Descriptions -------*- C++ -*-===//
2*fe6060f1SDimitry Andric //
3*fe6060f1SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*fe6060f1SDimitry Andric // See https://llvm.org/LICENSE.txt for license information.
5*fe6060f1SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*fe6060f1SDimitry Andric //
7*fe6060f1SDimitry Andric //===----------------------------------------------------------------------===//
8*fe6060f1SDimitry Andric ///
9*fe6060f1SDimitry Andric /// \file
10*fe6060f1SDimitry Andric /// This file provides M68k specific target descriptions.
11*fe6060f1SDimitry Andric ///
12*fe6060f1SDimitry Andric //===----------------------------------------------------------------------===//
13*fe6060f1SDimitry Andric 
14*fe6060f1SDimitry Andric #ifndef LLVM_LIB_TARGET_M68K_MCTARGETDESC_M68KMCTARGETDESC_H
15*fe6060f1SDimitry Andric #define LLVM_LIB_TARGET_M68K_MCTARGETDESC_M68KMCTARGETDESC_H
16*fe6060f1SDimitry Andric 
17*fe6060f1SDimitry Andric #include "llvm/MC/MCInstrDesc.h"
18*fe6060f1SDimitry Andric #include "llvm/MC/MCObjectWriter.h"
19*fe6060f1SDimitry Andric #include "llvm/Support/DataTypes.h"
20*fe6060f1SDimitry Andric 
21*fe6060f1SDimitry Andric namespace llvm {
22*fe6060f1SDimitry Andric class MCAsmBackend;
23*fe6060f1SDimitry Andric class MCCodeEmitter;
24*fe6060f1SDimitry Andric class MCContext;
25*fe6060f1SDimitry Andric class MCInstrInfo;
26*fe6060f1SDimitry Andric class MCRegisterInfo;
27*fe6060f1SDimitry Andric class MCSubtargetInfo;
28*fe6060f1SDimitry Andric class MCRelocationInfo;
29*fe6060f1SDimitry Andric class MCTargetOptions;
30*fe6060f1SDimitry Andric class Target;
31*fe6060f1SDimitry Andric class Triple;
32*fe6060f1SDimitry Andric class StringRef;
33*fe6060f1SDimitry Andric class raw_ostream;
34*fe6060f1SDimitry Andric class raw_pwrite_stream;
35*fe6060f1SDimitry Andric 
36*fe6060f1SDimitry Andric MCAsmBackend *createM68kAsmBackend(const Target &T, const MCSubtargetInfo &STI,
37*fe6060f1SDimitry Andric                                    const MCRegisterInfo &MRI,
38*fe6060f1SDimitry Andric                                    const MCTargetOptions &Options);
39*fe6060f1SDimitry Andric 
40*fe6060f1SDimitry Andric MCCodeEmitter *createM68kMCCodeEmitter(const MCInstrInfo &MCII,
41*fe6060f1SDimitry Andric                                        const MCRegisterInfo &MRI,
42*fe6060f1SDimitry Andric                                        MCContext &Ctx);
43*fe6060f1SDimitry Andric 
44*fe6060f1SDimitry Andric /// Construct an M68k ELF object writer.
45*fe6060f1SDimitry Andric std::unique_ptr<MCObjectTargetWriter> createM68kELFObjectWriter(uint8_t OSABI);
46*fe6060f1SDimitry Andric 
47*fe6060f1SDimitry Andric } // namespace llvm
48*fe6060f1SDimitry Andric 
49*fe6060f1SDimitry Andric // Defines symbolic names for M68k registers. This defines a mapping from
50*fe6060f1SDimitry Andric // register name to register number.
51*fe6060f1SDimitry Andric #define GET_REGINFO_ENUM
52*fe6060f1SDimitry Andric #include "M68kGenRegisterInfo.inc"
53*fe6060f1SDimitry Andric 
54*fe6060f1SDimitry Andric // Defines symbolic names for the M68k instructions.
55*fe6060f1SDimitry Andric #define GET_INSTRINFO_ENUM
56*fe6060f1SDimitry Andric #include "M68kGenInstrInfo.inc"
57*fe6060f1SDimitry Andric 
58*fe6060f1SDimitry Andric #define GET_SUBTARGETINFO_ENUM
59*fe6060f1SDimitry Andric #include "M68kGenSubtargetInfo.inc"
60*fe6060f1SDimitry Andric 
61*fe6060f1SDimitry Andric #endif
62