blob: 5dfa915034bada08775b68b0e115353e326d2ded [file] [log] [blame]
Alexei Starovoitove4c8c802015-01-24 17:51:26 +00001//===-- BPFTargetInfo.cpp - BPF Target Implementation ---------------------===//
2//
Chandler Carruth2946cd72019-01-19 08:50:56 +00003// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
Alexei Starovoitove4c8c802015-01-24 17:51:26 +00006//
7//===----------------------------------------------------------------------===//
8
Richard Trieua68ee932019-05-14 22:54:06 +00009#include "TargetInfo/BPFTargetInfo.h"
Alexei Starovoitove4c8c802015-01-24 17:51:26 +000010#include "llvm/Support/TargetRegistry.h"
Richard Trieua68ee932019-05-14 22:54:06 +000011
Alexei Starovoitove4c8c802015-01-24 17:51:26 +000012using namespace llvm;
13
Richard Trieua68ee932019-05-14 22:54:06 +000014Target &llvm::getTheBPFleTarget() {
Mehdi Aminif42454b2016-10-09 23:00:34 +000015 static Target TheBPFleTarget;
16 return TheBPFleTarget;
Alexei Starovoitov310dead2015-06-04 19:15:05 +000017}
Richard Trieua68ee932019-05-14 22:54:06 +000018Target &llvm::getTheBPFbeTarget() {
Mehdi Aminif42454b2016-10-09 23:00:34 +000019 static Target TheBPFbeTarget;
20 return TheBPFbeTarget;
21}
Richard Trieua68ee932019-05-14 22:54:06 +000022Target &llvm::getTheBPFTarget() {
Mehdi Aminif42454b2016-10-09 23:00:34 +000023 static Target TheBPFTarget;
24 return TheBPFTarget;
25}
Alexei Starovoitove4c8c802015-01-24 17:51:26 +000026
Tom Stellard4b0b2612019-06-11 03:21:13 +000027extern "C" void LLVMInitializeBPFTargetInfo() {
Mehdi Aminif42454b2016-10-09 23:00:34 +000028 TargetRegistry::RegisterTarget(getTheBPFTarget(), "bpf", "BPF (host endian)",
Daniel Sanders725584e2017-11-15 23:55:44 +000029 "BPF", [](Triple::ArchType) { return false; },
30 true);
31 RegisterTarget<Triple::bpfel, /*HasJIT=*/true> X(
32 getTheBPFleTarget(), "bpfel", "BPF (little endian)", "BPF");
Mehdi Aminif42454b2016-10-09 23:00:34 +000033 RegisterTarget<Triple::bpfeb, /*HasJIT=*/true> Y(getTheBPFbeTarget(), "bpfeb",
Daniel Sanders725584e2017-11-15 23:55:44 +000034 "BPF (big endian)", "BPF");
Alexei Starovoitove4c8c802015-01-24 17:51:26 +000035}