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