mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-15 23:31:37 +00:00
c984df8602
- Intended to match current TargetMachine implementations. - No facilities for linking these in yet. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75751 91177308-0d34-0410-b5e6-96231b3b80d8
58 lines
1.6 KiB
C++
58 lines
1.6 KiB
C++
//===-- IA64TargetInfo.cpp - IA64 Target Implementation -------------------===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "llvm/Module.h"
|
|
#include "llvm/Target/TargetRegistry.h"
|
|
using namespace llvm;
|
|
|
|
Target TheIA64Target;
|
|
|
|
static unsigned IA64_JITMatchQuality() {
|
|
return 0;
|
|
}
|
|
|
|
static unsigned IA64_TripleMatchQuality(const std::string &TT) {
|
|
// we match [iI][aA]*64
|
|
if (TT.size() >= 4) {
|
|
if ((TT[0]=='i' || TT[0]=='I') &&
|
|
(TT[1]=='a' || TT[1]=='A')) {
|
|
for(unsigned int i=2; i<(TT.size()-1); i++)
|
|
if(TT[i]=='6' && TT[i+1]=='4')
|
|
return 20; // strong match
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static unsigned IA64_ModuleMatchQuality(const Module &M) {
|
|
// Check for a triple match.
|
|
if (unsigned Q = IA64_TripleMatchQuality(M.getTargetTriple()))
|
|
return Q;
|
|
|
|
// Otherwise if the target triple is non-empty, we don't match.
|
|
if (!M.getTargetTriple().empty()) return 0;
|
|
|
|
// FIXME: This is bad, the target matching algorithm shouldn't depend on the
|
|
// host.
|
|
#if defined(__ia64__) || defined(__IA64__)
|
|
return 5;
|
|
#else
|
|
return 0;
|
|
#endif
|
|
}
|
|
|
|
extern "C" void LLVMInitializeIA64TargetInfo() {
|
|
TargetRegistry::RegisterTarget(TheIA64Target, "ia64",
|
|
"IA-64 (Itanium) [experimental]",
|
|
&IA64_TripleMatchQuality,
|
|
&IA64_ModuleMatchQuality,
|
|
&IA64_JITMatchQuality);
|
|
}
|