mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-26 21:20:37 +00:00
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:
parent
82ea7314ca
commit
4b6ee7a352
@ -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());
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user