Skip to content

Commit 9c4dba0

Browse files
[SYCL][LIT] Update test with anonymous case (intel#262)
1 parent d356322 commit 9c4dba0

File tree

1 file changed

+29
-1
lines changed

1 file changed

+29
-1
lines changed

SYCL/Functor/kernel_functor.cpp

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,27 @@ constexpr auto sycl_read_write = cl::sycl::access::mode::read_write;
2121
constexpr auto sycl_global_buffer = cl::sycl::access::target::global_buffer;
2222

2323
// Case 1:
24+
// - functor class is defined in an anonymous namespace
25+
// - the '()' operator:
26+
// * does not have parameters (to be used in 'single_task').
27+
// * has the 'const' qualifier
28+
namespace {
29+
class Functor1 {
30+
public:
31+
Functor1(
32+
int X_,
33+
cl::sycl::accessor<int, 1, sycl_read_write, sycl_global_buffer> &Acc_)
34+
: X(X_), Acc(Acc_) {}
35+
36+
void operator()() const { Acc[0] += X; }
37+
38+
private:
39+
int X;
40+
cl::sycl::accessor<int, 1, sycl_read_write, sycl_global_buffer> Acc;
41+
};
42+
} // namespace
43+
44+
// Case 2:
2445
// - functor class is defined in a namespace
2546
// - the '()' operator:
2647
// * does not have parameters (to be used in 'single_task').
@@ -85,6 +106,13 @@ int foo(int X) {
85106
cl::sycl::queue Q;
86107
cl::sycl::buffer<int, 1> Buf(A, 1);
87108

109+
Q.submit([&](cl::sycl::handler &cgh) {
110+
auto Acc = Buf.get_access<sycl_read_write, sycl_global_buffer>(cgh);
111+
Functor1 F(X, Acc);
112+
113+
cgh.single_task(F);
114+
});
115+
88116
Q.submit([&](cl::sycl::handler &cgh) {
89117
auto Acc = Buf.get_access<sycl_read_write, sycl_global_buffer>(cgh);
90118
ns::Functor2 F(X, Acc);
@@ -143,7 +171,7 @@ template <typename T> T bar(T X) {
143171
int main() {
144172
const int Res1 = foo(10);
145173
const int Res2 = bar(10);
146-
const int Gold1 = 30;
174+
const int Gold1 = 40;
147175
const int Gold2 = 80;
148176

149177
assert(Res1 == Gold1);

0 commit comments

Comments
 (0)