1283625Sdim//===-- BPFTargetInfo.cpp - BPF Target Implementation ---------------------===// 2283625Sdim// 3353358Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4353358Sdim// See https://llvm.org/LICENSE.txt for license information. 5353358Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6283625Sdim// 7283625Sdim//===----------------------------------------------------------------------===// 8283625Sdim 9353358Sdim#include "TargetInfo/BPFTargetInfo.h" 10283625Sdim#include "llvm/Support/TargetRegistry.h" 11353358Sdim 12283625Sdimusing namespace llvm; 13283625Sdim 14353358SdimTarget &llvm::getTheBPFleTarget() { 15314564Sdim static Target TheBPFleTarget; 16314564Sdim return TheBPFleTarget; 17284236Sdim} 18353358SdimTarget &llvm::getTheBPFbeTarget() { 19314564Sdim static Target TheBPFbeTarget; 20314564Sdim return TheBPFbeTarget; 21314564Sdim} 22353358SdimTarget &llvm::getTheBPFTarget() { 23314564Sdim static Target TheBPFTarget; 24314564Sdim return TheBPFTarget; 25314564Sdim} 26283625Sdim 27360784Sdimextern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeBPFTargetInfo() { 28314564Sdim TargetRegistry::RegisterTarget(getTheBPFTarget(), "bpf", "BPF (host endian)", 29327952Sdim "BPF", [](Triple::ArchType) { return false; }, 30327952Sdim true); 31327952Sdim RegisterTarget<Triple::bpfel, /*HasJIT=*/true> X( 32327952Sdim getTheBPFleTarget(), "bpfel", "BPF (little endian)", "BPF"); 33314564Sdim RegisterTarget<Triple::bpfeb, /*HasJIT=*/true> Y(getTheBPFbeTarget(), "bpfeb", 34327952Sdim "BPF (big endian)", "BPF"); 35283625Sdim} 36