1 //===-- SystemZTargetInfo.cpp - SystemZ Target Implementation -----------------===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 10 #include "SystemZ.h" 11 #include "llvm/Module.h" 12 #include "llvm/Target/TargetRegistry.h" 13 using namespace llvm; 14 15 Target llvm::TheSystemZTarget; 16 17 static unsigned SystemZ_JITMatchQuality() { 18 return 0; 19 } 20 21 static unsigned SystemZ_TripleMatchQuality(const std::string &TT) { 22 // We strongly match s390x 23 if (TT.size() >= 5 && TT[0] == 's' && TT[1] == '3' && TT[2] == '9' && 24 TT[3] == '0' && TT[4] == 'x') 25 return 20; 26 27 return 0; 28 } 29 30 static unsigned SystemZ_ModuleMatchQuality(const Module &M) { 31 // Check for a triple match. 32 if (unsigned Q = SystemZ_TripleMatchQuality(M.getTargetTriple())) 33 return Q; 34 35 // Otherwise we don't match. 36 return 0; 37 } 38 39 extern "C" void LLVMInitializeSystemZTargetInfo() { 40 TargetRegistry::RegisterTarget(TheSystemZTarget, "systemz", 41 "SystemZ", 42 &SystemZ_TripleMatchQuality, 43 &SystemZ_ModuleMatchQuality, 44 &SystemZ_JITMatchQuality); 45 } 46