mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-26 21:20:37 +00:00
Initial implementation of MipsMCCodeEmitter.
Patch by Reed Kotler at Mips Technologies. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140878 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
68e05fb368
commit
4520a10fdb
52
lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.cpp
Normal file
52
lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.cpp
Normal file
@ -0,0 +1,52 @@
|
||||
//===-- MipsMCCodeEmitter.cpp - Convert Mips code to machine code ---------===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// This file implements the MipsMCCodeEmitter class.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
#define DEBUG_TYPE "mccodeemitter"
|
||||
#include "llvm/MC/MCCodeEmitter.h"
|
||||
#include "llvm/MC/MCExpr.h"
|
||||
#include "llvm/MC/MCInst.h"
|
||||
#include "llvm/MC/MCInstrInfo.h"
|
||||
#include "llvm/MC/MCRegisterInfo.h"
|
||||
#include "llvm/MC/MCSubtargetInfo.h"
|
||||
#include "llvm/ADT/APFloat.h"
|
||||
#include "llvm/ADT/Statistic.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
#include "MCTargetDesc/MipsMCTargetDesc.h"
|
||||
|
||||
using namespace llvm;
|
||||
|
||||
namespace {
|
||||
class MipsMCCodeEmitter : public MCCodeEmitter {
|
||||
MipsMCCodeEmitter(const MipsMCCodeEmitter &); // DO NOT IMPLEMENT
|
||||
void operator=(const MipsMCCodeEmitter &); // DO NOT IMPLEMENT
|
||||
const MCInstrInfo &MCII;
|
||||
const MCSubtargetInfo &STI;
|
||||
|
||||
public:
|
||||
MipsMCCodeEmitter(const MCInstrInfo &mcii, const MCSubtargetInfo &sti,
|
||||
MCContext &ctx)
|
||||
: MCII(mcii), STI(sti) {}
|
||||
|
||||
~MipsMCCodeEmitter() {}
|
||||
|
||||
void EncodeInstruction(const MCInst &MI, raw_ostream &OS,
|
||||
SmallVectorImpl<MCFixup> &Fixups) const {
|
||||
}
|
||||
}; // class MipsMCCodeEmitter
|
||||
} // namespace
|
||||
|
||||
MCCodeEmitter *llvm::createMipsMCCodeEmitter(const MCInstrInfo &MCII,
|
||||
const MCSubtargetInfo &STI,
|
||||
MCContext &Ctx) {
|
||||
return new MipsMCCodeEmitter(MCII, STI, Ctx);
|
||||
}
|
@ -107,6 +107,15 @@ extern "C" void LLVMInitializeMipsTargetMC() {
|
||||
TargetRegistry::RegisterMCRegInfo(TheMips64elTarget,
|
||||
createMipsMCRegisterInfo);
|
||||
|
||||
// Register the MC Code Emitter
|
||||
TargetRegistry::RegisterMCCodeEmitter(TheMipsTarget, createMipsMCCodeEmitter);
|
||||
TargetRegistry::RegisterMCCodeEmitter(TheMipselTarget,
|
||||
createMipsMCCodeEmitter);
|
||||
TargetRegistry::RegisterMCCodeEmitter(TheMips64Target,
|
||||
createMipsMCCodeEmitter);
|
||||
TargetRegistry::RegisterMCCodeEmitter(TheMips64elTarget,
|
||||
createMipsMCCodeEmitter);
|
||||
|
||||
// Register the MC subtarget info.
|
||||
TargetRegistry::RegisterMCSubtargetInfo(TheMipsTarget,
|
||||
createMipsMCSubtargetInfo);
|
||||
|
@ -15,15 +15,21 @@
|
||||
#define MIPSMCTARGETDESC_H
|
||||
|
||||
namespace llvm {
|
||||
class MCInstrInfo;
|
||||
class MCCodeEmitter;
|
||||
class MCContext;
|
||||
class MCSubtargetInfo;
|
||||
class Target;
|
||||
class StringRef;
|
||||
class Target;
|
||||
|
||||
extern Target TheMipsTarget;
|
||||
extern Target TheMipselTarget;
|
||||
extern Target TheMips64Target;
|
||||
extern Target TheMips64elTarget;
|
||||
|
||||
MCCodeEmitter *createMipsMCCodeEmitter(const MCInstrInfo &MCII,
|
||||
const MCSubtargetInfo &STI,
|
||||
MCContext &Ctx);
|
||||
} // End llvm namespace
|
||||
|
||||
// Defines symbolic names for Mips registers. This defines a mapping from
|
||||
|
Loading…
Reference in New Issue
Block a user