1// Define intrinsics written by hand
2
3// VEL Intrinsic instructions.
4let TargetPrefix = "ve" in {
5  def int_ve_vl_svob : GCCBuiltin<"__builtin_ve_vl_svob">,
6                       Intrinsic<[], [], [IntrHasSideEffects]>;
7
8  def int_ve_vl_pack_f32p : GCCBuiltin<"__builtin_ve_vl_pack_f32p">,
9                            Intrinsic<[llvm_i64_ty], [llvm_ptr_ty, llvm_ptr_ty],
10                                      [IntrReadMem]>;
11  def int_ve_vl_pack_f32a : GCCBuiltin<"__builtin_ve_vl_pack_f32a">,
12                            Intrinsic<[llvm_i64_ty], [llvm_ptr_ty],
13                                      [IntrReadMem]>;
14
15  def int_ve_vl_extract_vm512u :
16      GCCBuiltin<"__builtin_ve_vl_extract_vm512u">,
17      Intrinsic<[LLVMType<v256i1>], [LLVMType<v512i1>], [IntrNoMem]>;
18
19  def int_ve_vl_extract_vm512l :
20      GCCBuiltin<"__builtin_ve_vl_extract_vm512l">,
21      Intrinsic<[LLVMType<v256i1>], [LLVMType<v512i1>], [IntrNoMem]>;
22
23  def int_ve_vl_insert_vm512u :
24      GCCBuiltin<"__builtin_ve_vl_insert_vm512u">,
25      Intrinsic<[LLVMType<v512i1>], [LLVMType<v512i1>, LLVMType<v256i1>],
26                [IntrNoMem]>;
27
28  def int_ve_vl_insert_vm512l :
29      GCCBuiltin<"__builtin_ve_vl_insert_vm512l">,
30      Intrinsic<[LLVMType<v512i1>], [LLVMType<v512i1>, LLVMType<v256i1>],
31                [IntrNoMem]>;
32}
33
34// Define intrinsics automatically generated
35include "llvm/IR/IntrinsicsVEVL.gen.td"
36