1c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng//===-- SparcMCTargetDesc.h - Sparc Target Descriptions ---------*- C++ -*-===//
2c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng//
3c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng//                     The LLVM Compiler Infrastructure
4c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng//
5c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng// This file is distributed under the University of Illinois Open Source
6c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng// License. See LICENSE.TXT for details.
7c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng//
8c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng//===----------------------------------------------------------------------===//
9c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng//
10c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng// This file provides Sparc specific target descriptions.
11c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng//
12c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng//===----------------------------------------------------------------------===//
13c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng
14c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng#ifndef SPARCMCTARGETDESC_H
15c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng#define SPARCMCTARGETDESC_H
16c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng
1736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines#include "llvm/Support/DataTypes.h"
1836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines
19c60f9b752381baa6c4b80c0739034660f1748c84Evan Chengnamespace llvm {
2036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesclass MCAsmBackend;
2136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesclass MCCodeEmitter;
2236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesclass MCContext;
2336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesclass MCInstrInfo;
2436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesclass MCObjectWriter;
2536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesclass MCRegisterInfo;
2636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesclass MCSubtargetInfo;
27c60f9b752381baa6c4b80c0739034660f1748c84Evan Chengclass Target;
2836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesclass StringRef;
2936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesclass raw_ostream;
30c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng
31c60f9b752381baa6c4b80c0739034660f1748c84Evan Chengextern Target TheSparcTarget;
32c60f9b752381baa6c4b80c0739034660f1748c84Evan Chengextern Target TheSparcV9Target;
33c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng
3436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen HinesMCCodeEmitter *createSparcMCCodeEmitter(const MCInstrInfo &MCII,
3536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines                                        const MCRegisterInfo &MRI,
3636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines                                        const MCSubtargetInfo &STI,
3736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines                                        MCContext &Ctx);
3836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen HinesMCAsmBackend *createSparcAsmBackend(const Target &T,
3936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines                                    const MCRegisterInfo &MRI,
4036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines                                    StringRef TT,
4136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines                                    StringRef CPU);
4236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen HinesMCObjectWriter *createSparcELFObjectWriter(raw_ostream &OS,
4336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines                                           bool Is64Bit,
4436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines                                           uint8_t OSABI);
45c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng} // End llvm namespace
46c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng
47c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng// Defines symbolic names for Sparc registers.  This defines a mapping from
48c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng// register name to register number.
49c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng//
50c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng#define GET_REGINFO_ENUM
51c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng#include "SparcGenRegisterInfo.inc"
52c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng
53c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng// Defines symbolic names for the Sparc instructions.
54c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng//
55c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng#define GET_INSTRINFO_ENUM
56c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng#include "SparcGenInstrInfo.inc"
57c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng
58c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng#define GET_SUBTARGETINFO_ENUM
59c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng#include "SparcGenSubtargetInfo.inc"
60c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng
61c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng#endif
62