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_TripleMatchQuality(const std::string &TT) { 18 // We strongly match s390x 19 if (TT.size() >= 5 && TT[0] == 's' && TT[1] == '3' && TT[2] == '9' && 20 TT[3] == '0' && TT[4] == 'x') 21 return 20; 22 23 return 0; 24 } 25 26 static unsigned SystemZ_ModuleMatchQuality(const Module &M) { 27 // Check for a triple match. 28 if (unsigned Q = SystemZ_TripleMatchQuality(M.getTargetTriple())) 29 return Q; 30 31 // Otherwise we don't match. 32 return 0; 33 } 34 35 extern "C" void LLVMInitializeSystemZTargetInfo() { 36 TargetRegistry::RegisterTarget(TheSystemZTarget, "systemz", 37 "SystemZ", 38 &SystemZ_TripleMatchQuality, 39 &SystemZ_ModuleMatchQuality); 40 } 41