1224133Sdim//===-- SparcMCTargetDesc.h - Sparc Target Descriptions ---------*- C++ -*-===//
2224133Sdim//
3224133Sdim//                     The LLVM Compiler Infrastructure
4224133Sdim//
5224133Sdim// This file is distributed under the University of Illinois Open Source
6224133Sdim// License. See LICENSE.TXT for details.
7224133Sdim//
8224133Sdim//===----------------------------------------------------------------------===//
9224133Sdim//
10224133Sdim// This file provides Sparc specific target descriptions.
11224133Sdim//
12224133Sdim//===----------------------------------------------------------------------===//
13224133Sdim
14224133Sdim#ifndef SPARCMCTARGETDESC_H
15224133Sdim#define SPARCMCTARGETDESC_H
16224133Sdim
17263763Sdim#include "llvm/Support/DataTypes.h"
18263763Sdim
19224133Sdimnamespace llvm {
20263763Sdimclass MCAsmBackend;
21263763Sdimclass MCCodeEmitter;
22263763Sdimclass MCContext;
23263763Sdimclass MCInstrInfo;
24263763Sdimclass MCObjectWriter;
25263763Sdimclass MCRegisterInfo;
26263763Sdimclass MCSubtargetInfo;
27224133Sdimclass Target;
28263763Sdimclass StringRef;
29263763Sdimclass raw_ostream;
30224133Sdim
31224133Sdimextern Target TheSparcTarget;
32224133Sdimextern Target TheSparcV9Target;
33224133Sdim
34263763SdimMCCodeEmitter *createSparcMCCodeEmitter(const MCInstrInfo &MCII,
35263763Sdim                                        const MCRegisterInfo &MRI,
36263763Sdim                                        const MCSubtargetInfo &STI,
37263763Sdim                                        MCContext &Ctx);
38263763SdimMCAsmBackend *createSparcAsmBackend(const Target &T,
39263763Sdim                                    const MCRegisterInfo &MRI,
40263763Sdim                                    StringRef TT,
41263763Sdim                                    StringRef CPU);
42263763SdimMCObjectWriter *createSparcELFObjectWriter(raw_ostream &OS,
43263763Sdim                                           bool Is64Bit,
44263763Sdim                                           uint8_t OSABI);
45224133Sdim} // End llvm namespace
46224133Sdim
47224133Sdim// Defines symbolic names for Sparc registers.  This defines a mapping from
48224133Sdim// register name to register number.
49224133Sdim//
50224133Sdim#define GET_REGINFO_ENUM
51224133Sdim#include "SparcGenRegisterInfo.inc"
52224133Sdim
53224133Sdim// Defines symbolic names for the Sparc instructions.
54224133Sdim//
55224133Sdim#define GET_INSTRINFO_ENUM
56224133Sdim#include "SparcGenInstrInfo.inc"
57224133Sdim
58224133Sdim#define GET_SUBTARGETINFO_ENUM
59224133Sdim#include "SparcGenSubtargetInfo.inc"
60224133Sdim
61224133Sdim#endif
62