BPFTargetInfo.cpp revision 360784
1153838Sdfr//===-- BPFTargetInfo.cpp - BPF Target Implementation ---------------------===//
2153838Sdfr//
3153838Sdfr// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4153838Sdfr// See https://llvm.org/LICENSE.txt for license information.
5153838Sdfr// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6153838Sdfr//
7153838Sdfr//===----------------------------------------------------------------------===//
8153838Sdfr
9153838Sdfr#include "TargetInfo/BPFTargetInfo.h"
10153838Sdfr#include "llvm/Support/TargetRegistry.h"
11153838Sdfr
12153838Sdfrusing namespace llvm;
13153838Sdfr
14153838SdfrTarget &llvm::getTheBPFleTarget() {
15153838Sdfr  static Target TheBPFleTarget;
16153838Sdfr  return TheBPFleTarget;
17153838Sdfr}
18153838SdfrTarget &llvm::getTheBPFbeTarget() {
19153838Sdfr  static Target TheBPFbeTarget;
20153838Sdfr  return TheBPFbeTarget;
21153838Sdfr}
22153838SdfrTarget &llvm::getTheBPFTarget() {
23153838Sdfr  static Target TheBPFTarget;
24153838Sdfr  return TheBPFTarget;
25153838Sdfr}
26153838Sdfr
27153838Sdfrextern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeBPFTargetInfo() {
28153838Sdfr  TargetRegistry::RegisterTarget(getTheBPFTarget(), "bpf", "BPF (host endian)",
29153838Sdfr                                 "BPF", [](Triple::ArchType) { return false; },
30203027Sgavin                                 true);
31206622Suqs  RegisterTarget<Triple::bpfel, /*HasJIT=*/true> X(
32153838Sdfr      getTheBPFleTarget(), "bpfel", "BPF (little endian)", "BPF");
33153838Sdfr  RegisterTarget<Triple::bpfeb, /*HasJIT=*/true> Y(getTheBPFbeTarget(), "bpfeb",
34153838Sdfr                                                   "BPF (big endian)", "BPF");
35153838Sdfr}
36153838Sdfr