c++: CWG 2789 and reversed operator candidates
[official-gcc.git] / gcc / config / bpf / core-builtins.h
blobebe321b16fbc91d4a87d9b7f637ae04801774af3
1 #ifndef BPF_CORE_BUILTINS_H
2 #define BPF_CORE_BUILTINS_H
4 #include "btfext-out.h"
6 enum bpf_builtins
8 BPF_BUILTIN_UNUSED = 0,
9 /* Built-ins for non-generic loads and stores. */
10 BPF_BUILTIN_LOAD_BYTE,
11 BPF_BUILTIN_LOAD_HALF,
12 BPF_BUILTIN_LOAD_WORD,
14 /* Compile Once - Run Everywhere (CO-RE) support. */
15 BPF_CORE_BUILTINS_MARKER = 10,
16 BPF_BUILTIN_PRESERVE_ACCESS_INDEX,
17 BPF_BUILTIN_PRESERVE_FIELD_INFO,
18 BPF_BUILTIN_BTF_TYPE_ID,
19 BPF_BUILTIN_PRESERVE_TYPE_INFO,
20 BPF_BUILTIN_PRESERVE_ENUM_VALUE,
22 /* CO-RE INTERNAL reloc. */
23 BPF_BUILTIN_CORE_RELOC,
25 BPF_BUILTIN_MAX,
28 enum bpf_field_info_kind {
29 BPF_FIELD_BYTE_OFFSET = 0, /* field byte offset */
30 BPF_FIELD_BYTE_SIZE = 1,
31 BPF_FIELD_EXISTS = 2, /* field existence in target kernel */
32 BPF_FIELD_SIGNED = 3,
33 BPF_FIELD_LSHIFT_U64 = 4,
34 BPF_FIELD_RSHIFT_U64 = 5,
37 /* second argument to __builtin_btf_type_id () built-in */
38 enum bpf_type_id_kind {
39 BPF_TYPE_ID_LOCAL = 0, /* BTF type ID in local program */
40 BPF_TYPE_ID_TARGET = 1, /* BTF type ID in target kernel */
43 /* second argument to __builtin_preserve_type_info () built-in */
44 enum bpf_type_info_kind {
45 BPF_TYPE_EXISTS = 0, /* type existence in target kernel */
46 BPF_TYPE_SIZE = 1, /* type size in target kernel */
47 BPF_TYPE_MATCHES = 2, /* type match in target kernel */
50 /* second argument to __builtin_preserve_enum_value () built-in */
51 enum bpf_enum_value_kind {
52 BPF_ENUMVAL_EXISTS = 0, /* enum value existence in kernel */
53 BPF_ENUMVAL_VALUE = 1, /* enum value value relocation */
56 extern GTY (()) tree bpf_builtins[(int) BPF_BUILTIN_MAX];
58 void bpf_init_core_builtins (void);
59 rtx bpf_expand_core_builtin (tree exp, enum bpf_builtins code);
60 tree bpf_resolve_overloaded_core_builtin (location_t loc, tree fndecl,
61 void *arglist);
62 void
63 bpf_output_core_reloc (rtx *operands, int nr_ops);
65 #endif