mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-31 12:41:49 +01:00
Refactor argument attribute specification in intrinsic definition. NFC.
- Argument attribute needs specifiying through `ArgIndex<n>` (corresponding to `FirstArgIndex`) to distinguish explicitly from the index number from the overloaded type list. - In addition, `RetIndex` (corresponding to `ReturnIndex`) and `FuncIndex` (corresponding to `FunctionIndex`) are introduced for us to associate attributes on the return value and potentially function itself. Differential Revision: https://reviews.llvm.org/D80422
This commit is contained in:
parent
f4b28bd51d
commit
e47439baae
@ -62,44 +62,52 @@ def Commutative : IntrinsicProperty;
|
||||
// Throws - This intrinsic can throw.
|
||||
def Throws : IntrinsicProperty;
|
||||
|
||||
// Attribute index needs to match `AttrIndex` defined `Attributes.h`.
|
||||
class AttrIndex<int idx> {
|
||||
int Value = idx;
|
||||
}
|
||||
def FuncIndex : AttrIndex<-1>;
|
||||
def RetIndex : AttrIndex<0>;
|
||||
class ArgIndex<int argNo> : AttrIndex<!add(argNo, 1)>;
|
||||
|
||||
// NoCapture - The specified argument pointer is not captured by the intrinsic.
|
||||
class NoCapture<int argNo> : IntrinsicProperty {
|
||||
int ArgNo = argNo;
|
||||
class NoCapture<AttrIndex idx> : IntrinsicProperty {
|
||||
int ArgNo = idx.Value;
|
||||
}
|
||||
|
||||
// NoAlias - The specified argument pointer is not aliasing other "noalias" pointer
|
||||
// arguments of the intrinsic wrt. the intrinsic scope.
|
||||
class NoAlias<int argNo> : IntrinsicProperty {
|
||||
int ArgNo = argNo;
|
||||
class NoAlias<AttrIndex idx> : IntrinsicProperty {
|
||||
int ArgNo = idx.Value;
|
||||
}
|
||||
|
||||
// Returned - The specified argument is always the return value of the
|
||||
// intrinsic.
|
||||
class Returned<int argNo> : IntrinsicProperty {
|
||||
int ArgNo = argNo;
|
||||
class Returned<AttrIndex idx> : IntrinsicProperty {
|
||||
int ArgNo = idx.Value;
|
||||
}
|
||||
|
||||
// ImmArg - The specified argument must be an immediate.
|
||||
class ImmArg<int argNo> : IntrinsicProperty {
|
||||
int ArgNo = argNo;
|
||||
class ImmArg<AttrIndex idx> : IntrinsicProperty {
|
||||
int ArgNo = idx.Value;
|
||||
}
|
||||
|
||||
// ReadOnly - The specified argument pointer is not written to through the
|
||||
// pointer by the intrinsic.
|
||||
class ReadOnly<int argNo> : IntrinsicProperty {
|
||||
int ArgNo = argNo;
|
||||
class ReadOnly<AttrIndex idx> : IntrinsicProperty {
|
||||
int ArgNo = idx.Value;
|
||||
}
|
||||
|
||||
// WriteOnly - The intrinsic does not read memory through the specified
|
||||
// argument pointer.
|
||||
class WriteOnly<int argNo> : IntrinsicProperty {
|
||||
int ArgNo = argNo;
|
||||
class WriteOnly<AttrIndex idx> : IntrinsicProperty {
|
||||
int ArgNo = idx.Value;
|
||||
}
|
||||
|
||||
// ReadNone - The specified argument pointer is not dereferenced by the
|
||||
// intrinsic.
|
||||
class ReadNone<int argNo> : IntrinsicProperty {
|
||||
int ArgNo = argNo;
|
||||
class ReadNone<AttrIndex idx> : IntrinsicProperty {
|
||||
int ArgNo = idx.Value;
|
||||
}
|
||||
|
||||
def IntrNoReturn : IntrinsicProperty;
|
||||
@ -356,7 +364,8 @@ def int_gcread : Intrinsic<[llvm_ptr_ty],
|
||||
[IntrReadMem, IntrArgMemOnly]>;
|
||||
def int_gcwrite : Intrinsic<[],
|
||||
[llvm_ptr_ty, llvm_ptr_ty, llvm_ptrptr_ty],
|
||||
[IntrArgMemOnly, NoCapture<1>, NoCapture<2>]>;
|
||||
[IntrArgMemOnly, NoCapture<ArgIndex<1>>,
|
||||
NoCapture<ArgIndex<2>>]>;
|
||||
|
||||
//===------------------- ObjC ARC runtime Intrinsics --------------------===//
|
||||
//
|
||||
@ -432,9 +441,11 @@ def int_objc_arc_annotation_bottomup_bbend : Intrinsic<[],
|
||||
|
||||
//===--------------------- Code Generator Intrinsics ----------------------===//
|
||||
//
|
||||
def int_returnaddress : Intrinsic<[llvm_ptr_ty], [llvm_i32_ty], [IntrNoMem, ImmArg<0>]>;
|
||||
def int_returnaddress : Intrinsic<[llvm_ptr_ty], [llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<ArgIndex<0>>]>;
|
||||
def int_addressofreturnaddress : Intrinsic<[llvm_anyptr_ty], [], [IntrNoMem]>;
|
||||
def int_frameaddress : Intrinsic<[llvm_anyptr_ty], [llvm_i32_ty], [IntrNoMem, ImmArg<0>]>;
|
||||
def int_frameaddress : Intrinsic<[llvm_anyptr_ty], [llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<ArgIndex<0>>]>;
|
||||
def int_sponentry : Intrinsic<[llvm_anyptr_ty], [], [IntrNoMem]>;
|
||||
def int_read_register : Intrinsic<[llvm_anyint_ty], [llvm_metadata_ty],
|
||||
[IntrReadMem], "llvm.read_register">;
|
||||
@ -452,7 +463,7 @@ def int_localescape : Intrinsic<[], [llvm_vararg_ty]>;
|
||||
// to an escaped allocation indicated by the index.
|
||||
def int_localrecover : Intrinsic<[llvm_ptr_ty],
|
||||
[llvm_ptr_ty, llvm_ptr_ty, llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<2>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
// Given the frame pointer passed into an SEH filter function, returns a
|
||||
// pointer to the local variable area suitable for use with llvm.localrecover.
|
||||
@ -478,8 +489,9 @@ def int_thread_pointer : Intrinsic<[llvm_ptr_ty], [], [IntrNoMem]>,
|
||||
// memory while not impeding optimization.
|
||||
def int_prefetch
|
||||
: Intrinsic<[], [ llvm_anyptr_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty ],
|
||||
[ IntrInaccessibleMemOrArgMemOnly, IntrWillReturn, ReadOnly<0>, NoCapture<0>,
|
||||
ImmArg<1>, ImmArg<2>]>;
|
||||
[IntrInaccessibleMemOrArgMemOnly, IntrWillReturn,
|
||||
ReadOnly<ArgIndex<0>>, NoCapture<ArgIndex<0>>,
|
||||
ImmArg<ArgIndex<1>>, ImmArg<ArgIndex<2>>]>;
|
||||
def int_pcmarker : Intrinsic<[], [llvm_i32_ty]>;
|
||||
|
||||
def int_readcyclecounter : Intrinsic<[llvm_i64_ty]>;
|
||||
@ -520,10 +532,13 @@ def int_call_preallocated_arg : Intrinsic<[llvm_ptr_ty], [llvm_token_ty, llvm_i3
|
||||
//
|
||||
|
||||
def int_memcpy : Intrinsic<[],
|
||||
[llvm_anyptr_ty, llvm_anyptr_ty, llvm_anyint_ty,
|
||||
llvm_i1_ty],
|
||||
[IntrArgMemOnly, IntrWillReturn, NoCapture<0>, NoCapture<1>,
|
||||
NoAlias<0>, NoAlias<1>, WriteOnly<0>, ReadOnly<1>, ImmArg<3>]>;
|
||||
[llvm_anyptr_ty, llvm_anyptr_ty, llvm_anyint_ty,
|
||||
llvm_i1_ty],
|
||||
[IntrArgMemOnly, IntrWillReturn,
|
||||
NoCapture<ArgIndex<0>>, NoCapture<ArgIndex<1>>,
|
||||
NoAlias<ArgIndex<0>>, NoAlias<ArgIndex<1>>,
|
||||
WriteOnly<ArgIndex<0>>, ReadOnly<ArgIndex<1>>,
|
||||
ImmArg<ArgIndex<3>>]>;
|
||||
|
||||
// Memcpy semantic that is guaranteed to be inlined.
|
||||
// In particular this means that the generated code is not allowed to call any
|
||||
@ -531,23 +546,25 @@ def int_memcpy : Intrinsic<[],
|
||||
// The third argument (specifying the size) must be a constant.
|
||||
def int_memcpy_inline
|
||||
: Intrinsic<[],
|
||||
[ llvm_anyptr_ty, llvm_anyptr_ty, llvm_anyint_ty, llvm_i1_ty ],
|
||||
[ IntrArgMemOnly, IntrWillReturn,
|
||||
NoCapture<0>, NoCapture<1>,
|
||||
NoAlias<0>, NoAlias<1>,
|
||||
WriteOnly<0>, ReadOnly<1>,
|
||||
ImmArg<2>, ImmArg<3> ]>;
|
||||
[llvm_anyptr_ty, llvm_anyptr_ty, llvm_anyint_ty, llvm_i1_ty],
|
||||
[IntrArgMemOnly, IntrWillReturn,
|
||||
NoCapture<ArgIndex<0>>, NoCapture<ArgIndex<1>>,
|
||||
NoAlias<ArgIndex<0>>, NoAlias<ArgIndex<1>>,
|
||||
WriteOnly<ArgIndex<0>>, ReadOnly<ArgIndex<1>>,
|
||||
ImmArg<ArgIndex<2>>, ImmArg<ArgIndex<3>>]>;
|
||||
|
||||
def int_memmove : Intrinsic<[],
|
||||
[llvm_anyptr_ty, llvm_anyptr_ty, llvm_anyint_ty,
|
||||
llvm_i1_ty],
|
||||
[IntrArgMemOnly, IntrWillReturn, NoCapture<0>, NoCapture<1>,
|
||||
ReadOnly<1>, ImmArg<3>]>;
|
||||
[IntrArgMemOnly, IntrWillReturn,
|
||||
NoCapture<ArgIndex<0>>, NoCapture<ArgIndex<1>>,
|
||||
ReadOnly<ArgIndex<1>>, ImmArg<ArgIndex<3>>]>;
|
||||
def int_memset : Intrinsic<[],
|
||||
[llvm_anyptr_ty, llvm_i8_ty, llvm_anyint_ty,
|
||||
llvm_i1_ty],
|
||||
[IntrWriteMem, IntrArgMemOnly, IntrWillReturn, NoCapture<0>,
|
||||
WriteOnly<0>, ImmArg<3>]>;
|
||||
[IntrWriteMem, IntrArgMemOnly, IntrWillReturn,
|
||||
NoCapture<ArgIndex<0>>, WriteOnly<ArgIndex<0>>,
|
||||
ImmArg<ArgIndex<3>>]>;
|
||||
|
||||
// FIXME: Add version of these floating point intrinsics which allow non-default
|
||||
// rounding modes and FP exception handling.
|
||||
@ -614,7 +631,9 @@ def int_maximum : Intrinsic<[llvm_anyfloat_ty],
|
||||
def int_objectsize : Intrinsic<[llvm_anyint_ty],
|
||||
[llvm_anyptr_ty, llvm_i1_ty,
|
||||
llvm_i1_ty, llvm_i1_ty],
|
||||
[IntrNoMem, IntrSpeculatable, IntrWillReturn, ImmArg<1>, ImmArg<2>, ImmArg<3>]>,
|
||||
[IntrNoMem, IntrSpeculatable, IntrWillReturn,
|
||||
ImmArg<ArgIndex<1>>, ImmArg<ArgIndex<2>>,
|
||||
ImmArg<ArgIndex<3>>]>,
|
||||
GCCBuiltin<"__builtin_object_size">;
|
||||
|
||||
//===--------------- Access to Floating Point Environment -----------------===//
|
||||
@ -827,7 +846,8 @@ let IntrProperties = [IntrNoMem, IntrSpeculatable, IntrWillReturn] in {
|
||||
[LLVMMatchType<0>, LLVMMatchType<0>, LLVMMatchType<0>]>;
|
||||
}
|
||||
|
||||
let IntrProperties = [IntrNoMem, IntrSpeculatable, IntrWillReturn, ImmArg<1>] in {
|
||||
let IntrProperties = [IntrNoMem, IntrSpeculatable, IntrWillReturn,
|
||||
ImmArg<ArgIndex<1>>] in {
|
||||
def int_ctlz : Intrinsic<[llvm_anyint_ty], [LLVMMatchType<0>, llvm_i1_ty]>;
|
||||
def int_cttz : Intrinsic<[llvm_anyint_ty], [LLVMMatchType<0>, llvm_i1_ty]>;
|
||||
}
|
||||
@ -917,12 +937,12 @@ def int_codeview_annotation : Intrinsic<[], [llvm_metadata_ty],
|
||||
//
|
||||
def int_init_trampoline : Intrinsic<[],
|
||||
[llvm_ptr_ty, llvm_ptr_ty, llvm_ptr_ty],
|
||||
[IntrArgMemOnly, NoCapture<0>]>,
|
||||
GCCBuiltin<"__builtin_init_trampoline">;
|
||||
[IntrArgMemOnly, NoCapture<ArgIndex<0>>]>,
|
||||
GCCBuiltin<"__builtin_init_trampoline">;
|
||||
|
||||
def int_adjust_trampoline : Intrinsic<[llvm_ptr_ty], [llvm_ptr_ty],
|
||||
[IntrReadMem, IntrArgMemOnly]>,
|
||||
GCCBuiltin<"__builtin_adjust_trampoline">;
|
||||
GCCBuiltin<"__builtin_adjust_trampoline">;
|
||||
|
||||
//===------------------------ Overflow Intrinsics -------------------------===//
|
||||
//
|
||||
@ -969,52 +989,64 @@ def int_usub_sat : Intrinsic<[llvm_anyint_ty],
|
||||
//
|
||||
def int_smul_fix : Intrinsic<[llvm_anyint_ty],
|
||||
[LLVMMatchType<0>, LLVMMatchType<0>, llvm_i32_ty],
|
||||
[IntrNoMem, IntrSpeculatable, IntrWillReturn, Commutative, ImmArg<2>]>;
|
||||
[IntrNoMem, IntrSpeculatable, IntrWillReturn,
|
||||
Commutative, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_umul_fix : Intrinsic<[llvm_anyint_ty],
|
||||
[LLVMMatchType<0>, LLVMMatchType<0>, llvm_i32_ty],
|
||||
[IntrNoMem, IntrSpeculatable, IntrWillReturn, Commutative, ImmArg<2>]>;
|
||||
[IntrNoMem, IntrSpeculatable, IntrWillReturn,
|
||||
Commutative, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_sdiv_fix : Intrinsic<[llvm_anyint_ty],
|
||||
[LLVMMatchType<0>, LLVMMatchType<0>, llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<2>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_udiv_fix : Intrinsic<[llvm_anyint_ty],
|
||||
[LLVMMatchType<0>, LLVMMatchType<0>, llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<2>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
//===------------------- Fixed Point Saturation Arithmetic Intrinsics ----------------===//
|
||||
//
|
||||
def int_smul_fix_sat : Intrinsic<[llvm_anyint_ty],
|
||||
[LLVMMatchType<0>, LLVMMatchType<0>, llvm_i32_ty],
|
||||
[IntrNoMem, IntrSpeculatable, IntrWillReturn, Commutative, ImmArg<2>]>;
|
||||
[IntrNoMem, IntrSpeculatable, IntrWillReturn,
|
||||
Commutative, ImmArg<ArgIndex<2>>]>;
|
||||
def int_umul_fix_sat : Intrinsic<[llvm_anyint_ty],
|
||||
[LLVMMatchType<0>, LLVMMatchType<0>, llvm_i32_ty],
|
||||
[IntrNoMem, IntrSpeculatable, IntrWillReturn, Commutative, ImmArg<2>]>;
|
||||
[IntrNoMem, IntrSpeculatable, IntrWillReturn,
|
||||
Commutative, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_sdiv_fix_sat : Intrinsic<[llvm_anyint_ty],
|
||||
[LLVMMatchType<0>, LLVMMatchType<0>, llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<2>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_udiv_fix_sat : Intrinsic<[llvm_anyint_ty],
|
||||
[LLVMMatchType<0>, LLVMMatchType<0>, llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<2>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
//===------------------------- Memory Use Markers -------------------------===//
|
||||
//
|
||||
def int_lifetime_start : Intrinsic<[],
|
||||
[llvm_i64_ty, llvm_anyptr_ty],
|
||||
[IntrArgMemOnly, IntrWillReturn, NoCapture<1>, ImmArg<0>]>;
|
||||
[IntrArgMemOnly, IntrWillReturn,
|
||||
NoCapture<ArgIndex<1>>,
|
||||
ImmArg<ArgIndex<0>>]>;
|
||||
def int_lifetime_end : Intrinsic<[],
|
||||
[llvm_i64_ty, llvm_anyptr_ty],
|
||||
[IntrArgMemOnly, IntrWillReturn, NoCapture<1>, ImmArg<0>]>;
|
||||
[IntrArgMemOnly, IntrWillReturn,
|
||||
NoCapture<ArgIndex<1>>,
|
||||
ImmArg<ArgIndex<0>>]>;
|
||||
def int_invariant_start : Intrinsic<[llvm_descriptor_ty],
|
||||
[llvm_i64_ty, llvm_anyptr_ty],
|
||||
[IntrArgMemOnly, IntrWillReturn, NoCapture<1>, ImmArg<0>]>;
|
||||
[IntrArgMemOnly, IntrWillReturn,
|
||||
NoCapture<ArgIndex<1>>,
|
||||
ImmArg<ArgIndex<0>>]>;
|
||||
def int_invariant_end : Intrinsic<[],
|
||||
[llvm_descriptor_ty, llvm_i64_ty,
|
||||
llvm_anyptr_ty],
|
||||
[IntrArgMemOnly, IntrWillReturn, NoCapture<2>, ImmArg<1>]>;
|
||||
[IntrArgMemOnly, IntrWillReturn,
|
||||
NoCapture<ArgIndex<2>>,
|
||||
ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
// launder.invariant.group can't be marked with 'readnone' (IntrNoMem),
|
||||
// because it would cause CSE of two barriers with the same argument.
|
||||
@ -1061,13 +1093,17 @@ def int_experimental_gc_statepoint : Intrinsic<[llvm_token_ty],
|
||||
[llvm_i64_ty, llvm_i32_ty,
|
||||
llvm_anyptr_ty, llvm_i32_ty,
|
||||
llvm_i32_ty, llvm_vararg_ty],
|
||||
[Throws, ImmArg<0>, ImmArg<1>, ImmArg<3>, ImmArg<4>]>;
|
||||
[Throws, ImmArg<ArgIndex<0>>,
|
||||
ImmArg<ArgIndex<1>>, ImmArg<ArgIndex<3>>,
|
||||
ImmArg<ArgIndex<4>>]>;
|
||||
|
||||
def int_experimental_gc_result : Intrinsic<[llvm_any_ty], [llvm_token_ty],
|
||||
[IntrReadMem]>;
|
||||
def int_experimental_gc_relocate : Intrinsic<[llvm_any_ty],
|
||||
[llvm_token_ty, llvm_i32_ty, llvm_i32_ty],
|
||||
[IntrReadMem, ImmArg<1>, ImmArg<2>]>;
|
||||
[llvm_token_ty, llvm_i32_ty,
|
||||
llvm_i32_ty],
|
||||
[IntrReadMem, ImmArg<ArgIndex<1>>,
|
||||
ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
//===------------------------ Coroutine Intrinsics ---------------===//
|
||||
// These are documented in docs/Coroutines.rst
|
||||
@ -1077,7 +1113,8 @@ def int_experimental_gc_relocate : Intrinsic<[llvm_any_ty],
|
||||
def int_coro_id : Intrinsic<[llvm_token_ty], [llvm_i32_ty, llvm_ptr_ty,
|
||||
llvm_ptr_ty, llvm_ptr_ty],
|
||||
[IntrArgMemOnly, IntrReadMem,
|
||||
ReadNone<1>, ReadOnly<2>, NoCapture<2>]>;
|
||||
ReadNone<ArgIndex<1>>, ReadOnly<ArgIndex<2>>,
|
||||
NoCapture<ArgIndex<2>>]>;
|
||||
def int_coro_id_retcon : Intrinsic<[llvm_token_ty],
|
||||
[llvm_i32_ty, llvm_i32_ty, llvm_ptr_ty,
|
||||
llvm_ptr_ty, llvm_ptr_ty, llvm_ptr_ty],
|
||||
@ -1088,11 +1125,12 @@ def int_coro_id_retcon_once : Intrinsic<[llvm_token_ty],
|
||||
[]>;
|
||||
def int_coro_alloc : Intrinsic<[llvm_i1_ty], [llvm_token_ty], []>;
|
||||
def int_coro_begin : Intrinsic<[llvm_ptr_ty], [llvm_token_ty, llvm_ptr_ty],
|
||||
[WriteOnly<1>]>;
|
||||
[WriteOnly<ArgIndex<1>>]>;
|
||||
|
||||
def int_coro_free : Intrinsic<[llvm_ptr_ty], [llvm_token_ty, llvm_ptr_ty],
|
||||
[IntrReadMem, IntrArgMemOnly, ReadOnly<1>,
|
||||
NoCapture<1>]>;
|
||||
[IntrReadMem, IntrArgMemOnly,
|
||||
ReadOnly<ArgIndex<1>>,
|
||||
NoCapture<ArgIndex<1>>]>;
|
||||
def int_coro_end : Intrinsic<[llvm_i1_ty], [llvm_ptr_ty, llvm_i1_ty], []>;
|
||||
|
||||
def int_coro_frame : Intrinsic<[llvm_ptr_ty], [], [IntrNoMem]>;
|
||||
@ -1110,23 +1148,26 @@ def int_coro_alloca_get : Intrinsic<[llvm_ptr_ty], [llvm_token_ty], []>;
|
||||
def int_coro_alloca_free : Intrinsic<[], [llvm_token_ty], []>;
|
||||
|
||||
def int_coro_param : Intrinsic<[llvm_i1_ty], [llvm_ptr_ty, llvm_ptr_ty],
|
||||
[IntrNoMem, ReadNone<0>, ReadNone<1>]>;
|
||||
[IntrNoMem, ReadNone<ArgIndex<0>>,
|
||||
ReadNone<ArgIndex<1>>]>;
|
||||
|
||||
// Coroutine Manipulation Intrinsics.
|
||||
|
||||
def int_coro_resume : Intrinsic<[], [llvm_ptr_ty], [Throws]>;
|
||||
def int_coro_destroy : Intrinsic<[], [llvm_ptr_ty], [Throws]>;
|
||||
def int_coro_done : Intrinsic<[llvm_i1_ty], [llvm_ptr_ty],
|
||||
[IntrArgMemOnly, ReadOnly<0>, NoCapture<0>]>;
|
||||
[IntrArgMemOnly, ReadOnly<ArgIndex<0>>,
|
||||
NoCapture<ArgIndex<0>>]>;
|
||||
def int_coro_promise : Intrinsic<[llvm_ptr_ty],
|
||||
[llvm_ptr_ty, llvm_i32_ty, llvm_i1_ty],
|
||||
[IntrNoMem, NoCapture<0>]>;
|
||||
[IntrNoMem, NoCapture<ArgIndex<0>>]>;
|
||||
|
||||
// Coroutine Lowering Intrinsics. Used internally by coroutine passes.
|
||||
|
||||
def int_coro_subfn_addr : Intrinsic<[llvm_ptr_ty], [llvm_ptr_ty, llvm_i8_ty],
|
||||
[IntrReadMem, IntrArgMemOnly, ReadOnly<0>,
|
||||
NoCapture<0>]>;
|
||||
[IntrReadMem, IntrArgMemOnly,
|
||||
ReadOnly<ArgIndex<0>>,
|
||||
NoCapture<ArgIndex<0>>]>;
|
||||
|
||||
///===-------------------------- Other Intrinsics --------------------------===//
|
||||
//
|
||||
@ -1255,24 +1296,26 @@ def int_masked_store : Intrinsic<[], [llvm_anyvector_ty,
|
||||
LLVMAnyPointerType<LLVMMatchType<0>>,
|
||||
llvm_i32_ty,
|
||||
LLVMScalarOrSameVectorWidth<0, llvm_i1_ty>],
|
||||
[IntrArgMemOnly, IntrWillReturn, ImmArg<2>]>;
|
||||
[IntrArgMemOnly, IntrWillReturn, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_masked_load : Intrinsic<[llvm_anyvector_ty],
|
||||
[LLVMAnyPointerType<LLVMMatchType<0>>, llvm_i32_ty,
|
||||
LLVMScalarOrSameVectorWidth<0, llvm_i1_ty>, LLVMMatchType<0>],
|
||||
[IntrReadMem, IntrArgMemOnly, IntrWillReturn, ImmArg<1>]>;
|
||||
[IntrReadMem, IntrArgMemOnly, IntrWillReturn,
|
||||
ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_masked_gather: Intrinsic<[llvm_anyvector_ty],
|
||||
[LLVMVectorOfAnyPointersToElt<0>, llvm_i32_ty,
|
||||
LLVMScalarOrSameVectorWidth<0, llvm_i1_ty>,
|
||||
LLVMMatchType<0>],
|
||||
[IntrReadMem, IntrWillReturn, ImmArg<1>]>;
|
||||
[IntrReadMem, IntrWillReturn,
|
||||
ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_masked_scatter: Intrinsic<[],
|
||||
[llvm_anyvector_ty,
|
||||
LLVMVectorOfAnyPointersToElt<0>, llvm_i32_ty,
|
||||
LLVMScalarOrSameVectorWidth<0, llvm_i1_ty>],
|
||||
[IntrWillReturn, ImmArg<2>]>;
|
||||
[IntrWillReturn, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_masked_expandload: Intrinsic<[llvm_anyvector_ty],
|
||||
[LLVMPointerToElt<0>,
|
||||
@ -1303,20 +1346,24 @@ def int_load_relative: Intrinsic<[llvm_ptr_ty], [llvm_ptr_ty, llvm_anyint_ty],
|
||||
[IntrReadMem, IntrArgMemOnly]>;
|
||||
|
||||
def int_hwasan_check_memaccess :
|
||||
Intrinsic<[], [llvm_ptr_ty, llvm_ptr_ty, llvm_i32_ty], [IntrInaccessibleMemOnly, ImmArg<2>]>;
|
||||
Intrinsic<[], [llvm_ptr_ty, llvm_ptr_ty, llvm_i32_ty],
|
||||
[IntrInaccessibleMemOnly, ImmArg<ArgIndex<2>>]>;
|
||||
def int_hwasan_check_memaccess_shortgranules :
|
||||
Intrinsic<[], [llvm_ptr_ty, llvm_ptr_ty, llvm_i32_ty], [IntrInaccessibleMemOnly, ImmArg<2>]>;
|
||||
Intrinsic<[], [llvm_ptr_ty, llvm_ptr_ty, llvm_i32_ty],
|
||||
[IntrInaccessibleMemOnly, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
// Xray intrinsics
|
||||
//===----------------------------------------------------------------------===//
|
||||
// Custom event logging for x-ray.
|
||||
// Takes a pointer to a string and the length of the string.
|
||||
def int_xray_customevent : Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty],
|
||||
[NoCapture<0>, ReadOnly<0>, IntrWriteMem]>;
|
||||
[IntrWriteMem, NoCapture<ArgIndex<0>>,
|
||||
ReadOnly<ArgIndex<0>>]>;
|
||||
// Typed event logging for x-ray.
|
||||
// Takes a numeric type tag, a pointer to a string and the length of the string.
|
||||
def int_xray_typedevent : Intrinsic<[], [llvm_i16_ty, llvm_ptr_ty, llvm_i32_ty],
|
||||
[NoCapture<1>, ReadOnly<1>, IntrWriteMem]>;
|
||||
[IntrWriteMem, NoCapture<ArgIndex<1>>,
|
||||
ReadOnly<ArgIndex<1>>]>;
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
//===------ Memory intrinsics with element-wise atomicity guarantees ------===//
|
||||
@ -1325,30 +1372,25 @@ def int_xray_typedevent : Intrinsic<[], [llvm_i16_ty, llvm_ptr_ty, llvm_i32_ty],
|
||||
// @llvm.memcpy.element.unordered.atomic.*(dest, src, length, elementsize)
|
||||
def int_memcpy_element_unordered_atomic
|
||||
: Intrinsic<[],
|
||||
[
|
||||
llvm_anyptr_ty, llvm_anyptr_ty, llvm_anyint_ty, llvm_i32_ty
|
||||
],
|
||||
[
|
||||
IntrArgMemOnly, IntrWillReturn, NoCapture<0>, NoCapture<1>, WriteOnly<0>,
|
||||
ReadOnly<1>, ImmArg<3>
|
||||
]>;
|
||||
[llvm_anyptr_ty, llvm_anyptr_ty, llvm_anyint_ty, llvm_i32_ty],
|
||||
[IntrArgMemOnly, IntrWillReturn, NoCapture<ArgIndex<0>>,
|
||||
NoCapture<ArgIndex<1>>, WriteOnly<ArgIndex<0>>,
|
||||
ReadOnly<ArgIndex<1>>, ImmArg<ArgIndex<3>>]>;
|
||||
|
||||
// @llvm.memmove.element.unordered.atomic.*(dest, src, length, elementsize)
|
||||
def int_memmove_element_unordered_atomic
|
||||
: Intrinsic<[],
|
||||
[
|
||||
llvm_anyptr_ty, llvm_anyptr_ty, llvm_anyint_ty, llvm_i32_ty
|
||||
],
|
||||
[
|
||||
IntrArgMemOnly, IntrWillReturn, NoCapture<0>, NoCapture<1>, WriteOnly<0>,
|
||||
ReadOnly<1>, ImmArg<3>
|
||||
]>;
|
||||
[llvm_anyptr_ty, llvm_anyptr_ty, llvm_anyint_ty, llvm_i32_ty],
|
||||
[IntrArgMemOnly, IntrWillReturn, NoCapture<ArgIndex<0>>,
|
||||
NoCapture<ArgIndex<1>>, WriteOnly<ArgIndex<0>>,
|
||||
ReadOnly<ArgIndex<1>>, ImmArg<ArgIndex<3>>]>;
|
||||
|
||||
// @llvm.memset.element.unordered.atomic.*(dest, value, length, elementsize)
|
||||
def int_memset_element_unordered_atomic
|
||||
: Intrinsic<[], [ llvm_anyptr_ty, llvm_i8_ty, llvm_anyint_ty, llvm_i32_ty ],
|
||||
[ IntrWriteMem, IntrArgMemOnly, IntrWillReturn, NoCapture<0>, WriteOnly<0>,
|
||||
ImmArg<3> ]>;
|
||||
: Intrinsic<[], [llvm_anyptr_ty, llvm_i8_ty, llvm_anyint_ty, llvm_i32_ty],
|
||||
[IntrWriteMem, IntrArgMemOnly, IntrWillReturn,
|
||||
NoCapture<ArgIndex<0>>, WriteOnly<ArgIndex<0>>,
|
||||
ImmArg<ArgIndex<3>>]>;
|
||||
|
||||
//===------------------------ Reduction Intrinsics ------------------------===//
|
||||
//
|
||||
@ -1390,7 +1432,8 @@ def int_matrix_transpose : Intrinsic<[llvm_anyvector_ty],
|
||||
llvm_i32_ty,
|
||||
llvm_i32_ty],
|
||||
[IntrNoMem, IntrSpeculatable,
|
||||
IntrWillReturn, ImmArg<1>, ImmArg<2>]>;
|
||||
IntrWillReturn, ImmArg<ArgIndex<1>>,
|
||||
ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_matrix_multiply : Intrinsic<[llvm_anyvector_ty],
|
||||
[llvm_anyvector_ty,
|
||||
@ -1399,8 +1442,9 @@ def int_matrix_multiply : Intrinsic<[llvm_anyvector_ty],
|
||||
llvm_i32_ty,
|
||||
llvm_i32_ty],
|
||||
[IntrNoMem, IntrSpeculatable,
|
||||
IntrWillReturn, ImmArg<2>, ImmArg<3>,
|
||||
ImmArg<4>]>;
|
||||
IntrWillReturn, ImmArg<ArgIndex<2>>,
|
||||
ImmArg<ArgIndex<3>>,
|
||||
ImmArg<ArgIndex<4>>]>;
|
||||
|
||||
def int_matrix_columnwise_load : Intrinsic<[llvm_anyvector_ty],
|
||||
[LLVMAnyPointerType<LLVMMatchType<0>>,
|
||||
@ -1408,7 +1452,9 @@ def int_matrix_columnwise_load : Intrinsic<[llvm_anyvector_ty],
|
||||
llvm_i32_ty,
|
||||
llvm_i32_ty],
|
||||
[IntrArgMemOnly, IntrReadMem,
|
||||
IntrWillReturn, ImmArg<2>, ImmArg<3>]>;
|
||||
IntrWillReturn,
|
||||
ImmArg<ArgIndex<2>>,
|
||||
ImmArg<ArgIndex<3>>]>;
|
||||
|
||||
def int_matrix_columnwise_store : Intrinsic<[],
|
||||
[llvm_anyvector_ty,
|
||||
@ -1417,8 +1463,10 @@ def int_matrix_columnwise_store : Intrinsic<[],
|
||||
llvm_i32_ty,
|
||||
llvm_i32_ty],
|
||||
[IntrArgMemOnly, IntrWillReturn,
|
||||
IntrWriteMem, WriteOnly<1>,
|
||||
ImmArg<3>, ImmArg<4>]>;
|
||||
IntrWriteMem,
|
||||
WriteOnly<ArgIndex<1>>,
|
||||
ImmArg<ArgIndex<3>>,
|
||||
ImmArg<ArgIndex<4>>]>;
|
||||
|
||||
//===---------- Intrinsics to control hardware supported loops ----------===//
|
||||
|
||||
@ -1452,22 +1500,26 @@ def int_loop_decrement_reg :
|
||||
//===----- Intrinsics that are used to provide predicate information -----===//
|
||||
|
||||
def int_ssa_copy : Intrinsic<[llvm_any_ty], [LLVMMatchType<0>],
|
||||
[IntrNoMem, Returned<0>]>;
|
||||
[IntrNoMem, Returned<ArgIndex<0>>]>;
|
||||
|
||||
//===------- Intrinsics that are used to preserve debug information -------===//
|
||||
|
||||
def int_preserve_array_access_index : Intrinsic<[llvm_anyptr_ty],
|
||||
[llvm_anyptr_ty, llvm_i32_ty,
|
||||
llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<1>, ImmArg<2>]>;
|
||||
[IntrNoMem,
|
||||
ImmArg<ArgIndex<1>>,
|
||||
ImmArg<ArgIndex<2>>]>;
|
||||
def int_preserve_union_access_index : Intrinsic<[llvm_anyptr_ty],
|
||||
[llvm_anyptr_ty, llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<1>]>;
|
||||
[IntrNoMem,
|
||||
ImmArg<ArgIndex<1>>]>;
|
||||
def int_preserve_struct_access_index : Intrinsic<[llvm_anyptr_ty],
|
||||
[llvm_anyptr_ty, llvm_i32_ty,
|
||||
llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<1>,
|
||||
ImmArg<2>]>;
|
||||
[IntrNoMem,
|
||||
ImmArg<ArgIndex<1>>,
|
||||
ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
//===---------- Intrinsics to query properties of scalable vectors --------===//
|
||||
def int_vscale : Intrinsic<[llvm_anyint_ty], [], [IntrNoMem]>;
|
||||
|
@ -487,7 +487,7 @@ let TargetPrefix = "aarch64" in { // All intrinsics start with "llvm.aarch64.".
|
||||
[IntrReadMem, IntrArgMemOnly]>;
|
||||
class AdvSIMD_1Vec_Store_Lane_Intrinsic
|
||||
: Intrinsic<[], [llvm_anyvector_ty, llvm_i64_ty, llvm_anyptr_ty],
|
||||
[IntrArgMemOnly, NoCapture<2>]>;
|
||||
[IntrArgMemOnly, NoCapture<ArgIndex<2>>]>;
|
||||
|
||||
class AdvSIMD_2Vec_Load_Intrinsic
|
||||
: Intrinsic<[LLVMMatchType<0>, llvm_anyvector_ty],
|
||||
@ -501,11 +501,11 @@ let TargetPrefix = "aarch64" in { // All intrinsics start with "llvm.aarch64.".
|
||||
class AdvSIMD_2Vec_Store_Intrinsic
|
||||
: Intrinsic<[], [llvm_anyvector_ty, LLVMMatchType<0>,
|
||||
LLVMAnyPointerType<LLVMMatchType<0>>],
|
||||
[IntrArgMemOnly, NoCapture<2>]>;
|
||||
[IntrArgMemOnly, NoCapture<ArgIndex<2>>]>;
|
||||
class AdvSIMD_2Vec_Store_Lane_Intrinsic
|
||||
: Intrinsic<[], [llvm_anyvector_ty, LLVMMatchType<0>,
|
||||
llvm_i64_ty, llvm_anyptr_ty],
|
||||
[IntrArgMemOnly, NoCapture<3>]>;
|
||||
[IntrArgMemOnly, NoCapture<ArgIndex<3>>]>;
|
||||
|
||||
class AdvSIMD_3Vec_Load_Intrinsic
|
||||
: Intrinsic<[LLVMMatchType<0>, LLVMMatchType<0>, llvm_anyvector_ty],
|
||||
@ -519,12 +519,12 @@ let TargetPrefix = "aarch64" in { // All intrinsics start with "llvm.aarch64.".
|
||||
class AdvSIMD_3Vec_Store_Intrinsic
|
||||
: Intrinsic<[], [llvm_anyvector_ty, LLVMMatchType<0>,
|
||||
LLVMMatchType<0>, LLVMAnyPointerType<LLVMMatchType<0>>],
|
||||
[IntrArgMemOnly, NoCapture<3>]>;
|
||||
[IntrArgMemOnly, NoCapture<ArgIndex<3>>]>;
|
||||
class AdvSIMD_3Vec_Store_Lane_Intrinsic
|
||||
: Intrinsic<[], [llvm_anyvector_ty,
|
||||
LLVMMatchType<0>, LLVMMatchType<0>,
|
||||
llvm_i64_ty, llvm_anyptr_ty],
|
||||
[IntrArgMemOnly, NoCapture<4>]>;
|
||||
[IntrArgMemOnly, NoCapture<ArgIndex<4>>]>;
|
||||
|
||||
class AdvSIMD_4Vec_Load_Intrinsic
|
||||
: Intrinsic<[LLVMMatchType<0>, LLVMMatchType<0>,
|
||||
@ -542,12 +542,12 @@ let TargetPrefix = "aarch64" in { // All intrinsics start with "llvm.aarch64.".
|
||||
: Intrinsic<[], [llvm_anyvector_ty, LLVMMatchType<0>,
|
||||
LLVMMatchType<0>, LLVMMatchType<0>,
|
||||
LLVMAnyPointerType<LLVMMatchType<0>>],
|
||||
[IntrArgMemOnly, NoCapture<4>]>;
|
||||
[IntrArgMemOnly, NoCapture<ArgIndex<4>>]>;
|
||||
class AdvSIMD_4Vec_Store_Lane_Intrinsic
|
||||
: Intrinsic<[], [llvm_anyvector_ty, LLVMMatchType<0>,
|
||||
LLVMMatchType<0>, LLVMMatchType<0>,
|
||||
llvm_i64_ty, llvm_anyptr_ty],
|
||||
[IntrArgMemOnly, NoCapture<5>]>;
|
||||
[IntrArgMemOnly, NoCapture<ArgIndex<5>>]>;
|
||||
}
|
||||
|
||||
// Memory ops
|
||||
@ -744,20 +744,20 @@ def int_aarch64_irg_sp : Intrinsic<[llvm_ptr_ty], [llvm_i64_ty],
|
||||
// ADDG ptr1, baseptr, (ptr0 - baseptr), tag_offset
|
||||
// It is intended that ptr0 is an alloca address, and baseptr is the direct output of llvm.aarch64.irg.sp.
|
||||
def int_aarch64_tagp : Intrinsic<[llvm_anyptr_ty], [LLVMMatchType<0>, llvm_ptr_ty, llvm_i64_ty],
|
||||
[IntrNoMem, ImmArg<2>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
// Update allocation tags for the memory range to match the tag in the pointer argument.
|
||||
def int_aarch64_settag : Intrinsic<[], [llvm_ptr_ty, llvm_i64_ty],
|
||||
[IntrWriteMem, IntrArgMemOnly, NoCapture<0>, WriteOnly<0>]>;
|
||||
[IntrWriteMem, IntrArgMemOnly, NoCapture<ArgIndex<0>>, WriteOnly<ArgIndex<0>>]>;
|
||||
|
||||
// Update allocation tags for the memory range to match the tag in the pointer argument,
|
||||
// and set memory contents to zero.
|
||||
def int_aarch64_settag_zero : Intrinsic<[], [llvm_ptr_ty, llvm_i64_ty],
|
||||
[IntrWriteMem, IntrArgMemOnly, NoCapture<0>, WriteOnly<0>]>;
|
||||
[IntrWriteMem, IntrArgMemOnly, NoCapture<ArgIndex<0>>, WriteOnly<ArgIndex<0>>]>;
|
||||
|
||||
// Update allocation tags for 16-aligned, 16-sized memory region, and store a pair 8-byte values.
|
||||
def int_aarch64_stgp : Intrinsic<[], [llvm_ptr_ty, llvm_i64_ty, llvm_i64_ty],
|
||||
[IntrWriteMem, IntrArgMemOnly, NoCapture<0>, WriteOnly<0>]>;
|
||||
[IntrWriteMem, IntrArgMemOnly, NoCapture<ArgIndex<0>>, WriteOnly<ArgIndex<0>>]>;
|
||||
}
|
||||
|
||||
// Transactional Memory Extension (TME) Intrinsics
|
||||
@ -768,7 +768,7 @@ def int_aarch64_tstart : GCCBuiltin<"__builtin_arm_tstart">,
|
||||
def int_aarch64_tcommit : GCCBuiltin<"__builtin_arm_tcommit">, Intrinsic<[]>;
|
||||
|
||||
def int_aarch64_tcancel : GCCBuiltin<"__builtin_arm_tcancel">,
|
||||
Intrinsic<[], [llvm_i64_ty], [ImmArg<0>]>;
|
||||
Intrinsic<[], [llvm_i64_ty], [ImmArg<ArgIndex<0>>]>;
|
||||
|
||||
def int_aarch64_ttest : GCCBuiltin<"__builtin_arm_ttest">,
|
||||
Intrinsic<[llvm_i64_ty], [],
|
||||
@ -800,26 +800,26 @@ let TargetPrefix = "aarch64" in { // All intrinsics start with "llvm.aarch64.".
|
||||
[llvm_anyvector_ty,
|
||||
LLVMScalarOrSameVectorWidth<0, llvm_i1_ty>,
|
||||
LLVMPointerToElt<0>],
|
||||
[IntrArgMemOnly, NoCapture<2>]>;
|
||||
[IntrArgMemOnly, NoCapture<ArgIndex<2>>]>;
|
||||
|
||||
class AdvSIMD_2Vec_PredStore_Intrinsic
|
||||
: Intrinsic<[],
|
||||
[llvm_anyvector_ty, LLVMMatchType<0>,
|
||||
LLVMScalarOrSameVectorWidth<0, llvm_i1_ty>, LLVMPointerTo<0>],
|
||||
[IntrArgMemOnly, NoCapture<3>]>;
|
||||
[IntrArgMemOnly, NoCapture<ArgIndex<3>>]>;
|
||||
|
||||
class AdvSIMD_3Vec_PredStore_Intrinsic
|
||||
: Intrinsic<[],
|
||||
[llvm_anyvector_ty, LLVMMatchType<0>, LLVMMatchType<0>,
|
||||
LLVMScalarOrSameVectorWidth<0, llvm_i1_ty>, LLVMPointerTo<0>],
|
||||
[IntrArgMemOnly, NoCapture<4>]>;
|
||||
[IntrArgMemOnly, NoCapture<ArgIndex<4>>]>;
|
||||
|
||||
class AdvSIMD_4Vec_PredStore_Intrinsic
|
||||
: Intrinsic<[],
|
||||
[llvm_anyvector_ty, LLVMMatchType<0>, LLVMMatchType<0>,
|
||||
LLVMMatchType<0>,
|
||||
LLVMScalarOrSameVectorWidth<0, llvm_i1_ty>, LLVMPointerTo<0>],
|
||||
[IntrArgMemOnly, NoCapture<5>]>;
|
||||
[IntrArgMemOnly, NoCapture<ArgIndex<5>>]>;
|
||||
|
||||
class AdvSIMD_SVE_Index_Intrinsic
|
||||
: Intrinsic<[llvm_anyvector_ty],
|
||||
@ -839,7 +839,7 @@ let TargetPrefix = "aarch64" in { // All intrinsics start with "llvm.aarch64.".
|
||||
[LLVMMatchType<0>,
|
||||
LLVMMatchType<0>,
|
||||
llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<2>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
class AdvSIMD_3VectorArgIndexed_Intrinsic
|
||||
: Intrinsic<[llvm_anyvector_ty],
|
||||
@ -847,7 +847,7 @@ let TargetPrefix = "aarch64" in { // All intrinsics start with "llvm.aarch64.".
|
||||
LLVMMatchType<0>,
|
||||
LLVMMatchType<0>,
|
||||
llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<3>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<3>>]>;
|
||||
|
||||
class AdvSIMD_Pred1VectorArg_Intrinsic
|
||||
: Intrinsic<[llvm_anyvector_ty],
|
||||
@ -895,7 +895,7 @@ let TargetPrefix = "aarch64" in { // All intrinsics start with "llvm.aarch64.".
|
||||
[LLVMMatchType<0>,
|
||||
llvm_i32_ty,
|
||||
llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<1>, ImmArg<2>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<1>>, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
class AdvSIMD_SVE_Saturating_N_Intrinsic<LLVMType T>
|
||||
: Intrinsic<[T],
|
||||
@ -905,7 +905,7 @@ let TargetPrefix = "aarch64" in { // All intrinsics start with "llvm.aarch64.".
|
||||
class AdvSIMD_SVE_SaturatingWithPattern_N_Intrinsic<LLVMType T>
|
||||
: Intrinsic<[T],
|
||||
[T, llvm_i32_ty, llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<1>, ImmArg<2>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<1>>, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
class AdvSIMD_SVE_CNT_Intrinsic
|
||||
: Intrinsic<[LLVMVectorOfBitcastsToInt<0>],
|
||||
@ -926,7 +926,7 @@ let TargetPrefix = "aarch64" in { // All intrinsics start with "llvm.aarch64.".
|
||||
[LLVMScalarOrSameVectorWidth<0, llvm_i1_ty>,
|
||||
LLVMMatchType<0>,
|
||||
llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<2>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
class AdvSIMD_SVE_ShiftWide_Intrinsic
|
||||
: Intrinsic<[llvm_anyvector_ty],
|
||||
@ -946,7 +946,7 @@ let TargetPrefix = "aarch64" in { // All intrinsics start with "llvm.aarch64.".
|
||||
LLVMMatchType<0>,
|
||||
LLVMMatchType<0>,
|
||||
llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<3>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<3>>]>;
|
||||
|
||||
class AdvSIMD_SVE_CMLA_Intrinsic
|
||||
: Intrinsic<[llvm_anyvector_ty],
|
||||
@ -955,7 +955,7 @@ let TargetPrefix = "aarch64" in { // All intrinsics start with "llvm.aarch64.".
|
||||
LLVMMatchType<0>,
|
||||
LLVMMatchType<0>,
|
||||
llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<4>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<4>>]>;
|
||||
|
||||
class AdvSIMD_SVE_CMLA_LANE_Intrinsic
|
||||
: Intrinsic<[llvm_anyvector_ty],
|
||||
@ -964,7 +964,7 @@ let TargetPrefix = "aarch64" in { // All intrinsics start with "llvm.aarch64.".
|
||||
LLVMMatchType<0>,
|
||||
llvm_i32_ty,
|
||||
llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<3>, ImmArg<4>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<3>>, ImmArg<ArgIndex<4>>]>;
|
||||
|
||||
class AdvSIMD_SVE_DUP_Intrinsic
|
||||
: Intrinsic<[llvm_anyvector_ty],
|
||||
@ -1011,7 +1011,7 @@ let TargetPrefix = "aarch64" in { // All intrinsics start with "llvm.aarch64.".
|
||||
class AdvSIMD_SVE_PTRUE_Intrinsic
|
||||
: Intrinsic<[llvm_anyvector_ty],
|
||||
[llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<0>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<0>>]>;
|
||||
|
||||
class AdvSIMD_SVE_PUNPKHI_Intrinsic
|
||||
: Intrinsic<[LLVMHalfElementsVectorType<0>],
|
||||
@ -1041,7 +1041,7 @@ let TargetPrefix = "aarch64" in { // All intrinsics start with "llvm.aarch64.".
|
||||
class AdvSIMD_SVE_CNTB_Intrinsic
|
||||
: Intrinsic<[llvm_i64_ty],
|
||||
[llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<0>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<0>>]>;
|
||||
|
||||
class AdvSIMD_SVE_CNTP_Intrinsic
|
||||
: Intrinsic<[llvm_i64_ty],
|
||||
@ -1061,7 +1061,7 @@ let TargetPrefix = "aarch64" in { // All intrinsics start with "llvm.aarch64.".
|
||||
LLVMSubdivide4VectorType<0>,
|
||||
LLVMSubdivide4VectorType<0>,
|
||||
llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<3>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<3>>]>;
|
||||
|
||||
class AdvSIMD_SVE_PTEST_Intrinsic
|
||||
: Intrinsic<[llvm_i1_ty],
|
||||
@ -1086,7 +1086,7 @@ let TargetPrefix = "aarch64" in { // All intrinsics start with "llvm.aarch64.".
|
||||
: Intrinsic<[llvm_anyvector_ty],
|
||||
[LLVMSubdivide2VectorType<0>,
|
||||
llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<1>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
class SVE2_2VectorArg_Long_Intrinsic
|
||||
: Intrinsic<[llvm_anyvector_ty],
|
||||
@ -1099,7 +1099,7 @@ let TargetPrefix = "aarch64" in { // All intrinsics start with "llvm.aarch64.".
|
||||
[LLVMSubdivide2VectorType<0>,
|
||||
LLVMSubdivide2VectorType<0>,
|
||||
llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<2>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
class SVE2_2VectorArg_Wide_Intrinsic
|
||||
: Intrinsic<[llvm_anyvector_ty],
|
||||
@ -1127,7 +1127,7 @@ let TargetPrefix = "aarch64" in { // All intrinsics start with "llvm.aarch64.".
|
||||
LLVMSubdivide2VectorType<0>,
|
||||
LLVMSubdivide2VectorType<0>,
|
||||
llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<3>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<3>>]>;
|
||||
|
||||
class SVE2_1VectorArg_Narrowing_Intrinsic
|
||||
: Intrinsic<[LLVMSubdivide2VectorType<0>],
|
||||
@ -1154,13 +1154,13 @@ let TargetPrefix = "aarch64" in { // All intrinsics start with "llvm.aarch64.".
|
||||
class SVE2_1VectorArg_Imm_Narrowing_Intrinsic
|
||||
: Intrinsic<[LLVMSubdivide2VectorType<0>],
|
||||
[llvm_anyvector_ty, llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<1>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
class SVE2_2VectorArg_Imm_Narrowing_Intrinsic
|
||||
: Intrinsic<[LLVMSubdivide2VectorType<0>],
|
||||
[LLVMSubdivide2VectorType<0>, llvm_anyvector_ty,
|
||||
llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<2>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
class SVE2_CONFLICT_DETECT_Intrinsic
|
||||
: Intrinsic<[llvm_anyvector_ty],
|
||||
@ -1173,7 +1173,7 @@ let TargetPrefix = "aarch64" in { // All intrinsics start with "llvm.aarch64.".
|
||||
LLVMSubdivide2VectorType<0>,
|
||||
LLVMSubdivide2VectorType<0>,
|
||||
llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<3>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<3>>]>;
|
||||
|
||||
class AdvSIMD_SVE_CDOT_LANE_Intrinsic
|
||||
: Intrinsic<[llvm_anyvector_ty],
|
||||
@ -1182,7 +1182,7 @@ let TargetPrefix = "aarch64" in { // All intrinsics start with "llvm.aarch64.".
|
||||
LLVMSubdivide4VectorType<0>,
|
||||
llvm_i32_ty,
|
||||
llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<3>, ImmArg<4>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<3>>, ImmArg<ArgIndex<4>>]>;
|
||||
|
||||
// NOTE: There is no relationship between these intrinsics beyond an attempt
|
||||
// to reuse currently identical class definitions.
|
||||
@ -1283,7 +1283,7 @@ class SVE_gather_prf_SV
|
||||
llvm_anyvector_ty, // Offsets
|
||||
llvm_i32_ty // Prfop
|
||||
],
|
||||
[IntrInaccessibleMemOrArgMemOnly, NoCapture<1>, ImmArg<3>]>;
|
||||
[IntrInaccessibleMemOrArgMemOnly, NoCapture<ArgIndex<1>>, ImmArg<ArgIndex<3>>]>;
|
||||
|
||||
class SVE_gather_prf_VS
|
||||
: Intrinsic<[],
|
||||
@ -1293,7 +1293,7 @@ class SVE_gather_prf_VS
|
||||
llvm_i64_ty, // Scalar offset
|
||||
llvm_i32_ty // Prfop
|
||||
],
|
||||
[IntrInaccessibleMemOrArgMemOnly, ImmArg<3>]>;
|
||||
[IntrInaccessibleMemOrArgMemOnly, ImmArg<ArgIndex<3>>]>;
|
||||
|
||||
class SVE_MatMul_Intrinsic
|
||||
: Intrinsic<[llvm_anyvector_ty],
|
||||
@ -1329,7 +1329,7 @@ def int_aarch64_sve_stnt1 : AdvSIMD_1Vec_PredStore_Intrinsic;
|
||||
|
||||
def int_aarch64_sve_prf
|
||||
: Intrinsic<[], [llvm_anyvector_ty, llvm_ptr_ty, llvm_i32_ty],
|
||||
[IntrArgMemOnly, ImmArg<2>]>;
|
||||
[IntrArgMemOnly, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
// Scalar + 32-bit scaled offset vector, zero extend, packed and
|
||||
// unpacked.
|
||||
|
@ -177,7 +177,7 @@ def int_amdgcn_implicit_buffer_ptr :
|
||||
// FIXME: Should be mangled for wave size.
|
||||
def int_amdgcn_init_exec : Intrinsic<[],
|
||||
[llvm_i64_ty], // 64-bit literal constant
|
||||
[IntrConvergent, ImmArg<0>]>;
|
||||
[IntrConvergent, ImmArg<ArgIndex<0>>]>;
|
||||
|
||||
// Set EXEC according to a thread count packed in an SGPR input:
|
||||
// thread_count = (input >> bitoffset) & 0x7f;
|
||||
@ -185,7 +185,7 @@ def int_amdgcn_init_exec : Intrinsic<[],
|
||||
def int_amdgcn_init_exec_from_input : Intrinsic<[],
|
||||
[llvm_i32_ty, // 32-bit SGPR input
|
||||
llvm_i32_ty], // bit offset of the thread count
|
||||
[IntrConvergent, ImmArg<1>]>;
|
||||
[IntrConvergent, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_amdgcn_wavefrontsize :
|
||||
GCCBuiltin<"__builtin_amdgcn_wavefrontsize">,
|
||||
@ -200,10 +200,10 @@ def int_amdgcn_wavefrontsize :
|
||||
// the second one is copied to m0
|
||||
def int_amdgcn_s_sendmsg : GCCBuiltin<"__builtin_amdgcn_s_sendmsg">,
|
||||
Intrinsic <[], [llvm_i32_ty, llvm_i32_ty],
|
||||
[ImmArg<0>, IntrNoMem, IntrHasSideEffects]>;
|
||||
[ImmArg<ArgIndex<0>>, IntrNoMem, IntrHasSideEffects]>;
|
||||
def int_amdgcn_s_sendmsghalt : GCCBuiltin<"__builtin_amdgcn_s_sendmsghalt">,
|
||||
Intrinsic <[], [llvm_i32_ty, llvm_i32_ty],
|
||||
[ImmArg<0>, IntrNoMem, IntrHasSideEffects]>;
|
||||
[ImmArg<ArgIndex<0>>, IntrNoMem, IntrHasSideEffects]>;
|
||||
|
||||
def int_amdgcn_s_barrier : GCCBuiltin<"__builtin_amdgcn_s_barrier">,
|
||||
Intrinsic<[], [], [IntrNoMem, IntrHasSideEffects, IntrConvergent]>;
|
||||
@ -212,7 +212,7 @@ def int_amdgcn_wave_barrier : GCCBuiltin<"__builtin_amdgcn_wave_barrier">,
|
||||
Intrinsic<[], [], [IntrConvergent]>;
|
||||
|
||||
def int_amdgcn_s_waitcnt : GCCBuiltin<"__builtin_amdgcn_s_waitcnt">,
|
||||
Intrinsic<[], [llvm_i32_ty], [ImmArg<0>]>;
|
||||
Intrinsic<[], [llvm_i32_ty], [ImmArg<ArgIndex<0>>]>;
|
||||
|
||||
def int_amdgcn_div_scale : Intrinsic<
|
||||
// 1st parameter: Numerator
|
||||
@ -221,7 +221,7 @@ def int_amdgcn_div_scale : Intrinsic<
|
||||
// (0 = Denominator, 1 = Numerator).
|
||||
[llvm_anyfloat_ty, llvm_i1_ty],
|
||||
[LLVMMatchType<0>, LLVMMatchType<0>, llvm_i1_ty],
|
||||
[IntrNoMem, IntrSpeculatable, ImmArg<2>]
|
||||
[IntrNoMem, IntrSpeculatable, ImmArg<ArgIndex<2>>]
|
||||
>;
|
||||
|
||||
def int_amdgcn_div_fmas : Intrinsic<[llvm_anyfloat_ty],
|
||||
@ -384,7 +384,7 @@ class AMDGPUAtomicIncIntrin : Intrinsic<[llvm_anyint_ty],
|
||||
llvm_i32_ty, // ordering
|
||||
llvm_i32_ty, // scope
|
||||
llvm_i1_ty], // isVolatile
|
||||
[IntrArgMemOnly, NoCapture<0>, ImmArg<2>, ImmArg<3>, ImmArg<4>], "",
|
||||
[IntrArgMemOnly, NoCapture<ArgIndex<0>>, ImmArg<ArgIndex<2>>, ImmArg<ArgIndex<3>>, ImmArg<ArgIndex<4>>], "",
|
||||
[SDNPMemOperand]
|
||||
>;
|
||||
|
||||
@ -399,7 +399,7 @@ class AMDGPULDSF32Intrin<string clang_builtin> :
|
||||
llvm_i32_ty, // ordering
|
||||
llvm_i32_ty, // scope
|
||||
llvm_i1_ty], // isVolatile
|
||||
[IntrArgMemOnly, NoCapture<0>, ImmArg<2>, ImmArg<3>, ImmArg<4>]
|
||||
[IntrArgMemOnly, NoCapture<ArgIndex<0>>, ImmArg<ArgIndex<2>>, ImmArg<ArgIndex<3>>, ImmArg<ArgIndex<4>>]
|
||||
>;
|
||||
|
||||
// FIXME: The m0 argument should be moved after the normal arguments
|
||||
@ -416,9 +416,9 @@ class AMDGPUDSOrderedIntrinsic : Intrinsic<
|
||||
// gfx10: bits 24-27 indicate the number of active threads/dwords
|
||||
llvm_i1_ty, // wave release, usually set to 1
|
||||
llvm_i1_ty], // wave done, set to 1 for the last ordered instruction
|
||||
[NoCapture<0>,
|
||||
ImmArg<2>, ImmArg<3>, ImmArg<4>,
|
||||
ImmArg<5>, ImmArg<6>, ImmArg<7>
|
||||
[NoCapture<ArgIndex<0>>,
|
||||
ImmArg<ArgIndex<2>>, ImmArg<ArgIndex<3>>, ImmArg<ArgIndex<4>>,
|
||||
ImmArg<ArgIndex<5>>, ImmArg<ArgIndex<6>>, ImmArg<ArgIndex<7>>
|
||||
]
|
||||
>;
|
||||
|
||||
@ -426,7 +426,7 @@ class AMDGPUDSAppendConsumedIntrinsic : Intrinsic<
|
||||
[llvm_i32_ty],
|
||||
[llvm_anyptr_ty, // LDS or GDS ptr
|
||||
llvm_i1_ty], // isVolatile
|
||||
[IntrConvergent, IntrArgMemOnly, NoCapture<0>, ImmArg<1>],
|
||||
[IntrConvergent, IntrArgMemOnly, NoCapture<ArgIndex<0>>, ImmArg<ArgIndex<1>>],
|
||||
"",
|
||||
[SDNPMemOperand]
|
||||
>;
|
||||
@ -698,10 +698,10 @@ class AMDGPUImageDimIntrinsic<AMDGPUDimProfile P_,
|
||||
[llvm_i32_ty, // texfailctrl(imm; bit 0 = tfe, bit 1 = lwe)
|
||||
llvm_i32_ty]), // cachepolicy(imm; bit 0 = glc, bit 1 = slc, bit 2 = dlc)
|
||||
!listconcat(props,
|
||||
!if(P_.IsAtomic, [], [ImmArg<AMDGPUImageDimIntrinsicEval<P_>.DmaskArgIndex>]),
|
||||
!if(P_.IsSample, [ImmArg<AMDGPUImageDimIntrinsicEval<P_>.UnormArgIndex>], []),
|
||||
[ImmArg<AMDGPUImageDimIntrinsicEval<P_>.TexFailCtrlArgIndex>,
|
||||
ImmArg<AMDGPUImageDimIntrinsicEval<P_>.CachePolicyArgIndex>]),
|
||||
!if(P_.IsAtomic, [], [ImmArg<ArgIndex<AMDGPUImageDimIntrinsicEval<P_>.DmaskArgIndex>>]),
|
||||
!if(P_.IsSample, [ImmArg<ArgIndex<AMDGPUImageDimIntrinsicEval<P_>.UnormArgIndex>>], []),
|
||||
[ImmArg<ArgIndex<AMDGPUImageDimIntrinsicEval<P_>.TexFailCtrlArgIndex>>,
|
||||
ImmArg<ArgIndex<AMDGPUImageDimIntrinsicEval<P_>.CachePolicyArgIndex>>]),
|
||||
"", sdnodeprops>,
|
||||
AMDGPURsrcIntrinsic<!add(!size(P_.DataArgs), !size(P_.AddrTypes),
|
||||
!if(P_.IsAtomic, 0, 1)), 1> {
|
||||
@ -861,7 +861,7 @@ class AMDGPUBufferLoad<LLVMType data_ty = llvm_any_ty> : Intrinsic <
|
||||
llvm_i32_ty, // offset(SGPR/VGPR/imm)
|
||||
llvm_i1_ty, // glc(imm)
|
||||
llvm_i1_ty], // slc(imm)
|
||||
[IntrReadMem, ImmArg<3>, ImmArg<4>], "", [SDNPMemOperand]>,
|
||||
[IntrReadMem, ImmArg<ArgIndex<3>>, ImmArg<ArgIndex<4>>], "", [SDNPMemOperand]>,
|
||||
AMDGPURsrcIntrinsic<0>;
|
||||
def int_amdgcn_buffer_load_format : AMDGPUBufferLoad<llvm_anyfloat_ty>;
|
||||
def int_amdgcn_buffer_load : AMDGPUBufferLoad;
|
||||
@ -871,7 +871,7 @@ def int_amdgcn_s_buffer_load : Intrinsic <
|
||||
[llvm_v4i32_ty, // rsrc(SGPR)
|
||||
llvm_i32_ty, // byte offset(SGPR/imm)
|
||||
llvm_i32_ty], // cachepolicy(imm; bit 0 = glc, bit 2 = dlc)
|
||||
[IntrNoMem, ImmArg<2>]>,
|
||||
[IntrNoMem, ImmArg<ArgIndex<2>>]>,
|
||||
AMDGPURsrcIntrinsic<0>;
|
||||
|
||||
class AMDGPUBufferStore<LLVMType data_ty = llvm_any_ty> : Intrinsic <
|
||||
@ -882,7 +882,7 @@ class AMDGPUBufferStore<LLVMType data_ty = llvm_any_ty> : Intrinsic <
|
||||
llvm_i32_ty, // offset(SGPR/VGPR/imm)
|
||||
llvm_i1_ty, // glc(imm)
|
||||
llvm_i1_ty], // slc(imm)
|
||||
[IntrWriteMem, ImmArg<4>, ImmArg<5>], "", [SDNPMemOperand]>,
|
||||
[IntrWriteMem, ImmArg<ArgIndex<4>>, ImmArg<ArgIndex<5>>], "", [SDNPMemOperand]>,
|
||||
AMDGPURsrcIntrinsic<1>;
|
||||
def int_amdgcn_buffer_store_format : AMDGPUBufferStore<llvm_anyfloat_ty>;
|
||||
def int_amdgcn_buffer_store : AMDGPUBufferStore;
|
||||
@ -903,7 +903,7 @@ class AMDGPURawBufferLoad<LLVMType data_ty = llvm_any_ty> : Intrinsic <
|
||||
// bit 1 = slc,
|
||||
// bit 2 = dlc on gfx10+),
|
||||
// swizzled buffer (bit 3 = swz))
|
||||
[IntrReadMem, ImmArg<3>], "", [SDNPMemOperand]>,
|
||||
[IntrReadMem, ImmArg<ArgIndex<3>>], "", [SDNPMemOperand]>,
|
||||
AMDGPURsrcIntrinsic<0>;
|
||||
def int_amdgcn_raw_buffer_load_format : AMDGPURawBufferLoad<llvm_anyfloat_ty>;
|
||||
def int_amdgcn_raw_buffer_load : AMDGPURawBufferLoad;
|
||||
@ -918,7 +918,7 @@ class AMDGPUStructBufferLoad<LLVMType data_ty = llvm_any_ty> : Intrinsic <
|
||||
// bit 1 = slc,
|
||||
// bit 2 = dlc on gfx10+),
|
||||
// swizzled buffer (bit 3 = swz))
|
||||
[IntrReadMem, ImmArg<4>], "", [SDNPMemOperand]>,
|
||||
[IntrReadMem, ImmArg<ArgIndex<4>>], "", [SDNPMemOperand]>,
|
||||
AMDGPURsrcIntrinsic<0>;
|
||||
def int_amdgcn_struct_buffer_load_format : AMDGPUStructBufferLoad;
|
||||
def int_amdgcn_struct_buffer_load : AMDGPUStructBufferLoad;
|
||||
@ -933,7 +933,7 @@ class AMDGPURawBufferStore<LLVMType data_ty = llvm_any_ty> : Intrinsic <
|
||||
// bit 1 = slc,
|
||||
// bit 2 = dlc on gfx10+),
|
||||
// swizzled buffer (bit 3 = swz))
|
||||
[IntrWriteMem, ImmArg<4>], "", [SDNPMemOperand]>,
|
||||
[IntrWriteMem, ImmArg<ArgIndex<4>>], "", [SDNPMemOperand]>,
|
||||
AMDGPURsrcIntrinsic<1>;
|
||||
def int_amdgcn_raw_buffer_store_format : AMDGPURawBufferStore<llvm_anyfloat_ty>;
|
||||
def int_amdgcn_raw_buffer_store : AMDGPURawBufferStore;
|
||||
@ -949,7 +949,7 @@ class AMDGPUStructBufferStore<LLVMType data_ty = llvm_any_ty> : Intrinsic <
|
||||
// bit 1 = slc,
|
||||
// bit 2 = dlc on gfx10+),
|
||||
// swizzled buffer (bit 3 = swz))
|
||||
[IntrWriteMem, ImmArg<5>], "", [SDNPMemOperand]>,
|
||||
[IntrWriteMem, ImmArg<ArgIndex<5>>], "", [SDNPMemOperand]>,
|
||||
AMDGPURsrcIntrinsic<1>;
|
||||
def int_amdgcn_struct_buffer_store_format : AMDGPUStructBufferStore;
|
||||
def int_amdgcn_struct_buffer_store : AMDGPUStructBufferStore;
|
||||
@ -961,7 +961,7 @@ class AMDGPURawBufferAtomic<LLVMType data_ty = llvm_any_ty> : Intrinsic <
|
||||
llvm_i32_ty, // offset(VGPR/imm, included in bounds checking and swizzling)
|
||||
llvm_i32_ty, // soffset(SGPR/imm, excluded from bounds checking and swizzling)
|
||||
llvm_i32_ty], // cachepolicy(imm; bit 1 = slc)
|
||||
[ImmArg<4>], "", [SDNPMemOperand]>,
|
||||
[ImmArg<ArgIndex<4>>], "", [SDNPMemOperand]>,
|
||||
AMDGPURsrcIntrinsic<1, 0>;
|
||||
def int_amdgcn_raw_buffer_atomic_swap : AMDGPURawBufferAtomic;
|
||||
def int_amdgcn_raw_buffer_atomic_add : AMDGPURawBufferAtomic;
|
||||
@ -983,7 +983,7 @@ def int_amdgcn_raw_buffer_atomic_cmpswap : Intrinsic<
|
||||
llvm_i32_ty, // offset(VGPR/imm, included in bounds checking and swizzling)
|
||||
llvm_i32_ty, // soffset(SGPR/imm, excluded from bounds checking and swizzling)
|
||||
llvm_i32_ty], // cachepolicy(imm; bit 1 = slc)
|
||||
[ImmArg<5>], "", [SDNPMemOperand]>,
|
||||
[ImmArg<ArgIndex<5>>], "", [SDNPMemOperand]>,
|
||||
AMDGPURsrcIntrinsic<2, 0>;
|
||||
|
||||
class AMDGPUStructBufferAtomic<LLVMType data_ty = llvm_any_ty> : Intrinsic <
|
||||
@ -994,7 +994,7 @@ class AMDGPUStructBufferAtomic<LLVMType data_ty = llvm_any_ty> : Intrinsic <
|
||||
llvm_i32_ty, // offset(VGPR/imm, included in bounds checking and swizzling)
|
||||
llvm_i32_ty, // soffset(SGPR/imm, excluded from bounds checking and swizzling)
|
||||
llvm_i32_ty], // cachepolicy(imm; bit 1 = slc)
|
||||
[ImmArg<5>], "", [SDNPMemOperand]>,
|
||||
[ImmArg<ArgIndex<5>>], "", [SDNPMemOperand]>,
|
||||
AMDGPURsrcIntrinsic<1, 0>;
|
||||
def int_amdgcn_struct_buffer_atomic_swap : AMDGPUStructBufferAtomic;
|
||||
def int_amdgcn_struct_buffer_atomic_add : AMDGPUStructBufferAtomic;
|
||||
@ -1017,7 +1017,7 @@ def int_amdgcn_struct_buffer_atomic_cmpswap : Intrinsic<
|
||||
llvm_i32_ty, // offset(VGPR/imm, included in bounds checking and swizzling)
|
||||
llvm_i32_ty, // soffset(SGPR/imm, excluded from bounds checking and swizzling)
|
||||
llvm_i32_ty], // cachepolicy(imm; bit 1 = slc)
|
||||
[ImmArg<6>], "", [SDNPMemOperand]>,
|
||||
[ImmArg<ArgIndex<6>>], "", [SDNPMemOperand]>,
|
||||
AMDGPURsrcIntrinsic<2, 0>;
|
||||
|
||||
// Obsolescent tbuffer intrinsics.
|
||||
@ -1032,8 +1032,8 @@ def int_amdgcn_tbuffer_load : Intrinsic <
|
||||
llvm_i32_ty, // nfmt(imm)
|
||||
llvm_i1_ty, // glc(imm)
|
||||
llvm_i1_ty], // slc(imm)
|
||||
[IntrReadMem, ImmArg<4>, ImmArg<5>, ImmArg<6>,
|
||||
ImmArg<7>, ImmArg<8>], "", [SDNPMemOperand]>,
|
||||
[IntrReadMem, ImmArg<ArgIndex<4>>, ImmArg<ArgIndex<5>>, ImmArg<ArgIndex<6>>,
|
||||
ImmArg<ArgIndex<7>>, ImmArg<ArgIndex<8>>], "", [SDNPMemOperand]>,
|
||||
AMDGPURsrcIntrinsic<0>;
|
||||
|
||||
def int_amdgcn_tbuffer_store : Intrinsic <
|
||||
@ -1048,8 +1048,8 @@ def int_amdgcn_tbuffer_store : Intrinsic <
|
||||
llvm_i32_ty, // nfmt(imm)
|
||||
llvm_i1_ty, // glc(imm)
|
||||
llvm_i1_ty], // slc(imm)
|
||||
[IntrWriteMem, ImmArg<5>, ImmArg<6>, ImmArg<7>,
|
||||
ImmArg<8>, ImmArg<9>], "", [SDNPMemOperand]>,
|
||||
[IntrWriteMem, ImmArg<ArgIndex<5>>, ImmArg<ArgIndex<6>>, ImmArg<ArgIndex<7>>,
|
||||
ImmArg<ArgIndex<8>>, ImmArg<ArgIndex<9>>], "", [SDNPMemOperand]>,
|
||||
AMDGPURsrcIntrinsic<1>;
|
||||
|
||||
// New tbuffer intrinsics, with:
|
||||
@ -1066,7 +1066,7 @@ def int_amdgcn_raw_tbuffer_load : Intrinsic <
|
||||
// bit 1 = slc,
|
||||
// bit 2 = dlc on gfx10+),
|
||||
// swizzled buffer (bit 3 = swz))
|
||||
[IntrReadMem, ImmArg<3>, ImmArg<4>], "", [SDNPMemOperand]>,
|
||||
[IntrReadMem, ImmArg<ArgIndex<3>>, ImmArg<ArgIndex<4>>], "", [SDNPMemOperand]>,
|
||||
AMDGPURsrcIntrinsic<0>;
|
||||
|
||||
def int_amdgcn_raw_tbuffer_store : Intrinsic <
|
||||
@ -1080,7 +1080,7 @@ def int_amdgcn_raw_tbuffer_store : Intrinsic <
|
||||
// bit 1 = slc,
|
||||
// bit 2 = dlc on gfx10+),
|
||||
// swizzled buffer (bit 3 = swz))
|
||||
[IntrWriteMem, ImmArg<4>, ImmArg<5>], "", [SDNPMemOperand]>,
|
||||
[IntrWriteMem, ImmArg<ArgIndex<4>>, ImmArg<ArgIndex<5>>], "", [SDNPMemOperand]>,
|
||||
AMDGPURsrcIntrinsic<1>;
|
||||
|
||||
def int_amdgcn_struct_tbuffer_load : Intrinsic <
|
||||
@ -1094,7 +1094,7 @@ def int_amdgcn_struct_tbuffer_load : Intrinsic <
|
||||
// bit 1 = slc,
|
||||
// bit 2 = dlc on gfx10+),
|
||||
// swizzled buffer (bit 3 = swz))
|
||||
[IntrReadMem, ImmArg<4>, ImmArg<5>], "", [SDNPMemOperand]>,
|
||||
[IntrReadMem, ImmArg<ArgIndex<4>>, ImmArg<ArgIndex<5>>], "", [SDNPMemOperand]>,
|
||||
AMDGPURsrcIntrinsic<0>;
|
||||
|
||||
def int_amdgcn_struct_tbuffer_store : Intrinsic <
|
||||
@ -1109,7 +1109,7 @@ def int_amdgcn_struct_tbuffer_store : Intrinsic <
|
||||
// bit 1 = slc,
|
||||
// bit 2 = dlc on gfx10+),
|
||||
// swizzled buffer (bit 3 = swz))
|
||||
[IntrWriteMem, ImmArg<5>, ImmArg<6>], "", [SDNPMemOperand]>,
|
||||
[IntrWriteMem, ImmArg<ArgIndex<5>>, ImmArg<ArgIndex<6>>], "", [SDNPMemOperand]>,
|
||||
AMDGPURsrcIntrinsic<1>;
|
||||
|
||||
class AMDGPUBufferAtomic : Intrinsic <
|
||||
@ -1119,7 +1119,7 @@ class AMDGPUBufferAtomic : Intrinsic <
|
||||
llvm_i32_ty, // vindex(VGPR)
|
||||
llvm_i32_ty, // offset(SGPR/VGPR/imm)
|
||||
llvm_i1_ty], // slc(imm)
|
||||
[ImmArg<4>], "", [SDNPMemOperand]>,
|
||||
[ImmArg<ArgIndex<4>>], "", [SDNPMemOperand]>,
|
||||
AMDGPURsrcIntrinsic<1, 0>;
|
||||
def int_amdgcn_buffer_atomic_swap : AMDGPUBufferAtomic;
|
||||
def int_amdgcn_buffer_atomic_add : AMDGPUBufferAtomic;
|
||||
@ -1139,7 +1139,7 @@ def int_amdgcn_buffer_atomic_cmpswap : Intrinsic<
|
||||
llvm_i32_ty, // vindex(VGPR)
|
||||
llvm_i32_ty, // offset(SGPR/VGPR/imm)
|
||||
llvm_i1_ty], // slc(imm)
|
||||
[ImmArg<5>], "", [SDNPMemOperand]>,
|
||||
[ImmArg<ArgIndex<5>>], "", [SDNPMemOperand]>,
|
||||
AMDGPURsrcIntrinsic<2, 0>;
|
||||
|
||||
} // defset AMDGPUBufferIntrinsics
|
||||
@ -1156,7 +1156,7 @@ def int_amdgcn_exp : Intrinsic <[], [
|
||||
llvm_i1_ty, // done
|
||||
llvm_i1_ty // vm
|
||||
],
|
||||
[ImmArg<0>, ImmArg<1>, ImmArg<6>, ImmArg<7>, IntrWriteMem, IntrInaccessibleMemOnly]
|
||||
[ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>, ImmArg<ArgIndex<6>>, ImmArg<ArgIndex<7>>, IntrWriteMem, IntrInaccessibleMemOnly]
|
||||
>;
|
||||
|
||||
// exp with compr bit set.
|
||||
@ -1167,7 +1167,7 @@ def int_amdgcn_exp_compr : Intrinsic <[], [
|
||||
LLVMMatchType<0>, // src1
|
||||
llvm_i1_ty, // done
|
||||
llvm_i1_ty], // vm
|
||||
[ImmArg<0>, ImmArg<1>, ImmArg<4>, ImmArg<5>, IntrWriteMem, IntrInaccessibleMemOnly]
|
||||
[ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>, ImmArg<ArgIndex<4>>, ImmArg<ArgIndex<5>>, IntrWriteMem, IntrInaccessibleMemOnly]
|
||||
>;
|
||||
|
||||
def int_amdgcn_buffer_wbinvl1_sc :
|
||||
@ -1188,23 +1188,23 @@ def int_amdgcn_s_memtime :
|
||||
|
||||
def int_amdgcn_s_sleep :
|
||||
GCCBuiltin<"__builtin_amdgcn_s_sleep">,
|
||||
Intrinsic<[], [llvm_i32_ty], [ImmArg<0>]> {
|
||||
Intrinsic<[], [llvm_i32_ty], [ImmArg<ArgIndex<0>>]> {
|
||||
}
|
||||
|
||||
def int_amdgcn_s_incperflevel :
|
||||
GCCBuiltin<"__builtin_amdgcn_s_incperflevel">,
|
||||
Intrinsic<[], [llvm_i32_ty], [ImmArg<0>]> {
|
||||
Intrinsic<[], [llvm_i32_ty], [ImmArg<ArgIndex<0>>]> {
|
||||
}
|
||||
|
||||
def int_amdgcn_s_decperflevel :
|
||||
GCCBuiltin<"__builtin_amdgcn_s_decperflevel">,
|
||||
Intrinsic<[], [llvm_i32_ty], [ImmArg<0>]> {
|
||||
Intrinsic<[], [llvm_i32_ty], [ImmArg<ArgIndex<0>>]> {
|
||||
}
|
||||
|
||||
def int_amdgcn_s_getreg :
|
||||
GCCBuiltin<"__builtin_amdgcn_s_getreg">,
|
||||
Intrinsic<[llvm_i32_ty], [llvm_i32_ty],
|
||||
[IntrInaccessibleMemOnly, IntrReadMem, IntrSpeculatable, ImmArg<0>]
|
||||
[IntrInaccessibleMemOnly, IntrReadMem, IntrSpeculatable, ImmArg<ArgIndex<0>>]
|
||||
>;
|
||||
|
||||
// int_amdgcn_s_getpc is provided to allow a specific style of position
|
||||
@ -1223,7 +1223,7 @@ def int_amdgcn_interp_mov :
|
||||
GCCBuiltin<"__builtin_amdgcn_interp_mov">,
|
||||
Intrinsic<[llvm_float_ty],
|
||||
[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
|
||||
[IntrNoMem, IntrSpeculatable, ImmArg<0>, ImmArg<1>, ImmArg<2>]>;
|
||||
[IntrNoMem, IntrSpeculatable, ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
// __builtin_amdgcn_interp_p1 <i>, <attr_chan>, <attr>, <m0>
|
||||
// This intrinsic reads from lds, but the memory values are constant,
|
||||
@ -1232,14 +1232,14 @@ def int_amdgcn_interp_p1 :
|
||||
GCCBuiltin<"__builtin_amdgcn_interp_p1">,
|
||||
Intrinsic<[llvm_float_ty],
|
||||
[llvm_float_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
|
||||
[IntrNoMem, IntrSpeculatable, ImmArg<1>, ImmArg<2>]>;
|
||||
[IntrNoMem, IntrSpeculatable, ImmArg<ArgIndex<1>>, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
// __builtin_amdgcn_interp_p2 <p1>, <j>, <attr_chan>, <attr>, <m0>
|
||||
def int_amdgcn_interp_p2 :
|
||||
GCCBuiltin<"__builtin_amdgcn_interp_p2">,
|
||||
Intrinsic<[llvm_float_ty],
|
||||
[llvm_float_ty, llvm_float_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
|
||||
[IntrNoMem, IntrSpeculatable, ImmArg<2>, ImmArg<3>]>;
|
||||
[IntrNoMem, IntrSpeculatable, ImmArg<ArgIndex<2>>, ImmArg<ArgIndex<3>>]>;
|
||||
// See int_amdgcn_v_interp_p1 for why this is IntrNoMem.
|
||||
|
||||
// __builtin_amdgcn_interp_p1_f16 <i>, <attr_chan>, <attr>, <high>, <m0>
|
||||
@ -1247,14 +1247,14 @@ def int_amdgcn_interp_p1_f16 :
|
||||
GCCBuiltin<"__builtin_amdgcn_interp_p1_f16">,
|
||||
Intrinsic<[llvm_float_ty],
|
||||
[llvm_float_ty, llvm_i32_ty, llvm_i32_ty, llvm_i1_ty, llvm_i32_ty],
|
||||
[IntrNoMem, IntrSpeculatable, ImmArg<1>, ImmArg<2>, ImmArg<3>]>;
|
||||
[IntrNoMem, IntrSpeculatable, ImmArg<ArgIndex<1>>, ImmArg<ArgIndex<2>>, ImmArg<ArgIndex<3>>]>;
|
||||
|
||||
// __builtin_amdgcn_interp_p2_f16 <p1>, <j>, <attr_chan>, <attr>, <high>, <m0>
|
||||
def int_amdgcn_interp_p2_f16 :
|
||||
GCCBuiltin<"__builtin_amdgcn_interp_p2_f16">,
|
||||
Intrinsic<[llvm_half_ty],
|
||||
[llvm_float_ty, llvm_float_ty, llvm_i32_ty, llvm_i32_ty, llvm_i1_ty, llvm_i32_ty],
|
||||
[IntrNoMem, IntrSpeculatable, ImmArg<2>, ImmArg<3>, ImmArg<4>]>;
|
||||
[IntrNoMem, IntrSpeculatable, ImmArg<ArgIndex<2>>, ImmArg<ArgIndex<3>>, ImmArg<ArgIndex<4>>]>;
|
||||
|
||||
// Pixel shaders only: whether the current pixel is live (i.e. not a helper
|
||||
// invocation for derivative computation).
|
||||
@ -1275,7 +1275,7 @@ def int_amdgcn_mbcnt_hi :
|
||||
def int_amdgcn_ds_swizzle :
|
||||
GCCBuiltin<"__builtin_amdgcn_ds_swizzle">,
|
||||
Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty],
|
||||
[IntrNoMem, IntrConvergent, ImmArg<1>]>;
|
||||
[IntrNoMem, IntrConvergent, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_amdgcn_ubfe : Intrinsic<[llvm_anyint_ty],
|
||||
[LLVMMatchType<0>, llvm_i32_ty, llvm_i32_ty],
|
||||
@ -1343,11 +1343,11 @@ def int_amdgcn_cvt_pk_u8_f32 :
|
||||
|
||||
def int_amdgcn_icmp :
|
||||
Intrinsic<[llvm_anyint_ty], [llvm_anyint_ty, LLVMMatchType<1>, llvm_i32_ty],
|
||||
[IntrNoMem, IntrConvergent, ImmArg<2>]>;
|
||||
[IntrNoMem, IntrConvergent, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_amdgcn_fcmp :
|
||||
Intrinsic<[llvm_anyint_ty], [llvm_anyfloat_ty, LLVMMatchType<1>, llvm_i32_ty],
|
||||
[IntrNoMem, IntrConvergent, ImmArg<2>]>;
|
||||
[IntrNoMem, IntrConvergent, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_amdgcn_ballot :
|
||||
Intrinsic<[llvm_anyint_ty], [llvm_i1_ty], [IntrNoMem, IntrConvergent]>;
|
||||
@ -1500,13 +1500,13 @@ def int_amdgcn_set_inactive :
|
||||
// Return if the given flat pointer points to a local memory address.
|
||||
def int_amdgcn_is_shared : GCCBuiltin<"__builtin_amdgcn_is_shared">,
|
||||
Intrinsic<[llvm_i1_ty], [llvm_ptr_ty],
|
||||
[IntrNoMem, IntrSpeculatable, NoCapture<0>]
|
||||
[IntrNoMem, IntrSpeculatable, NoCapture<ArgIndex<0>>]
|
||||
>;
|
||||
|
||||
// Return if the given flat pointer points to a prvate memory address.
|
||||
def int_amdgcn_is_private : GCCBuiltin<"__builtin_amdgcn_is_private">,
|
||||
Intrinsic<[llvm_i1_ty], [llvm_ptr_ty],
|
||||
[IntrNoMem, IntrSpeculatable, NoCapture<0>]
|
||||
[IntrNoMem, IntrSpeculatable, NoCapture<ArgIndex<0>>]
|
||||
>;
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
@ -1529,8 +1529,8 @@ def int_amdgcn_buffer_wbinvl1_vol :
|
||||
def int_amdgcn_mov_dpp :
|
||||
Intrinsic<[llvm_anyint_ty],
|
||||
[LLVMMatchType<0>, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
|
||||
llvm_i1_ty], [IntrNoMem, IntrConvergent, ImmArg<1>,
|
||||
ImmArg<2>, ImmArg<3>, ImmArg<4>]>;
|
||||
llvm_i1_ty], [IntrNoMem, IntrConvergent, ImmArg<ArgIndex<1>>,
|
||||
ImmArg<ArgIndex<2>>, ImmArg<ArgIndex<3>>, ImmArg<ArgIndex<4>>]>;
|
||||
|
||||
// llvm.amdgcn.update.dpp.i32 <old> <src> <dpp_ctrl> <row_mask> <bank_mask> <bound_ctrl>
|
||||
// Should be equivalent to:
|
||||
@ -1541,7 +1541,7 @@ def int_amdgcn_update_dpp :
|
||||
[LLVMMatchType<0>, LLVMMatchType<0>, llvm_i32_ty,
|
||||
llvm_i32_ty, llvm_i32_ty, llvm_i1_ty],
|
||||
[IntrNoMem, IntrConvergent,
|
||||
ImmArg<2>, ImmArg<3>, ImmArg<4>, ImmArg<5>]>;
|
||||
ImmArg<ArgIndex<2>>, ImmArg<ArgIndex<3>>, ImmArg<ArgIndex<4>>, ImmArg<ArgIndex<5>>]>;
|
||||
|
||||
def int_amdgcn_s_dcache_wb :
|
||||
GCCBuiltin<"__builtin_amdgcn_s_dcache_wb">,
|
||||
@ -1573,13 +1573,13 @@ def int_amdgcn_ds_bpermute :
|
||||
def int_amdgcn_permlane16 : GCCBuiltin<"__builtin_amdgcn_permlane16">,
|
||||
Intrinsic<[llvm_i32_ty],
|
||||
[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i1_ty, llvm_i1_ty],
|
||||
[IntrNoMem, IntrConvergent, ImmArg<4>, ImmArg<5>]>;
|
||||
[IntrNoMem, IntrConvergent, ImmArg<ArgIndex<4>>, ImmArg<ArgIndex<5>>]>;
|
||||
|
||||
// llvm.amdgcn.permlanex16 <old> <src0> <src1> <src2> <fi> <bound_control>
|
||||
def int_amdgcn_permlanex16 : GCCBuiltin<"__builtin_amdgcn_permlanex16">,
|
||||
Intrinsic<[llvm_i32_ty],
|
||||
[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i1_ty, llvm_i1_ty],
|
||||
[IntrNoMem, IntrConvergent, ImmArg<4>, ImmArg<5>]>;
|
||||
[IntrNoMem, IntrConvergent, ImmArg<ArgIndex<4>>, ImmArg<ArgIndex<5>>]>;
|
||||
|
||||
// llvm.amdgcn.mov.dpp8.i32 <src> <sel>
|
||||
// <sel> is a 32-bit constant whose high 8 bits must be zero which selects
|
||||
@ -1587,7 +1587,7 @@ def int_amdgcn_permlanex16 : GCCBuiltin<"__builtin_amdgcn_permlanex16">,
|
||||
def int_amdgcn_mov_dpp8 :
|
||||
Intrinsic<[llvm_anyint_ty],
|
||||
[LLVMMatchType<0>, llvm_i32_ty],
|
||||
[IntrNoMem, IntrConvergent, ImmArg<1>]>;
|
||||
[IntrNoMem, IntrConvergent, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_amdgcn_s_get_waveid_in_workgroup :
|
||||
GCCBuiltin<"__builtin_amdgcn_s_get_waveid_in_workgroup">,
|
||||
@ -1609,7 +1609,7 @@ def int_amdgcn_fdot2 :
|
||||
llvm_float_ty, // %c
|
||||
llvm_i1_ty // %clamp
|
||||
],
|
||||
[IntrNoMem, IntrSpeculatable, ImmArg<3>]
|
||||
[IntrNoMem, IntrSpeculatable, ImmArg<ArgIndex<3>>]
|
||||
>;
|
||||
|
||||
// i32 %r = llvm.amdgcn.sdot2(v2i16 %a, v2i16 %b, i32 %c, i1 %clamp)
|
||||
@ -1624,7 +1624,7 @@ def int_amdgcn_sdot2 :
|
||||
llvm_i32_ty, // %c
|
||||
llvm_i1_ty // %clamp
|
||||
],
|
||||
[IntrNoMem, IntrSpeculatable, ImmArg<3>]
|
||||
[IntrNoMem, IntrSpeculatable, ImmArg<ArgIndex<3>>]
|
||||
>;
|
||||
|
||||
// u32 %r = llvm.amdgcn.udot2(v2u16 %a, v2u16 %b, u32 %c, i1 %clamp)
|
||||
@ -1639,7 +1639,7 @@ def int_amdgcn_udot2 :
|
||||
llvm_i32_ty, // %c
|
||||
llvm_i1_ty // %clamp
|
||||
],
|
||||
[IntrNoMem, IntrSpeculatable, ImmArg<3>]
|
||||
[IntrNoMem, IntrSpeculatable, ImmArg<ArgIndex<3>>]
|
||||
>;
|
||||
|
||||
// i32 %r = llvm.amdgcn.sdot4(v4i8 (as i32) %a, v4i8 (as i32) %b, i32 %c, i1 %clamp)
|
||||
@ -1654,7 +1654,7 @@ def int_amdgcn_sdot4 :
|
||||
llvm_i32_ty, // %c
|
||||
llvm_i1_ty // %clamp
|
||||
],
|
||||
[IntrNoMem, IntrSpeculatable, ImmArg<3>]
|
||||
[IntrNoMem, IntrSpeculatable, ImmArg<ArgIndex<3>>]
|
||||
>;
|
||||
|
||||
// u32 %r = llvm.amdgcn.udot4(v4u8 (as u32) %a, v4u8 (as u32) %b, u32 %c, i1 %clamp)
|
||||
@ -1669,7 +1669,7 @@ def int_amdgcn_udot4 :
|
||||
llvm_i32_ty, // %c
|
||||
llvm_i1_ty // %clamp
|
||||
],
|
||||
[IntrNoMem, IntrSpeculatable, ImmArg<3>]
|
||||
[IntrNoMem, IntrSpeculatable, ImmArg<ArgIndex<3>>]
|
||||
>;
|
||||
|
||||
// i32 %r = llvm.amdgcn.sdot8(v8i4 (as i32) %a, v8i4 (as i32) %b, i32 %c, i1 %clamp)
|
||||
@ -1685,7 +1685,7 @@ def int_amdgcn_sdot8 :
|
||||
llvm_i32_ty, // %c
|
||||
llvm_i1_ty // %clamp
|
||||
],
|
||||
[IntrNoMem, IntrSpeculatable, ImmArg<3>]
|
||||
[IntrNoMem, IntrSpeculatable, ImmArg<ArgIndex<3>>]
|
||||
>;
|
||||
|
||||
// u32 %r = llvm.amdgcn.udot8(v8u4 (as u32) %a, v8u4 (as u32) %b, u32 %c, i1 %clamp)
|
||||
@ -1701,7 +1701,7 @@ def int_amdgcn_udot8 :
|
||||
llvm_i32_ty, // %c
|
||||
llvm_i1_ty // %clamp
|
||||
],
|
||||
[IntrNoMem, IntrSpeculatable, ImmArg<3>]
|
||||
[IntrNoMem, IntrSpeculatable, ImmArg<ArgIndex<3>>]
|
||||
>;
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
@ -1722,7 +1722,7 @@ class AMDGPUGlobalAtomicNoRtn : Intrinsic <
|
||||
[],
|
||||
[llvm_anyptr_ty, // vaddr
|
||||
llvm_anyfloat_ty], // vdata(VGPR)
|
||||
[IntrArgMemOnly, NoCapture<0>], "", [SDNPMemOperand]>;
|
||||
[IntrArgMemOnly, NoCapture<ArgIndex<0>>], "", [SDNPMemOperand]>;
|
||||
|
||||
def int_amdgcn_buffer_atomic_fadd : AMDGPUBufferAtomicNoRtn;
|
||||
def int_amdgcn_global_atomic_fadd : AMDGPUGlobalAtomicNoRtn;
|
||||
@ -1732,121 +1732,121 @@ def int_amdgcn_mfma_f32_32x32x1f32 : GCCBuiltin<"__builtin_amdgcn_mfma_f32_32x32
|
||||
Intrinsic<[llvm_v32f32_ty],
|
||||
[llvm_float_ty, llvm_float_ty, llvm_v32f32_ty,
|
||||
llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
|
||||
[IntrConvergent, IntrNoMem, ImmArg<3>, ImmArg<4>, ImmArg<5>]>;
|
||||
[IntrConvergent, IntrNoMem, ImmArg<ArgIndex<3>>, ImmArg<ArgIndex<4>>, ImmArg<ArgIndex<5>>]>;
|
||||
|
||||
def int_amdgcn_mfma_f32_16x16x1f32 : GCCBuiltin<"__builtin_amdgcn_mfma_f32_16x16x1f32">,
|
||||
Intrinsic<[llvm_v16f32_ty],
|
||||
[llvm_float_ty, llvm_float_ty, llvm_v16f32_ty,
|
||||
llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
|
||||
[IntrConvergent, IntrNoMem, ImmArg<3>, ImmArg<4>, ImmArg<5>]>;
|
||||
[IntrConvergent, IntrNoMem, ImmArg<ArgIndex<3>>, ImmArg<ArgIndex<4>>, ImmArg<ArgIndex<5>>]>;
|
||||
|
||||
def int_amdgcn_mfma_f32_4x4x1f32 : GCCBuiltin<"__builtin_amdgcn_mfma_f32_4x4x1f32">,
|
||||
Intrinsic<[llvm_v4f32_ty],
|
||||
[llvm_float_ty, llvm_float_ty, llvm_v4f32_ty,
|
||||
llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
|
||||
[IntrConvergent, IntrNoMem, ImmArg<3>, ImmArg<4>, ImmArg<5>]>;
|
||||
[IntrConvergent, IntrNoMem, ImmArg<ArgIndex<3>>, ImmArg<ArgIndex<4>>, ImmArg<ArgIndex<5>>]>;
|
||||
|
||||
def int_amdgcn_mfma_f32_32x32x2f32 : GCCBuiltin<"__builtin_amdgcn_mfma_f32_32x32x2f32">,
|
||||
Intrinsic<[llvm_v16f32_ty],
|
||||
[llvm_float_ty, llvm_float_ty, llvm_v16f32_ty,
|
||||
llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
|
||||
[IntrConvergent, IntrNoMem, ImmArg<3>, ImmArg<4>, ImmArg<5>]>;
|
||||
[IntrConvergent, IntrNoMem, ImmArg<ArgIndex<3>>, ImmArg<ArgIndex<4>>, ImmArg<ArgIndex<5>>]>;
|
||||
|
||||
def int_amdgcn_mfma_f32_16x16x4f32 : GCCBuiltin<"__builtin_amdgcn_mfma_f32_16x16x4f32">,
|
||||
Intrinsic<[llvm_v4f32_ty],
|
||||
[llvm_float_ty, llvm_float_ty, llvm_v4f32_ty,
|
||||
llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
|
||||
[IntrConvergent, IntrNoMem, ImmArg<3>, ImmArg<4>, ImmArg<5>]>;
|
||||
[IntrConvergent, IntrNoMem, ImmArg<ArgIndex<3>>, ImmArg<ArgIndex<4>>, ImmArg<ArgIndex<5>>]>;
|
||||
|
||||
def int_amdgcn_mfma_f32_32x32x4f16 : GCCBuiltin<"__builtin_amdgcn_mfma_f32_32x32x4f16">,
|
||||
Intrinsic<[llvm_v32f32_ty],
|
||||
[llvm_v4f16_ty, llvm_v4f16_ty, llvm_v32f32_ty,
|
||||
llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
|
||||
[IntrConvergent, IntrNoMem, ImmArg<3>, ImmArg<4>, ImmArg<5>]>;
|
||||
[IntrConvergent, IntrNoMem, ImmArg<ArgIndex<3>>, ImmArg<ArgIndex<4>>, ImmArg<ArgIndex<5>>]>;
|
||||
|
||||
def int_amdgcn_mfma_f32_16x16x4f16 : GCCBuiltin<"__builtin_amdgcn_mfma_f32_16x16x4f16">,
|
||||
Intrinsic<[llvm_v16f32_ty],
|
||||
[llvm_v4f16_ty, llvm_v4f16_ty, llvm_v16f32_ty,
|
||||
llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
|
||||
[IntrConvergent, IntrNoMem, ImmArg<3>, ImmArg<4>, ImmArg<5>]>;
|
||||
[IntrConvergent, IntrNoMem, ImmArg<ArgIndex<3>>, ImmArg<ArgIndex<4>>, ImmArg<ArgIndex<5>>]>;
|
||||
|
||||
def int_amdgcn_mfma_f32_4x4x4f16 : GCCBuiltin<"__builtin_amdgcn_mfma_f32_4x4x4f16">,
|
||||
Intrinsic<[llvm_v4f32_ty],
|
||||
[llvm_v4f16_ty, llvm_v4f16_ty, llvm_v4f32_ty,
|
||||
llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
|
||||
[IntrConvergent, IntrNoMem, ImmArg<3>, ImmArg<4>, ImmArg<5>]>;
|
||||
[IntrConvergent, IntrNoMem, ImmArg<ArgIndex<3>>, ImmArg<ArgIndex<4>>, ImmArg<ArgIndex<5>>]>;
|
||||
|
||||
def int_amdgcn_mfma_f32_32x32x8f16 : GCCBuiltin<"__builtin_amdgcn_mfma_f32_32x32x8f16">,
|
||||
Intrinsic<[llvm_v16f32_ty],
|
||||
[llvm_v4f16_ty, llvm_v4f16_ty, llvm_v16f32_ty,
|
||||
llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
|
||||
[IntrConvergent, IntrNoMem, ImmArg<3>, ImmArg<4>, ImmArg<5>]>;
|
||||
[IntrConvergent, IntrNoMem, ImmArg<ArgIndex<3>>, ImmArg<ArgIndex<4>>, ImmArg<ArgIndex<5>>]>;
|
||||
|
||||
def int_amdgcn_mfma_f32_16x16x16f16 : GCCBuiltin<"__builtin_amdgcn_mfma_f32_16x16x16f16">,
|
||||
Intrinsic<[llvm_v4f32_ty],
|
||||
[llvm_v4f16_ty, llvm_v4f16_ty, llvm_v4f32_ty,
|
||||
llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
|
||||
[IntrConvergent, IntrNoMem, ImmArg<3>, ImmArg<4>, ImmArg<5>]>;
|
||||
[IntrConvergent, IntrNoMem, ImmArg<ArgIndex<3>>, ImmArg<ArgIndex<4>>, ImmArg<ArgIndex<5>>]>;
|
||||
|
||||
def int_amdgcn_mfma_i32_32x32x4i8 : GCCBuiltin<"__builtin_amdgcn_mfma_i32_32x32x4i8">,
|
||||
Intrinsic<[llvm_v32i32_ty],
|
||||
[llvm_i32_ty, llvm_i32_ty, llvm_v32i32_ty,
|
||||
llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
|
||||
[IntrConvergent, IntrNoMem, ImmArg<3>, ImmArg<4>, ImmArg<5>]>;
|
||||
[IntrConvergent, IntrNoMem, ImmArg<ArgIndex<3>>, ImmArg<ArgIndex<4>>, ImmArg<ArgIndex<5>>]>;
|
||||
|
||||
def int_amdgcn_mfma_i32_16x16x4i8 : GCCBuiltin<"__builtin_amdgcn_mfma_i32_16x16x4i8">,
|
||||
Intrinsic<[llvm_v16i32_ty],
|
||||
[llvm_i32_ty, llvm_i32_ty, llvm_v16i32_ty,
|
||||
llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
|
||||
[IntrConvergent, IntrNoMem, ImmArg<3>, ImmArg<4>, ImmArg<5>]>;
|
||||
[IntrConvergent, IntrNoMem, ImmArg<ArgIndex<3>>, ImmArg<ArgIndex<4>>, ImmArg<ArgIndex<5>>]>;
|
||||
|
||||
def int_amdgcn_mfma_i32_4x4x4i8 : GCCBuiltin<"__builtin_amdgcn_mfma_i32_4x4x4i8">,
|
||||
Intrinsic<[llvm_v4i32_ty],
|
||||
[llvm_i32_ty, llvm_i32_ty, llvm_v4i32_ty,
|
||||
llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
|
||||
[IntrConvergent, IntrNoMem, ImmArg<3>, ImmArg<4>, ImmArg<5>]>;
|
||||
[IntrConvergent, IntrNoMem, ImmArg<ArgIndex<3>>, ImmArg<ArgIndex<4>>, ImmArg<ArgIndex<5>>]>;
|
||||
|
||||
def int_amdgcn_mfma_i32_32x32x8i8 : GCCBuiltin<"__builtin_amdgcn_mfma_i32_32x32x8i8">,
|
||||
Intrinsic<[llvm_v16i32_ty],
|
||||
[llvm_i32_ty, llvm_i32_ty, llvm_v16i32_ty,
|
||||
llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
|
||||
[IntrConvergent, IntrNoMem, ImmArg<3>, ImmArg<4>, ImmArg<5>]>;
|
||||
[IntrConvergent, IntrNoMem, ImmArg<ArgIndex<3>>, ImmArg<ArgIndex<4>>, ImmArg<ArgIndex<5>>]>;
|
||||
|
||||
def int_amdgcn_mfma_i32_16x16x16i8 : GCCBuiltin<"__builtin_amdgcn_mfma_i32_16x16x16i8">,
|
||||
Intrinsic<[llvm_v4i32_ty],
|
||||
[llvm_i32_ty, llvm_i32_ty, llvm_v4i32_ty,
|
||||
llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
|
||||
[IntrConvergent, IntrNoMem, ImmArg<3>, ImmArg<4>, ImmArg<5>]>;
|
||||
[IntrConvergent, IntrNoMem, ImmArg<ArgIndex<3>>, ImmArg<ArgIndex<4>>, ImmArg<ArgIndex<5>>]>;
|
||||
|
||||
def int_amdgcn_mfma_f32_32x32x2bf16 : GCCBuiltin<"__builtin_amdgcn_mfma_f32_32x32x2bf16">,
|
||||
Intrinsic<[llvm_v32f32_ty],
|
||||
[llvm_v2i16_ty, llvm_v2i16_ty, llvm_v32f32_ty,
|
||||
llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
|
||||
[IntrConvergent, IntrNoMem, ImmArg<3>, ImmArg<4>, ImmArg<5>]>;
|
||||
[IntrConvergent, IntrNoMem, ImmArg<ArgIndex<3>>, ImmArg<ArgIndex<4>>, ImmArg<ArgIndex<5>>]>;
|
||||
|
||||
def int_amdgcn_mfma_f32_16x16x2bf16 : GCCBuiltin<"__builtin_amdgcn_mfma_f32_16x16x2bf16">,
|
||||
Intrinsic<[llvm_v16f32_ty],
|
||||
[llvm_v2i16_ty, llvm_v2i16_ty, llvm_v16f32_ty,
|
||||
llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
|
||||
[IntrConvergent, IntrNoMem, ImmArg<3>, ImmArg<4>, ImmArg<5>]>;
|
||||
[IntrConvergent, IntrNoMem, ImmArg<ArgIndex<3>>, ImmArg<ArgIndex<4>>, ImmArg<ArgIndex<5>>]>;
|
||||
|
||||
def int_amdgcn_mfma_f32_4x4x2bf16 : GCCBuiltin<"__builtin_amdgcn_mfma_f32_4x4x2bf16">,
|
||||
Intrinsic<[llvm_v4f32_ty],
|
||||
[llvm_v2i16_ty, llvm_v2i16_ty, llvm_v4f32_ty,
|
||||
llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
|
||||
[IntrConvergent, IntrNoMem, ImmArg<3>, ImmArg<4>, ImmArg<5>]>;
|
||||
[IntrConvergent, IntrNoMem, ImmArg<ArgIndex<3>>, ImmArg<ArgIndex<4>>, ImmArg<ArgIndex<5>>]>;
|
||||
|
||||
def int_amdgcn_mfma_f32_32x32x4bf16 : GCCBuiltin<"__builtin_amdgcn_mfma_f32_32x32x4bf16">,
|
||||
Intrinsic<[llvm_v16f32_ty],
|
||||
[llvm_v2i16_ty, llvm_v2i16_ty, llvm_v16f32_ty,
|
||||
llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
|
||||
[IntrConvergent, IntrNoMem, ImmArg<3>, ImmArg<4>, ImmArg<5>]>;
|
||||
[IntrConvergent, IntrNoMem, ImmArg<ArgIndex<3>>, ImmArg<ArgIndex<4>>, ImmArg<ArgIndex<5>>]>;
|
||||
|
||||
def int_amdgcn_mfma_f32_16x16x8bf16 : GCCBuiltin<"__builtin_amdgcn_mfma_f32_16x16x8bf16">,
|
||||
Intrinsic<[llvm_v4f32_ty],
|
||||
[llvm_v2i16_ty, llvm_v2i16_ty, llvm_v4f32_ty,
|
||||
llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
|
||||
[IntrConvergent, IntrNoMem, ImmArg<3>, ImmArg<4>, ImmArg<5>]>;
|
||||
[IntrConvergent, IntrNoMem, ImmArg<ArgIndex<3>>, ImmArg<ArgIndex<4>>, ImmArg<ArgIndex<5>>]>;
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// Special Intrinsics for backend internal use only. No frontend
|
||||
|
@ -19,7 +19,7 @@ let TargetPrefix = "arm" in { // All intrinsics start with "llvm.arm.".
|
||||
// A space-consuming intrinsic primarily for testing ARMConstantIslands. The
|
||||
// first argument is the number of bytes this "instruction" takes up, the second
|
||||
// and return value are essentially chains, used to force ordering during ISel.
|
||||
def int_arm_space : Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty], [ImmArg<0>]>;
|
||||
def int_arm_space : Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty], [ImmArg<ArgIndex<0>>]>;
|
||||
|
||||
// 16-bit multiplications
|
||||
def int_arm_smulbb : GCCBuiltin<"__builtin_arm_smulbb">,
|
||||
@ -262,59 +262,59 @@ def int_arm_vcvtru : Intrinsic<[llvm_float_ty], [llvm_anyfloat_ty],
|
||||
// Coprocessor
|
||||
|
||||
def int_arm_ldc : GCCBuiltin<"__builtin_arm_ldc">,
|
||||
Intrinsic<[], [llvm_i32_ty, llvm_i32_ty, llvm_ptr_ty], [ImmArg<0>, ImmArg<1>]>;
|
||||
Intrinsic<[], [llvm_i32_ty, llvm_i32_ty, llvm_ptr_ty], [ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>]>;
|
||||
def int_arm_ldcl : GCCBuiltin<"__builtin_arm_ldcl">,
|
||||
Intrinsic<[], [llvm_i32_ty, llvm_i32_ty, llvm_ptr_ty], [ImmArg<0>, ImmArg<1>]>;
|
||||
Intrinsic<[], [llvm_i32_ty, llvm_i32_ty, llvm_ptr_ty], [ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>]>;
|
||||
def int_arm_ldc2 : GCCBuiltin<"__builtin_arm_ldc2">,
|
||||
Intrinsic<[], [llvm_i32_ty, llvm_i32_ty, llvm_ptr_ty], [ImmArg<0>, ImmArg<1>]>;
|
||||
Intrinsic<[], [llvm_i32_ty, llvm_i32_ty, llvm_ptr_ty], [ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>]>;
|
||||
def int_arm_ldc2l : GCCBuiltin<"__builtin_arm_ldc2l">,
|
||||
Intrinsic<[], [llvm_i32_ty, llvm_i32_ty, llvm_ptr_ty], [ImmArg<0>, ImmArg<1>]>;
|
||||
Intrinsic<[], [llvm_i32_ty, llvm_i32_ty, llvm_ptr_ty], [ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_arm_stc : GCCBuiltin<"__builtin_arm_stc">,
|
||||
Intrinsic<[], [llvm_i32_ty, llvm_i32_ty, llvm_ptr_ty], [ImmArg<0>, ImmArg<1>]>;
|
||||
Intrinsic<[], [llvm_i32_ty, llvm_i32_ty, llvm_ptr_ty], [ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>]>;
|
||||
def int_arm_stcl : GCCBuiltin<"__builtin_arm_stcl">,
|
||||
Intrinsic<[], [llvm_i32_ty, llvm_i32_ty, llvm_ptr_ty], [ImmArg<0>, ImmArg<1>]>;
|
||||
Intrinsic<[], [llvm_i32_ty, llvm_i32_ty, llvm_ptr_ty], [ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>]>;
|
||||
def int_arm_stc2 : GCCBuiltin<"__builtin_arm_stc2">,
|
||||
Intrinsic<[], [llvm_i32_ty, llvm_i32_ty, llvm_ptr_ty], [ImmArg<0>, ImmArg<1>]>;
|
||||
Intrinsic<[], [llvm_i32_ty, llvm_i32_ty, llvm_ptr_ty], [ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>]>;
|
||||
def int_arm_stc2l : GCCBuiltin<"__builtin_arm_stc2l">,
|
||||
Intrinsic<[], [llvm_i32_ty, llvm_i32_ty, llvm_ptr_ty], [ImmArg<0>, ImmArg<1>]>;
|
||||
Intrinsic<[], [llvm_i32_ty, llvm_i32_ty, llvm_ptr_ty], [ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
// Move to coprocessor
|
||||
def int_arm_mcr : GCCBuiltin<"__builtin_arm_mcr">,
|
||||
Intrinsic<[], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
|
||||
llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [ImmArg<0>, ImmArg<1>, ImmArg<3>, ImmArg<4>, ImmArg<5>]>;
|
||||
llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>, ImmArg<ArgIndex<3>>, ImmArg<ArgIndex<4>>, ImmArg<ArgIndex<5>>]>;
|
||||
def int_arm_mcr2 : GCCBuiltin<"__builtin_arm_mcr2">,
|
||||
Intrinsic<[], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
|
||||
llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [ImmArg<0>, ImmArg<1>, ImmArg<3>, ImmArg<4>, ImmArg<5>]>;
|
||||
llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>, ImmArg<ArgIndex<3>>, ImmArg<ArgIndex<4>>, ImmArg<ArgIndex<5>>]>;
|
||||
|
||||
// Move from coprocessor
|
||||
def int_arm_mrc : GCCBuiltin<"__builtin_arm_mrc">,
|
||||
MSBuiltin<"_MoveFromCoprocessor">,
|
||||
Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
|
||||
llvm_i32_ty, llvm_i32_ty], [ImmArg<0>, ImmArg<1>, ImmArg<2>, ImmArg<3>, ImmArg<4>]>;
|
||||
llvm_i32_ty, llvm_i32_ty], [ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>, ImmArg<ArgIndex<2>>, ImmArg<ArgIndex<3>>, ImmArg<ArgIndex<4>>]>;
|
||||
def int_arm_mrc2 : GCCBuiltin<"__builtin_arm_mrc2">,
|
||||
MSBuiltin<"_MoveFromCoprocessor2">,
|
||||
Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
|
||||
llvm_i32_ty, llvm_i32_ty], [ImmArg<0>, ImmArg<1>, ImmArg<2>, ImmArg<3>, ImmArg<4>]>;
|
||||
llvm_i32_ty, llvm_i32_ty], [ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>, ImmArg<ArgIndex<2>>, ImmArg<ArgIndex<3>>, ImmArg<ArgIndex<4>>]>;
|
||||
|
||||
// Coprocessor data processing
|
||||
def int_arm_cdp : GCCBuiltin<"__builtin_arm_cdp">,
|
||||
Intrinsic<[], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
|
||||
llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [ImmArg<0>, ImmArg<1>, ImmArg<2>, ImmArg<3>, ImmArg<4>, ImmArg<5>]>;
|
||||
llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>, ImmArg<ArgIndex<2>>, ImmArg<ArgIndex<3>>, ImmArg<ArgIndex<4>>, ImmArg<ArgIndex<5>>]>;
|
||||
def int_arm_cdp2 : GCCBuiltin<"__builtin_arm_cdp2">,
|
||||
Intrinsic<[], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
|
||||
llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [ImmArg<0>, ImmArg<1>, ImmArg<2>, ImmArg<3>, ImmArg<4>, ImmArg<5>]>;
|
||||
llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>, ImmArg<ArgIndex<2>>, ImmArg<ArgIndex<3>>, ImmArg<ArgIndex<4>>, ImmArg<ArgIndex<5>>]>;
|
||||
|
||||
// Move from two registers to coprocessor
|
||||
def int_arm_mcrr : Intrinsic<[], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
|
||||
llvm_i32_ty, llvm_i32_ty], [ImmArg<0>, ImmArg<1>, ImmArg<4>]>;
|
||||
llvm_i32_ty, llvm_i32_ty], [ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>, ImmArg<ArgIndex<4>>]>;
|
||||
def int_arm_mcrr2 : Intrinsic<[], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
|
||||
llvm_i32_ty, llvm_i32_ty], [ImmArg<0>, ImmArg<1>, ImmArg<4>]>;
|
||||
llvm_i32_ty, llvm_i32_ty], [ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>, ImmArg<ArgIndex<4>>]>;
|
||||
|
||||
def int_arm_mrrc : Intrinsic<[llvm_i32_ty, llvm_i32_ty], [llvm_i32_ty,
|
||||
llvm_i32_ty, llvm_i32_ty], [ImmArg<0>, ImmArg<1>, ImmArg<2>]>;
|
||||
llvm_i32_ty, llvm_i32_ty], [ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>, ImmArg<ArgIndex<2>>]>;
|
||||
def int_arm_mrrc2 : Intrinsic<[llvm_i32_ty, llvm_i32_ty], [llvm_i32_ty,
|
||||
llvm_i32_ty, llvm_i32_ty], [ImmArg<0>, ImmArg<1>, ImmArg<2>]>;
|
||||
llvm_i32_ty, llvm_i32_ty], [ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// CRC32
|
||||
@ -695,16 +695,16 @@ def int_arm_neon_vst4 : Intrinsic<[],
|
||||
def int_arm_neon_vst1x2 : Intrinsic<[],
|
||||
[llvm_anyptr_ty, llvm_anyvector_ty,
|
||||
LLVMMatchType<1>],
|
||||
[IntrArgMemOnly, NoCapture<0>]>;
|
||||
[IntrArgMemOnly, NoCapture<ArgIndex<0>>]>;
|
||||
def int_arm_neon_vst1x3 : Intrinsic<[],
|
||||
[llvm_anyptr_ty, llvm_anyvector_ty,
|
||||
LLVMMatchType<1>, LLVMMatchType<1>],
|
||||
[IntrArgMemOnly, NoCapture<0>]>;
|
||||
[IntrArgMemOnly, NoCapture<ArgIndex<0>>]>;
|
||||
def int_arm_neon_vst1x4 : Intrinsic<[],
|
||||
[llvm_anyptr_ty, llvm_anyvector_ty,
|
||||
LLVMMatchType<1>, LLVMMatchType<1>,
|
||||
LLVMMatchType<1>],
|
||||
[IntrArgMemOnly, NoCapture<0>]>;
|
||||
[IntrArgMemOnly, NoCapture<ArgIndex<0>>]>;
|
||||
|
||||
// Vector store N-element structure from one lane.
|
||||
// Source operands are: the address, the N vectors, the lane number, and
|
||||
@ -1297,22 +1297,22 @@ multiclass CDEGPRIntrinsics<list<LLVMType> args> {
|
||||
def "" : Intrinsic<
|
||||
[llvm_i32_ty],
|
||||
!listconcat([llvm_i32_ty /* coproc */], args, [llvm_i32_ty /* imm */]),
|
||||
[IntrNoMem, ImmArg<0>, ImmArg<!add(!size(args), 1)>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<!add(!size(args), 1)>>]>;
|
||||
def a : Intrinsic<
|
||||
[llvm_i32_ty],
|
||||
!listconcat([llvm_i32_ty /* coproc */, llvm_i32_ty /* acc */], args,
|
||||
[llvm_i32_ty /* imm */]),
|
||||
[IntrNoMem, ImmArg<0>, ImmArg<!add(!size(args), 2)>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<!add(!size(args), 2)>>]>;
|
||||
|
||||
def d: Intrinsic<
|
||||
[llvm_i32_ty /* lo */, llvm_i32_ty /* hi */],
|
||||
!listconcat([llvm_i32_ty /* coproc */], args, [llvm_i32_ty /* imm */]),
|
||||
[IntrNoMem, ImmArg<0>, ImmArg<!add(!size(args), 1)>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<!add(!size(args), 1)>>]>;
|
||||
def da: Intrinsic<
|
||||
[llvm_i32_ty /* lo */, llvm_i32_ty /* hi */],
|
||||
!listconcat([llvm_i32_ty /* coproc */, llvm_i32_ty /* acc_lo */,
|
||||
llvm_i32_ty /* acc_hi */], args, [llvm_i32_ty /* imm */]),
|
||||
[IntrNoMem, ImmArg<0>, ImmArg<!add(!size(args), 3)>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<!add(!size(args), 3)>>]>;
|
||||
}
|
||||
|
||||
defm int_arm_cde_cx1: CDEGPRIntrinsics<[]>;
|
||||
@ -1323,12 +1323,12 @@ multiclass CDEVCXIntrinsics<list<LLVMType> args> {
|
||||
def "" : Intrinsic<
|
||||
[llvm_anyfloat_ty],
|
||||
!listconcat([llvm_i32_ty /* coproc */], args, [llvm_i32_ty /* imm */]),
|
||||
[IntrNoMem, ImmArg<0>, ImmArg<!add(!size(args), 1)>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<!add(!size(args), 1)>>]>;
|
||||
def a : Intrinsic<
|
||||
[llvm_anyfloat_ty],
|
||||
!listconcat([llvm_i32_ty /* coproc */, LLVMMatchType<0> /* acc */],
|
||||
args, [llvm_i32_ty /* imm */]),
|
||||
[IntrNoMem, ImmArg<0>, ImmArg<!add(!size(args), 2)>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<!add(!size(args), 2)>>]>;
|
||||
}
|
||||
|
||||
defm int_arm_cde_vcx1 : CDEVCXIntrinsics<[]>;
|
||||
@ -1339,23 +1339,23 @@ multiclass CDEVCXVecIntrinsics<list<LLVMType> args> {
|
||||
def "" : Intrinsic<
|
||||
[llvm_v16i8_ty],
|
||||
!listconcat([llvm_i32_ty /* coproc */], args, [llvm_i32_ty /* imm */]),
|
||||
[IntrNoMem, ImmArg<0>, ImmArg<!add(!size(args), 1)>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<!add(!size(args), 1)>>]>;
|
||||
def a : Intrinsic<
|
||||
[llvm_v16i8_ty],
|
||||
!listconcat([llvm_i32_ty /* coproc */, llvm_v16i8_ty /* acc */],
|
||||
args, [llvm_i32_ty /* imm */]),
|
||||
[IntrNoMem, ImmArg<0>, ImmArg<!add(!size(args), 2)>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<!add(!size(args), 2)>>]>;
|
||||
|
||||
def _predicated : Intrinsic<
|
||||
[llvm_anyvector_ty],
|
||||
!listconcat([llvm_i32_ty /* coproc */, LLVMMatchType<0> /* inactive */],
|
||||
args, [llvm_i32_ty /* imm */, llvm_anyvector_ty /* mask */]),
|
||||
[IntrNoMem, ImmArg<0>, ImmArg<!add(!size(args), 2)>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<!add(!size(args), 2)>>]>;
|
||||
def a_predicated : Intrinsic<
|
||||
[llvm_anyvector_ty],
|
||||
!listconcat([llvm_i32_ty /* coproc */, LLVMMatchType<0> /* acc */],
|
||||
args, [llvm_i32_ty /* imm */, llvm_anyvector_ty /* mask */]),
|
||||
[IntrNoMem, ImmArg<0>, ImmArg<!add(!size(args), 2)>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<!add(!size(args), 2)>>]>;
|
||||
}
|
||||
|
||||
defm int_arm_cde_vcx1q : CDEVCXVecIntrinsics<[]>;
|
||||
|
@ -22,7 +22,7 @@ let TargetPrefix = "bpf" in { // All intrinsics start with "llvm.bpf."
|
||||
Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i64_ty]>;
|
||||
def int_bpf_preserve_field_info : GCCBuiltin<"__builtin_bpf_preserve_field_info">,
|
||||
Intrinsic<[llvm_i32_ty], [llvm_anyptr_ty, llvm_i64_ty],
|
||||
[IntrNoMem, ImmArg<1>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_bpf_btf_type_id : GCCBuiltin<"__builtin_bpf_btf_type_id">,
|
||||
Intrinsic<[llvm_i32_ty], [llvm_any_ty, llvm_any_ty, llvm_i64_ty],
|
||||
[IntrNoMem]>;
|
||||
|
@ -51,19 +51,19 @@ class Hexagon_mem_memmemsisi_Intrinsic<string GCCIntSuffix>
|
||||
: Hexagon_Intrinsic<GCCIntSuffix,
|
||||
[llvm_ptr_ty], [llvm_ptr_ty, llvm_ptr_ty,
|
||||
llvm_i32_ty, llvm_i32_ty],
|
||||
[IntrArgMemOnly, ImmArg<3>]>;
|
||||
[IntrArgMemOnly, ImmArg<ArgIndex<3>>]>;
|
||||
|
||||
class Hexagon_mem_memsisisi_Intrinsic<string GCCIntSuffix>
|
||||
: Hexagon_Intrinsic<GCCIntSuffix,
|
||||
[llvm_ptr_ty], [llvm_ptr_ty, llvm_i32_ty,
|
||||
llvm_i32_ty, llvm_i32_ty],
|
||||
[IntrWriteMem, ImmArg<3>]>;
|
||||
[IntrWriteMem, ImmArg<ArgIndex<3>>]>;
|
||||
|
||||
class Hexagon_mem_memdisisi_Intrinsic<string GCCIntSuffix>
|
||||
: Hexagon_Intrinsic<GCCIntSuffix,
|
||||
[llvm_ptr_ty], [llvm_ptr_ty, llvm_i64_ty,
|
||||
llvm_i32_ty, llvm_i32_ty],
|
||||
[IntrWriteMem, ImmArg<3>]>;
|
||||
[IntrWriteMem, ImmArg<ArgIndex<3>>]>;
|
||||
|
||||
//
|
||||
// BUILTIN_INFO_NONCONST(circ_ldd,PTR_ftype_PTRPTRSISI,4)
|
||||
@ -131,34 +131,34 @@ def llvm_ptr64_ty : LLVMPointerType<llvm_i64_ty>;
|
||||
// Mark locked loads as read/write to prevent any accidental reordering.
|
||||
def int_hexagon_L2_loadw_locked :
|
||||
Hexagon_Intrinsic<"HEXAGON_L2_loadw_locked", [llvm_i32_ty], [llvm_ptr32_ty],
|
||||
[IntrArgMemOnly, NoCapture<0>]>;
|
||||
[IntrArgMemOnly, NoCapture<ArgIndex<0>>]>;
|
||||
def int_hexagon_L4_loadd_locked :
|
||||
Hexagon_Intrinsic<"HEXAGON_L4_loadd_locked", [llvm_i64_ty], [llvm_ptr64_ty],
|
||||
[IntrArgMemOnly, NoCapture<0>]>;
|
||||
[IntrArgMemOnly, NoCapture<ArgIndex<0>>]>;
|
||||
|
||||
def int_hexagon_S2_storew_locked :
|
||||
Hexagon_Intrinsic<"HEXAGON_S2_storew_locked", [llvm_i32_ty],
|
||||
[llvm_ptr32_ty, llvm_i32_ty], [IntrArgMemOnly, NoCapture<0>]>;
|
||||
[llvm_ptr32_ty, llvm_i32_ty], [IntrArgMemOnly, NoCapture<ArgIndex<0>>]>;
|
||||
def int_hexagon_S4_stored_locked :
|
||||
Hexagon_Intrinsic<"HEXAGON_S4_stored_locked", [llvm_i32_ty],
|
||||
[llvm_ptr64_ty, llvm_i64_ty], [IntrArgMemOnly, NoCapture<0>]>;
|
||||
[llvm_ptr64_ty, llvm_i64_ty], [IntrArgMemOnly, NoCapture<ArgIndex<0>>]>;
|
||||
|
||||
def int_hexagon_vmemcpy : Hexagon_Intrinsic<"hexagon_vmemcpy",
|
||||
[], [llvm_ptr_ty, llvm_ptr_ty, llvm_i32_ty],
|
||||
[IntrArgMemOnly, NoCapture<0>, NoCapture<1>, WriteOnly<0>, ReadOnly<1>]>;
|
||||
[IntrArgMemOnly, NoCapture<ArgIndex<0>>, NoCapture<ArgIndex<1>>, WriteOnly<ArgIndex<0>>, ReadOnly<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_vmemset : Hexagon_Intrinsic<"hexagon_vmemset",
|
||||
[], [llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty],
|
||||
[IntrArgMemOnly, NoCapture<0>, WriteOnly<0>]>;
|
||||
[IntrArgMemOnly, NoCapture<ArgIndex<0>>, WriteOnly<ArgIndex<0>>]>;
|
||||
|
||||
multiclass Hexagon_custom_circ_ld_Intrinsic<LLVMType ElTy> {
|
||||
def NAME#_pci : Hexagon_NonGCC_Intrinsic<
|
||||
[ElTy, llvm_ptr_ty],
|
||||
[llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty, llvm_ptr_ty],
|
||||
[IntrArgMemOnly, NoCapture<3>]>;
|
||||
[IntrArgMemOnly, NoCapture<ArgIndex<3>>]>;
|
||||
def NAME#_pcr : Hexagon_NonGCC_Intrinsic<
|
||||
[ElTy, llvm_ptr_ty], [llvm_ptr_ty, llvm_i32_ty, llvm_ptr_ty],
|
||||
[IntrArgMemOnly, NoCapture<2>]>;
|
||||
[IntrArgMemOnly, NoCapture<ArgIndex<2>>]>;
|
||||
}
|
||||
|
||||
defm int_hexagon_L2_loadrub : Hexagon_custom_circ_ld_Intrinsic<llvm_i32_ty>;
|
||||
@ -172,10 +172,10 @@ multiclass Hexagon_custom_circ_st_Intrinsic<LLVMType ElTy> {
|
||||
def NAME#_pci : Hexagon_NonGCC_Intrinsic<
|
||||
[llvm_ptr_ty],
|
||||
[llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty, ElTy, llvm_ptr_ty],
|
||||
[IntrArgMemOnly, NoCapture<4>]>;
|
||||
[IntrArgMemOnly, NoCapture<ArgIndex<4>>]>;
|
||||
def NAME#_pcr : Hexagon_NonGCC_Intrinsic<
|
||||
[llvm_ptr_ty], [llvm_ptr_ty, llvm_i32_ty, ElTy, llvm_ptr_ty],
|
||||
[IntrArgMemOnly, NoCapture<3>]>;
|
||||
[IntrArgMemOnly, NoCapture<ArgIndex<3>>]>;
|
||||
}
|
||||
|
||||
defm int_hexagon_S2_storerb : Hexagon_custom_circ_st_Intrinsic<llvm_i32_ty>;
|
||||
|
@ -1100,10 +1100,10 @@ def int_hexagon_C2_cmpgtup :
|
||||
Hexagon_i32_i64i64_Intrinsic<"HEXAGON_C2_cmpgtup">;
|
||||
|
||||
def int_hexagon_A4_rcmpeqi :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A4_rcmpeqi", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A4_rcmpeqi", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_A4_rcmpneqi :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A4_rcmpneqi", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A4_rcmpneqi", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_A4_rcmpeq :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A4_rcmpeq">;
|
||||
@ -1124,19 +1124,19 @@ def int_hexagon_C4_nbitsclr :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_C4_nbitsclr">;
|
||||
|
||||
def int_hexagon_C2_cmpeqi :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_C2_cmpeqi", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_C2_cmpeqi", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_C2_cmpgti :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_C2_cmpgti", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_C2_cmpgti", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_C2_cmpgtui :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_C2_cmpgtui", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_C2_cmpgtui", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_C2_cmpgei :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_C2_cmpgei", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_C2_cmpgei", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_C2_cmpgeui :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_C2_cmpgeui", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_C2_cmpgeui", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_C2_cmplt :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_C2_cmplt">;
|
||||
@ -1145,19 +1145,19 @@ def int_hexagon_C2_cmpltu :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_C2_cmpltu">;
|
||||
|
||||
def int_hexagon_C2_bitsclri :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_C2_bitsclri", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_C2_bitsclri", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_C4_nbitsclri :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_C4_nbitsclri", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_C4_nbitsclri", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_C4_cmpneqi :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_C4_cmpneqi", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_C4_cmpneqi", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_C4_cmpltei :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_C4_cmpltei", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_C4_cmpltei", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_C4_cmplteui :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_C4_cmplteui", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_C4_cmplteui", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_C4_cmpneq :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_C4_cmpneq">;
|
||||
@ -1226,13 +1226,13 @@ def int_hexagon_C2_mux :
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_C2_mux">;
|
||||
|
||||
def int_hexagon_C2_muxii :
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_C2_muxii", [IntrNoMem, ImmArg<1>, ImmArg<2>]>;
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_C2_muxii", [IntrNoMem, ImmArg<ArgIndex<1>>, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_C2_muxir :
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_C2_muxir", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_C2_muxir", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_C2_muxri :
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_C2_muxri", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_C2_muxri", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_C2_vmux :
|
||||
Hexagon_i64_i32i64i64_Intrinsic<"HEXAGON_C2_vmux">;
|
||||
@ -1244,7 +1244,7 @@ def int_hexagon_A2_vcmpbeq :
|
||||
Hexagon_i32_i64i64_Intrinsic<"HEXAGON_A2_vcmpbeq">;
|
||||
|
||||
def int_hexagon_A4_vcmpbeqi :
|
||||
Hexagon_i32_i64i32_Intrinsic<"HEXAGON_A4_vcmpbeqi", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i32_i64i32_Intrinsic<"HEXAGON_A4_vcmpbeqi", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_A4_vcmpbeq_any :
|
||||
Hexagon_i32_i64i64_Intrinsic<"HEXAGON_A4_vcmpbeq_any">;
|
||||
@ -1253,31 +1253,31 @@ def int_hexagon_A2_vcmpbgtu :
|
||||
Hexagon_i32_i64i64_Intrinsic<"HEXAGON_A2_vcmpbgtu">;
|
||||
|
||||
def int_hexagon_A4_vcmpbgtui :
|
||||
Hexagon_i32_i64i32_Intrinsic<"HEXAGON_A4_vcmpbgtui", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i32_i64i32_Intrinsic<"HEXAGON_A4_vcmpbgtui", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_A4_vcmpbgt :
|
||||
Hexagon_i32_i64i64_Intrinsic<"HEXAGON_A4_vcmpbgt">;
|
||||
|
||||
def int_hexagon_A4_vcmpbgti :
|
||||
Hexagon_i32_i64i32_Intrinsic<"HEXAGON_A4_vcmpbgti", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i32_i64i32_Intrinsic<"HEXAGON_A4_vcmpbgti", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_A4_cmpbeq :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A4_cmpbeq">;
|
||||
|
||||
def int_hexagon_A4_cmpbeqi :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A4_cmpbeqi", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A4_cmpbeqi", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_A4_cmpbgtu :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A4_cmpbgtu">;
|
||||
|
||||
def int_hexagon_A4_cmpbgtui :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A4_cmpbgtui", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A4_cmpbgtui", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_A4_cmpbgt :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A4_cmpbgt">;
|
||||
|
||||
def int_hexagon_A4_cmpbgti :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A4_cmpbgti", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A4_cmpbgti", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_A2_vcmpheq :
|
||||
Hexagon_i32_i64i64_Intrinsic<"HEXAGON_A2_vcmpheq">;
|
||||
@ -1289,13 +1289,13 @@ def int_hexagon_A2_vcmphgtu :
|
||||
Hexagon_i32_i64i64_Intrinsic<"HEXAGON_A2_vcmphgtu">;
|
||||
|
||||
def int_hexagon_A4_vcmpheqi :
|
||||
Hexagon_i32_i64i32_Intrinsic<"HEXAGON_A4_vcmpheqi", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i32_i64i32_Intrinsic<"HEXAGON_A4_vcmpheqi", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_A4_vcmphgti :
|
||||
Hexagon_i32_i64i32_Intrinsic<"HEXAGON_A4_vcmphgti", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i32_i64i32_Intrinsic<"HEXAGON_A4_vcmphgti", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_A4_vcmphgtui :
|
||||
Hexagon_i32_i64i32_Intrinsic<"HEXAGON_A4_vcmphgtui", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i32_i64i32_Intrinsic<"HEXAGON_A4_vcmphgtui", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_A4_cmpheq :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A4_cmpheq">;
|
||||
@ -1307,13 +1307,13 @@ def int_hexagon_A4_cmphgtu :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A4_cmphgtu">;
|
||||
|
||||
def int_hexagon_A4_cmpheqi :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A4_cmpheqi", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A4_cmpheqi", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_A4_cmphgti :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A4_cmphgti", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A4_cmphgti", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_A4_cmphgtui :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A4_cmphgtui", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A4_cmphgtui", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_A2_vcmpweq :
|
||||
Hexagon_i32_i64i64_Intrinsic<"HEXAGON_A2_vcmpweq">;
|
||||
@ -1325,13 +1325,13 @@ def int_hexagon_A2_vcmpwgtu :
|
||||
Hexagon_i32_i64i64_Intrinsic<"HEXAGON_A2_vcmpwgtu">;
|
||||
|
||||
def int_hexagon_A4_vcmpweqi :
|
||||
Hexagon_i32_i64i32_Intrinsic<"HEXAGON_A4_vcmpweqi", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i32_i64i32_Intrinsic<"HEXAGON_A4_vcmpweqi", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_A4_vcmpwgti :
|
||||
Hexagon_i32_i64i32_Intrinsic<"HEXAGON_A4_vcmpwgti", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i32_i64i32_Intrinsic<"HEXAGON_A4_vcmpwgti", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_A4_vcmpwgtui :
|
||||
Hexagon_i32_i64i32_Intrinsic<"HEXAGON_A4_vcmpwgtui", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i32_i64i32_Intrinsic<"HEXAGON_A4_vcmpwgtui", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_A4_boundscheck :
|
||||
Hexagon_i32_i32i64_Intrinsic<"HEXAGON_A4_boundscheck">;
|
||||
@ -1784,13 +1784,13 @@ def int_hexagon_M2_mpyud_ll_s1 :
|
||||
Hexagon_i64_i32i32_Intrinsic<"HEXAGON_M2_mpyud_ll_s1">;
|
||||
|
||||
def int_hexagon_M2_mpysmi :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_mpysmi", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_M2_mpysmi", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_M2_macsip :
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_macsip", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_macsip", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_M2_macsin :
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_macsin", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_macsin", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_M2_dpmpyss_s0 :
|
||||
Hexagon_i64_i32i32_Intrinsic<"HEXAGON_M2_dpmpyss_s0">;
|
||||
@ -1847,13 +1847,13 @@ def int_hexagon_M2_acci :
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_acci">;
|
||||
|
||||
def int_hexagon_M2_accii :
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_accii", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_accii", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_M2_nacci :
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_nacci">;
|
||||
|
||||
def int_hexagon_M2_naccii :
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_naccii", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_naccii", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_M2_subacc :
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M2_subacc">;
|
||||
@ -1862,16 +1862,16 @@ def int_hexagon_M4_mpyrr_addr :
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M4_mpyrr_addr">;
|
||||
|
||||
def int_hexagon_M4_mpyri_addr_u2 :
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M4_mpyri_addr_u2", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M4_mpyri_addr_u2", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_M4_mpyri_addr :
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M4_mpyri_addr", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M4_mpyri_addr", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_M4_mpyri_addi :
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M4_mpyri_addi", [IntrNoMem, ImmArg<0>, ImmArg<2>]>;
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M4_mpyri_addi", [IntrNoMem, ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_M4_mpyrr_addi :
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M4_mpyrr_addi", [IntrNoMem, ImmArg<0>]>;
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M4_mpyrr_addi", [IntrNoMem, ImmArg<ArgIndex<0>>]>;
|
||||
|
||||
def int_hexagon_M2_vmpy2s_s0 :
|
||||
Hexagon_i64_i32i32_Intrinsic<"HEXAGON_M2_vmpy2s_s0">;
|
||||
@ -2234,10 +2234,10 @@ def int_hexagon_S2_vcrotate :
|
||||
Hexagon_i64_i64i32_Intrinsic<"HEXAGON_S2_vcrotate">;
|
||||
|
||||
def int_hexagon_S4_vrcrotate_acc :
|
||||
Hexagon_i64_i64i64i32i32_Intrinsic<"HEXAGON_S4_vrcrotate_acc", [IntrNoMem, ImmArg<3>]>;
|
||||
Hexagon_i64_i64i64i32i32_Intrinsic<"HEXAGON_S4_vrcrotate_acc", [IntrNoMem, ImmArg<ArgIndex<3>>]>;
|
||||
|
||||
def int_hexagon_S4_vrcrotate :
|
||||
Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_S4_vrcrotate", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_S4_vrcrotate", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_S2_vcnegh :
|
||||
Hexagon_i64_i64i32_Intrinsic<"HEXAGON_S2_vcnegh">;
|
||||
@ -2270,7 +2270,7 @@ def int_hexagon_A2_subsat :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_subsat">;
|
||||
|
||||
def int_hexagon_A2_addi :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_addi", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_addi", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_A2_addh_l16_ll :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_addh_l16_ll">;
|
||||
@ -2411,13 +2411,13 @@ def int_hexagon_A2_tfr :
|
||||
Hexagon_i32_i32_Intrinsic<"HEXAGON_A2_tfr">;
|
||||
|
||||
def int_hexagon_A2_tfrsi :
|
||||
Hexagon_i32_i32_Intrinsic<"HEXAGON_A2_tfrsi", [IntrNoMem, ImmArg<0>]>;
|
||||
Hexagon_i32_i32_Intrinsic<"HEXAGON_A2_tfrsi", [IntrNoMem, ImmArg<ArgIndex<0>>]>;
|
||||
|
||||
def int_hexagon_A2_tfrp :
|
||||
Hexagon_i64_i64_Intrinsic<"HEXAGON_A2_tfrp">;
|
||||
|
||||
def int_hexagon_A2_tfrpi :
|
||||
Hexagon_i64_i32_Intrinsic<"HEXAGON_A2_tfrpi", [IntrNoMem, ImmArg<0>]>;
|
||||
Hexagon_i64_i32_Intrinsic<"HEXAGON_A2_tfrpi", [IntrNoMem, ImmArg<ArgIndex<0>>]>;
|
||||
|
||||
def int_hexagon_A2_zxtb :
|
||||
Hexagon_i32_i32_Intrinsic<"HEXAGON_A2_zxtb">;
|
||||
@ -2435,13 +2435,13 @@ def int_hexagon_A2_combinew :
|
||||
Hexagon_i64_i32i32_Intrinsic<"HEXAGON_A2_combinew">;
|
||||
|
||||
def int_hexagon_A4_combineri :
|
||||
Hexagon_i64_i32i32_Intrinsic<"HEXAGON_A4_combineri", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i64_i32i32_Intrinsic<"HEXAGON_A4_combineri", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_A4_combineir :
|
||||
Hexagon_i64_i32i32_Intrinsic<"HEXAGON_A4_combineir", [IntrNoMem, ImmArg<0>]>;
|
||||
Hexagon_i64_i32i32_Intrinsic<"HEXAGON_A4_combineir", [IntrNoMem, ImmArg<ArgIndex<0>>]>;
|
||||
|
||||
def int_hexagon_A2_combineii :
|
||||
Hexagon_i64_i32i32_Intrinsic<"HEXAGON_A2_combineii", [IntrNoMem, ImmArg<0>, ImmArg<1>]>;
|
||||
Hexagon_i64_i32i32_Intrinsic<"HEXAGON_A2_combineii", [IntrNoMem, ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_A2_combine_hh :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_combine_hh">;
|
||||
@ -2456,10 +2456,10 @@ def int_hexagon_A2_combine_ll :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_combine_ll">;
|
||||
|
||||
def int_hexagon_A2_tfril :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_tfril", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_tfril", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_A2_tfrih :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_tfrih", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_tfrih", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_A2_and :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_and">;
|
||||
@ -2492,10 +2492,10 @@ def int_hexagon_A4_ornp :
|
||||
Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A4_ornp">;
|
||||
|
||||
def int_hexagon_S4_addaddi :
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S4_addaddi", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S4_addaddi", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_S4_subaddi :
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S4_subaddi", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S4_subaddi", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_M4_and_and :
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M4_and_and">;
|
||||
@ -2522,13 +2522,13 @@ def int_hexagon_M4_or_xor :
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M4_or_xor">;
|
||||
|
||||
def int_hexagon_S4_or_andix :
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S4_or_andix", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S4_or_andix", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_S4_or_andi :
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S4_or_andi", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S4_or_andi", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_S4_or_ori :
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S4_or_ori", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S4_or_ori", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_M4_xor_and :
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M4_xor_and">;
|
||||
@ -2540,13 +2540,13 @@ def int_hexagon_M4_xor_andn :
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_M4_xor_andn">;
|
||||
|
||||
def int_hexagon_A2_subri :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_subri", [IntrNoMem, ImmArg<0>]>;
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_subri", [IntrNoMem, ImmArg<ArgIndex<0>>]>;
|
||||
|
||||
def int_hexagon_A2_andir :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_andir", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_andir", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_A2_orir :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_orir", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A2_orir", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_A2_andp :
|
||||
Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A2_andp">;
|
||||
@ -2768,19 +2768,19 @@ def int_hexagon_A2_vnavghr :
|
||||
Hexagon_i64_i64i64_Intrinsic<"HEXAGON_A2_vnavghr">;
|
||||
|
||||
def int_hexagon_A4_round_ri :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A4_round_ri", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A4_round_ri", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_A4_round_rr :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A4_round_rr">;
|
||||
|
||||
def int_hexagon_A4_round_ri_sat :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A4_round_ri_sat", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A4_round_ri_sat", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_A4_round_rr_sat :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A4_round_rr_sat">;
|
||||
|
||||
def int_hexagon_A4_cround_ri :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A4_cround_ri", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A4_cround_ri", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_A4_cround_rr :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A4_cround_rr">;
|
||||
@ -2891,13 +2891,13 @@ def int_hexagon_F2_sfmin :
|
||||
Hexagon_float_floatfloat_Intrinsic<"HEXAGON_F2_sfmin", [IntrNoMem, Throws]>;
|
||||
|
||||
def int_hexagon_F2_sfclass :
|
||||
Hexagon_i32_floati32_Intrinsic<"HEXAGON_F2_sfclass", [IntrNoMem, Throws, ImmArg<1>]>;
|
||||
Hexagon_i32_floati32_Intrinsic<"HEXAGON_F2_sfclass", [IntrNoMem, Throws, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_F2_sfimm_p :
|
||||
Hexagon_float_i32_Intrinsic<"HEXAGON_F2_sfimm_p", [IntrNoMem, Throws, ImmArg<0>]>;
|
||||
Hexagon_float_i32_Intrinsic<"HEXAGON_F2_sfimm_p", [IntrNoMem, Throws, ImmArg<ArgIndex<0>>]>;
|
||||
|
||||
def int_hexagon_F2_sfimm_n :
|
||||
Hexagon_float_i32_Intrinsic<"HEXAGON_F2_sfimm_n", [IntrNoMem, Throws, ImmArg<0>]>;
|
||||
Hexagon_float_i32_Intrinsic<"HEXAGON_F2_sfimm_n", [IntrNoMem, Throws, ImmArg<ArgIndex<0>>]>;
|
||||
|
||||
def int_hexagon_F2_sffixupn :
|
||||
Hexagon_float_floatfloat_Intrinsic<"HEXAGON_F2_sffixupn", [IntrNoMem, Throws]>;
|
||||
@ -2921,13 +2921,13 @@ def int_hexagon_F2_dfcmpuo :
|
||||
Hexagon_i32_doubledouble_Intrinsic<"HEXAGON_F2_dfcmpuo", [IntrNoMem, Throws]>;
|
||||
|
||||
def int_hexagon_F2_dfclass :
|
||||
Hexagon_i32_doublei32_Intrinsic<"HEXAGON_F2_dfclass", [IntrNoMem, Throws, ImmArg<1>]>;
|
||||
Hexagon_i32_doublei32_Intrinsic<"HEXAGON_F2_dfclass", [IntrNoMem, Throws, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_F2_dfimm_p :
|
||||
Hexagon_double_i32_Intrinsic<"HEXAGON_F2_dfimm_p", [IntrNoMem, Throws, ImmArg<0>]>;
|
||||
Hexagon_double_i32_Intrinsic<"HEXAGON_F2_dfimm_p", [IntrNoMem, Throws, ImmArg<ArgIndex<0>>]>;
|
||||
|
||||
def int_hexagon_F2_dfimm_n :
|
||||
Hexagon_double_i32_Intrinsic<"HEXAGON_F2_dfimm_n", [IntrNoMem, Throws, ImmArg<0>]>;
|
||||
Hexagon_double_i32_Intrinsic<"HEXAGON_F2_dfimm_n", [IntrNoMem, Throws, ImmArg<ArgIndex<0>>]>;
|
||||
|
||||
def int_hexagon_F2_conv_sf2df :
|
||||
Hexagon_double_float_Intrinsic<"HEXAGON_F2_conv_sf2df">;
|
||||
@ -3146,160 +3146,160 @@ def int_hexagon_S2_asl_r_r_sat :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_S2_asl_r_r_sat">;
|
||||
|
||||
def int_hexagon_S2_asr_i_r :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_S2_asr_i_r", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_S2_asr_i_r", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_S2_lsr_i_r :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_S2_lsr_i_r", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_S2_lsr_i_r", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_S2_asl_i_r :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_S2_asl_i_r", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_S2_asl_i_r", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_S2_asr_i_p :
|
||||
Hexagon_i64_i64i32_Intrinsic<"HEXAGON_S2_asr_i_p", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i64_i64i32_Intrinsic<"HEXAGON_S2_asr_i_p", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_S2_lsr_i_p :
|
||||
Hexagon_i64_i64i32_Intrinsic<"HEXAGON_S2_lsr_i_p", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i64_i64i32_Intrinsic<"HEXAGON_S2_lsr_i_p", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_S2_asl_i_p :
|
||||
Hexagon_i64_i64i32_Intrinsic<"HEXAGON_S2_asl_i_p", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i64_i64i32_Intrinsic<"HEXAGON_S2_asl_i_p", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_S2_asr_i_r_acc :
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_asr_i_r_acc", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_asr_i_r_acc", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_S2_lsr_i_r_acc :
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_lsr_i_r_acc", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_lsr_i_r_acc", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_S2_asl_i_r_acc :
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_asl_i_r_acc", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_asl_i_r_acc", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_S2_asr_i_p_acc :
|
||||
Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_asr_i_p_acc", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_asr_i_p_acc", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_S2_lsr_i_p_acc :
|
||||
Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_lsr_i_p_acc", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_lsr_i_p_acc", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_S2_asl_i_p_acc :
|
||||
Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_asl_i_p_acc", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_asl_i_p_acc", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_S2_asr_i_r_nac :
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_asr_i_r_nac", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_asr_i_r_nac", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_S2_lsr_i_r_nac :
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_lsr_i_r_nac", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_lsr_i_r_nac", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_S2_asl_i_r_nac :
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_asl_i_r_nac", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_asl_i_r_nac", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_S2_asr_i_p_nac :
|
||||
Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_asr_i_p_nac", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_asr_i_p_nac", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_S2_lsr_i_p_nac :
|
||||
Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_lsr_i_p_nac", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_lsr_i_p_nac", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_S2_asl_i_p_nac :
|
||||
Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_asl_i_p_nac", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_asl_i_p_nac", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_S2_lsr_i_r_xacc :
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_lsr_i_r_xacc", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_lsr_i_r_xacc", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_S2_asl_i_r_xacc :
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_asl_i_r_xacc", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_asl_i_r_xacc", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_S2_lsr_i_p_xacc :
|
||||
Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_lsr_i_p_xacc", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_lsr_i_p_xacc", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_S2_asl_i_p_xacc :
|
||||
Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_asl_i_p_xacc", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_asl_i_p_xacc", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_S2_asr_i_r_and :
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_asr_i_r_and", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_asr_i_r_and", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_S2_lsr_i_r_and :
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_lsr_i_r_and", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_lsr_i_r_and", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_S2_asl_i_r_and :
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_asl_i_r_and", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_asl_i_r_and", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_S2_asr_i_r_or :
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_asr_i_r_or", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_asr_i_r_or", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_S2_lsr_i_r_or :
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_lsr_i_r_or", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_lsr_i_r_or", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_S2_asl_i_r_or :
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_asl_i_r_or", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_asl_i_r_or", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_S2_asr_i_p_and :
|
||||
Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_asr_i_p_and", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_asr_i_p_and", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_S2_lsr_i_p_and :
|
||||
Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_lsr_i_p_and", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_lsr_i_p_and", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_S2_asl_i_p_and :
|
||||
Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_asl_i_p_and", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_asl_i_p_and", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_S2_asr_i_p_or :
|
||||
Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_asr_i_p_or", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_asr_i_p_or", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_S2_lsr_i_p_or :
|
||||
Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_lsr_i_p_or", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_lsr_i_p_or", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_S2_asl_i_p_or :
|
||||
Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_asl_i_p_or", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_asl_i_p_or", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_S2_asl_i_r_sat :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_S2_asl_i_r_sat", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_S2_asl_i_r_sat", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_S2_asr_i_r_rnd :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_S2_asr_i_r_rnd", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_S2_asr_i_r_rnd", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_S2_asr_i_r_rnd_goodsyntax :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_S2_asr_i_r_rnd_goodsyntax", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_S2_asr_i_r_rnd_goodsyntax", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_S2_asr_i_p_rnd :
|
||||
Hexagon_i64_i64i32_Intrinsic<"HEXAGON_S2_asr_i_p_rnd", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i64_i64i32_Intrinsic<"HEXAGON_S2_asr_i_p_rnd", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_S2_asr_i_p_rnd_goodsyntax :
|
||||
Hexagon_i64_i64i32_Intrinsic<"HEXAGON_S2_asr_i_p_rnd_goodsyntax", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i64_i64i32_Intrinsic<"HEXAGON_S2_asr_i_p_rnd_goodsyntax", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_S4_lsli :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_S4_lsli", [IntrNoMem, ImmArg<0>]>;
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_S4_lsli", [IntrNoMem, ImmArg<ArgIndex<0>>]>;
|
||||
|
||||
def int_hexagon_S2_addasl_rrri :
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_addasl_rrri", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_addasl_rrri", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_S4_andi_asl_ri :
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S4_andi_asl_ri", [IntrNoMem, ImmArg<0>, ImmArg<2>]>;
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S4_andi_asl_ri", [IntrNoMem, ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_S4_ori_asl_ri :
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S4_ori_asl_ri", [IntrNoMem, ImmArg<0>, ImmArg<2>]>;
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S4_ori_asl_ri", [IntrNoMem, ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_S4_addi_asl_ri :
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S4_addi_asl_ri", [IntrNoMem, ImmArg<0>, ImmArg<2>]>;
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S4_addi_asl_ri", [IntrNoMem, ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_S4_subi_asl_ri :
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S4_subi_asl_ri", [IntrNoMem, ImmArg<0>, ImmArg<2>]>;
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S4_subi_asl_ri", [IntrNoMem, ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_S4_andi_lsr_ri :
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S4_andi_lsr_ri", [IntrNoMem, ImmArg<0>, ImmArg<2>]>;
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S4_andi_lsr_ri", [IntrNoMem, ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_S4_ori_lsr_ri :
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S4_ori_lsr_ri", [IntrNoMem, ImmArg<0>, ImmArg<2>]>;
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S4_ori_lsr_ri", [IntrNoMem, ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_S4_addi_lsr_ri :
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S4_addi_lsr_ri", [IntrNoMem, ImmArg<0>, ImmArg<2>]>;
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S4_addi_lsr_ri", [IntrNoMem, ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_S4_subi_lsr_ri :
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S4_subi_lsr_ri", [IntrNoMem, ImmArg<0>, ImmArg<2>]>;
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S4_subi_lsr_ri", [IntrNoMem, ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_S2_valignib :
|
||||
Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_valignib", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_valignib", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_S2_valignrb :
|
||||
Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_valignrb">;
|
||||
|
||||
def int_hexagon_S2_vspliceib :
|
||||
Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_vspliceib", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_vspliceib", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_S2_vsplicerb :
|
||||
Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S2_vsplicerb">;
|
||||
@ -3311,40 +3311,40 @@ def int_hexagon_S2_vsplatrb :
|
||||
Hexagon_i32_i32_Intrinsic<"HEXAGON_S2_vsplatrb">;
|
||||
|
||||
def int_hexagon_S2_insert :
|
||||
Hexagon_i32_i32i32i32i32_Intrinsic<"HEXAGON_S2_insert", [IntrNoMem, ImmArg<2>, ImmArg<3>]>;
|
||||
Hexagon_i32_i32i32i32i32_Intrinsic<"HEXAGON_S2_insert", [IntrNoMem, ImmArg<ArgIndex<2>>, ImmArg<ArgIndex<3>>]>;
|
||||
|
||||
def int_hexagon_S2_tableidxb_goodsyntax :
|
||||
Hexagon_i32_i32i32i32i32_Intrinsic<"HEXAGON_S2_tableidxb_goodsyntax", [IntrNoMem, ImmArg<2>, ImmArg<3>]>;
|
||||
Hexagon_i32_i32i32i32i32_Intrinsic<"HEXAGON_S2_tableidxb_goodsyntax", [IntrNoMem, ImmArg<ArgIndex<2>>, ImmArg<ArgIndex<3>>]>;
|
||||
|
||||
def int_hexagon_S2_tableidxh_goodsyntax :
|
||||
Hexagon_i32_i32i32i32i32_Intrinsic<"HEXAGON_S2_tableidxh_goodsyntax", [IntrNoMem, ImmArg<2>, ImmArg<3>]>;
|
||||
Hexagon_i32_i32i32i32i32_Intrinsic<"HEXAGON_S2_tableidxh_goodsyntax", [IntrNoMem, ImmArg<ArgIndex<2>>, ImmArg<ArgIndex<3>>]>;
|
||||
|
||||
def int_hexagon_S2_tableidxw_goodsyntax :
|
||||
Hexagon_i32_i32i32i32i32_Intrinsic<"HEXAGON_S2_tableidxw_goodsyntax", [IntrNoMem, ImmArg<2>, ImmArg<3>]>;
|
||||
Hexagon_i32_i32i32i32i32_Intrinsic<"HEXAGON_S2_tableidxw_goodsyntax", [IntrNoMem, ImmArg<ArgIndex<2>>, ImmArg<ArgIndex<3>>]>;
|
||||
|
||||
def int_hexagon_S2_tableidxd_goodsyntax :
|
||||
Hexagon_i32_i32i32i32i32_Intrinsic<"HEXAGON_S2_tableidxd_goodsyntax", [IntrNoMem, ImmArg<2>, ImmArg<3>]>;
|
||||
Hexagon_i32_i32i32i32i32_Intrinsic<"HEXAGON_S2_tableidxd_goodsyntax", [IntrNoMem, ImmArg<ArgIndex<2>>, ImmArg<ArgIndex<3>>]>;
|
||||
|
||||
def int_hexagon_A4_bitspliti :
|
||||
Hexagon_i64_i32i32_Intrinsic<"HEXAGON_A4_bitspliti", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i64_i32i32_Intrinsic<"HEXAGON_A4_bitspliti", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_A4_bitsplit :
|
||||
Hexagon_i64_i32i32_Intrinsic<"HEXAGON_A4_bitsplit">;
|
||||
|
||||
def int_hexagon_S4_extract :
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S4_extract", [IntrNoMem, ImmArg<1>, ImmArg<2>]>;
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S4_extract", [IntrNoMem, ImmArg<ArgIndex<1>>, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_S2_extractu :
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_extractu", [IntrNoMem, ImmArg<1>, ImmArg<2>]>;
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S2_extractu", [IntrNoMem, ImmArg<ArgIndex<1>>, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_S2_insertp :
|
||||
Hexagon_i64_i64i64i32i32_Intrinsic<"HEXAGON_S2_insertp", [IntrNoMem, ImmArg<2>, ImmArg<3>]>;
|
||||
Hexagon_i64_i64i64i32i32_Intrinsic<"HEXAGON_S2_insertp", [IntrNoMem, ImmArg<ArgIndex<2>>, ImmArg<ArgIndex<3>>]>;
|
||||
|
||||
def int_hexagon_S4_extractp :
|
||||
Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_S4_extractp", [IntrNoMem, ImmArg<1>, ImmArg<2>]>;
|
||||
Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_S4_extractp", [IntrNoMem, ImmArg<ArgIndex<1>>, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_S2_extractup :
|
||||
Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_S2_extractup", [IntrNoMem, ImmArg<1>, ImmArg<2>]>;
|
||||
Hexagon_i64_i64i32i32_Intrinsic<"HEXAGON_S2_extractup", [IntrNoMem, ImmArg<ArgIndex<1>>, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_S2_insert_rp :
|
||||
Hexagon_i32_i32i32i64_Intrinsic<"HEXAGON_S2_insert_rp">;
|
||||
@ -3365,19 +3365,19 @@ def int_hexagon_S2_extractup_rp :
|
||||
Hexagon_i64_i64i64_Intrinsic<"HEXAGON_S2_extractup_rp">;
|
||||
|
||||
def int_hexagon_S2_tstbit_i :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_S2_tstbit_i", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_S2_tstbit_i", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_S4_ntstbit_i :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_S4_ntstbit_i", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_S4_ntstbit_i", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_S2_setbit_i :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_S2_setbit_i", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_S2_setbit_i", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_S2_togglebit_i :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_S2_togglebit_i", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_S2_togglebit_i", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_S2_clrbit_i :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_S2_clrbit_i", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_S2_clrbit_i", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_S2_tstbit_r :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_S2_tstbit_r">;
|
||||
@ -3395,25 +3395,25 @@ def int_hexagon_S2_clrbit_r :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_S2_clrbit_r">;
|
||||
|
||||
def int_hexagon_S2_asr_i_vh :
|
||||
Hexagon_i64_i64i32_Intrinsic<"HEXAGON_S2_asr_i_vh", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i64_i64i32_Intrinsic<"HEXAGON_S2_asr_i_vh", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_S2_lsr_i_vh :
|
||||
Hexagon_i64_i64i32_Intrinsic<"HEXAGON_S2_lsr_i_vh", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i64_i64i32_Intrinsic<"HEXAGON_S2_lsr_i_vh", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_S2_asl_i_vh :
|
||||
Hexagon_i64_i64i32_Intrinsic<"HEXAGON_S2_asl_i_vh", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i64_i64i32_Intrinsic<"HEXAGON_S2_asl_i_vh", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_S2_asr_r_vh :
|
||||
Hexagon_i64_i64i32_Intrinsic<"HEXAGON_S2_asr_r_vh">;
|
||||
|
||||
def int_hexagon_S5_asrhub_rnd_sat_goodsyntax :
|
||||
Hexagon_i32_i64i32_Intrinsic<"HEXAGON_S5_asrhub_rnd_sat_goodsyntax", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i32_i64i32_Intrinsic<"HEXAGON_S5_asrhub_rnd_sat_goodsyntax", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_S5_asrhub_sat :
|
||||
Hexagon_i32_i64i32_Intrinsic<"HEXAGON_S5_asrhub_sat", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i32_i64i32_Intrinsic<"HEXAGON_S5_asrhub_sat", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_S5_vasrhrnd_goodsyntax :
|
||||
Hexagon_i64_i64i32_Intrinsic<"HEXAGON_S5_vasrhrnd_goodsyntax", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i64_i64i32_Intrinsic<"HEXAGON_S5_vasrhrnd_goodsyntax", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_S2_asl_r_vh :
|
||||
Hexagon_i64_i64i32_Intrinsic<"HEXAGON_S2_asl_r_vh">;
|
||||
@ -3425,19 +3425,19 @@ def int_hexagon_S2_lsl_r_vh :
|
||||
Hexagon_i64_i64i32_Intrinsic<"HEXAGON_S2_lsl_r_vh">;
|
||||
|
||||
def int_hexagon_S2_asr_i_vw :
|
||||
Hexagon_i64_i64i32_Intrinsic<"HEXAGON_S2_asr_i_vw", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i64_i64i32_Intrinsic<"HEXAGON_S2_asr_i_vw", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_S2_asr_i_svw_trun :
|
||||
Hexagon_i32_i64i32_Intrinsic<"HEXAGON_S2_asr_i_svw_trun", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i32_i64i32_Intrinsic<"HEXAGON_S2_asr_i_svw_trun", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_S2_asr_r_svw_trun :
|
||||
Hexagon_i32_i64i32_Intrinsic<"HEXAGON_S2_asr_r_svw_trun">;
|
||||
|
||||
def int_hexagon_S2_lsr_i_vw :
|
||||
Hexagon_i64_i64i32_Intrinsic<"HEXAGON_S2_lsr_i_vw", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i64_i64i32_Intrinsic<"HEXAGON_S2_lsr_i_vw", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_S2_asl_i_vw :
|
||||
Hexagon_i64_i64i32_Intrinsic<"HEXAGON_S2_asl_i_vw", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i64_i64i32_Intrinsic<"HEXAGON_S2_asl_i_vw", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_S2_asr_r_vw :
|
||||
Hexagon_i64_i64i32_Intrinsic<"HEXAGON_S2_asr_r_vw">;
|
||||
@ -3545,13 +3545,13 @@ def int_hexagon_S2_clbnorm :
|
||||
Hexagon_i32_i32_Intrinsic<"HEXAGON_S2_clbnorm">;
|
||||
|
||||
def int_hexagon_S4_clbaddi :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_S4_clbaddi", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_S4_clbaddi", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_S4_clbpnorm :
|
||||
Hexagon_i32_i64_Intrinsic<"HEXAGON_S4_clbpnorm">;
|
||||
|
||||
def int_hexagon_S4_clbpaddi :
|
||||
Hexagon_i32_i64i32_Intrinsic<"HEXAGON_S4_clbpaddi", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i32_i64i32_Intrinsic<"HEXAGON_S4_clbpaddi", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_S2_clb :
|
||||
Hexagon_i32_i32_Intrinsic<"HEXAGON_S2_clb">;
|
||||
@ -3619,40 +3619,40 @@ Hexagon__ptri64_Intrinsic<"HEXAGON_Y5_l2fetch", []>;
|
||||
// V60 Scalar Instructions.
|
||||
|
||||
def int_hexagon_S6_rol_i_r :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_S6_rol_i_r", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_S6_rol_i_r", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_S6_rol_i_p :
|
||||
Hexagon_i64_i64i32_Intrinsic<"HEXAGON_S6_rol_i_p", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i64_i64i32_Intrinsic<"HEXAGON_S6_rol_i_p", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_S6_rol_i_r_acc :
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S6_rol_i_r_acc", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S6_rol_i_r_acc", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_S6_rol_i_p_acc :
|
||||
Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S6_rol_i_p_acc", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S6_rol_i_p_acc", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_S6_rol_i_r_nac :
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S6_rol_i_r_nac", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S6_rol_i_r_nac", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_S6_rol_i_p_nac :
|
||||
Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S6_rol_i_p_nac", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S6_rol_i_p_nac", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_S6_rol_i_r_xacc :
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S6_rol_i_r_xacc", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S6_rol_i_r_xacc", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_S6_rol_i_p_xacc :
|
||||
Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S6_rol_i_p_xacc", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S6_rol_i_p_xacc", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_S6_rol_i_r_and :
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S6_rol_i_r_and", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S6_rol_i_r_and", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_S6_rol_i_r_or :
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S6_rol_i_r_or", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_i32_i32i32i32_Intrinsic<"HEXAGON_S6_rol_i_r_or", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_S6_rol_i_p_and :
|
||||
Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S6_rol_i_p_and", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S6_rol_i_p_and", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_S6_rol_i_p_or :
|
||||
Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S6_rol_i_p_or", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_i64_i64i64i32_Intrinsic<"HEXAGON_S6_rol_i_p_or", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
// V62 Scalar Instructions.
|
||||
|
||||
@ -3688,7 +3688,7 @@ def int_hexagon_F2_dfsub :
|
||||
Hexagon_double_doubledouble_Intrinsic<"HEXAGON_F2_dfsub", [IntrNoMem, Throws]>;
|
||||
|
||||
def int_hexagon_S2_mask :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_S2_mask", [IntrNoMem, ImmArg<0>, ImmArg<1>]>;
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_S2_mask", [IntrNoMem, ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
// V67 Scalar Instructions.
|
||||
|
||||
@ -3747,16 +3747,16 @@ def int_hexagon_M7_wcmpyiwc_rnd :
|
||||
Hexagon_i32_i64i64_Intrinsic<"HEXAGON_M7_wcmpyiwc_rnd">;
|
||||
|
||||
def int_hexagon_A7_croundd_ri :
|
||||
Hexagon_i64_i64i32_Intrinsic<"HEXAGON_A7_croundd_ri", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i64_i64i32_Intrinsic<"HEXAGON_A7_croundd_ri", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_A7_croundd_rr :
|
||||
Hexagon_i64_i64i32_Intrinsic<"HEXAGON_A7_croundd_rr">;
|
||||
|
||||
def int_hexagon_A7_clip :
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A7_clip", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i32_i32i32_Intrinsic<"HEXAGON_A7_clip", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_A7_vclip :
|
||||
Hexagon_i64_i64i32_Intrinsic<"HEXAGON_A7_vclip", [IntrNoMem, ImmArg<1>]>;
|
||||
Hexagon_i64_i64i32_Intrinsic<"HEXAGON_A7_vclip", [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_hexagon_F2_dfmax :
|
||||
Hexagon_double_doubledouble_Intrinsic<"HEXAGON_F2_dfmax", [IntrNoMem, Throws]>;
|
||||
@ -3815,16 +3815,16 @@ def int_hexagon_V6_vlalignb_128B :
|
||||
Hexagon_v32i32_v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vlalignb_128B">;
|
||||
|
||||
def int_hexagon_V6_valignbi :
|
||||
Hexagon_v16i32_v16i32v16i32i32_Intrinsic<"HEXAGON_V6_valignbi", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_v16i32_v16i32v16i32i32_Intrinsic<"HEXAGON_V6_valignbi", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_V6_valignbi_128B :
|
||||
Hexagon_v32i32_v32i32v32i32i32_Intrinsic<"HEXAGON_V6_valignbi_128B", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_v32i32_v32i32v32i32i32_Intrinsic<"HEXAGON_V6_valignbi_128B", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_V6_vlalignbi :
|
||||
Hexagon_v16i32_v16i32v16i32i32_Intrinsic<"HEXAGON_V6_vlalignbi", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_v16i32_v16i32v16i32i32_Intrinsic<"HEXAGON_V6_vlalignbi", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_V6_vlalignbi_128B :
|
||||
Hexagon_v32i32_v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vlalignbi_128B", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_v32i32_v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vlalignbi_128B", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_V6_vror :
|
||||
Hexagon_v16i32_v16i32i32_Intrinsic<"HEXAGON_V6_vror">;
|
||||
@ -4121,16 +4121,16 @@ def int_hexagon_V6_vrmpybv_acc_128B :
|
||||
Hexagon_v32i32_v32i32v32i32v32i32_Intrinsic<"HEXAGON_V6_vrmpybv_acc_128B">;
|
||||
|
||||
def int_hexagon_V6_vrmpyubi :
|
||||
Hexagon_v32i32_v32i32i32i32_Intrinsic<"HEXAGON_V6_vrmpyubi", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_v32i32_v32i32i32i32_Intrinsic<"HEXAGON_V6_vrmpyubi", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_V6_vrmpyubi_128B :
|
||||
Hexagon_v64i32_v64i32i32i32_Intrinsic<"HEXAGON_V6_vrmpyubi_128B", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_v64i32_v64i32i32i32_Intrinsic<"HEXAGON_V6_vrmpyubi_128B", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_V6_vrmpyubi_acc :
|
||||
Hexagon_v32i32_v32i32v32i32i32i32_Intrinsic<"HEXAGON_V6_vrmpyubi_acc", [IntrNoMem, ImmArg<3>]>;
|
||||
Hexagon_v32i32_v32i32v32i32i32i32_Intrinsic<"HEXAGON_V6_vrmpyubi_acc", [IntrNoMem, ImmArg<ArgIndex<3>>]>;
|
||||
|
||||
def int_hexagon_V6_vrmpyubi_acc_128B :
|
||||
Hexagon_v64i32_v64i32v64i32i32i32_Intrinsic<"HEXAGON_V6_vrmpyubi_acc_128B", [IntrNoMem, ImmArg<3>]>;
|
||||
Hexagon_v64i32_v64i32v64i32i32i32_Intrinsic<"HEXAGON_V6_vrmpyubi_acc_128B", [IntrNoMem, ImmArg<ArgIndex<3>>]>;
|
||||
|
||||
def int_hexagon_V6_vrmpybus :
|
||||
Hexagon_v16i32_v16i32i32_Intrinsic<"HEXAGON_V6_vrmpybus">;
|
||||
@ -4145,16 +4145,16 @@ def int_hexagon_V6_vrmpybus_acc_128B :
|
||||
Hexagon_v32i32_v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vrmpybus_acc_128B">;
|
||||
|
||||
def int_hexagon_V6_vrmpybusi :
|
||||
Hexagon_v32i32_v32i32i32i32_Intrinsic<"HEXAGON_V6_vrmpybusi", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_v32i32_v32i32i32i32_Intrinsic<"HEXAGON_V6_vrmpybusi", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_V6_vrmpybusi_128B :
|
||||
Hexagon_v64i32_v64i32i32i32_Intrinsic<"HEXAGON_V6_vrmpybusi_128B", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_v64i32_v64i32i32i32_Intrinsic<"HEXAGON_V6_vrmpybusi_128B", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_V6_vrmpybusi_acc :
|
||||
Hexagon_v32i32_v32i32v32i32i32i32_Intrinsic<"HEXAGON_V6_vrmpybusi_acc", [IntrNoMem, ImmArg<3>]>;
|
||||
Hexagon_v32i32_v32i32v32i32i32i32_Intrinsic<"HEXAGON_V6_vrmpybusi_acc", [IntrNoMem, ImmArg<ArgIndex<3>>]>;
|
||||
|
||||
def int_hexagon_V6_vrmpybusi_acc_128B :
|
||||
Hexagon_v64i32_v64i32v64i32i32i32_Intrinsic<"HEXAGON_V6_vrmpybusi_acc_128B", [IntrNoMem, ImmArg<3>]>;
|
||||
Hexagon_v64i32_v64i32v64i32i32i32_Intrinsic<"HEXAGON_V6_vrmpybusi_acc_128B", [IntrNoMem, ImmArg<ArgIndex<3>>]>;
|
||||
|
||||
def int_hexagon_V6_vrmpybusv :
|
||||
Hexagon_v16i32_v16i32v16i32_Intrinsic<"HEXAGON_V6_vrmpybusv">;
|
||||
@ -4181,16 +4181,16 @@ def int_hexagon_V6_vdsaduh_acc_128B :
|
||||
Hexagon_v64i32_v64i32v64i32i32_Intrinsic<"HEXAGON_V6_vdsaduh_acc_128B">;
|
||||
|
||||
def int_hexagon_V6_vrsadubi :
|
||||
Hexagon_v32i32_v32i32i32i32_Intrinsic<"HEXAGON_V6_vrsadubi", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_v32i32_v32i32i32i32_Intrinsic<"HEXAGON_V6_vrsadubi", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_V6_vrsadubi_128B :
|
||||
Hexagon_v64i32_v64i32i32i32_Intrinsic<"HEXAGON_V6_vrsadubi_128B", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_v64i32_v64i32i32i32_Intrinsic<"HEXAGON_V6_vrsadubi_128B", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_V6_vrsadubi_acc :
|
||||
Hexagon_v32i32_v32i32v32i32i32i32_Intrinsic<"HEXAGON_V6_vrsadubi_acc", [IntrNoMem, ImmArg<3>]>;
|
||||
Hexagon_v32i32_v32i32v32i32i32i32_Intrinsic<"HEXAGON_V6_vrsadubi_acc", [IntrNoMem, ImmArg<ArgIndex<3>>]>;
|
||||
|
||||
def int_hexagon_V6_vrsadubi_acc_128B :
|
||||
Hexagon_v64i32_v64i32v64i32i32i32_Intrinsic<"HEXAGON_V6_vrsadubi_acc_128B", [IntrNoMem, ImmArg<3>]>;
|
||||
Hexagon_v64i32_v64i32v64i32i32i32_Intrinsic<"HEXAGON_V6_vrsadubi_acc_128B", [IntrNoMem, ImmArg<ArgIndex<3>>]>;
|
||||
|
||||
def int_hexagon_V6_vasrw :
|
||||
Hexagon_v16i32_v16i32i32_Intrinsic<"HEXAGON_V6_vasrw">;
|
||||
@ -5839,28 +5839,28 @@ def int_hexagon_V6_vaddclbh_128B :
|
||||
Hexagon_v32i32_v32i32v32i32_Intrinsic<"HEXAGON_V6_vaddclbh_128B">;
|
||||
|
||||
def int_hexagon_V6_vlutvvbi :
|
||||
Hexagon_v16i32_v16i32v16i32i32_Intrinsic<"HEXAGON_V6_vlutvvbi", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_v16i32_v16i32v16i32i32_Intrinsic<"HEXAGON_V6_vlutvvbi", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_V6_vlutvvbi_128B :
|
||||
Hexagon_v32i32_v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vlutvvbi_128B", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_v32i32_v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vlutvvbi_128B", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_V6_vlutvvb_oracci :
|
||||
Hexagon_v16i32_v16i32v16i32v16i32i32_Intrinsic<"HEXAGON_V6_vlutvvb_oracci", [IntrNoMem, ImmArg<3>]>;
|
||||
Hexagon_v16i32_v16i32v16i32v16i32i32_Intrinsic<"HEXAGON_V6_vlutvvb_oracci", [IntrNoMem, ImmArg<ArgIndex<3>>]>;
|
||||
|
||||
def int_hexagon_V6_vlutvvb_oracci_128B :
|
||||
Hexagon_v32i32_v32i32v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vlutvvb_oracci_128B", [IntrNoMem, ImmArg<3>]>;
|
||||
Hexagon_v32i32_v32i32v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vlutvvb_oracci_128B", [IntrNoMem, ImmArg<ArgIndex<3>>]>;
|
||||
|
||||
def int_hexagon_V6_vlutvwhi :
|
||||
Hexagon_v32i32_v16i32v16i32i32_Intrinsic<"HEXAGON_V6_vlutvwhi", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_v32i32_v16i32v16i32i32_Intrinsic<"HEXAGON_V6_vlutvwhi", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_V6_vlutvwhi_128B :
|
||||
Hexagon_v64i32_v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vlutvwhi_128B", [IntrNoMem, ImmArg<2>]>;
|
||||
Hexagon_v64i32_v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vlutvwhi_128B", [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_hexagon_V6_vlutvwh_oracci :
|
||||
Hexagon_v32i32_v32i32v16i32v16i32i32_Intrinsic<"HEXAGON_V6_vlutvwh_oracci", [IntrNoMem, ImmArg<3>]>;
|
||||
Hexagon_v32i32_v32i32v16i32v16i32i32_Intrinsic<"HEXAGON_V6_vlutvwh_oracci", [IntrNoMem, ImmArg<ArgIndex<3>>]>;
|
||||
|
||||
def int_hexagon_V6_vlutvwh_oracci_128B :
|
||||
Hexagon_v64i32_v64i32v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vlutvwh_oracci_128B", [IntrNoMem, ImmArg<3>]>;
|
||||
Hexagon_v64i32_v64i32v32i32v32i32i32_Intrinsic<"HEXAGON_V6_vlutvwh_oracci_128B", [IntrNoMem, ImmArg<ArgIndex<3>>]>;
|
||||
|
||||
def int_hexagon_V6_vlutvvb_nm :
|
||||
Hexagon_v16i32_v16i32v16i32i32_Intrinsic<"HEXAGON_V6_vlutvvb_nm">;
|
||||
|
@ -234,9 +234,9 @@ def int_mips_extpdp: GCCBuiltin<"__builtin_mips_extpdp">,
|
||||
// Misc
|
||||
|
||||
def int_mips_wrdsp: GCCBuiltin<"__builtin_mips_wrdsp">,
|
||||
Intrinsic<[], [llvm_i32_ty, llvm_i32_ty], [ImmArg<1>]>;
|
||||
Intrinsic<[], [llvm_i32_ty, llvm_i32_ty], [ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_rddsp: GCCBuiltin<"__builtin_mips_rddsp">,
|
||||
Intrinsic<[llvm_i32_ty], [llvm_i32_ty], [IntrReadMem, ImmArg<0>]>;
|
||||
Intrinsic<[llvm_i32_ty], [llvm_i32_ty], [IntrReadMem, ImmArg<ArgIndex<0>>]>;
|
||||
|
||||
def int_mips_insv: GCCBuiltin<"__builtin_mips_insv">,
|
||||
Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty], [IntrReadMem]>;
|
||||
@ -302,10 +302,10 @@ def int_mips_adduh_r_qb: GCCBuiltin<"__builtin_mips_adduh_r_qb">,
|
||||
|
||||
def int_mips_append: GCCBuiltin<"__builtin_mips_append">,
|
||||
Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<2>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
def int_mips_balign: GCCBuiltin<"__builtin_mips_balign">,
|
||||
Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<2>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_mips_cmpgdu_eq_qb: GCCBuiltin<"__builtin_mips_cmpgdu_eq_qb">,
|
||||
Intrinsic<[llvm_i32_ty], [llvm_v4i8_ty, llvm_v4i8_ty], [Commutative]>;
|
||||
@ -355,14 +355,14 @@ def int_mips_precr_qb_ph: GCCBuiltin<"__builtin_mips_precr_qb_ph">,
|
||||
Intrinsic<[llvm_v4i8_ty], [llvm_v2i16_ty, llvm_v2i16_ty], []>;
|
||||
def int_mips_precr_sra_ph_w: GCCBuiltin<"__builtin_mips_precr_sra_ph_w">,
|
||||
Intrinsic<[llvm_v2i16_ty], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<2>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
def int_mips_precr_sra_r_ph_w: GCCBuiltin<"__builtin_mips_precr_sra_r_ph_w">,
|
||||
Intrinsic<[llvm_v2i16_ty], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<2>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_mips_prepend: GCCBuiltin<"__builtin_mips_prepend">,
|
||||
Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<2>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_mips_shra_qb: GCCBuiltin<"__builtin_mips_shra_qb">,
|
||||
Intrinsic<[llvm_v4i8_ty], [llvm_v4i8_ty, llvm_i32_ty], [IntrNoMem]>;
|
||||
@ -463,22 +463,22 @@ def int_mips_addv_d : GCCBuiltin<"__builtin_msa_addv_d">,
|
||||
|
||||
def int_mips_addvi_b : GCCBuiltin<"__builtin_msa_addvi_b">,
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty],
|
||||
[Commutative, IntrNoMem, ImmArg<1>]>;
|
||||
[Commutative, IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_addvi_h : GCCBuiltin<"__builtin_msa_addvi_h">,
|
||||
Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty],
|
||||
[Commutative, IntrNoMem, ImmArg<1>]>;
|
||||
[Commutative, IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_addvi_w : GCCBuiltin<"__builtin_msa_addvi_w">,
|
||||
Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty],
|
||||
[Commutative, IntrNoMem, ImmArg<1>]>;
|
||||
[Commutative, IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_addvi_d : GCCBuiltin<"__builtin_msa_addvi_d">,
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty],
|
||||
[Commutative, IntrNoMem, ImmArg<1>]>;
|
||||
[Commutative, IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_mips_and_v : GCCBuiltin<"__builtin_msa_and_v">,
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
|
||||
|
||||
def int_mips_andi_b : GCCBuiltin<"__builtin_msa_andi_b">,
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_mips_asub_s_b : GCCBuiltin<"__builtin_msa_asub_s_b">,
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
|
||||
@ -560,13 +560,13 @@ def int_mips_bclr_d : GCCBuiltin<"__builtin_msa_bclr_d">,
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
|
||||
|
||||
def int_mips_bclri_b : GCCBuiltin<"__builtin_msa_bclri_b">,
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_bclri_h : GCCBuiltin<"__builtin_msa_bclri_h">,
|
||||
Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_bclri_w : GCCBuiltin<"__builtin_msa_bclri_w">,
|
||||
Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_bclri_d : GCCBuiltin<"__builtin_msa_bclri_d">,
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_mips_binsl_b : GCCBuiltin<"__builtin_msa_binsl_b">,
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty, llvm_v16i8_ty],
|
||||
@ -583,16 +583,16 @@ def int_mips_binsl_d : GCCBuiltin<"__builtin_msa_binsl_d">,
|
||||
|
||||
def int_mips_binsli_b : GCCBuiltin<"__builtin_msa_binsli_b">,
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<2>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
def int_mips_binsli_h : GCCBuiltin<"__builtin_msa_binsli_h">,
|
||||
Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty, llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<2>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
def int_mips_binsli_w : GCCBuiltin<"__builtin_msa_binsli_w">,
|
||||
Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty, llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<2>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
def int_mips_binsli_d : GCCBuiltin<"__builtin_msa_binsli_d">,
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty, llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<2>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_mips_binsr_b : GCCBuiltin<"__builtin_msa_binsr_b">,
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty, llvm_v16i8_ty],
|
||||
@ -609,16 +609,16 @@ def int_mips_binsr_d : GCCBuiltin<"__builtin_msa_binsr_d">,
|
||||
|
||||
def int_mips_binsri_b : GCCBuiltin<"__builtin_msa_binsri_b">,
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<2>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
def int_mips_binsri_h : GCCBuiltin<"__builtin_msa_binsri_h">,
|
||||
Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty, llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<2>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
def int_mips_binsri_w : GCCBuiltin<"__builtin_msa_binsri_w">,
|
||||
Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty, llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<2>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
def int_mips_binsri_d : GCCBuiltin<"__builtin_msa_binsri_d">,
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty, llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<2>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_mips_bmnz_v : GCCBuiltin<"__builtin_msa_bmnz_v">,
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty, llvm_v16i8_ty],
|
||||
@ -626,7 +626,7 @@ def int_mips_bmnz_v : GCCBuiltin<"__builtin_msa_bmnz_v">,
|
||||
|
||||
def int_mips_bmnzi_b : GCCBuiltin<"__builtin_msa_bmnzi_b">,
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<2>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_mips_bmz_v : GCCBuiltin<"__builtin_msa_bmz_v">,
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty, llvm_v16i8_ty],
|
||||
@ -634,7 +634,7 @@ def int_mips_bmz_v : GCCBuiltin<"__builtin_msa_bmz_v">,
|
||||
|
||||
def int_mips_bmzi_b : GCCBuiltin<"__builtin_msa_bmzi_b">,
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<2>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_mips_bneg_b : GCCBuiltin<"__builtin_msa_bneg_b">,
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
|
||||
@ -646,13 +646,13 @@ def int_mips_bneg_d : GCCBuiltin<"__builtin_msa_bneg_d">,
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
|
||||
|
||||
def int_mips_bnegi_b : GCCBuiltin<"__builtin_msa_bnegi_b">,
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_bnegi_h : GCCBuiltin<"__builtin_msa_bnegi_h">,
|
||||
Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_bnegi_w : GCCBuiltin<"__builtin_msa_bnegi_w">,
|
||||
Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_bnegi_d : GCCBuiltin<"__builtin_msa_bnegi_d">,
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_mips_bnz_b : GCCBuiltin<"__builtin_msa_bnz_b">,
|
||||
Intrinsic<[llvm_i32_ty], [llvm_v16i8_ty], [IntrNoMem]>;
|
||||
@ -672,7 +672,7 @@ def int_mips_bsel_v : GCCBuiltin<"__builtin_msa_bsel_v">,
|
||||
|
||||
def int_mips_bseli_b : GCCBuiltin<"__builtin_msa_bseli_b">,
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<2>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_mips_bset_b : GCCBuiltin<"__builtin_msa_bset_b">,
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
|
||||
@ -684,13 +684,13 @@ def int_mips_bset_d : GCCBuiltin<"__builtin_msa_bset_d">,
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
|
||||
|
||||
def int_mips_bseti_b : GCCBuiltin<"__builtin_msa_bseti_b">,
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_bseti_h : GCCBuiltin<"__builtin_msa_bseti_h">,
|
||||
Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_bseti_w : GCCBuiltin<"__builtin_msa_bseti_w">,
|
||||
Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_bseti_d : GCCBuiltin<"__builtin_msa_bseti_d">,
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_mips_bz_b : GCCBuiltin<"__builtin_msa_bz_b">,
|
||||
Intrinsic<[llvm_i32_ty], [llvm_v16i8_ty], [IntrNoMem]>;
|
||||
@ -714,16 +714,16 @@ def int_mips_ceq_d : GCCBuiltin<"__builtin_msa_ceq_d">,
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
|
||||
|
||||
def int_mips_ceqi_b : GCCBuiltin<"__builtin_msa_ceqi_b">,
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_ceqi_h : GCCBuiltin<"__builtin_msa_ceqi_h">,
|
||||
Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_ceqi_w : GCCBuiltin<"__builtin_msa_ceqi_w">,
|
||||
Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_ceqi_d : GCCBuiltin<"__builtin_msa_ceqi_d">,
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_mips_cfcmsa : GCCBuiltin<"__builtin_msa_cfcmsa">,
|
||||
Intrinsic<[llvm_i32_ty], [llvm_i32_ty], [ImmArg<0>]>;
|
||||
Intrinsic<[llvm_i32_ty], [llvm_i32_ty], [ImmArg<ArgIndex<0>>]>;
|
||||
|
||||
def int_mips_cle_s_b : GCCBuiltin<"__builtin_msa_cle_s_b">,
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
|
||||
@ -744,22 +744,22 @@ def int_mips_cle_u_d : GCCBuiltin<"__builtin_msa_cle_u_d">,
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
|
||||
|
||||
def int_mips_clei_s_b : GCCBuiltin<"__builtin_msa_clei_s_b">,
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_clei_s_h : GCCBuiltin<"__builtin_msa_clei_s_h">,
|
||||
Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_clei_s_w : GCCBuiltin<"__builtin_msa_clei_s_w">,
|
||||
Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_clei_s_d : GCCBuiltin<"__builtin_msa_clei_s_d">,
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_mips_clei_u_b : GCCBuiltin<"__builtin_msa_clei_u_b">,
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_clei_u_h : GCCBuiltin<"__builtin_msa_clei_u_h">,
|
||||
Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_clei_u_w : GCCBuiltin<"__builtin_msa_clei_u_w">,
|
||||
Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_clei_u_d : GCCBuiltin<"__builtin_msa_clei_u_d">,
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_mips_clt_s_b : GCCBuiltin<"__builtin_msa_clt_s_b">,
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
|
||||
@ -780,22 +780,22 @@ def int_mips_clt_u_d : GCCBuiltin<"__builtin_msa_clt_u_d">,
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
|
||||
|
||||
def int_mips_clti_s_b : GCCBuiltin<"__builtin_msa_clti_s_b">,
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_clti_s_h : GCCBuiltin<"__builtin_msa_clti_s_h">,
|
||||
Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_clti_s_w : GCCBuiltin<"__builtin_msa_clti_s_w">,
|
||||
Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_clti_s_d : GCCBuiltin<"__builtin_msa_clti_s_d">,
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_mips_clti_u_b : GCCBuiltin<"__builtin_msa_clti_u_b">,
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_clti_u_h : GCCBuiltin<"__builtin_msa_clti_u_h">,
|
||||
Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_clti_u_w : GCCBuiltin<"__builtin_msa_clti_u_w">,
|
||||
Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_clti_u_d : GCCBuiltin<"__builtin_msa_clti_u_d">,
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_mips_copy_s_b : GCCBuiltin<"__builtin_msa_copy_s_b">,
|
||||
Intrinsic<[llvm_i32_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
|
||||
@ -816,7 +816,7 @@ def int_mips_copy_u_d : GCCBuiltin<"__builtin_msa_copy_u_d">,
|
||||
Intrinsic<[llvm_i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem]>;
|
||||
|
||||
def int_mips_ctcmsa : GCCBuiltin<"__builtin_msa_ctcmsa">,
|
||||
Intrinsic<[], [llvm_i32_ty, llvm_i32_ty], [ImmArg<0>]>;
|
||||
Intrinsic<[], [llvm_i32_ty, llvm_i32_ty], [ImmArg<ArgIndex<0>>]>;
|
||||
|
||||
def int_mips_div_s_b : GCCBuiltin<"__builtin_msa_div_s_b">,
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
|
||||
@ -1244,19 +1244,19 @@ def int_mips_insert_d : GCCBuiltin<"__builtin_msa_insert_d">,
|
||||
def int_mips_insve_b : GCCBuiltin<"__builtin_msa_insve_b">,
|
||||
Intrinsic<[llvm_v16i8_ty],
|
||||
[llvm_v16i8_ty, llvm_i32_ty, llvm_v16i8_ty],
|
||||
[IntrNoMem, ImmArg<1>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_insve_h : GCCBuiltin<"__builtin_msa_insve_h">,
|
||||
Intrinsic<[llvm_v8i16_ty],
|
||||
[llvm_v8i16_ty, llvm_i32_ty, llvm_v8i16_ty],
|
||||
[IntrNoMem, ImmArg<1>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_insve_w : GCCBuiltin<"__builtin_msa_insve_w">,
|
||||
Intrinsic<[llvm_v4i32_ty],
|
||||
[llvm_v4i32_ty, llvm_i32_ty, llvm_v4i32_ty],
|
||||
[IntrNoMem, ImmArg<1>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_insve_d : GCCBuiltin<"__builtin_msa_insve_d">,
|
||||
Intrinsic<[llvm_v2i64_ty],
|
||||
[llvm_v2i64_ty, llvm_i32_ty, llvm_v2i64_ty],
|
||||
[IntrNoMem, ImmArg<1>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_mips_ld_b : GCCBuiltin<"__builtin_msa_ld_b">,
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_ptr_ty, llvm_i32_ty],
|
||||
@ -1279,13 +1279,13 @@ def int_mips_ldr_w : GCCBuiltin<"__builtin_msa_ldr_w">,
|
||||
[IntrReadMem, IntrArgMemOnly]>;
|
||||
|
||||
def int_mips_ldi_b : GCCBuiltin<"__builtin_msa_ldi_b">,
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_i32_ty], [IntrNoMem, ImmArg<0>]>;
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<0>>]>;
|
||||
def int_mips_ldi_h : GCCBuiltin<"__builtin_msa_ldi_h">,
|
||||
Intrinsic<[llvm_v8i16_ty], [llvm_i32_ty], [IntrNoMem, ImmArg<0>]>;
|
||||
Intrinsic<[llvm_v8i16_ty], [llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<0>>]>;
|
||||
def int_mips_ldi_w : GCCBuiltin<"__builtin_msa_ldi_w">,
|
||||
Intrinsic<[llvm_v4i32_ty], [llvm_i32_ty], [IntrNoMem, ImmArg<0>]>;
|
||||
Intrinsic<[llvm_v4i32_ty], [llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<0>>]>;
|
||||
def int_mips_ldi_d : GCCBuiltin<"__builtin_msa_ldi_d">,
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_i32_ty], [IntrNoMem, ImmArg<0>]>;
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<0>>]>;
|
||||
|
||||
// This instruction is part of the MSA spec but it does not share the
|
||||
// __builtin_msa prefix because it operates on the GPR registers.
|
||||
@ -1348,22 +1348,22 @@ def int_mips_max_u_d : GCCBuiltin<"__builtin_msa_max_u_d">,
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
|
||||
|
||||
def int_mips_maxi_s_b : GCCBuiltin<"__builtin_msa_maxi_s_b">,
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_maxi_s_h : GCCBuiltin<"__builtin_msa_maxi_s_h">,
|
||||
Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_maxi_s_w : GCCBuiltin<"__builtin_msa_maxi_s_w">,
|
||||
Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_maxi_s_d : GCCBuiltin<"__builtin_msa_maxi_s_d">,
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_mips_maxi_u_b : GCCBuiltin<"__builtin_msa_maxi_u_b">,
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_maxi_u_h : GCCBuiltin<"__builtin_msa_maxi_u_h">,
|
||||
Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_maxi_u_w : GCCBuiltin<"__builtin_msa_maxi_u_w">,
|
||||
Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_maxi_u_d : GCCBuiltin<"__builtin_msa_maxi_u_d">,
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_mips_min_a_b : GCCBuiltin<"__builtin_msa_min_a_b">,
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
|
||||
@ -1393,22 +1393,22 @@ def int_mips_min_u_d : GCCBuiltin<"__builtin_msa_min_u_d">,
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
|
||||
|
||||
def int_mips_mini_s_b : GCCBuiltin<"__builtin_msa_mini_s_b">,
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_mini_s_h : GCCBuiltin<"__builtin_msa_mini_s_h">,
|
||||
Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_mini_s_w : GCCBuiltin<"__builtin_msa_mini_s_w">,
|
||||
Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_mini_s_d : GCCBuiltin<"__builtin_msa_mini_s_d">,
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_mips_mini_u_b : GCCBuiltin<"__builtin_msa_mini_u_b">,
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_mini_u_h : GCCBuiltin<"__builtin_msa_mini_u_h">,
|
||||
Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_mini_u_w : GCCBuiltin<"__builtin_msa_mini_u_w">,
|
||||
Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_mini_u_d : GCCBuiltin<"__builtin_msa_mini_u_d">,
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_mips_mod_s_b : GCCBuiltin<"__builtin_msa_mod_s_b">,
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
|
||||
@ -1499,13 +1499,13 @@ def int_mips_nor_v : GCCBuiltin<"__builtin_msa_nor_v">,
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
|
||||
|
||||
def int_mips_nori_b : GCCBuiltin<"__builtin_msa_nori_b">,
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_mips_or_v : GCCBuiltin<"__builtin_msa_or_v">,
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
|
||||
|
||||
def int_mips_ori_b : GCCBuiltin<"__builtin_msa_ori_b">,
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_mips_pckev_b : GCCBuiltin<"__builtin_msa_pckev_b">,
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
|
||||
@ -1535,29 +1535,29 @@ def int_mips_pcnt_d : GCCBuiltin<"__builtin_msa_pcnt_d">,
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty], [IntrNoMem]>;
|
||||
|
||||
def int_mips_sat_s_b : GCCBuiltin<"__builtin_msa_sat_s_b">,
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_sat_s_h : GCCBuiltin<"__builtin_msa_sat_s_h">,
|
||||
Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_sat_s_w : GCCBuiltin<"__builtin_msa_sat_s_w">,
|
||||
Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_sat_s_d : GCCBuiltin<"__builtin_msa_sat_s_d">,
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_mips_sat_u_b : GCCBuiltin<"__builtin_msa_sat_u_b">,
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_sat_u_h : GCCBuiltin<"__builtin_msa_sat_u_h">,
|
||||
Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_sat_u_w : GCCBuiltin<"__builtin_msa_sat_u_w">,
|
||||
Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_sat_u_d : GCCBuiltin<"__builtin_msa_sat_u_d">,
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_mips_shf_b : GCCBuiltin<"__builtin_msa_shf_b">,
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_shf_h : GCCBuiltin<"__builtin_msa_shf_h">,
|
||||
Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_shf_w : GCCBuiltin<"__builtin_msa_shf_w">,
|
||||
Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_mips_sld_b : GCCBuiltin<"__builtin_msa_sld_b">,
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
|
||||
@ -1570,16 +1570,16 @@ def int_mips_sld_d : GCCBuiltin<"__builtin_msa_sld_d">,
|
||||
|
||||
def int_mips_sldi_b : GCCBuiltin<"__builtin_msa_sldi_b">,
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty, llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<2>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
def int_mips_sldi_h : GCCBuiltin<"__builtin_msa_sldi_h">,
|
||||
Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty, llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<2>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
def int_mips_sldi_w : GCCBuiltin<"__builtin_msa_sldi_w">,
|
||||
Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty, llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<2>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
def int_mips_sldi_d : GCCBuiltin<"__builtin_msa_sldi_d">,
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty, llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<2>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_mips_sll_b : GCCBuiltin<"__builtin_msa_sll_b">,
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
|
||||
@ -1591,13 +1591,13 @@ def int_mips_sll_d : GCCBuiltin<"__builtin_msa_sll_d">,
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
|
||||
|
||||
def int_mips_slli_b : GCCBuiltin<"__builtin_msa_slli_b">,
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_slli_h : GCCBuiltin<"__builtin_msa_slli_h">,
|
||||
Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_slli_w : GCCBuiltin<"__builtin_msa_slli_w">,
|
||||
Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_slli_d : GCCBuiltin<"__builtin_msa_slli_d">,
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_mips_splat_b : GCCBuiltin<"__builtin_msa_splat_b">,
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem]>;
|
||||
@ -1609,13 +1609,13 @@ def int_mips_splat_d : GCCBuiltin<"__builtin_msa_splat_d">,
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem]>;
|
||||
|
||||
def int_mips_splati_b : GCCBuiltin<"__builtin_msa_splati_b">,
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_splati_h : GCCBuiltin<"__builtin_msa_splati_h">,
|
||||
Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_splati_w : GCCBuiltin<"__builtin_msa_splati_w">,
|
||||
Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_splati_d : GCCBuiltin<"__builtin_msa_splati_d">,
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_mips_sra_b : GCCBuiltin<"__builtin_msa_sra_b">,
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
|
||||
@ -1627,13 +1627,13 @@ def int_mips_sra_d : GCCBuiltin<"__builtin_msa_sra_d">,
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
|
||||
|
||||
def int_mips_srai_b : GCCBuiltin<"__builtin_msa_srai_b">,
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_srai_h : GCCBuiltin<"__builtin_msa_srai_h">,
|
||||
Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_srai_w : GCCBuiltin<"__builtin_msa_srai_w">,
|
||||
Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_srai_d : GCCBuiltin<"__builtin_msa_srai_d">,
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_mips_srar_b : GCCBuiltin<"__builtin_msa_srar_b">,
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
|
||||
@ -1645,13 +1645,13 @@ def int_mips_srar_d : GCCBuiltin<"__builtin_msa_srar_d">,
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
|
||||
|
||||
def int_mips_srari_b : GCCBuiltin<"__builtin_msa_srari_b">,
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_srari_h : GCCBuiltin<"__builtin_msa_srari_h">,
|
||||
Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_srari_w : GCCBuiltin<"__builtin_msa_srari_w">,
|
||||
Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_srari_d : GCCBuiltin<"__builtin_msa_srari_d">,
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_mips_srl_b : GCCBuiltin<"__builtin_msa_srl_b">,
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
|
||||
@ -1663,13 +1663,13 @@ def int_mips_srl_d : GCCBuiltin<"__builtin_msa_srl_d">,
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
|
||||
|
||||
def int_mips_srli_b : GCCBuiltin<"__builtin_msa_srli_b">,
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_srli_h : GCCBuiltin<"__builtin_msa_srli_h">,
|
||||
Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_srli_w : GCCBuiltin<"__builtin_msa_srli_w">,
|
||||
Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_srli_d : GCCBuiltin<"__builtin_msa_srli_d">,
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_mips_srlr_b : GCCBuiltin<"__builtin_msa_srlr_b">,
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
|
||||
@ -1681,13 +1681,13 @@ def int_mips_srlr_d : GCCBuiltin<"__builtin_msa_srlr_d">,
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
|
||||
|
||||
def int_mips_srlri_b : GCCBuiltin<"__builtin_msa_srlri_b">,
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_srlri_h : GCCBuiltin<"__builtin_msa_srlri_h">,
|
||||
Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_srlri_w : GCCBuiltin<"__builtin_msa_srlri_w">,
|
||||
Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_srlri_d : GCCBuiltin<"__builtin_msa_srlri_d">,
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_mips_st_b : GCCBuiltin<"__builtin_msa_st_b">,
|
||||
Intrinsic<[], [llvm_v16i8_ty, llvm_ptr_ty, llvm_i32_ty],
|
||||
@ -1755,13 +1755,13 @@ def int_mips_subv_d : GCCBuiltin<"__builtin_msa_subv_d">,
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [IntrNoMem]>;
|
||||
|
||||
def int_mips_subvi_b : GCCBuiltin<"__builtin_msa_subvi_b">,
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_subvi_h : GCCBuiltin<"__builtin_msa_subvi_h">,
|
||||
Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_subvi_w : GCCBuiltin<"__builtin_msa_subvi_w">,
|
||||
Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_mips_subvi_d : GCCBuiltin<"__builtin_msa_subvi_d">,
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_mips_vshf_b : GCCBuiltin<"__builtin_msa_vshf_b">,
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty, llvm_v16i8_ty],
|
||||
@ -1780,5 +1780,5 @@ def int_mips_xor_v : GCCBuiltin<"__builtin_msa_xor_v">,
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [IntrNoMem]>;
|
||||
|
||||
def int_mips_xori_b : GCCBuiltin<"__builtin_msa_xori_b">,
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
}
|
||||
|
@ -978,20 +978,20 @@ let TargetPrefix = "nvvm" in {
|
||||
// Atomics not available as llvm intrinsics.
|
||||
def int_nvvm_atomic_load_inc_32 : Intrinsic<[llvm_i32_ty],
|
||||
[LLVMAnyPointerType<llvm_i32_ty>, llvm_i32_ty],
|
||||
[IntrArgMemOnly, NoCapture<0>]>;
|
||||
[IntrArgMemOnly, NoCapture<ArgIndex<0>>]>;
|
||||
def int_nvvm_atomic_load_dec_32 : Intrinsic<[llvm_i32_ty],
|
||||
[LLVMAnyPointerType<llvm_i32_ty>, llvm_i32_ty],
|
||||
[IntrArgMemOnly, NoCapture<0>]>;
|
||||
[IntrArgMemOnly, NoCapture<ArgIndex<0>>]>;
|
||||
|
||||
class SCOPED_ATOMIC2_impl<LLVMType elty>
|
||||
: Intrinsic<[elty],
|
||||
[LLVMAnyPointerType<LLVMMatchType<0>>, LLVMMatchType<0>],
|
||||
[IntrArgMemOnly, NoCapture<0>]>;
|
||||
[IntrArgMemOnly, NoCapture<ArgIndex<0>>]>;
|
||||
class SCOPED_ATOMIC3_impl<LLVMType elty>
|
||||
: Intrinsic<[elty],
|
||||
[LLVMAnyPointerType<LLVMMatchType<0>>, LLVMMatchType<0>,
|
||||
LLVMMatchType<0>],
|
||||
[IntrArgMemOnly, NoCapture<0>]>;
|
||||
[IntrArgMemOnly, NoCapture<ArgIndex<0>>]>;
|
||||
|
||||
multiclass PTXAtomicWithScope2<LLVMType elty> {
|
||||
def _cta : SCOPED_ATOMIC2_impl<elty>;
|
||||
@ -1063,30 +1063,30 @@ let TargetPrefix = "nvvm" in {
|
||||
// pointer's alignment.
|
||||
def int_nvvm_ldu_global_i : Intrinsic<[llvm_anyint_ty],
|
||||
[LLVMAnyPointerType<LLVMMatchType<0>>, llvm_i32_ty],
|
||||
[IntrReadMem, IntrArgMemOnly, NoCapture<0>],
|
||||
[IntrReadMem, IntrArgMemOnly, NoCapture<ArgIndex<0>>],
|
||||
"llvm.nvvm.ldu.global.i">;
|
||||
def int_nvvm_ldu_global_f : Intrinsic<[llvm_anyfloat_ty],
|
||||
[LLVMAnyPointerType<LLVMMatchType<0>>, llvm_i32_ty],
|
||||
[IntrReadMem, IntrArgMemOnly, NoCapture<0>],
|
||||
[IntrReadMem, IntrArgMemOnly, NoCapture<ArgIndex<0>>],
|
||||
"llvm.nvvm.ldu.global.f">;
|
||||
def int_nvvm_ldu_global_p : Intrinsic<[llvm_anyptr_ty],
|
||||
[LLVMAnyPointerType<LLVMMatchType<0>>, llvm_i32_ty],
|
||||
[IntrReadMem, IntrArgMemOnly, NoCapture<0>],
|
||||
[IntrReadMem, IntrArgMemOnly, NoCapture<ArgIndex<0>>],
|
||||
"llvm.nvvm.ldu.global.p">;
|
||||
|
||||
// Generated within nvvm. Use for ldg on sm_35 or later. Second arg is the
|
||||
// pointer's alignment.
|
||||
def int_nvvm_ldg_global_i : Intrinsic<[llvm_anyint_ty],
|
||||
[LLVMAnyPointerType<LLVMMatchType<0>>, llvm_i32_ty],
|
||||
[IntrReadMem, IntrArgMemOnly, NoCapture<0>],
|
||||
[IntrReadMem, IntrArgMemOnly, NoCapture<ArgIndex<0>>],
|
||||
"llvm.nvvm.ldg.global.i">;
|
||||
def int_nvvm_ldg_global_f : Intrinsic<[llvm_anyfloat_ty],
|
||||
[LLVMAnyPointerType<LLVMMatchType<0>>, llvm_i32_ty],
|
||||
[IntrReadMem, IntrArgMemOnly, NoCapture<0>],
|
||||
[IntrReadMem, IntrArgMemOnly, NoCapture<ArgIndex<0>>],
|
||||
"llvm.nvvm.ldg.global.f">;
|
||||
def int_nvvm_ldg_global_p : Intrinsic<[llvm_anyptr_ty],
|
||||
[LLVMAnyPointerType<LLVMMatchType<0>>, llvm_i32_ty],
|
||||
[IntrReadMem, IntrArgMemOnly, NoCapture<0>],
|
||||
[IntrReadMem, IntrArgMemOnly, NoCapture<ArgIndex<0>>],
|
||||
"llvm.nvvm.ldg.global.p">;
|
||||
|
||||
// Use for generic pointers
|
||||
@ -1143,7 +1143,7 @@ def int_nvvm_move_float : Intrinsic<[llvm_float_ty], [llvm_float_ty],
|
||||
def int_nvvm_move_double : Intrinsic<[llvm_double_ty], [llvm_double_ty],
|
||||
[IntrNoMem], "llvm.nvvm.move.double">;
|
||||
def int_nvvm_move_ptr : Intrinsic<[llvm_anyptr_ty], [llvm_anyptr_ty],
|
||||
[IntrNoMem, NoCapture<0>], "llvm.nvvm.move.ptr">;
|
||||
[IntrNoMem, NoCapture<ArgIndex<0>>], "llvm.nvvm.move.ptr">;
|
||||
|
||||
|
||||
// For getting the handle from a texture or surface variable
|
||||
@ -4110,7 +4110,7 @@ def int_nvvm_match_all_sync_i64p :
|
||||
class NVVM_WMMA_LD<WMMA_REGS Frag, string Layout, int WithStride>
|
||||
: Intrinsic<Frag.regs,
|
||||
!if(WithStride, [llvm_anyptr_ty, llvm_i32_ty], [llvm_anyptr_ty]),
|
||||
[IntrReadMem, IntrArgMemOnly, ReadOnly<0>, NoCapture<0>],
|
||||
[IntrReadMem, IntrArgMemOnly, ReadOnly<ArgIndex<0>>, NoCapture<ArgIndex<0>>],
|
||||
WMMA_NAME_LDST<"load", Frag, Layout, WithStride>.intr>;
|
||||
|
||||
// WMMA.STORE.D
|
||||
@ -4120,7 +4120,7 @@ class NVVM_WMMA_ST<WMMA_REGS Frag, string Layout, int WithStride>
|
||||
[llvm_anyptr_ty],
|
||||
Frag.regs,
|
||||
!if(WithStride, [llvm_i32_ty], [])),
|
||||
[IntrWriteMem, IntrArgMemOnly, WriteOnly<0>, NoCapture<0>],
|
||||
[IntrWriteMem, IntrArgMemOnly, WriteOnly<ArgIndex<0>>, NoCapture<ArgIndex<0>>],
|
||||
WMMA_NAME_LDST<"store", Frag, Layout, WithStride>.intr>;
|
||||
|
||||
// Create all load/store variants
|
||||
|
@ -25,9 +25,9 @@ let TargetPrefix = "ppc" in { // All intrinsics start with "llvm.ppc.".
|
||||
def int_ppc_dcbi : Intrinsic<[], [llvm_ptr_ty], []>;
|
||||
def int_ppc_dcbst : Intrinsic<[], [llvm_ptr_ty], []>;
|
||||
def int_ppc_dcbt : Intrinsic<[], [llvm_ptr_ty],
|
||||
[IntrArgMemOnly, NoCapture<0>]>;
|
||||
[IntrArgMemOnly, NoCapture<ArgIndex<0>>]>;
|
||||
def int_ppc_dcbtst: Intrinsic<[], [llvm_ptr_ty],
|
||||
[IntrArgMemOnly, NoCapture<0>]>;
|
||||
[IntrArgMemOnly, NoCapture<ArgIndex<0>>]>;
|
||||
def int_ppc_dcbz : Intrinsic<[], [llvm_ptr_ty], []>;
|
||||
def int_ppc_dcbzl : Intrinsic<[], [llvm_ptr_ty], []>;
|
||||
|
||||
@ -620,16 +620,16 @@ let TargetPrefix = "ppc" in { // All PPC intrinsics start with "llvm.ppc.".
|
||||
// FP <-> integer conversion.
|
||||
def int_ppc_altivec_vcfsx : GCCBuiltin<"__builtin_altivec_vcfsx">,
|
||||
Intrinsic<[llvm_v4f32_ty], [llvm_v4i32_ty, llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<1>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_ppc_altivec_vcfux : GCCBuiltin<"__builtin_altivec_vcfux">,
|
||||
Intrinsic<[llvm_v4f32_ty], [llvm_v4i32_ty, llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<1>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_ppc_altivec_vctsxs : GCCBuiltin<"__builtin_altivec_vctsxs">,
|
||||
Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<1>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_ppc_altivec_vctuxs : GCCBuiltin<"__builtin_altivec_vctuxs">,
|
||||
Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<1>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_ppc_altivec_vrfim : GCCBuiltin<"__builtin_altivec_vrfim">,
|
||||
Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty], [IntrNoMem]>;
|
||||
@ -726,11 +726,11 @@ let TargetPrefix = "ppc" in { // All PPC intrinsics start with "llvm.ppc.".
|
||||
def int_ppc_altivec_crypto_vshasigmad :
|
||||
GCCBuiltin<"__builtin_altivec_crypto_vshasigmad">,
|
||||
Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty,
|
||||
llvm_i32_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>, ImmArg<2>]>;
|
||||
llvm_i32_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>, ImmArg<ArgIndex<2>>]>;
|
||||
def int_ppc_altivec_crypto_vshasigmaw :
|
||||
GCCBuiltin<"__builtin_altivec_crypto_vshasigmaw">,
|
||||
Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty,
|
||||
llvm_i32_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>, ImmArg<2>]>;
|
||||
llvm_i32_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>, ImmArg<ArgIndex<2>>]>;
|
||||
}
|
||||
def int_ppc_altivec_crypto_vcipher :
|
||||
PowerPC_Vec_DDD_Intrinsic<"crypto_vcipher">;
|
||||
@ -925,10 +925,10 @@ def int_ppc_vsx_xvxsigsp :
|
||||
[llvm_v4f32_ty], [IntrNoMem]>;
|
||||
def int_ppc_vsx_xvtstdcdp :
|
||||
PowerPC_VSX_Intrinsic<"xvtstdcdp", [llvm_v2i64_ty],
|
||||
[llvm_v2f64_ty, llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
[llvm_v2f64_ty, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_ppc_vsx_xvtstdcsp :
|
||||
PowerPC_VSX_Intrinsic<"xvtstdcsp", [llvm_v4i32_ty],
|
||||
[llvm_v4f32_ty,llvm_i32_ty], [IntrNoMem, ImmArg<1>]>;
|
||||
[llvm_v4f32_ty,llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
def int_ppc_vsx_xvcvhpsp :
|
||||
PowerPC_VSX_Intrinsic<"xvcvhpsp", [llvm_v4f32_ty],
|
||||
[llvm_v8i16_ty],[IntrNoMem]>;
|
||||
@ -1123,9 +1123,9 @@ let TargetPrefix = "ppc" in { // All intrinsics start with "llvm.ppc.".
|
||||
let TargetPrefix = "ppc" in { // All intrinsics start with "llvm.ppc.".
|
||||
|
||||
def int_ppc_tbegin : GCCBuiltin<"__builtin_tbegin">,
|
||||
Intrinsic<[llvm_i32_ty], [llvm_i32_ty], [ImmArg<0>]>;
|
||||
Intrinsic<[llvm_i32_ty], [llvm_i32_ty], [ImmArg<ArgIndex<0>>]>;
|
||||
def int_ppc_tend : GCCBuiltin<"__builtin_tend">,
|
||||
Intrinsic<[llvm_i32_ty], [llvm_i32_ty], [ImmArg<0>]>;
|
||||
Intrinsic<[llvm_i32_ty], [llvm_i32_ty], [ImmArg<ArgIndex<0>>]>;
|
||||
|
||||
def int_ppc_tabort : GCCBuiltin<"__builtin_tabort">,
|
||||
Intrinsic<[llvm_i32_ty], [llvm_i32_ty], []>;
|
||||
|
@ -28,11 +28,11 @@ let TargetPrefix = "riscv" in {
|
||||
// T @llvm.<name>.T.<p>(any*, T, T, T imm);
|
||||
class MaskedAtomicRMWFourArg<LLVMType itype>
|
||||
: Intrinsic<[itype], [llvm_anyptr_ty, itype, itype, itype],
|
||||
[IntrArgMemOnly, NoCapture<0>, ImmArg<3>]>;
|
||||
[IntrArgMemOnly, NoCapture<ArgIndex<0>>, ImmArg<ArgIndex<3>>]>;
|
||||
// T @llvm.<name>.T.<p>(any*, T, T, T, T imm);
|
||||
class MaskedAtomicRMWFiveArg<LLVMType itype>
|
||||
: Intrinsic<[itype], [llvm_anyptr_ty, itype, itype, itype, itype],
|
||||
[IntrArgMemOnly, NoCapture<0>, ImmArg<4>]>;
|
||||
[IntrArgMemOnly, NoCapture<ArgIndex<0>>, ImmArg<ArgIndex<4>>]>;
|
||||
|
||||
// We define 32-bit and 64-bit variants of the above, where T stands for i32
|
||||
// or i64 respectively:
|
||||
|
@ -39,7 +39,7 @@ class SystemZBinaryConvCC<LLVMType result, LLVMType arg>
|
||||
|
||||
class SystemZBinaryConvIntCC<LLVMType result, LLVMType arg>
|
||||
: Intrinsic<[result, llvm_i32_ty], [arg, llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<1>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
class SystemZBinaryCC<LLVMType type>
|
||||
: SystemZBinaryConvCC<type, type>;
|
||||
@ -56,20 +56,20 @@ class SystemZTernary<string name, LLVMType type>
|
||||
|
||||
class SystemZTernaryInt<string name, LLVMType type>
|
||||
: GCCBuiltin<"__builtin_s390_" # name>,
|
||||
Intrinsic<[type], [type, type, llvm_i32_ty], [IntrNoMem, ImmArg<2>]>;
|
||||
Intrinsic<[type], [type, type, llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
class SystemZTernaryIntCC<LLVMType type>
|
||||
: Intrinsic<[type, llvm_i32_ty], [type, type, llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<2>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
class SystemZQuaternaryInt<string name, LLVMType type>
|
||||
: GCCBuiltin<"__builtin_s390_" # name>,
|
||||
Intrinsic<[type], [type, type, type, llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<3>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<3>>]>;
|
||||
|
||||
class SystemZQuaternaryIntCC<LLVMType type>
|
||||
: Intrinsic<[type, llvm_i32_ty], [type, type, type, llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<3>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<3>>]>;
|
||||
|
||||
multiclass SystemZUnaryExtBHF<string name> {
|
||||
def b : SystemZUnaryConv<name#"b", llvm_v8i16_ty, llvm_v16i8_ty>;
|
||||
@ -238,11 +238,11 @@ let TargetPrefix = "s390" in {
|
||||
let TargetPrefix = "s390" in {
|
||||
def int_s390_lcbb : GCCBuiltin<"__builtin_s390_lcbb">,
|
||||
Intrinsic<[llvm_i32_ty], [llvm_ptr_ty, llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<1>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_s390_vlbb : GCCBuiltin<"__builtin_s390_vlbb">,
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_ptr_ty, llvm_i32_ty],
|
||||
[IntrReadMem, IntrArgMemOnly, ImmArg<1>]>;
|
||||
[IntrReadMem, IntrArgMemOnly, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
def int_s390_vll : GCCBuiltin<"__builtin_s390_vll">,
|
||||
Intrinsic<[llvm_v16i8_ty], [llvm_i32_ty, llvm_ptr_ty],
|
||||
@ -251,7 +251,7 @@ let TargetPrefix = "s390" in {
|
||||
def int_s390_vpdi : GCCBuiltin<"__builtin_s390_vpdi">,
|
||||
Intrinsic<[llvm_v2i64_ty],
|
||||
[llvm_v2i64_ty, llvm_v2i64_ty, llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<2>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_s390_vperm : GCCBuiltin<"__builtin_s390_vperm">,
|
||||
Intrinsic<[llvm_v16i8_ty],
|
||||
@ -317,7 +317,7 @@ let TargetPrefix = "s390" in {
|
||||
def int_s390_vsldb : GCCBuiltin<"__builtin_s390_vsldb">,
|
||||
Intrinsic<[llvm_v16i8_ty],
|
||||
[llvm_v16i8_ty, llvm_v16i8_ty, llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<2>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
defm int_s390_vscbi : SystemZBinaryBHFG<"vscbi">;
|
||||
|
||||
@ -376,7 +376,7 @@ let TargetPrefix = "s390" in {
|
||||
|
||||
def int_s390_vfidb : Intrinsic<[llvm_v2f64_ty],
|
||||
[llvm_v2f64_ty, llvm_i32_ty, llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<1>, ImmArg<2>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<1>>, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
// Instructions from the Vector Enhancements Facility 1
|
||||
def int_s390_vbperm : SystemZBinaryConv<"vbperm", llvm_v2i64_ty,
|
||||
@ -385,20 +385,20 @@ let TargetPrefix = "s390" in {
|
||||
def int_s390_vmslg : GCCBuiltin<"__builtin_s390_vmslg">,
|
||||
Intrinsic<[llvm_v16i8_ty],
|
||||
[llvm_v2i64_ty, llvm_v2i64_ty, llvm_v16i8_ty,
|
||||
llvm_i32_ty], [IntrNoMem, ImmArg<3>]>;
|
||||
llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<3>>]>;
|
||||
|
||||
def int_s390_vfmaxdb : Intrinsic<[llvm_v2f64_ty],
|
||||
[llvm_v2f64_ty, llvm_v2f64_ty, llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<2>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
def int_s390_vfmindb : Intrinsic<[llvm_v2f64_ty],
|
||||
[llvm_v2f64_ty, llvm_v2f64_ty, llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<2>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
def int_s390_vfmaxsb : Intrinsic<[llvm_v4f32_ty],
|
||||
[llvm_v4f32_ty, llvm_v4f32_ty, llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<2>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
def int_s390_vfminsb : Intrinsic<[llvm_v4f32_ty],
|
||||
[llvm_v4f32_ty, llvm_v4f32_ty, llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<2>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_s390_vfcesbs : SystemZBinaryConvCC<llvm_v4i32_ty, llvm_v4f32_ty>;
|
||||
def int_s390_vfchsbs : SystemZBinaryConvCC<llvm_v4i32_ty, llvm_v4f32_ty>;
|
||||
@ -408,7 +408,7 @@ let TargetPrefix = "s390" in {
|
||||
|
||||
def int_s390_vfisb : Intrinsic<[llvm_v4f32_ty],
|
||||
[llvm_v4f32_ty, llvm_i32_ty, llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<1>, ImmArg<2>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<1>>, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
// Instructions from the Vector Packed Decimal Facility
|
||||
def int_s390_vlrl : GCCBuiltin<"__builtin_s390_vlrl">,
|
||||
@ -423,12 +423,12 @@ let TargetPrefix = "s390" in {
|
||||
def int_s390_vsld : GCCBuiltin<"__builtin_s390_vsld">,
|
||||
Intrinsic<[llvm_v16i8_ty],
|
||||
[llvm_v16i8_ty, llvm_v16i8_ty, llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<2>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_s390_vsrd : GCCBuiltin<"__builtin_s390_vsrd">,
|
||||
Intrinsic<[llvm_v16i8_ty],
|
||||
[llvm_v16i8_ty, llvm_v16i8_ty, llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<2>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<2>>]>;
|
||||
|
||||
def int_s390_vstrsb : SystemZTernaryConvCC<llvm_v16i8_ty, llvm_v16i8_ty>;
|
||||
def int_s390_vstrsh : SystemZTernaryConvCC<llvm_v16i8_ty, llvm_v8i16_ty>;
|
||||
|
@ -51,7 +51,7 @@ def int_wasm_trunc_saturate_unsigned : Intrinsic<[llvm_anyint_ty],
|
||||
|
||||
// throw / rethrow
|
||||
def int_wasm_throw : Intrinsic<[], [llvm_i32_ty, llvm_ptr_ty],
|
||||
[Throws, IntrNoReturn, ImmArg<0>]>;
|
||||
[Throws, IntrNoReturn, ImmArg<ArgIndex<0>>]>;
|
||||
def int_wasm_rethrow_in_catch : Intrinsic<[], [], [Throws, IntrNoReturn]>;
|
||||
|
||||
// Since wasm does not use landingpad instructions, these instructions return
|
||||
@ -69,7 +69,7 @@ def int_wasm_extract_exception : Intrinsic<[llvm_ptr_ty], [],
|
||||
// by WasmEHPrepare pass to generate landingpad table in EHStreamer. This is
|
||||
// used in order to give them the indices in WasmEHPrepare.
|
||||
def int_wasm_landingpad_index: Intrinsic<[], [llvm_token_ty, llvm_i32_ty],
|
||||
[IntrNoMem, ImmArg<1>]>;
|
||||
[IntrNoMem, ImmArg<ArgIndex<1>>]>;
|
||||
|
||||
// Returns LSDA address of the current function.
|
||||
def int_wasm_lsda : Intrinsic<[llvm_ptr_ty], [], [IntrNoMem]>;
|
||||
@ -82,18 +82,18 @@ def int_wasm_lsda : Intrinsic<[llvm_ptr_ty], [], [IntrNoMem]>;
|
||||
def int_wasm_atomic_wait_i32 :
|
||||
Intrinsic<[llvm_i32_ty],
|
||||
[LLVMPointerType<llvm_i32_ty>, llvm_i32_ty, llvm_i64_ty],
|
||||
[IntrInaccessibleMemOrArgMemOnly, ReadOnly<0>, NoCapture<0>,
|
||||
[IntrInaccessibleMemOrArgMemOnly, ReadOnly<ArgIndex<0>>, NoCapture<ArgIndex<0>>,
|
||||
IntrHasSideEffects],
|
||||
"", [SDNPMemOperand]>;
|
||||
def int_wasm_atomic_wait_i64 :
|
||||
Intrinsic<[llvm_i32_ty],
|
||||
[LLVMPointerType<llvm_i64_ty>, llvm_i64_ty, llvm_i64_ty],
|
||||
[IntrInaccessibleMemOrArgMemOnly, ReadOnly<0>, NoCapture<0>,
|
||||
[IntrInaccessibleMemOrArgMemOnly, ReadOnly<ArgIndex<0>>, NoCapture<ArgIndex<0>>,
|
||||
IntrHasSideEffects],
|
||||
"", [SDNPMemOperand]>;
|
||||
def int_wasm_atomic_notify:
|
||||
Intrinsic<[llvm_i32_ty], [LLVMPointerType<llvm_i32_ty>, llvm_i32_ty],
|
||||
[IntrInaccessibleMemOnly, NoCapture<0>, IntrHasSideEffects], "",
|
||||
[IntrInaccessibleMemOnly, NoCapture<ArgIndex<0>>, IntrHasSideEffects], "",
|
||||
[SDNPMemOperand]>;
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
@ -194,12 +194,12 @@ def int_wasm_pmax :
|
||||
def int_wasm_memory_init :
|
||||
Intrinsic<[],
|
||||
[llvm_i32_ty, llvm_i32_ty, llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty],
|
||||
[IntrWriteMem, IntrInaccessibleMemOrArgMemOnly, WriteOnly<2>,
|
||||
IntrHasSideEffects, ImmArg<0>, ImmArg<1>]>;
|
||||
[IntrWriteMem, IntrInaccessibleMemOrArgMemOnly, WriteOnly<ArgIndex<2>>,
|
||||
IntrHasSideEffects, ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<1>>]>;
|
||||
def int_wasm_data_drop :
|
||||
Intrinsic<[],
|
||||
[llvm_i32_ty],
|
||||
[IntrNoDuplicate, IntrHasSideEffects, ImmArg<0>]>;
|
||||
[IntrNoDuplicate, IntrHasSideEffects, ImmArg<ArgIndex<0>>]>;
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// Thread-local storage intrinsics
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -38,58 +38,58 @@ let TargetPrefix = "xcore" in { // All intrinsics start with "llvm.xcore.".
|
||||
// Resource instructions.
|
||||
def int_xcore_getr : Intrinsic<[llvm_anyptr_ty],[llvm_i32_ty]>;
|
||||
def int_xcore_freer : Intrinsic<[],[llvm_anyptr_ty],
|
||||
[NoCapture<0>]>;
|
||||
def int_xcore_in : Intrinsic<[llvm_i32_ty],[llvm_anyptr_ty],[NoCapture<0>]>;
|
||||
[NoCapture<ArgIndex<0>>]>;
|
||||
def int_xcore_in : Intrinsic<[llvm_i32_ty],[llvm_anyptr_ty],[NoCapture<ArgIndex<0>>]>;
|
||||
def int_xcore_int : Intrinsic<[llvm_i32_ty],[llvm_anyptr_ty],
|
||||
[NoCapture<0>]>;
|
||||
[NoCapture<ArgIndex<0>>]>;
|
||||
def int_xcore_inct : Intrinsic<[llvm_i32_ty],[llvm_anyptr_ty],
|
||||
[NoCapture<0>]>;
|
||||
[NoCapture<ArgIndex<0>>]>;
|
||||
def int_xcore_out : Intrinsic<[],[llvm_anyptr_ty, llvm_i32_ty],
|
||||
[NoCapture<0>]>;
|
||||
[NoCapture<ArgIndex<0>>]>;
|
||||
def int_xcore_outt : Intrinsic<[],[llvm_anyptr_ty, llvm_i32_ty],
|
||||
[NoCapture<0>]>;
|
||||
[NoCapture<ArgIndex<0>>]>;
|
||||
def int_xcore_outct : Intrinsic<[],[llvm_anyptr_ty, llvm_i32_ty],
|
||||
[NoCapture<0>]>;
|
||||
[NoCapture<ArgIndex<0>>]>;
|
||||
def int_xcore_chkct : Intrinsic<[],[llvm_anyptr_ty, llvm_i32_ty],
|
||||
[NoCapture<0>]>;
|
||||
[NoCapture<ArgIndex<0>>]>;
|
||||
def int_xcore_testct : Intrinsic<[llvm_i32_ty],[llvm_anyptr_ty],
|
||||
[NoCapture<0>]>;
|
||||
[NoCapture<ArgIndex<0>>]>;
|
||||
def int_xcore_testwct : Intrinsic<[llvm_i32_ty],[llvm_anyptr_ty],
|
||||
[NoCapture<0>]>;
|
||||
[NoCapture<ArgIndex<0>>]>;
|
||||
def int_xcore_setd : Intrinsic<[],[llvm_anyptr_ty, llvm_i32_ty],
|
||||
[NoCapture<0>]>;
|
||||
[NoCapture<ArgIndex<0>>]>;
|
||||
def int_xcore_setc : Intrinsic<[],[llvm_anyptr_ty, llvm_i32_ty],
|
||||
[NoCapture<0>]>;
|
||||
[NoCapture<ArgIndex<0>>]>;
|
||||
def int_xcore_inshr : Intrinsic<[llvm_i32_ty],[llvm_anyptr_ty, llvm_i32_ty],
|
||||
[NoCapture<0>]>;
|
||||
[NoCapture<ArgIndex<0>>]>;
|
||||
def int_xcore_outshr : Intrinsic<[llvm_i32_ty],[llvm_anyptr_ty, llvm_i32_ty],
|
||||
[NoCapture<0>]>;
|
||||
[NoCapture<ArgIndex<0>>]>;
|
||||
def int_xcore_setpt : Intrinsic<[],[llvm_anyptr_ty, llvm_i32_ty],
|
||||
[NoCapture<0>]>;
|
||||
[NoCapture<ArgIndex<0>>]>;
|
||||
def int_xcore_clrpt : Intrinsic<[],[llvm_anyptr_ty],
|
||||
[NoCapture<0>]>;
|
||||
[NoCapture<ArgIndex<0>>]>;
|
||||
def int_xcore_getts : Intrinsic<[llvm_i32_ty],[llvm_anyptr_ty],
|
||||
[NoCapture<0>]>;
|
||||
[NoCapture<ArgIndex<0>>]>;
|
||||
def int_xcore_syncr : Intrinsic<[],[llvm_anyptr_ty],
|
||||
[NoCapture<0>]>;
|
||||
[NoCapture<ArgIndex<0>>]>;
|
||||
def int_xcore_settw : Intrinsic<[],[llvm_anyptr_ty, llvm_i32_ty],
|
||||
[NoCapture<0>]>;
|
||||
[NoCapture<ArgIndex<0>>]>;
|
||||
def int_xcore_setv : Intrinsic<[],[llvm_anyptr_ty, llvm_ptr_ty],
|
||||
[NoCapture<0>]>;
|
||||
[NoCapture<ArgIndex<0>>]>;
|
||||
def int_xcore_setev : Intrinsic<[],[llvm_anyptr_ty, llvm_ptr_ty],
|
||||
[NoCapture<0>]>;
|
||||
def int_xcore_eeu : Intrinsic<[],[llvm_anyptr_ty], [NoCapture<0>]>;
|
||||
def int_xcore_edu : Intrinsic<[],[llvm_anyptr_ty], [NoCapture<0>]>;
|
||||
[NoCapture<ArgIndex<0>>]>;
|
||||
def int_xcore_eeu : Intrinsic<[],[llvm_anyptr_ty], [NoCapture<ArgIndex<0>>]>;
|
||||
def int_xcore_edu : Intrinsic<[],[llvm_anyptr_ty], [NoCapture<ArgIndex<0>>]>;
|
||||
def int_xcore_setclk : Intrinsic<[],[llvm_anyptr_ty, llvm_anyptr_ty],
|
||||
[NoCapture<0>, NoCapture<1>]>;
|
||||
[NoCapture<ArgIndex<0>>, NoCapture<ArgIndex<1>>]>;
|
||||
def int_xcore_setrdy : Intrinsic<[],[llvm_anyptr_ty, llvm_anyptr_ty],
|
||||
[NoCapture<0>, NoCapture<1>]>;
|
||||
[NoCapture<ArgIndex<0>>, NoCapture<ArgIndex<1>>]>;
|
||||
def int_xcore_setpsc : Intrinsic<[],[llvm_anyptr_ty, llvm_i32_ty],
|
||||
[NoCapture<0>]>;
|
||||
[NoCapture<ArgIndex<0>>]>;
|
||||
def int_xcore_peek : Intrinsic<[llvm_i32_ty],[llvm_anyptr_ty],
|
||||
[NoCapture<0>]>;
|
||||
[NoCapture<ArgIndex<0>>]>;
|
||||
def int_xcore_endin : Intrinsic<[llvm_i32_ty],[llvm_anyptr_ty],
|
||||
[NoCapture<0>]>;
|
||||
[NoCapture<ArgIndex<0>>]>;
|
||||
|
||||
// Intrinsics for events.
|
||||
def int_xcore_waitevent : Intrinsic<[llvm_ptr_ty],[], [IntrReadMem]>;
|
||||
@ -103,18 +103,18 @@ let TargetPrefix = "xcore" in { // All intrinsics start with "llvm.xcore.".
|
||||
|
||||
// Intrinsics for threads.
|
||||
def int_xcore_getst : Intrinsic <[llvm_anyptr_ty],[llvm_anyptr_ty],
|
||||
[NoCapture<0>]>;
|
||||
def int_xcore_msync : Intrinsic <[],[llvm_anyptr_ty], [NoCapture<0>]>;
|
||||
[NoCapture<ArgIndex<0>>]>;
|
||||
def int_xcore_msync : Intrinsic <[],[llvm_anyptr_ty], [NoCapture<ArgIndex<0>>]>;
|
||||
def int_xcore_ssync : Intrinsic <[],[]>;
|
||||
def int_xcore_mjoin : Intrinsic <[],[llvm_anyptr_ty], [NoCapture<0>]>;
|
||||
def int_xcore_mjoin : Intrinsic <[],[llvm_anyptr_ty], [NoCapture<ArgIndex<0>>]>;
|
||||
def int_xcore_initsp : Intrinsic <[],[llvm_anyptr_ty, llvm_ptr_ty],
|
||||
[NoCapture<0>]>;
|
||||
[NoCapture<ArgIndex<0>>]>;
|
||||
def int_xcore_initpc : Intrinsic <[],[llvm_anyptr_ty, llvm_ptr_ty],
|
||||
[NoCapture<0>]>;
|
||||
[NoCapture<ArgIndex<0>>]>;
|
||||
def int_xcore_initlr : Intrinsic <[],[llvm_anyptr_ty, llvm_ptr_ty],
|
||||
[NoCapture<0>]>;
|
||||
[NoCapture<ArgIndex<0>>]>;
|
||||
def int_xcore_initcp : Intrinsic <[],[llvm_anyptr_ty, llvm_ptr_ty],
|
||||
[NoCapture<0>]>;
|
||||
[NoCapture<ArgIndex<0>>]>;
|
||||
def int_xcore_initdp : Intrinsic <[],[llvm_anyptr_ty, llvm_ptr_ty],
|
||||
[NoCapture<0>]>;
|
||||
[NoCapture<ArgIndex<0>>]>;
|
||||
}
|
||||
|
@ -11,8 +11,8 @@ def gi_shiftl_1 : GICustomOperandRenderer<"renderShiftImml1">,
|
||||
GISDNodeXFormEquiv<shiftl_1>;
|
||||
|
||||
|
||||
def int_mytarget_sleep : Intrinsic<[], [llvm_i32_ty], [ImmArg<0>]>;
|
||||
def int_mytarget_foo : Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty], [ImmArg<1>, IntrNoMem]>;
|
||||
def int_mytarget_sleep : Intrinsic<[], [llvm_i32_ty], [ImmArg<ArgIndex<0>>]>;
|
||||
def int_mytarget_foo : Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty], [ImmArg<ArgIndex<1>>, IntrNoMem]>;
|
||||
|
||||
|
||||
def SLEEP : I<(outs), (ins i32imm:$src0), []>;
|
||||
|
@ -3,7 +3,7 @@
|
||||
include "llvm/Target/Target.td"
|
||||
include "GlobalISelEmitterCommon.td"
|
||||
|
||||
def int_mytarget_sleep : Intrinsic<[], [llvm_i32_ty], [ImmArg<0>]>;
|
||||
def int_mytarget_sleep : Intrinsic<[], [llvm_i32_ty], [ImmArg<ArgIndex<0>>]>;
|
||||
|
||||
def G_TGT_CAT : MyTargetGenericInstruction {
|
||||
let OutOperandList = (outs type0:$dst);
|
||||
|
@ -4,8 +4,8 @@ include "llvm/Target/Target.td"
|
||||
include "GlobalISelEmitterCommon.td"
|
||||
|
||||
let TargetPrefix = "mytarget" in {
|
||||
def int_mytarget_sleep0 : Intrinsic<[], [llvm_i32_ty], [ImmArg<0>]>;
|
||||
def int_mytarget_sleep1 : Intrinsic<[], [llvm_i32_ty], [ImmArg<0>]>;
|
||||
def int_mytarget_sleep0 : Intrinsic<[], [llvm_i32_ty], [ImmArg<ArgIndex<0>>]>;
|
||||
def int_mytarget_sleep1 : Intrinsic<[], [llvm_i32_ty], [ImmArg<ArgIndex<0>>]>;
|
||||
}
|
||||
|
||||
// GISEL: GIM_CheckOpcode, /*MI*/0, TargetOpcode::G_INTRINSIC_W_SIDE_EFFECTS,
|
||||
|
@ -142,7 +142,7 @@ struct CodeGenIntrinsic {
|
||||
// True if the intrinsic is marked as speculatable.
|
||||
bool isSpeculatable;
|
||||
|
||||
enum ArgAttribute {
|
||||
enum ArgAttrKind {
|
||||
NoCapture,
|
||||
NoAlias,
|
||||
Returned,
|
||||
@ -152,7 +152,19 @@ struct CodeGenIntrinsic {
|
||||
ImmArg
|
||||
};
|
||||
|
||||
std::vector<std::pair<unsigned, ArgAttribute>> ArgumentAttributes;
|
||||
struct ArgAttribute {
|
||||
unsigned Index;
|
||||
ArgAttrKind Kind;
|
||||
|
||||
ArgAttribute(unsigned Idx, ArgAttrKind K)
|
||||
: Index(Idx), Kind(K) {}
|
||||
|
||||
bool operator<(const ArgAttribute &Other) const {
|
||||
return std::tie(Index, Kind) < std::tie(Other.Index, Other.Kind);
|
||||
}
|
||||
};
|
||||
|
||||
std::vector<ArgAttribute> ArgumentAttributes;
|
||||
|
||||
bool hasProperty(enum SDNP Prop) const {
|
||||
return Properties & (1 << Prop);
|
||||
|
@ -795,25 +795,25 @@ CodeGenIntrinsic::CodeGenIntrinsic(Record *R) {
|
||||
hasSideEffects = true;
|
||||
else if (Property->isSubClassOf("NoCapture")) {
|
||||
unsigned ArgNo = Property->getValueAsInt("ArgNo");
|
||||
ArgumentAttributes.push_back(std::make_pair(ArgNo, NoCapture));
|
||||
ArgumentAttributes.emplace_back(ArgNo, NoCapture);
|
||||
} else if (Property->isSubClassOf("NoAlias")) {
|
||||
unsigned ArgNo = Property->getValueAsInt("ArgNo");
|
||||
ArgumentAttributes.push_back(std::make_pair(ArgNo, NoAlias));
|
||||
ArgumentAttributes.emplace_back(ArgNo, NoAlias);
|
||||
} else if (Property->isSubClassOf("Returned")) {
|
||||
unsigned ArgNo = Property->getValueAsInt("ArgNo");
|
||||
ArgumentAttributes.push_back(std::make_pair(ArgNo, Returned));
|
||||
ArgumentAttributes.emplace_back(ArgNo, Returned);
|
||||
} else if (Property->isSubClassOf("ReadOnly")) {
|
||||
unsigned ArgNo = Property->getValueAsInt("ArgNo");
|
||||
ArgumentAttributes.push_back(std::make_pair(ArgNo, ReadOnly));
|
||||
ArgumentAttributes.emplace_back(ArgNo, ReadOnly);
|
||||
} else if (Property->isSubClassOf("WriteOnly")) {
|
||||
unsigned ArgNo = Property->getValueAsInt("ArgNo");
|
||||
ArgumentAttributes.push_back(std::make_pair(ArgNo, WriteOnly));
|
||||
ArgumentAttributes.emplace_back(ArgNo, WriteOnly);
|
||||
} else if (Property->isSubClassOf("ReadNone")) {
|
||||
unsigned ArgNo = Property->getValueAsInt("ArgNo");
|
||||
ArgumentAttributes.push_back(std::make_pair(ArgNo, ReadNone));
|
||||
ArgumentAttributes.emplace_back(ArgNo, ReadNone);
|
||||
} else if (Property->isSubClassOf("ImmArg")) {
|
||||
unsigned ArgNo = Property->getValueAsInt("ArgNo");
|
||||
ArgumentAttributes.push_back(std::make_pair(ArgNo, ImmArg));
|
||||
ArgumentAttributes.emplace_back(ArgNo, ImmArg);
|
||||
} else
|
||||
llvm_unreachable("Unknown property!");
|
||||
}
|
||||
@ -833,7 +833,8 @@ bool CodeGenIntrinsic::isParamAPointer(unsigned ParamIdx) const {
|
||||
}
|
||||
|
||||
bool CodeGenIntrinsic::isParamImmArg(unsigned ParamIdx) const {
|
||||
std::pair<unsigned, ArgAttribute> Val = {ParamIdx, ImmArg};
|
||||
// Convert argument index to attribute index starting from `FirstArgIndex`.
|
||||
ArgAttribute Val{ParamIdx + 1, ImmArg};
|
||||
return std::binary_search(ArgumentAttributes.begin(),
|
||||
ArgumentAttributes.end(), Val);
|
||||
}
|
||||
|
@ -663,14 +663,13 @@ void IntrinsicEmitter::EmitAttributes(const CodeGenIntrinsicTable &Ints,
|
||||
unsigned ai = 0, ae = intrinsic.ArgumentAttributes.size();
|
||||
if (ae) {
|
||||
while (ai != ae) {
|
||||
unsigned argNo = intrinsic.ArgumentAttributes[ai].first;
|
||||
unsigned attrIdx = argNo + 1; // Must match AttributeList::FirstArgIndex
|
||||
unsigned attrIdx = intrinsic.ArgumentAttributes[ai].Index;
|
||||
|
||||
OS << " const Attribute::AttrKind AttrParam" << attrIdx << "[]= {";
|
||||
bool addComma = false;
|
||||
|
||||
do {
|
||||
switch (intrinsic.ArgumentAttributes[ai].second) {
|
||||
switch (intrinsic.ArgumentAttributes[ai].Kind) {
|
||||
case CodeGenIntrinsic::NoCapture:
|
||||
if (addComma)
|
||||
OS << ",";
|
||||
@ -716,7 +715,7 @@ void IntrinsicEmitter::EmitAttributes(const CodeGenIntrinsicTable &Ints,
|
||||
}
|
||||
|
||||
++ai;
|
||||
} while (ai != ae && intrinsic.ArgumentAttributes[ai].first == argNo);
|
||||
} while (ai != ae && intrinsic.ArgumentAttributes[ai].Index == attrIdx);
|
||||
OS << "};\n";
|
||||
OS << " AS[" << numAttrs++ << "] = AttributeList::get(C, "
|
||||
<< attrIdx << ", AttrParam" << attrIdx << ");\n";
|
||||
|
Loading…
x
Reference in New Issue
Block a user