Skip to content

Commit 7c21f81

Browse files
committed
Address code-review comments; add non-deprecated group barrier interface
1 parent 35c8f67 commit 7c21f81

File tree

2 files changed

+11
-28
lines changed

2 files changed

+11
-28
lines changed

clang/test/CodeGenSYCL/Inputs/sycl.hpp

Lines changed: 7 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -176,16 +176,6 @@ template <int dim> struct item {
176176
int Data;
177177
};
178178

179-
template <int dimensions = 1> class nd_item {
180-
public:
181-
void barrier(access::fence_space accessSpace =
182-
access::fence_space::global_and_local) const {
183-
#ifdef __SYCL_DEVICE_ONLY__
184-
__spirv_ControlBarrier(0, 0, 0);
185-
#endif
186-
}
187-
};
188-
189179
namespace ext {
190180
namespace oneapi {
191181
template <typename... properties>
@@ -421,30 +411,23 @@ kernel_parallel_for(const KernelType &KernelFunc) {
421411
KernelFunc(id<Dims>());
422412
}
423413

424-
template <typename KernelName, typename KernelType, int Dims>
425-
ATTR_SYCL_KERNEL void
426-
kernel_parallel_for_item(const KernelType &KernelFunc) {
427-
KernelFunc(nd_item<Dims>());
414+
// Dummy parallel_for_work_item function to mimic calls from
415+
// parallel_for_work_group.
416+
void parallel_for_work_item() {
417+
#ifdef __SYCL_DEVICE_ONLY__
418+
__spirv_ControlBarrier(0, 0, 0);
419+
#endif
428420
}
429421

430422
template <typename KernelName, typename KernelType, int Dims>
431423
ATTR_SYCL_KERNEL void
432424
kernel_parallel_for_work_group(const KernelType &KernelFunc) {
433425
KernelFunc(group<Dims>());
426+
parallel_for_work_item();
434427
}
435428

436429
class handler {
437430
public:
438-
template <typename KernelName = auto_name, typename KernelType, int Dims>
439-
void parallel_for(nd_range<Dims> numWorkItems, const KernelType &kernelFunc) {
440-
using NameT = typename get_kernel_name_t<KernelName, KernelType>::name;
441-
#ifdef __SYCL_DEVICE_ONLY__
442-
kernel_parallel_for_item<NameT, KernelType, Dims>(kernelFunc);
443-
#else
444-
kernelFunc(nd_item<Dims>());
445-
#endif
446-
}
447-
448431
template <typename KernelName = auto_name, typename KernelType, int Dims>
449432
void parallel_for(range<Dims> numWorkItems, const KernelType &kernelFunc) {
450433
using NameT = typename get_kernel_name_t<KernelName, KernelType>::name;

clang/test/CodeGenSYCL/reqd-sub-group-size-spirv-intrin.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// RUN: %clang_cc1 -triple spir64 -fsycl-is-device -std=c++17 -internal-isystem %S/Inputs -fdeclare-spirv-builtins %s -emit-llvm -o - | FileCheck %s
1+
// RUN: %clang_cc1 -triple spir64 -fsycl-is-device -internal-isystem %S/Inputs -fdeclare-spirv-builtins %s -emit-llvm -o - | FileCheck %s
22

33
// Test that when __spirv intrinsics are invoked from kernel functions
44
// that have a sub_group_size specified, that such invocations don't
@@ -11,11 +11,11 @@ int main() {
1111
sycl::queue q;
1212

1313
q.submit([&](sycl::handler &cgh) {
14-
auto kernel_ = [=](sycl::nd_item<1> item) [[intel::sub_group_size(8)]] {
15-
item.barrier(sycl::access::fence_space::local_space);
14+
auto kernel_ = [=](sycl::group<1> item) [[intel::sub_group_size(8)]] {
1615
};
1716

18-
cgh.parallel_for<class kernel_class>(cl::sycl::nd_range<1>(), kernel_);
17+
cgh.parallel_for_work_group<class kernel_class>(
18+
cl::sycl::range<1>(), cl::sycl::range<1>(), kernel_);
1919
});
2020
return 0;
2121
}

0 commit comments

Comments
 (0)