1c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng//===-- PPCMCTargetDesc.h - PowerPC 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 PowerPC specific target descriptions.
11c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng//
12c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng//===----------------------------------------------------------------------===//
13c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng
14c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng#ifndef PPCMCTARGETDESC_H
15c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng#define PPCMCTARGETDESC_H
16c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng
17399532b25a939d8c653fd453137bb8e01dc4b8fcRafael Espindola// GCC #defines PPC on Linux but we use it as our namespace name
18399532b25a939d8c653fd453137bb8e01dc4b8fcRafael Espindola#undef PPC
19399532b25a939d8c653fd453137bb8e01dc4b8fcRafael Espindola
20f3a86fb03d196994dc7923351f15d8ed9343013eRafael Espindola#include "llvm/Support/DataTypes.h"
21f3a86fb03d196994dc7923351f15d8ed9343013eRafael Espindola
22c60f9b752381baa6c4b80c0739034660f1748c84Evan Chengnamespace llvm {
2378c10eeaa57d1c6c4b7781d3c0bcb0cfbbc43b5cEvan Chengclass MCAsmBackend;
24966aeb5788c242cfaca35c56c0ddc0ff778d4376Evan Chengclass MCCodeEmitter;
25966aeb5788c242cfaca35c56c0ddc0ff778d4376Evan Chengclass MCContext;
26966aeb5788c242cfaca35c56c0ddc0ff778d4376Evan Chengclass MCInstrInfo;
27f3a86fb03d196994dc7923351f15d8ed9343013eRafael Espindolaclass MCObjectWriter;
28918f55fe239f00651e396be841f2b3b6e242f98dJim Grosbachclass MCRegisterInfo;
29c60f9b752381baa6c4b80c0739034660f1748c84Evan Chengclass MCSubtargetInfo;
30c60f9b752381baa6c4b80c0739034660f1748c84Evan Chengclass Target;
31c60f9b752381baa6c4b80c0739034660f1748c84Evan Chengclass StringRef;
32f3a86fb03d196994dc7923351f15d8ed9343013eRafael Espindolaclass raw_ostream;
33c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng
34c60f9b752381baa6c4b80c0739034660f1748c84Evan Chengextern Target ThePPC32Target;
35c60f9b752381baa6c4b80c0739034660f1748c84Evan Chengextern Target ThePPC64Target;
36f38cc38fa647d4e72c053c39bbe0cdec1342535fBill Schmidtextern Target ThePPC64LETarget;
37c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng
38966aeb5788c242cfaca35c56c0ddc0ff778d4376Evan ChengMCCodeEmitter *createPPCMCCodeEmitter(const MCInstrInfo &MCII,
39918f55fe239f00651e396be841f2b3b6e242f98dJim Grosbach                                      const MCRegisterInfo &MRI,
40966aeb5788c242cfaca35c56c0ddc0ff778d4376Evan Cheng                                      const MCSubtargetInfo &STI,
41966aeb5788c242cfaca35c56c0ddc0ff778d4376Evan Cheng                                      MCContext &Ctx);
42966aeb5788c242cfaca35c56c0ddc0ff778d4376Evan Cheng
43c3cee57f7d20f69a84fd88464ed8cf050e63c7adBill WendlingMCAsmBackend *createPPCAsmBackend(const Target &T, const MCRegisterInfo &MRI,
44c3cee57f7d20f69a84fd88464ed8cf050e63c7adBill Wendling                                  StringRef TT, StringRef CPU);
45f3a86fb03d196994dc7923351f15d8ed9343013eRafael Espindola
46f3a86fb03d196994dc7923351f15d8ed9343013eRafael Espindola/// createPPCELFObjectWriter - Construct an PPC ELF object writer.
47f3a86fb03d196994dc7923351f15d8ed9343013eRafael EspindolaMCObjectWriter *createPPCELFObjectWriter(raw_ostream &OS,
48f3a86fb03d196994dc7923351f15d8ed9343013eRafael Espindola                                         bool Is64Bit,
4936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines                                         bool IsLittleEndian,
50f3a86fb03d196994dc7923351f15d8ed9343013eRafael Espindola                                         uint8_t OSABI);
51d4f9d05fde4b2cfd202a5852ec1ec3e960ef53edDavid Fang/// createPPCELFObjectWriter - Construct a PPC Mach-O object writer.
52d4f9d05fde4b2cfd202a5852ec1ec3e960ef53edDavid FangMCObjectWriter *createPPCMachObjectWriter(raw_ostream &OS, bool Is64Bit,
53d4f9d05fde4b2cfd202a5852ec1ec3e960ef53edDavid Fang                                          uint32_t CPUType,
54d4f9d05fde4b2cfd202a5852ec1ec3e960ef53edDavid Fang                                          uint32_t CPUSubtype);
55c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng} // End llvm namespace
56c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng
5753856be683113838cc112331adca3717d4a520ccSylvestre Ledru// Generated files will use "namespace PPC". To avoid symbol clash,
5853856be683113838cc112331adca3717d4a520ccSylvestre Ledru// undefine PPC here. PPC may be predefined on some hosts.
5953856be683113838cc112331adca3717d4a520ccSylvestre Ledru#undef PPC
6053856be683113838cc112331adca3717d4a520ccSylvestre Ledru
61c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng// Defines symbolic names for PowerPC registers.  This defines a mapping from
62c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng// register name to register number.
63c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng//
64c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng#define GET_REGINFO_ENUM
65c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng#include "PPCGenRegisterInfo.inc"
66c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng
67c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng// Defines symbolic names for the PowerPC instructions.
68c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng//
69c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng#define GET_INSTRINFO_ENUM
70c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng#include "PPCGenInstrInfo.inc"
71c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng
72c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng#define GET_SUBTARGETINFO_ENUM
73c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng#include "PPCGenSubtargetInfo.inc"
74c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng
75c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng#endif
76