Warning, /include/llvm/IR/IntrinsicsBPF.td is written in an unsupported language. File is not indexed.
0001 //===- IntrinsicsBPF.td - Defines BPF intrinsics -----------*- tablegen -*-===//
0002 //
0003 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
0004 // See https://llvm.org/LICENSE.txt for license information.
0005 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
0006 //
0007 //===----------------------------------------------------------------------===//
0008 //
0009 // This file defines all of the BPF-specific intrinsics.
0010 //
0011 //===----------------------------------------------------------------------===//
0012
0013 // Specialized loads from packet
0014 let TargetPrefix = "bpf" in { // All intrinsics start with "llvm.bpf."
0015 def int_bpf_load_byte : ClangBuiltin<"__builtin_bpf_load_byte">,
0016 DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_ptr_ty, llvm_i64_ty], [IntrReadMem]>;
0017 def int_bpf_load_half : ClangBuiltin<"__builtin_bpf_load_half">,
0018 DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_ptr_ty, llvm_i64_ty], [IntrReadMem]>;
0019 def int_bpf_load_word : ClangBuiltin<"__builtin_bpf_load_word">,
0020 DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_ptr_ty, llvm_i64_ty], [IntrReadMem]>;
0021 def int_bpf_pseudo : ClangBuiltin<"__builtin_bpf_pseudo">,
0022 Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i64_ty]>;
0023 def int_bpf_preserve_field_info : ClangBuiltin<"__builtin_bpf_preserve_field_info">,
0024 Intrinsic<[llvm_i32_ty], [llvm_anyptr_ty, llvm_i64_ty],
0025 [IntrNoMem, ImmArg<ArgIndex<1>>]>;
0026 def int_bpf_btf_type_id : ClangBuiltin<"__builtin_bpf_btf_type_id">,
0027 Intrinsic<[llvm_i64_ty], [llvm_i32_ty, llvm_i64_ty],
0028 [IntrNoMem]>;
0029 def int_bpf_preserve_type_info : ClangBuiltin<"__builtin_bpf_preserve_type_info">,
0030 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i64_ty],
0031 [IntrNoMem]>;
0032 def int_bpf_preserve_enum_value : ClangBuiltin<"__builtin_bpf_preserve_enum_value">,
0033 Intrinsic<[llvm_i64_ty], [llvm_i32_ty, llvm_ptr_ty, llvm_i64_ty],
0034 [IntrNoMem]>;
0035 def int_bpf_passthrough : ClangBuiltin<"__builtin_bpf_passthrough">,
0036 Intrinsic<[llvm_any_ty], [llvm_i32_ty, llvm_any_ty], [IntrNoMem]>;
0037 def int_bpf_compare : ClangBuiltin<"__builtin_bpf_compare">,
0038 Intrinsic<[llvm_i1_ty], [llvm_i32_ty, llvm_anyint_ty, llvm_anyint_ty],
0039 [IntrNoMem]>;
0040 def int_bpf_getelementptr_and_load : ClangBuiltin<"__builtin_bpf_getelementptr_and_load">,
0041 Intrinsic<[llvm_any_ty],
0042 [llvm_ptr_ty, // base ptr for getelementptr
0043 llvm_i1_ty, // volatile
0044 llvm_i8_ty, // atomic order
0045 llvm_i8_ty, // synscope id
0046 llvm_i8_ty, // alignment
0047 llvm_i1_ty, // inbounds
0048 llvm_vararg_ty], // indices for getelementptr insn
0049 [IntrNoCallback,
0050 IntrNoFree,
0051 IntrWillReturn,
0052 NoCapture <ArgIndex<0>>,
0053 ImmArg <ArgIndex<1>>, // volatile
0054 ImmArg <ArgIndex<2>>, // atomic order
0055 ImmArg <ArgIndex<3>>, // synscope id
0056 ImmArg <ArgIndex<4>>, // alignment
0057 ImmArg <ArgIndex<5>>, // inbounds
0058 ]>;
0059 def int_bpf_getelementptr_and_store : ClangBuiltin<"__builtin_bpf_getelementptr_and_store">,
0060 Intrinsic<[],
0061 [llvm_any_ty, // value to store
0062 llvm_ptr_ty, // base ptr for getelementptr
0063 llvm_i1_ty, // volatile
0064 llvm_i8_ty, // atomic order
0065 llvm_i8_ty, // syncscope id
0066 llvm_i8_ty, // alignment
0067 llvm_i1_ty, // inbounds
0068 llvm_vararg_ty], // indexes for getelementptr insn
0069 [IntrNoCallback,
0070 IntrNoFree,
0071 IntrWillReturn,
0072 NoCapture <ArgIndex<1>>,
0073 ImmArg <ArgIndex<2>>, // volatile
0074 ImmArg <ArgIndex<3>>, // atomic order
0075 ImmArg <ArgIndex<4>>, // syncscope id
0076 ImmArg <ArgIndex<5>>, // alignment
0077 ImmArg <ArgIndex<6>>, // inbounds
0078 ]>;
0079 }