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