50 lines · c
1//===-- BPFTargetMachine.h - Define TargetMachine for BPF --- C++ ---===//2//3// 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-exception6//7//===----------------------------------------------------------------------===//8//9// This file declares the BPF specific subclass of TargetMachine.10//11//===----------------------------------------------------------------------===//12 13#ifndef LLVM_LIB_TARGET_BPF_BPFTARGETMACHINE_H14#define LLVM_LIB_TARGET_BPF_BPFTARGETMACHINE_H15 16#include "BPFSubtarget.h"17#include "llvm/CodeGen/CodeGenTargetMachineImpl.h"18#include <optional>19 20namespace llvm {21class BPFTargetMachine : public CodeGenTargetMachineImpl {22 std::unique_ptr<TargetLoweringObjectFile> TLOF;23 BPFSubtarget Subtarget;24 25public:26 BPFTargetMachine(const Target &T, const Triple &TT, StringRef CPU,27 StringRef FS, const TargetOptions &Options,28 std::optional<Reloc::Model> RM,29 std::optional<CodeModel::Model> CM, CodeGenOptLevel OL,30 bool JIT);31 32 const BPFSubtarget *getSubtargetImpl() const { return &Subtarget; }33 const BPFSubtarget *getSubtargetImpl(const Function &) const override {34 return &Subtarget;35 }36 37 TargetPassConfig *createPassConfig(PassManagerBase &PM) override;38 39 TargetTransformInfo getTargetTransformInfo(const Function &F) const override;40 41 TargetLoweringObjectFile *getObjFileLowering() const override {42 return TLOF.get();43 }44 45 void registerPassBuilderCallbacks(PassBuilder &PB) override;46};47}48 49#endif50