Some Mips minor fixes

Added support for mips little endian arch => mipsel



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51923 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Bruno Cardoso Lopes
2008-06-04 01:45:25 +00:00
parent 3094a4c97a
commit d2947ee33e
8 changed files with 48 additions and 15 deletions

View File

@ -20,7 +20,8 @@
using namespace llvm;
// Register the target.
static RegisterTarget<MipsTargetMachine> X("mips", " Mips");
static RegisterTarget<MipsTargetMachine> X("mips", " Mips");
static RegisterTarget<MipselTargetMachine> Y("mipsel", " Mipsel");
const TargetAsmInfo *MipsTargetMachine::
createTargetAsmInfo() const
@ -35,11 +36,13 @@ createTargetAsmInfo() const
// offset from the stack/frame pointer, so StackGrowsUp is used.
// When using CodeModel::Large the behaviour
//
//
MipsTargetMachine::
MipsTargetMachine(const Module &M, const std::string &FS):
Subtarget(*this, M, FS), DataLayout("E-p:32:32:32"),
InstrInfo(*this), FrameInfo(TargetFrameInfo::StackGrowsUp, 8, 0),
MipsTargetMachine(const Module &M, const std::string &FS, bool isLittle=false):
Subtarget(*this, M, FS, isLittle),
DataLayout(isLittle ? std::string("e-p:32:32:32") :
std::string("E-p:32:32:32")),
InstrInfo(*this),
FrameInfo(TargetFrameInfo::StackGrowsUp, 8, 0),
TLInfo(*this)
{
if (getRelocationModel() != Reloc::Static)
@ -48,6 +51,10 @@ MipsTargetMachine(const Module &M, const std::string &FS):
setCodeModel(CodeModel::Small);
}
MipselTargetMachine::
MipselTargetMachine(const Module &M, const std::string &FS) :
MipsTargetMachine(M, FS, true) {}
// return 0 and must specify -march to gen MIPS code.
unsigned MipsTargetMachine::
getModuleMatchQuality(const Module &M)
@ -60,6 +67,18 @@ getModuleMatchQuality(const Module &M)
return 0;
}
// return 0 and must specify -march to gen MIPSel code.
unsigned MipselTargetMachine::
getModuleMatchQuality(const Module &M)
{
// We strongly match "mipsel-*".
std::string TT = M.getTargetTriple();
if (TT.size() >= 7 && std::string(TT.begin(), TT.begin()+7) == "mipsel-")
return 20;
return 0;
}
// Install an instruction selector pass using
// the ISelDag to gen Mips code.
bool MipsTargetMachine::