2018-06-19 11:28:59 +00:00
|
|
|
//===-- Target.cpp ----------------------------------------------*- C++ -*-===//
|
|
|
|
//
|
|
|
|
// The LLVM Compiler Infrastructure
|
|
|
|
//
|
|
|
|
// This file is distributed under the University of Illinois Open Source
|
|
|
|
// License. See LICENSE.TXT for details.
|
|
|
|
//
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "Target.h"
|
|
|
|
|
|
|
|
namespace exegesis {
|
|
|
|
|
2018-06-25 11:22:23 +00:00
|
|
|
ExegesisTarget::~ExegesisTarget() {} // anchor.
|
2018-06-19 11:28:59 +00:00
|
|
|
|
2018-06-25 11:22:23 +00:00
|
|
|
static ExegesisTarget *FirstTarget = nullptr;
|
2018-06-19 11:28:59 +00:00
|
|
|
|
2018-06-20 11:54:35 +00:00
|
|
|
const ExegesisTarget *ExegesisTarget::lookup(llvm::Triple TT) {
|
2018-06-25 11:22:23 +00:00
|
|
|
for (const ExegesisTarget *T = FirstTarget; T != nullptr; T = T->Next) {
|
2018-06-20 11:54:35 +00:00
|
|
|
if (T->matchesArch(TT.getArch()))
|
|
|
|
return T;
|
2018-06-19 11:28:59 +00:00
|
|
|
}
|
|
|
|
return nullptr;
|
|
|
|
}
|
|
|
|
|
2018-06-25 11:22:23 +00:00
|
|
|
void ExegesisTarget::registerTarget(ExegesisTarget *Target) {
|
2018-06-19 11:28:59 +00:00
|
|
|
if (FirstTarget == nullptr) {
|
|
|
|
FirstTarget = Target;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
assert(Target->Next == nullptr && "target has already been registered");
|
|
|
|
if (Target->Next != nullptr)
|
|
|
|
return;
|
|
|
|
Target->Next = FirstTarget;
|
|
|
|
FirstTarget = Target;
|
|
|
|
}
|
2018-06-25 11:22:23 +00:00
|
|
|
} // namespace exegesis
|