Register Asm backend. Add functions to MipsAsmBackend.

Patch by Reed Kotler at Mips Technologies.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140886 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Akira Hatanaka 2011-09-30 21:23:45 +00:00
parent 82ea7314ca
commit 4b6ee7a352
3 changed files with 55 additions and 0 deletions

View File

@ -33,6 +33,44 @@ public:
unsigned getNumFixupKinds() const {
return 1; //tbd
}
/// ApplyFixup - Apply the \arg Value for given \arg Fixup into the provided
/// data fragment, at the offset specified by the fixup and following the
/// fixup kind as appropriate.
void ApplyFixup(const MCFixup &Fixup, char *Data, unsigned DataSize,
uint64_t Value) const {
}
/// @name Target Relaxation Interfaces
/// @{
/// MayNeedRelaxation - Check whether the given instruction may need
/// relaxation.
///
/// \param Inst - The instruction to test.
bool MayNeedRelaxation(const MCInst &Inst) const {
return false;
}
/// RelaxInstruction - Relax the instruction in the given fragment to the next
/// wider instruction.
///
/// \param Inst - The instruction to relax, which may be the same as the
/// output.
/// \parm Res [output] - On return, the relaxed instruction.
void RelaxInstruction(const MCInst &Inst, MCInst &Res) const {
}
/// @}
/// WriteNopData - Write an (optimal) nop sequence of Count bytes to the given
/// output. If the target cannot generate such a sequence, it should return an
/// error.
///
/// \return - True on success.
bool WriteNopData(uint64_t Count, MCObjectWriter *OW) const {
return false;
}
};
class MipsEB_AsmBackend : public MipsAsmBackend {
@ -69,3 +107,11 @@ public:
}
};
}
MCAsmBackend *llvm::createMipsAsmBackend(const Target &T, StringRef TT) {
Triple TheTriple(TT);
// just return little endian for now
//
return new MipsEL_AsmBackend(T, Triple(TT).getOS());
}

View File

@ -116,6 +116,12 @@ extern "C" void LLVMInitializeMipsTargetMC() {
TargetRegistry::RegisterMCCodeEmitter(TheMips64elTarget,
createMipsMCCodeEmitter);
// Register the asm backend.
TargetRegistry::RegisterMCAsmBackend(TheMipsTarget, createMipsAsmBackend);
TargetRegistry::RegisterMCAsmBackend(TheMipselTarget, createMipsAsmBackend);
TargetRegistry::RegisterMCAsmBackend(TheMips64Target, createMipsAsmBackend);
TargetRegistry::RegisterMCAsmBackend(TheMips64elTarget, createMipsAsmBackend);
// Register the MC subtarget info.
TargetRegistry::RegisterMCSubtargetInfo(TheMipsTarget,
createMipsMCSubtargetInfo);

View File

@ -15,6 +15,7 @@
#define MIPSMCTARGETDESC_H
namespace llvm {
class MCAsmBackend;
class MCInstrInfo;
class MCCodeEmitter;
class MCContext;
@ -30,6 +31,8 @@ extern Target TheMips64elTarget;
MCCodeEmitter *createMipsMCCodeEmitter(const MCInstrInfo &MCII,
const MCSubtargetInfo &STI,
MCContext &Ctx);
MCAsmBackend *createMipsAsmBackend(const Target &T, StringRef TT);
} // End llvm namespace
// Defines symbolic names for Mips registers. This defines a mapping from