Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/contrib/llvm-project/llvm/lib/Target/BPF/BPFCORE.h
35269 views
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-exception
6
//
7
//===----------------------------------------------------------------------===//
8
9
#ifndef LLVM_LIB_TARGET_BPF_BPFCORE_H
10
#define LLVM_LIB_TARGET_BPF_BPFCORE_H
11
12
#include "llvm/ADT/StringRef.h"
13
#include "llvm/IR/Instructions.h"
14
15
namespace llvm {
16
17
class BasicBlock;
18
class Instruction;
19
class Module;
20
21
class BPFCoreSharedInfo {
22
public:
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 access
46
static constexpr StringRef AmaAttr = "btf_ama";
47
/// The attribute attached to globals representing a type id
48
static constexpr StringRef TypeIdAttr = "btf_type_id";
49
50
/// llvm.bpf.passthrough builtin seq number
51
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 llvm
63
64
#endif
65
66