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