1afaf80a13ba43447f8a335ad1224917101fb7a79James Molloy//===-- MipsMCTargetDesc.h - Mips 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//
10afaf80a13ba43447f8a335ad1224917101fb7a79James Molloy// This file provides Mips specific target descriptions.
11c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng//
12c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng//===----------------------------------------------------------------------===//
13c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng
1437ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines#ifndef LLVM_LIB_TARGET_MIPS_MCTARGETDESC_MIPSMCTARGETDESC_H
1537ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines#define LLVM_LIB_TARGET_MIPS_MCTARGETDESC_MIPSMCTARGETDESC_H
16c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng
17090445967f0b5988446faffefd1d0722f982bc7aRafael Espindola#include "llvm/Support/DataTypes.h"
18090445967f0b5988446faffefd1d0722f982bc7aRafael Espindola
19c60f9b752381baa6c4b80c0739034660f1748c84Evan Chengnamespace llvm {
204b6ee7a35213709c057cdd073fb27bda09fa3359Akira Hatanakaclass MCAsmBackend;
214520a10fdbaabf1c0cd98b43a61469c5f0e76f38Akira Hatanakaclass MCCodeEmitter;
224520a10fdbaabf1c0cd98b43a61469c5f0e76f38Akira Hatanakaclass MCContext;
2347b92f3d8362518596d57269dc53d985bc13323aBruno Cardoso Lopesclass MCInstrInfo;
2447b92f3d8362518596d57269dc53d985bc13323aBruno Cardoso Lopesclass MCObjectWriter;
25918f55fe239f00651e396be841f2b3b6e242f98dJim Grosbachclass MCRegisterInfo;
26c60f9b752381baa6c4b80c0739034660f1748c84Evan Chengclass MCSubtargetInfo;
27c60f9b752381baa6c4b80c0739034660f1748c84Evan Chengclass StringRef;
284520a10fdbaabf1c0cd98b43a61469c5f0e76f38Akira Hatanakaclass Target;
296948897e478cbd66626159776a8017b3c18579b9Pirama Arumuga Nainarclass Triple;
3047b92f3d8362518596d57269dc53d985bc13323aBruno Cardoso Lopesclass raw_ostream;
310c7f116bb6950ef819323d855415b2f2b0aad987Pirama Arumuga Nainarclass raw_pwrite_stream;
32c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng
33c60f9b752381baa6c4b80c0739034660f1748c84Evan Chengextern Target TheMipsTarget;
34c60f9b752381baa6c4b80c0739034660f1748c84Evan Chengextern Target TheMipselTarget;
352464810ac27af8dd8b11da7519b719c254854c19Akira Hatanakaextern Target TheMips64Target;
362464810ac27af8dd8b11da7519b719c254854c19Akira Hatanakaextern Target TheMips64elTarget;
37c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng
38e9e520f23ec3e5dc26e0801ac0d8b9e6899e2626Akira HatanakaMCCodeEmitter *createMipsMCCodeEmitterEB(const MCInstrInfo &MCII,
39918f55fe239f00651e396be841f2b3b6e242f98dJim Grosbach                                         const MCRegisterInfo &MRI,
40e9e520f23ec3e5dc26e0801ac0d8b9e6899e2626Akira Hatanaka                                         MCContext &Ctx);
41e9e520f23ec3e5dc26e0801ac0d8b9e6899e2626Akira HatanakaMCCodeEmitter *createMipsMCCodeEmitterEL(const MCInstrInfo &MCII,
42918f55fe239f00651e396be841f2b3b6e242f98dJim Grosbach                                         const MCRegisterInfo &MRI,
43e9e520f23ec3e5dc26e0801ac0d8b9e6899e2626Akira Hatanaka                                         MCContext &Ctx);
444b6ee7a35213709c057cdd073fb27bda09fa3359Akira Hatanaka
4536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen HinesMCAsmBackend *createMipsAsmBackendEB32(const Target &T,
466948897e478cbd66626159776a8017b3c18579b9Pirama Arumuga Nainar                                       const MCRegisterInfo &MRI,
476948897e478cbd66626159776a8017b3c18579b9Pirama Arumuga Nainar                                       const Triple &TT, StringRef CPU);
4836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen HinesMCAsmBackend *createMipsAsmBackendEL32(const Target &T,
496948897e478cbd66626159776a8017b3c18579b9Pirama Arumuga Nainar                                       const MCRegisterInfo &MRI,
506948897e478cbd66626159776a8017b3c18579b9Pirama Arumuga Nainar                                       const Triple &TT, StringRef CPU);
5136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen HinesMCAsmBackend *createMipsAsmBackendEB64(const Target &T,
526948897e478cbd66626159776a8017b3c18579b9Pirama Arumuga Nainar                                       const MCRegisterInfo &MRI,
536948897e478cbd66626159776a8017b3c18579b9Pirama Arumuga Nainar                                       const Triple &TT, StringRef CPU);
5436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen HinesMCAsmBackend *createMipsAsmBackendEL64(const Target &T,
556948897e478cbd66626159776a8017b3c18579b9Pirama Arumuga Nainar                                       const MCRegisterInfo &MRI,
566948897e478cbd66626159776a8017b3c18579b9Pirama Arumuga Nainar                                       const Triple &TT, StringRef CPU);
5747b92f3d8362518596d57269dc53d985bc13323aBruno Cardoso Lopes
580c7f116bb6950ef819323d855415b2f2b0aad987Pirama Arumuga NainarMCObjectWriter *createMipsELFObjectWriter(raw_pwrite_stream &OS, uint8_t OSABI,
59ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines                                          bool IsLittleEndian, bool Is64Bit);
60ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
61ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesnamespace MIPS_MC {
626948897e478cbd66626159776a8017b3c18579b9Pirama Arumuga NainarStringRef selectMipsCPU(const Triple &TT, StringRef CPU);
63ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
64ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
65c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng} // End llvm namespace
66c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng
67c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng// Defines symbolic names for Mips registers.  This defines a mapping from
68c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng// register name to register number.
69c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng#define GET_REGINFO_ENUM
70c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng#include "MipsGenRegisterInfo.inc"
71c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng
72c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng// Defines symbolic names for the Mips instructions.
73c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng#define GET_INSTRINFO_ENUM
74c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng#include "MipsGenInstrInfo.inc"
75c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng
76c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng#define GET_SUBTARGETINFO_ENUM
77c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng#include "MipsGenSubtargetInfo.inc"
78c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng
79c60f9b752381baa6c4b80c0739034660f1748c84Evan Cheng#endif
80