Back to home page

EIC code displayed by LXR

 
 

    


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 }