brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.8 KiB · f46a8ef Raw
65 lines · c
1//===- BPFCORE.h - Common info for Compile-Once Run-EveryWhere  -*- 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#ifndef LLVM_LIB_TARGET_BPF_BPFCORE_H10#define LLVM_LIB_TARGET_BPF_BPFCORE_H11 12#include "llvm/ADT/StringRef.h"13#include "llvm/IR/Instructions.h"14 15namespace llvm {16 17class BasicBlock;18class Instruction;19class Module;20 21class BPFCoreSharedInfo {22public:23  enum BTFTypeIdFlag : uint32_t {24    BTF_TYPE_ID_LOCAL_RELOC = 0,25    BTF_TYPE_ID_REMOTE_RELOC,26 27    MAX_BTF_TYPE_ID_FLAG,28  };29 30  enum PreserveTypeInfo : uint32_t {31    PRESERVE_TYPE_INFO_EXISTENCE = 0,32    PRESERVE_TYPE_INFO_SIZE,33    PRESERVE_TYPE_INFO_MATCH,34 35    MAX_PRESERVE_TYPE_INFO_FLAG,36  };37 38  enum PreserveEnumValue : uint32_t {39    PRESERVE_ENUM_VALUE_EXISTENCE = 0,40    PRESERVE_ENUM_VALUE,41 42    MAX_PRESERVE_ENUM_VALUE_FLAG,43  };44 45  /// The attribute attached to globals representing a field access46  static constexpr StringRef AmaAttr = "btf_ama";47  /// The attribute attached to globals representing a type id48  static constexpr StringRef TypeIdAttr = "btf_type_id";49 50  /// llvm.bpf.passthrough builtin seq number51  static uint32_t SeqNum;52 53  /// Insert a bpf passthrough builtin function.54  static Instruction *insertPassThrough(Module *M, BasicBlock *BB,55                                        Instruction *Input,56                                        Instruction *Before);57  static void removeArrayAccessCall(CallInst *Call);58  static void removeStructAccessCall(CallInst *Call);59  static void removeUnionAccessCall(CallInst *Call);60};61 62} // namespace llvm63 64#endif65