//===-- MipsTargetInfo.cpp - Mips Target Implementation -------------------===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// #include "Mips.h" #include "llvm/Module.h" #include "llvm/Target/TargetRegistry.h" using namespace llvm; Target llvm::TheMipsTarget; static unsigned Mips_JITMatchQuality() { return 0; } static unsigned Mips_TripleMatchQuality(const std::string &TT) { // We strongly match "mips*-*". if (TT.size() >= 5 && std::string(TT.begin(), TT.begin()+5) == "mips-") return 20; if (TT.size() >= 13 && std::string(TT.begin(), TT.begin()+13) == "mipsallegrex-") return 20; return 0; } static unsigned Mips_ModuleMatchQuality(const Module &M) { // Check for a triple match. if (unsigned Q = Mips_TripleMatchQuality(M.getTargetTriple())) return Q; // Otherwise if the target triple is non-empty, we don't match. if (!M.getTargetTriple().empty()) return 0; return 0; } Target llvm::TheMipselTarget; static unsigned Mipsel_JITMatchQuality() { return 0; } static unsigned Mipsel_TripleMatchQuality(const std::string &TT) { // We strongly match "mips*el-*". if (TT.size() >= 7 && std::string(TT.begin(), TT.begin()+7) == "mipsel-") return 20; if (TT.size() >= 15 && std::string(TT.begin(), TT.begin()+15) == "mipsallegrexel-") return 20; if (TT.size() == 3 && std::string(TT.begin(), TT.begin()+3) == "psp") return 20; return 0; } static unsigned Mipsel_ModuleMatchQuality(const Module &M) { // Check for a triple match. if (unsigned Q = Mipsel_TripleMatchQuality(M.getTargetTriple())) return Q; // Otherwise if the target triple is non-empty, we don't match. if (!M.getTargetTriple().empty()) return 0; return 0; } extern "C" void LLVMInitializeMipsTargetInfo() { TargetRegistry::RegisterTarget(TheMipsTarget, "mips", "Mips", &Mips_TripleMatchQuality, &Mips_ModuleMatchQuality, &Mips_JITMatchQuality); TargetRegistry::RegisterTarget(TheMipselTarget, "mipsel", "Mipsel", &Mipsel_TripleMatchQuality, &Mipsel_ModuleMatchQuality, &Mipsel_JITMatchQuality); }