Details | Last modification | View Log | RSS feed
| Rev | Author | Line No. | Line |
|---|---|---|---|
| 14 | pmbaty | 1 | //===- IntrinsicsBPF.td - Defines BPF intrinsics -----------*- tablegen -*-===// |
| 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 | // This file defines all of the BPF-specific intrinsics. |
||
| 10 | // |
||
| 11 | //===----------------------------------------------------------------------===// |
||
| 12 | |||
| 13 | // Specialized loads from packet |
||
| 14 | let TargetPrefix = "bpf" in { // All intrinsics start with "llvm.bpf." |
||
| 15 | def int_bpf_load_byte : ClangBuiltin<"__builtin_bpf_load_byte">, |
||
| 16 | Intrinsic<[llvm_i64_ty], [llvm_ptr_ty, llvm_i64_ty], [IntrReadMem]>; |
||
| 17 | def int_bpf_load_half : ClangBuiltin<"__builtin_bpf_load_half">, |
||
| 18 | Intrinsic<[llvm_i64_ty], [llvm_ptr_ty, llvm_i64_ty], [IntrReadMem]>; |
||
| 19 | def int_bpf_load_word : ClangBuiltin<"__builtin_bpf_load_word">, |
||
| 20 | Intrinsic<[llvm_i64_ty], [llvm_ptr_ty, llvm_i64_ty], [IntrReadMem]>; |
||
| 21 | def int_bpf_pseudo : ClangBuiltin<"__builtin_bpf_pseudo">, |
||
| 22 | Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i64_ty]>; |
||
| 23 | def int_bpf_preserve_field_info : ClangBuiltin<"__builtin_bpf_preserve_field_info">, |
||
| 24 | Intrinsic<[llvm_i32_ty], [llvm_anyptr_ty, llvm_i64_ty], |
||
| 25 | [IntrNoMem, ImmArg<ArgIndex<1>>]>; |
||
| 26 | def int_bpf_btf_type_id : ClangBuiltin<"__builtin_bpf_btf_type_id">, |
||
| 27 | Intrinsic<[llvm_i64_ty], [llvm_i32_ty, llvm_i64_ty], |
||
| 28 | [IntrNoMem]>; |
||
| 29 | def int_bpf_preserve_type_info : ClangBuiltin<"__builtin_bpf_preserve_type_info">, |
||
| 30 | Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i64_ty], |
||
| 31 | [IntrNoMem]>; |
||
| 32 | def int_bpf_preserve_enum_value : ClangBuiltin<"__builtin_bpf_preserve_enum_value">, |
||
| 33 | Intrinsic<[llvm_i64_ty], [llvm_i32_ty, llvm_ptr_ty, llvm_i64_ty], |
||
| 34 | [IntrNoMem]>; |
||
| 35 | def int_bpf_passthrough : ClangBuiltin<"__builtin_bpf_passthrough">, |
||
| 36 | Intrinsic<[llvm_any_ty], [llvm_i32_ty, llvm_any_ty], [IntrNoMem]>; |
||
| 37 | def int_bpf_compare : ClangBuiltin<"__builtin_bpf_compare">, |
||
| 38 | Intrinsic<[llvm_i1_ty], [llvm_i32_ty, llvm_anyint_ty, llvm_anyint_ty], |
||
| 39 | [IntrNoMem]>; |
||
| 40 | } |