xref: /netbsd-src/external/apache2/llvm/dist/llvm/lib/Target/MSP430/MCTargetDesc/MSP430MCTargetDesc.h (revision 7330f729ccf0bd976a06f95fad452fe774fc7fd1)
1*7330f729Sjoerg //===-- MSP430MCTargetDesc.h - MSP430 Target Descriptions -------*- C++ -*-===//
2*7330f729Sjoerg //
3*7330f729Sjoerg // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*7330f729Sjoerg // See https://llvm.org/LICENSE.txt for license information.
5*7330f729Sjoerg // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*7330f729Sjoerg //
7*7330f729Sjoerg //===----------------------------------------------------------------------===//
8*7330f729Sjoerg //
9*7330f729Sjoerg // This file provides MSP430 specific target descriptions.
10*7330f729Sjoerg //
11*7330f729Sjoerg //===----------------------------------------------------------------------===//
12*7330f729Sjoerg 
13*7330f729Sjoerg #ifndef LLVM_LIB_TARGET_MSP430_MCTARGETDESC_MSP430MCTARGETDESC_H
14*7330f729Sjoerg #define LLVM_LIB_TARGET_MSP430_MCTARGETDESC_MSP430MCTARGETDESC_H
15*7330f729Sjoerg 
16*7330f729Sjoerg #include "llvm/Support/DataTypes.h"
17*7330f729Sjoerg #include <memory>
18*7330f729Sjoerg 
19*7330f729Sjoerg namespace llvm {
20*7330f729Sjoerg class Target;
21*7330f729Sjoerg class MCAsmBackend;
22*7330f729Sjoerg class MCCodeEmitter;
23*7330f729Sjoerg class MCInstrInfo;
24*7330f729Sjoerg class MCSubtargetInfo;
25*7330f729Sjoerg class MCRegisterInfo;
26*7330f729Sjoerg class MCContext;
27*7330f729Sjoerg class MCTargetOptions;
28*7330f729Sjoerg class MCObjectTargetWriter;
29*7330f729Sjoerg class MCStreamer;
30*7330f729Sjoerg class MCTargetStreamer;
31*7330f729Sjoerg 
32*7330f729Sjoerg /// Creates a machine code emitter for MSP430.
33*7330f729Sjoerg MCCodeEmitter *createMSP430MCCodeEmitter(const MCInstrInfo &MCII,
34*7330f729Sjoerg                                          const MCRegisterInfo &MRI,
35*7330f729Sjoerg                                          MCContext &Ctx);
36*7330f729Sjoerg 
37*7330f729Sjoerg MCAsmBackend *createMSP430MCAsmBackend(const Target &T,
38*7330f729Sjoerg                                        const MCSubtargetInfo &STI,
39*7330f729Sjoerg                                        const MCRegisterInfo &MRI,
40*7330f729Sjoerg                                        const MCTargetOptions &Options);
41*7330f729Sjoerg 
42*7330f729Sjoerg MCTargetStreamer *
43*7330f729Sjoerg createMSP430ObjectTargetStreamer(MCStreamer &S, const MCSubtargetInfo &STI);
44*7330f729Sjoerg 
45*7330f729Sjoerg std::unique_ptr<MCObjectTargetWriter>
46*7330f729Sjoerg createMSP430ELFObjectWriter(uint8_t OSABI);
47*7330f729Sjoerg 
48*7330f729Sjoerg } // End llvm namespace
49*7330f729Sjoerg 
50*7330f729Sjoerg // Defines symbolic names for MSP430 registers.
51*7330f729Sjoerg // This defines a mapping from register name to register number.
52*7330f729Sjoerg #define GET_REGINFO_ENUM
53*7330f729Sjoerg #include "MSP430GenRegisterInfo.inc"
54*7330f729Sjoerg 
55*7330f729Sjoerg // Defines symbolic names for the MSP430 instructions.
56*7330f729Sjoerg #define GET_INSTRINFO_ENUM
57*7330f729Sjoerg #include "MSP430GenInstrInfo.inc"
58*7330f729Sjoerg 
59*7330f729Sjoerg #define GET_SUBTARGETINFO_ENUM
60*7330f729Sjoerg #include "MSP430GenSubtargetInfo.inc"
61*7330f729Sjoerg 
62*7330f729Sjoerg #endif
63