2020-11-09 22:50:15 +01:00
|
|
|
// Define intrinsics written by hand
|
|
|
|
|
2021-01-07 15:27:39 +01:00
|
|
|
// VEL Intrinsic instructions.
|
|
|
|
let TargetPrefix = "ve" in {
|
|
|
|
def int_ve_vl_svob : GCCBuiltin<"__builtin_ve_vl_svob">,
|
|
|
|
Intrinsic<[], [], [IntrHasSideEffects]>;
|
2021-01-08 12:10:02 +01:00
|
|
|
|
|
|
|
def int_ve_vl_pack_f32p : GCCBuiltin<"__builtin_ve_vl_pack_f32p">,
|
|
|
|
Intrinsic<[llvm_i64_ty], [llvm_ptr_ty, llvm_ptr_ty],
|
|
|
|
[IntrReadMem]>;
|
|
|
|
def int_ve_vl_pack_f32a : GCCBuiltin<"__builtin_ve_vl_pack_f32a">,
|
|
|
|
Intrinsic<[llvm_i64_ty], [llvm_ptr_ty],
|
|
|
|
[IntrReadMem]>;
|
2021-01-08 12:29:42 +01:00
|
|
|
|
|
|
|
def int_ve_vl_extract_vm512u :
|
|
|
|
GCCBuiltin<"__builtin_ve_vl_extract_vm512u">,
|
|
|
|
Intrinsic<[LLVMType<v256i1>], [LLVMType<v512i1>], [IntrNoMem]>;
|
|
|
|
|
|
|
|
def int_ve_vl_extract_vm512l :
|
|
|
|
GCCBuiltin<"__builtin_ve_vl_extract_vm512l">,
|
|
|
|
Intrinsic<[LLVMType<v256i1>], [LLVMType<v512i1>], [IntrNoMem]>;
|
|
|
|
|
|
|
|
def int_ve_vl_insert_vm512u :
|
|
|
|
GCCBuiltin<"__builtin_ve_vl_insert_vm512u">,
|
|
|
|
Intrinsic<[LLVMType<v512i1>], [LLVMType<v512i1>, LLVMType<v256i1>],
|
|
|
|
[IntrNoMem]>;
|
|
|
|
|
|
|
|
def int_ve_vl_insert_vm512l :
|
|
|
|
GCCBuiltin<"__builtin_ve_vl_insert_vm512l">,
|
|
|
|
Intrinsic<[LLVMType<v512i1>], [LLVMType<v512i1>, LLVMType<v256i1>],
|
|
|
|
[IntrNoMem]>;
|
2021-01-07 15:27:39 +01:00
|
|
|
}
|
|
|
|
|
2020-11-09 22:50:15 +01:00
|
|
|
// Define intrinsics automatically generated
|
|
|
|
include "llvm/IR/IntrinsicsVEVL.gen.td"
|