10b57cec5SDimitry Andric //===-- BPFTargetInfo.cpp - BPF Target Implementation ---------------------===//
20b57cec5SDimitry Andric //
30b57cec5SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
40b57cec5SDimitry Andric // See https://llvm.org/LICENSE.txt for license information.
50b57cec5SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
60b57cec5SDimitry Andric //
70b57cec5SDimitry Andric //===----------------------------------------------------------------------===//
80b57cec5SDimitry Andric
90b57cec5SDimitry Andric #include "TargetInfo/BPFTargetInfo.h"
10*349cc55cSDimitry Andric #include "llvm/MC/TargetRegistry.h"
110b57cec5SDimitry Andric
120b57cec5SDimitry Andric using namespace llvm;
130b57cec5SDimitry Andric
getTheBPFleTarget()140b57cec5SDimitry Andric Target &llvm::getTheBPFleTarget() {
150b57cec5SDimitry Andric static Target TheBPFleTarget;
160b57cec5SDimitry Andric return TheBPFleTarget;
170b57cec5SDimitry Andric }
getTheBPFbeTarget()180b57cec5SDimitry Andric Target &llvm::getTheBPFbeTarget() {
190b57cec5SDimitry Andric static Target TheBPFbeTarget;
200b57cec5SDimitry Andric return TheBPFbeTarget;
210b57cec5SDimitry Andric }
getTheBPFTarget()220b57cec5SDimitry Andric Target &llvm::getTheBPFTarget() {
230b57cec5SDimitry Andric static Target TheBPFTarget;
240b57cec5SDimitry Andric return TheBPFTarget;
250b57cec5SDimitry Andric }
260b57cec5SDimitry Andric
LLVMInitializeBPFTargetInfo()27480093f4SDimitry Andric extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeBPFTargetInfo() {
280b57cec5SDimitry Andric TargetRegistry::RegisterTarget(getTheBPFTarget(), "bpf", "BPF (host endian)",
290b57cec5SDimitry Andric "BPF", [](Triple::ArchType) { return false; },
300b57cec5SDimitry Andric true);
310b57cec5SDimitry Andric RegisterTarget<Triple::bpfel, /*HasJIT=*/true> X(
320b57cec5SDimitry Andric getTheBPFleTarget(), "bpfel", "BPF (little endian)", "BPF");
330b57cec5SDimitry Andric RegisterTarget<Triple::bpfeb, /*HasJIT=*/true> Y(getTheBPFbeTarget(), "bpfeb",
340b57cec5SDimitry Andric "BPF (big endian)", "BPF");
350b57cec5SDimitry Andric }
36