Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions libclc/libspirv/include/libspirv/atomic/atomic_helper.h
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,7 @@ static _CLC_INLINE int __spirv_get_clang_memory_order(int Semantics) {
case AcquireRelease:
return __ATOMIC_ACQ_REL;
case SequentiallyConsistent:
// FIXME use __ATOMIC_SEQ_CST
return __ATOMIC_ACQ_REL;
return __ATOMIC_SEQ_CST;
default:
__builtin_unreachable();
}
Expand Down
3 changes: 3 additions & 0 deletions libclc/libspirv/include/libspirv/group/group_decl.inc
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,6 @@ __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);

_CLC_OVERLOAD _CLC_DEF _CLC_CONVERGENT __CLC_GENTYPE
__CLC_NON_UNIFORM_FUNCTION(int Execution, int Operation, __CLC_GENTYPE Value);
1 change: 1 addition & 0 deletions libclc/libspirv/include/libspirv/spirv_types.h
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ enum GroupOperation {
Reduce = 0,
InclusiveScan = 1,
ExclusiveScan = 2,
ClusteredReduce = 3,
};

typedef struct {
Expand Down
1 change: 0 additions & 1 deletion libclc/libspirv/lib/amdgcn-amdhsa/SOURCES
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,6 @@ workitem/get_num_sub_groups.cl
workitem/get_max_sub_group_size.cl
workitem/get_sub_group_id.cl
workitem/get_sub_group_local_id.cl
workitem/get_sub_group_size.cl
misc/sub_group_shuffle.cl
async/wait_group_events.cl
assert/__assert_fail.ll

This file was deleted.

3 changes: 1 addition & 2 deletions libclc/libspirv/lib/generic/atomic/atomic_def.inc
Original file line number Diff line number Diff line change
Expand Up @@ -62,10 +62,9 @@
}
#endif

__CLC_DEFINE_ATOMIC(private)
__CLC_DEFINE_ATOMIC(global)
__CLC_DEFINE_ATOMIC(local)
#if _CLC_DISTINCT_GENERIC_AS_SUPPORTED
#if _CLC_GENERIC_AS_SUPPORTED
__CLC_DEFINE_ATOMIC()
#endif

Expand Down
10 changes: 6 additions & 4 deletions libclc/libspirv/lib/generic/atomic/atomic_flag_clear.cl
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,19 @@
//
//===----------------------------------------------------------------------===//

#include <clc/atomic/clc_atomic_flag_clear.h>
#include <libspirv/atomic/atomic_helper.h>
#include <libspirv/spirv.h>

#define __CLC_DEFINE_ATOMIC_FLAG_CLEAR(ADDRSPACE) \
_CLC_OVERLOAD _CLC_DEF void __spirv_AtomicFlagClear( \
ADDRSPACE int *Pointer, int Scope, int Semantics) { \
__spirv_AtomicStore(Pointer, Scope, Semantics, 0); \
ADDRSPACE int *Ptr, int Scope, int Semantics) { \
__clc_atomic_flag_clear(Ptr, __spirv_get_clang_memory_order(Semantics), \
__spirv_get_clang_memory_scope(Scope)); \
}

__CLC_DEFINE_ATOMIC_FLAG_CLEAR(global)
__CLC_DEFINE_ATOMIC_FLAG_CLEAR(local)
__CLC_DEFINE_ATOMIC_FLAG_CLEAR(private)
#if _CLC_DISTINCT_GENERIC_AS_SUPPORTED
#if _CLC_GENERIC_AS_SUPPORTED
__CLC_DEFINE_ATOMIC_FLAG_CLEAR()
#endif
11 changes: 7 additions & 4 deletions libclc/libspirv/lib/generic/atomic/atomic_flag_test_and_set.cl
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,20 @@
//
//===----------------------------------------------------------------------===//

#include <clc/atomic/clc_atomic_flag_test_and_set.h>
#include <libspirv/atomic/atomic_helper.h>
#include <libspirv/spirv.h>

#define __CLC_DEFINE_ATOMIC_FLAG_TEST_AND_SET(ADDRSPACE) \
_CLC_OVERLOAD _CLC_DEF bool __spirv_AtomicFlagTestAndSet( \
ADDRSPACE int *Pointer, int Scope, int Semantics) { \
return (bool)__spirv_AtomicExchange(Pointer, Scope, Semantics, 1); \
ADDRSPACE int *Ptr, int Scope, int Semantics) { \
return __clc_atomic_flag_test_and_set( \
Ptr, __spirv_get_clang_memory_order(Semantics), \
__spirv_get_clang_memory_scope(Scope)); \
}

__CLC_DEFINE_ATOMIC_FLAG_TEST_AND_SET(global)
__CLC_DEFINE_ATOMIC_FLAG_TEST_AND_SET(local)
__CLC_DEFINE_ATOMIC_FLAG_TEST_AND_SET(private)
#if _CLC_DISTINCT_GENERIC_AS_SUPPORTED
#if _CLC_GENERIC_AS_SUPPORTED
__CLC_DEFINE_ATOMIC_FLAG_TEST_AND_SET()
#endif
2 changes: 1 addition & 1 deletion libclc/libspirv/lib/generic/math/atan2.cl
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
//
//===----------------------------------------------------------------------===//

#include <libspirv/spirv.h>
#include <clc/math/clc_atan2.h>
#include <libspirv/spirv.h>

#define __CLC_FUNCTION __spirv_ocl_atan2
#define __CLC_IMPL_FUNCTION(x) __clc_atan2
Expand Down
2 changes: 1 addition & 1 deletion libclc/libspirv/lib/generic/math/atan2pi.cl
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
//
//===----------------------------------------------------------------------===//

#include <libspirv/spirv.h>
#include <clc/math/clc_atan2pi.h>
#include <libspirv/spirv.h>

#define __CLC_FUNCTION __spirv_ocl_atan2pi
#define __CLC_IMPL_FUNCTION(x) __clc_atan2pi
Expand Down
2 changes: 1 addition & 1 deletion libclc/libspirv/lib/generic/math/cosh.cl
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
//
//===----------------------------------------------------------------------===//

#include <libspirv/spirv.h>
#include <clc/math/clc_cosh.h>
#include <libspirv/spirv.h>

#define __CLC_FUNCTION __spirv_ocl_cosh
#define __CLC_IMPL_FUNCTION(x) __clc_cosh
Expand Down
2 changes: 1 addition & 1 deletion libclc/libspirv/lib/generic/math/cospi.cl
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
//
//===----------------------------------------------------------------------===//

#include <libspirv/spirv.h>
#include <clc/math/clc_cospi.h>
#include <libspirv/spirv.h>

#define __CLC_FUNCTION __spirv_ocl_cospi
#define __CLC_IMPL_FUNCTION(x) __clc_cospi
Expand Down
2 changes: 1 addition & 1 deletion libclc/libspirv/lib/generic/math/exp.cl
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
//
//===----------------------------------------------------------------------===//

#include <libspirv/spirv.h>
#include <clc/math/clc_exp.h>
#include <libspirv/spirv.h>

#define __CLC_FUNCTION __spirv_ocl_exp
#define __CLC_IMPL_FUNCTION(x) __clc_exp
Expand Down
2 changes: 1 addition & 1 deletion libclc/libspirv/lib/generic/math/exp10.cl
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
//
//===----------------------------------------------------------------------===//

#include <libspirv/spirv.h>
#include <clc/math/clc_exp10.h>
#include <libspirv/spirv.h>

#define __CLC_FUNCTION __spirv_ocl_exp10
#define __CLC_IMPL_FUNCTION(x) __clc_exp10
Expand Down
2 changes: 1 addition & 1 deletion libclc/libspirv/lib/generic/math/exp2.cl
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
//
//===----------------------------------------------------------------------===//

#include <libspirv/spirv.h>
#include <clc/math/clc_exp2.h>
#include <libspirv/spirv.h>

#define __CLC_FUNCTION __spirv_ocl_exp2
#define __CLC_IMPL_FUNCTION(x) __clc_exp2
Expand Down
2 changes: 1 addition & 1 deletion libclc/libspirv/lib/generic/math/expm1.cl
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
//
//===----------------------------------------------------------------------===//

#include <libspirv/spirv.h>
#include <clc/math/clc_expm1.h>
#include <libspirv/spirv.h>

#define __CLC_FUNCTION __spirv_ocl_expm1
#define __CLC_IMPL_FUNCTION(x) __clc_expm1
Expand Down
2 changes: 1 addition & 1 deletion libclc/libspirv/lib/generic/math/hypot.cl
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
//
//===----------------------------------------------------------------------===//

#include <libspirv/spirv.h>
#include <clc/math/clc_hypot.h>
#include <libspirv/spirv.h>

#define __CLC_FUNCTION __spirv_ocl_hypot
#define __CLC_IMPL_FUNCTION(x) __clc_hypot
Expand Down
2 changes: 1 addition & 1 deletion libclc/libspirv/lib/generic/math/log1p.cl
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
//
//===----------------------------------------------------------------------===//

#include <libspirv/spirv.h>
#include <clc/math/clc_log1p.h>
#include <libspirv/spirv.h>

#define __CLC_FUNCTION __spirv_ocl_log1p
#define __CLC_IMPL_FUNCTION(x) __clc_log1p
Expand Down
2 changes: 1 addition & 1 deletion libclc/libspirv/lib/generic/math/remainder.cl
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
//
//===----------------------------------------------------------------------===//

#include <libspirv/spirv.h>
#include <clc/math/clc_remainder.h>
#include <libspirv/spirv.h>

#define __CLC_FUNCTION __spirv_ocl_remainder
#define __CLC_IMPL_FUNCTION(x) __clc_remainder
Expand Down
2 changes: 1 addition & 1 deletion libclc/libspirv/lib/generic/math/sinh.cl
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
//
//===----------------------------------------------------------------------===//

#include <libspirv/spirv.h>
#include <clc/math/clc_sinh.h>
#include <libspirv/spirv.h>

#define __CLC_FUNCTION __spirv_ocl_sinh
#define __CLC_IMPL_FUNCTION(x) __clc_sinh
Expand Down
2 changes: 1 addition & 1 deletion libclc/libspirv/lib/generic/math/sinpi.cl
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
//
//===----------------------------------------------------------------------===//

#include <libspirv/spirv.h>
#include <clc/math/clc_sinpi.h>
#include <libspirv/spirv.h>

#define __CLC_FUNCTION __spirv_ocl_sinpi
#define __CLC_IMPL_FUNCTION(x) __clc_sinpi
Expand Down
2 changes: 1 addition & 1 deletion libclc/libspirv/lib/generic/math/sqrt.cl
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
//
//===----------------------------------------------------------------------===//

#include <libspirv/spirv.h>
#include <clc/math/clc_sqrt.h>
#include <libspirv/spirv.h>

#define __CLC_FUNCTION __spirv_ocl_sqrt
#define __CLC_IMPL_FUNCTION(x) __clc_sqrt
Expand Down
2 changes: 1 addition & 1 deletion libclc/libspirv/lib/generic/math/tanpi.cl
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
//
//===----------------------------------------------------------------------===//

#include <libspirv/spirv.h>
#include <clc/math/clc_tanpi.h>
#include <libspirv/spirv.h>

#define __CLC_FUNCTION __spirv_ocl_tanpi
#define __CLC_IMPL_FUNCTION(x) __clc_tanpi
Expand Down
14 changes: 3 additions & 11 deletions libclc/libspirv/lib/generic/workitem/get_sub_group_size.cl
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,9 @@
//
//===----------------------------------------------------------------------===//

#include <clc/workitem/clc_get_sub_group_size.h>
#include <libspirv/spirv.h>

_CLC_DEF _CLC_OVERLOAD uint __spirv_BuiltInSubgroupSize() {
if (__spirv_BuiltInSubgroupId() != __spirv_BuiltInNumSubgroups() - 1) {
return __spirv_BuiltInSubgroupMaxSize();
}
size_t size_x = __spirv_BuiltInWorkgroupSize(0);
size_t size_y = __spirv_BuiltInWorkgroupSize(1);
size_t size_z = __spirv_BuiltInWorkgroupSize(2);
size_t linear_size = size_z * size_y * size_x;
size_t uniform_groups = __spirv_BuiltInNumSubgroups() - 1;
size_t uniform_size = __spirv_BuiltInSubgroupMaxSize() * uniform_groups;
return linear_size - uniform_size;
_CLC_OVERLOAD _CLC_DEF uint __spirv_BuiltInSubgroupSize() {
return __clc_get_sub_group_size();
}