diff --git a/libclc/libspirv/include/libspirv/atomic/atomic_dec.h b/libclc/libspirv/include/libspirv/atomic/atomic_dec.h index 2335c3d6dfa24..1e96ba9616568 100644 --- a/libclc/libspirv/include/libspirv/atomic/atomic_dec.h +++ b/libclc/libspirv/include/libspirv/atomic/atomic_dec.h @@ -6,24 +6,8 @@ // //===----------------------------------------------------------------------===// -_CLC_OVERLOAD _CLC_DECL int __spirv_AtomicIDecrement(local int *, int Scope, - enum MemorySemanticsMask); -_CLC_OVERLOAD _CLC_DECL int __spirv_AtomicIDecrement(global int *, int Scope, - enum MemorySemanticsMask); -_CLC_OVERLOAD _CLC_DECL uint __spirv_AtomicIDecrement(local uint *, int Scope, - enum MemorySemanticsMask); -_CLC_OVERLOAD _CLC_DECL uint __spirv_AtomicIDecrement(global uint *, int Scope, - enum MemorySemanticsMask); - -#ifdef cl_khr_int64_base_atomics -_CLC_OVERLOAD _CLC_DECL long __spirv_AtomicIDecrement(local long *, int Scope, - enum MemorySemanticsMask); -_CLC_OVERLOAD _CLC_DECL long __spirv_AtomicIDecrement(global long *, int Scope, - enum MemorySemanticsMask); -_CLC_OVERLOAD _CLC_DECL unsigned long -__spirv_AtomicIDecrement(local unsigned long *, int Scope, - enum MemorySemanticsMask); -_CLC_OVERLOAD _CLC_DECL unsigned long -__spirv_AtomicIDecrement(global unsigned long *, int Scope, - enum MemorySemanticsMask); -#endif +#define __SPIRV_FUNCTION_S __spirv_AtomicIDecrement +#define __SPIRV_FUNCTION_U __spirv_AtomicIDecrement +#define __SPIRV_INT64_BASE +#define __SPIRV_NO_VALUE_ARG +#include diff --git a/libclc/libspirv/include/libspirv/atomic/atomic_decl.inc b/libclc/libspirv/include/libspirv/atomic/atomic_decl.inc index 21122f9dd5585..4df97e14839db 100644 --- a/libclc/libspirv/include/libspirv/atomic/atomic_decl.inc +++ b/libclc/libspirv/include/libspirv/atomic/atomic_decl.inc @@ -6,9 +6,19 @@ // //===----------------------------------------------------------------------===// +#ifdef __SPIRV_NO_VALUE_ARG +#define __CLC_DECLARE_ATOMIC(ADDRSPACE, TYPE, NAME) \ + _CLC_OVERLOAD _CLC_DECL TYPE NAME(ADDRSPACE TYPE *, int Scope, \ + int MemorySemanticsMask); +#elif defined(__SPIRV_RETURN_VOID) +#define __CLC_DECLARE_ATOMIC(ADDRSPACE, TYPE, NAME) \ + _CLC_OVERLOAD _CLC_DECL void NAME(ADDRSPACE TYPE *, int Scope, \ + int MemorySemanticsMask, TYPE); +#else #define __CLC_DECLARE_ATOMIC(ADDRSPACE, TYPE, NAME) \ _CLC_OVERLOAD _CLC_DECL TYPE NAME(ADDRSPACE TYPE *, int Scope, \ int MemorySemanticsMask, TYPE); +#endif #define __CLC_DECLARE_ATOMIC_ADDRSPACE(TYPE, NAME) \ __CLC_DECLARE_ATOMIC(global, TYPE, NAME) \ @@ -32,12 +42,27 @@ __CLC_DECLARE_ATOMIC_ADDRSPACE(ulong, __SPIRV_FUNCTION_U) #endif #endif +#ifdef __SPIRV_FLOATING_POINT +#ifdef cl_khr_fp16 +__CLC_DECLARE_ATOMIC_ADDRSPACE(half, __SPIRV_FUNCTION) +#endif // cl_khr_fp16 +__CLC_DECLARE_ATOMIC_ADDRSPACE(float, __SPIRV_FUNCTION) +#if defined(cl_khr_fp64) && defined(cl_khr_int64_base_atomics) && \ + defined(cl_khr_int64_extended_atomics) +__CLC_DECLARE_ATOMIC_ADDRSPACE(double, __SPIRV_FUNCTION) +#endif +#endif + #undef __CLC_DECLARE_ATOMIC_ADDRSPACE #undef __CLC_DECLARE_ATOMIC +#undef __SPIRV_FUNCTION #undef __SPIRV_FUNCTION_S #undef __SPIRV_FUNCTION_S_LEN #undef __SPIRV_FUNCTION_U #undef __SPIRV_FUNCTION_U_LEN #undef __SPIRV_INT64_BASE #undef __SPIRV_INT64_EXTENDED +#undef __SPIRV_NO_VALUE_ARG +#undef __SPIRV_RETURN_VOID +#undef __SPIRV_FLOATING_POINT diff --git a/libclc/libspirv/include/libspirv/atomic/atomic_inc.h b/libclc/libspirv/include/libspirv/atomic/atomic_inc.h index d7c6e42bbed66..3c19b4806bcd1 100644 --- a/libclc/libspirv/include/libspirv/atomic/atomic_inc.h +++ b/libclc/libspirv/include/libspirv/atomic/atomic_inc.h @@ -6,24 +6,8 @@ // //===----------------------------------------------------------------------===// -_CLC_OVERLOAD _CLC_DECL int __spirv_AtomicIIncrement(local int *, int Scope, - enum MemorySemanticsMask); -_CLC_OVERLOAD _CLC_DECL int __spirv_AtomicIIncrement(global int *, int Scope, - enum MemorySemanticsMask); -_CLC_OVERLOAD _CLC_DECL uint __spirv_AtomicIIncrement(local uint *, int Scope, - enum MemorySemanticsMask); -_CLC_OVERLOAD _CLC_DECL uint __spirv_AtomicIIncrement(global uint *, int Scope, - enum MemorySemanticsMask); - -#ifdef cl_khr_int64_base_atomics -_CLC_OVERLOAD _CLC_DECL long __spirv_AtomicIIncrement(local long *, int Scope, - enum MemorySemanticsMask); -_CLC_OVERLOAD _CLC_DECL long __spirv_AtomicIIncrement(global long *, int Scope, - enum MemorySemanticsMask); -_CLC_OVERLOAD _CLC_DECL unsigned long -__spirv_AtomicIIncrement(local unsigned long *, int Scope, - enum MemorySemanticsMask); -_CLC_OVERLOAD _CLC_DECL unsigned long -__spirv_AtomicIIncrement(global unsigned long *, int Scope, - enum MemorySemanticsMask); -#endif +#define __SPIRV_FUNCTION_S __spirv_AtomicIIncrement +#define __SPIRV_FUNCTION_U __spirv_AtomicIIncrement +#define __SPIRV_INT64_BASE +#define __SPIRV_NO_VALUE_ARG +#include diff --git a/libclc/libspirv/include/libspirv/atomic/atomic_load.h b/libclc/libspirv/include/libspirv/atomic/atomic_load.h index bd51ca74aaf23..e58626e53fec0 100644 --- a/libclc/libspirv/include/libspirv/atomic/atomic_load.h +++ b/libclc/libspirv/include/libspirv/atomic/atomic_load.h @@ -6,21 +6,11 @@ // //===----------------------------------------------------------------------===// -#define DECL(TYPE, AS) \ - _CLC_OVERLOAD _CLC_DECL TYPE __spirv_AtomicLoad(AS TYPE *, int, int); - -#define DECL_AS(TYPE) \ - DECL(TYPE, global) \ - DECL(TYPE, local) \ - DECL(TYPE, ) - -DECL_AS(int) -DECL_AS(unsigned int) - -#ifdef cl_khr_int64_base_atomics -DECL_AS(long) -DECL_AS(unsigned long) -#endif - -#undef DECL_AS -#undef DECL +#define __SPIRV_FUNCTION __spirv_AtomicLoad +#define __SPIRV_FUNCTION_S __spirv_AtomicLoad +#define __SPIRV_FUNCTION_U __spirv_AtomicLoad +#define __SPIRV_INT64_BASE +#define __SPIRV_INT64_EXTENDED +#define __SPIRV_NO_VALUE_ARG +#define __SPIRV_FLOATING_POINT +#include diff --git a/libclc/libspirv/include/libspirv/atomic/atomic_store.h b/libclc/libspirv/include/libspirv/atomic/atomic_store.h index b513e758e4755..b1ee1241008c2 100644 --- a/libclc/libspirv/include/libspirv/atomic/atomic_store.h +++ b/libclc/libspirv/include/libspirv/atomic/atomic_store.h @@ -6,21 +6,11 @@ // //===----------------------------------------------------------------------===// -#define DECL(TYPE, AS) \ - _CLC_OVERLOAD _CLC_DECL void __spirv_AtomicStore( \ - AS TYPE *, int Scope, int MemorySemanticsMask, TYPE); - -#define DECL_AS(TYPE) \ - DECL(TYPE, global) \ - DECL(TYPE, local) - -DECL_AS(int) -DECL_AS(unsigned int) - -#ifdef cl_khr_int64_base_atomics -DECL_AS(long) -DECL_AS(unsigned long) -#endif - -#undef DECL_AS -#undef DECL +#define __SPIRV_FUNCTION __spirv_AtomicStore +#define __SPIRV_FUNCTION_S __spirv_AtomicStore +#define __SPIRV_FUNCTION_U __spirv_AtomicStore +#define __SPIRV_INT64_BASE +#define __SPIRV_INT64_EXTENDED +#define __SPIRV_RETURN_VOID +#define __SPIRV_FLOATING_POINT +#include diff --git a/libclc/libspirv/include/libspirv/atomic/atomic_xchg.h b/libclc/libspirv/include/libspirv/atomic/atomic_xchg.h index 31dcf8948f3da..5504948f8c9d0 100644 --- a/libclc/libspirv/include/libspirv/atomic/atomic_xchg.h +++ b/libclc/libspirv/include/libspirv/atomic/atomic_xchg.h @@ -9,11 +9,6 @@ #define __SPIRV_FUNCTION_S __spirv_AtomicExchange #define __SPIRV_FUNCTION_U __spirv_AtomicExchange #define __SPIRV_INT64_BASE - -_CLC_OVERLOAD _CLC_DECL float __spirv_AtomicExchange(local float *, int Scope, - int MemorySemanticsMask, - float); -_CLC_OVERLOAD _CLC_DECL float __spirv_AtomicExchange(global float *, int Scope, - int MemorySemanticsMask, - float); +#define __SPIRV_INT64_EXTENDED +#define __SPIRV_FLOATING_POINT #include diff --git a/libclc/libspirv/include/libspirv/group/group_add.h b/libclc/libspirv/include/libspirv/group/group_add.h new file mode 100644 index 0000000000000..7e39fba340d20 --- /dev/null +++ b/libclc/libspirv/include/libspirv/group/group_add.h @@ -0,0 +1,16 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#define __CLC_FUNCTION __spirv_GroupIAdd +#define __CLC_NON_UNIFORM_FUNCTION __spirv_GroupNonUniformIAdd +#define __CLC_BODY + +#include + +#undef __CLC_FUNCTION +#undef __CLC_NON_UNIFORM_FUNCTION diff --git a/libclc/libspirv/include/libspirv/group/group_bitwise_and.h b/libclc/libspirv/include/libspirv/group/group_bitwise_and.h new file mode 100644 index 0000000000000..ec21e0a3e5a6d --- /dev/null +++ b/libclc/libspirv/include/libspirv/group/group_bitwise_and.h @@ -0,0 +1,16 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#define __CLC_FUNCTION __spirv_GroupBitwiseAndKHR +#define __CLC_NON_UNIFORM_FUNCTION __spirv_GroupNonUniformBitwiseAnd +#define __CLC_BODY + +#include + +#undef __CLC_FUNCTION +#undef __CLC_NON_UNIFORM_FUNCTION diff --git a/libclc/libspirv/include/libspirv/group/group_bitwise_or.h b/libclc/libspirv/include/libspirv/group/group_bitwise_or.h new file mode 100644 index 0000000000000..acaff3b92be6d --- /dev/null +++ b/libclc/libspirv/include/libspirv/group/group_bitwise_or.h @@ -0,0 +1,16 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#define __CLC_FUNCTION __spirv_GroupBitwiseOrKHR +#define __CLC_NON_UNIFORM_FUNCTION __spirv_GroupNonUniformBitwiseOr +#define __CLC_BODY + +#include + +#undef __CLC_FUNCTION +#undef __CLC_NON_UNIFORM_FUNCTION diff --git a/libclc/libspirv/include/libspirv/group/group_bitwise_xor.h b/libclc/libspirv/include/libspirv/group/group_bitwise_xor.h new file mode 100644 index 0000000000000..02474af4c4ddf --- /dev/null +++ b/libclc/libspirv/include/libspirv/group/group_bitwise_xor.h @@ -0,0 +1,16 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#define __CLC_FUNCTION __spirv_GroupBitwiseXorKHR +#define __CLC_NON_UNIFORM_FUNCTION __spirv_GroupNonUniformBitwiseXor +#define __CLC_BODY + +#include + +#undef __CLC_FUNCTION +#undef __CLC_NON_UNIFORM_FUNCTION diff --git a/libclc/libspirv/include/libspirv/group/group_broadcast.h b/libclc/libspirv/include/libspirv/group/group_broadcast.h new file mode 100644 index 0000000000000..be0490841c0e5 --- /dev/null +++ b/libclc/libspirv/include/libspirv/group/group_broadcast.h @@ -0,0 +1,19 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#define __CLC_BODY +#include + +#define __CLC_BODY +#include + +#define __CLC_BODY +#include + +#define __CLC_BODY +#include diff --git a/libclc/libspirv/include/libspirv/group/group_broadcast.inc b/libclc/libspirv/include/libspirv/group/group_broadcast.inc new file mode 100644 index 0000000000000..2a7c4f9953bfb --- /dev/null +++ b/libclc/libspirv/include/libspirv/group/group_broadcast.inc @@ -0,0 +1,19 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#define __GROUP_BROADCAST(LocalIdType) \ + _CLC_OVERLOAD _CLC_DEF _CLC_CONVERGENT __CLC_GENTYPE __spirv_GroupBroadcast( \ + int Execution, __CLC_GENTYPE Value, LocalIdType LocalId); + +__GROUP_BROADCAST(ulong) +__GROUP_BROADCAST(ulong2) +__GROUP_BROADCAST(ulong3) +__GROUP_BROADCAST(uint) +__GROUP_BROADCAST(uint2) +__GROUP_BROADCAST(uint3) +#undef __GROUP_BROADCAST diff --git a/libclc/libspirv/include/libspirv/group/group_decl.inc b/libclc/libspirv/include/libspirv/group/group_decl.inc new file mode 100644 index 0000000000000..1efaa52ca6a62 --- /dev/null +++ b/libclc/libspirv/include/libspirv/group/group_decl.inc @@ -0,0 +1,13 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +_CLC_OVERLOAD _CLC_DEF _CLC_CONVERGENT __CLC_GENTYPE +__CLC_FUNCTION(int Execution, int Operation, __CLC_GENTYPE X); + +_CLC_OVERLOAD _CLC_DEF _CLC_CONVERGENT __CLC_GENTYPE __CLC_NON_UNIFORM_FUNCTION( + int Execution, int Operation, __CLC_GENTYPE Value, uint ClusterSize); diff --git a/libclc/libspirv/include/libspirv/group/group_mul.h b/libclc/libspirv/include/libspirv/group/group_mul.h new file mode 100644 index 0000000000000..4aaab261d61ef --- /dev/null +++ b/libclc/libspirv/include/libspirv/group/group_mul.h @@ -0,0 +1,16 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#define __CLC_FUNCTION __spirv_GroupIMulKHR +#define __CLC_NON_UNIFORM_FUNCTION __spirv_GroupNonUniformIMul +#define __CLC_BODY + +#include + +#undef __CLC_FUNCTION +#undef __CLC_NON_UNIFORM_FUNCTION diff --git a/libclc/libspirv/include/libspirv/group/group_non_uniform_broadcast.inc b/libclc/libspirv/include/libspirv/group/group_non_uniform_broadcast.inc new file mode 100644 index 0000000000000..36571749da12e --- /dev/null +++ b/libclc/libspirv/include/libspirv/group/group_non_uniform_broadcast.inc @@ -0,0 +1,16 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#define __GROUP_NONUNIFORM_BROADCAST(IdType) \ + _CLC_OVERLOAD _CLC_DEF _CLC_CONVERGENT __CLC_GENTYPE \ + __spirv_GroupNonUniformBroadcast(int Execution, __CLC_GENTYPE Value, \ + IdType Id); + +__GROUP_NONUNIFORM_BROADCAST(uint) +__GROUP_NONUNIFORM_BROADCAST(ulong) +#undef __GROUP_NONUNIFORM_BROADCAST diff --git a/libclc/libspirv/include/libspirv/group/group_shuffle.h b/libclc/libspirv/include/libspirv/group/group_shuffle.h new file mode 100644 index 0000000000000..a9f4baf526c33 --- /dev/null +++ b/libclc/libspirv/include/libspirv/group/group_shuffle.h @@ -0,0 +1,17 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#define __CLC_FUNCTION __spirv_GroupNonUniformShuffle + +#define __CLC_BODY +#include + +#define __CLC_BODY +#include + +#undef __CLC_FUNCTION diff --git a/libclc/libspirv/include/libspirv/group/group_shuffle.inc b/libclc/libspirv/include/libspirv/group/group_shuffle.inc new file mode 100644 index 0000000000000..b81ca7c07e5a4 --- /dev/null +++ b/libclc/libspirv/include/libspirv/group/group_shuffle.inc @@ -0,0 +1,10 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +_CLC_OVERLOAD _CLC_DEF _CLC_CONVERGENT __CLC_GENTYPE +__CLC_FUNCTION(int Execution, __CLC_GENTYPE Value, uint IdMaskDelta); diff --git a/libclc/libspirv/include/libspirv/group/group_shuffle_down.h b/libclc/libspirv/include/libspirv/group/group_shuffle_down.h new file mode 100644 index 0000000000000..0be232d990f48 --- /dev/null +++ b/libclc/libspirv/include/libspirv/group/group_shuffle_down.h @@ -0,0 +1,17 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#define __CLC_FUNCTION __spirv_GroupNonUniformShuffleDown + +#define __CLC_BODY +#include + +#define __CLC_BODY +#include + +#undef __CLC_FUNCTION diff --git a/libclc/libspirv/include/libspirv/group/group_shuffle_up.h b/libclc/libspirv/include/libspirv/group/group_shuffle_up.h new file mode 100644 index 0000000000000..29e518ec8a06d --- /dev/null +++ b/libclc/libspirv/include/libspirv/group/group_shuffle_up.h @@ -0,0 +1,17 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#define __CLC_FUNCTION __spirv_GroupNonUniformShuffleUp + +#define __CLC_BODY +#include + +#define __CLC_BODY +#include + +#undef __CLC_FUNCTION diff --git a/libclc/libspirv/include/libspirv/group/group_shuffle_xor.h b/libclc/libspirv/include/libspirv/group/group_shuffle_xor.h new file mode 100644 index 0000000000000..0cfa65eaa3a78 --- /dev/null +++ b/libclc/libspirv/include/libspirv/group/group_shuffle_xor.h @@ -0,0 +1,17 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#define __CLC_FUNCTION __spirv_GroupNonUniformShuffleXor + +#define __CLC_BODY +#include + +#define __CLC_BODY +#include + +#undef __CLC_FUNCTION diff --git a/libclc/libspirv/include/libspirv/group/subgroup_shuffle_intel.h b/libclc/libspirv/include/libspirv/group/subgroup_shuffle_intel.h new file mode 100644 index 0000000000000..c65e06915cac0 --- /dev/null +++ b/libclc/libspirv/include/libspirv/group/subgroup_shuffle_intel.h @@ -0,0 +1,13 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#define __CLC_BODY +#include + +#define __CLC_BODY +#include diff --git a/libclc/libspirv/include/libspirv/group/subgroup_shuffle_intel.inc b/libclc/libspirv/include/libspirv/group/subgroup_shuffle_intel.inc new file mode 100644 index 0000000000000..298b1894f9e49 --- /dev/null +++ b/libclc/libspirv/include/libspirv/group/subgroup_shuffle_intel.inc @@ -0,0 +1,21 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +_CLC_OVERLOAD _CLC_DEF _CLC_CONVERGENT __CLC_GENTYPE +__spirv_SubgroupShuffleINTEL(__CLC_GENTYPE Data, uint InvocationId); + +_CLC_OVERLOAD _CLC_DEF _CLC_CONVERGENT __CLC_GENTYPE +__spirv_SubgroupShuffleDownINTEL(__CLC_GENTYPE Current, __CLC_GENTYPE Next, + uint Delta); + +_CLC_OVERLOAD _CLC_DEF _CLC_CONVERGENT __CLC_GENTYPE +__spirv_SubgroupShuffleUpINTEL(__CLC_GENTYPE Previous, __CLC_GENTYPE Current, + uint Delta); + +_CLC_OVERLOAD _CLC_DEF _CLC_CONVERGENT __CLC_GENTYPE +__spirv_SubgroupShuffleXorINTEL(__CLC_GENTYPE Data, uint Value); diff --git a/libclc/libspirv/include/libspirv/spirv.h b/libclc/libspirv/include/libspirv/spirv.h index 29c64e231284a..51db6a7a6002e 100644 --- a/libclc/libspirv/include/libspirv/spirv.h +++ b/libclc/libspirv/include/libspirv/spirv.h @@ -93,4 +93,17 @@ /* Pointer Conversion */ #include +/* Group Functions */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + #pragma OPENCL EXTENSION all : disable