1//===-- SparcMCTargetDesc.h - Sparc Target Descriptions ---------*- C++ -*-===//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9//
10// This file provides Sparc specific target descriptions.
11//
12//===----------------------------------------------------------------------===//
13
14#ifndef LLVM_LIB_TARGET_SPARC_MCTARGETDESC_SPARCMCTARGETDESC_H
15#define LLVM_LIB_TARGET_SPARC_MCTARGETDESC_SPARCMCTARGETDESC_H
16
17#include "llvm/Support/DataTypes.h"
18
19namespace llvm {
20class MCAsmBackend;
21class MCCodeEmitter;
22class MCContext;
23class MCInstrInfo;
24class MCObjectWriter;
25class MCRegisterInfo;
26class MCSubtargetInfo;
27class Target;
28class Triple;
29class StringRef;
30class raw_pwrite_stream;
31class raw_ostream;
32
33extern Target TheSparcTarget;
34extern Target TheSparcV9Target;
35extern Target TheSparcelTarget;
36
37MCCodeEmitter *createSparcMCCodeEmitter(const MCInstrInfo &MCII,
38                                        const MCRegisterInfo &MRI,
39                                        MCContext &Ctx);
40MCAsmBackend *createSparcAsmBackend(const Target &T, const MCRegisterInfo &MRI,
41                                    const Triple &TT, StringRef CPU);
42MCObjectWriter *createSparcELFObjectWriter(raw_pwrite_stream &OS, bool Is64Bit,
43                                           bool IsLIttleEndian, uint8_t OSABI);
44} // End llvm namespace
45
46// Defines symbolic names for Sparc registers.  This defines a mapping from
47// register name to register number.
48//
49#define GET_REGINFO_ENUM
50#include "SparcGenRegisterInfo.inc"
51
52// Defines symbolic names for the Sparc instructions.
53//
54#define GET_INSTRINFO_ENUM
55#include "SparcGenInstrInfo.inc"
56
57#define GET_SUBTARGETINFO_ENUM
58#include "SparcGenSubtargetInfo.inc"
59
60#endif
61