Skip to content
This repository was archived by the owner on Mar 28, 2023. It is now read-only.

Commit 8afec37

Browse files
committed
Add test for std::byte
Signed-off-by: mdimakov <[email protected]>
1 parent 8b0d276 commit 8afec37

File tree

1 file changed

+17
-6
lines changed

1 file changed

+17
-6
lines changed

SYCL/Basic/group_async_copy.cpp

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// RUN: %clangxx -fsycl -fsycl-targets=%sycl_triple %s -o %t.run
1+
// RUN: %clangxx -fsycl -std=c++17 -fsycl-targets=%sycl_triple %s -o %t.run
22
// RUN: %GPU_RUN_PLACEHOLDER %t.run
33
// RUN: %CPU_RUN_PLACEHOLDER %t.run
44
// RUN: %ACC_RUN_PLACEHOLDER %t.run
@@ -13,7 +13,11 @@
1313

1414
using namespace cl::sycl;
1515

16-
template <typename T> class KernelName;
16+
template <typename T>
17+
class TypeHelper;
18+
19+
template <typename T>
20+
using KernelName = class TypeHelper<typename std::conditional<std::is_same<T, std::byte>::value, unsigned char, T>::type>;
1721

1822
// Define the number of work items to enqueue.
1923
const size_t NElems = 32;
@@ -24,14 +28,14 @@ template <typename T> void initInputBuffer(buffer<T, 1> &Buf, size_t Stride) {
2428
auto Acc = Buf.template get_access<access::mode::write>();
2529
for (size_t I = 0; I < Buf.get_count(); I += WorkGroupSize) {
2630
for (size_t J = 0; J < WorkGroupSize; J++)
27-
Acc[I + J] = I + J + ((J % Stride == 0) ? 100 : 0);
31+
Acc[I + J] = (T)(I + J + ((J % Stride == 0) ? 100 : 0));
2832
}
2933
}
3034

3135
template <typename T> void initOutputBuffer(buffer<T, 1> &Buf) {
3236
auto Acc = Buf.template get_access<access::mode::write>();
3337
for (size_t I = 0; I < Buf.get_count(); I++)
34-
Acc[I] = 0;
38+
Acc[I] = (T)0;
3539
}
3640

3741
template <typename T> struct is_vec : std::false_type {};
@@ -50,7 +54,7 @@ template <typename T> bool checkEqual(vec<T, 4> A, size_t B) {
5054
template <typename T>
5155
typename std::enable_if<!is_vec<T>::value, bool>::type checkEqual(T A,
5256
size_t B) {
53-
T TB = B;
57+
T TB = (T)B;
5458
return A == TB;
5559
}
5660

@@ -67,7 +71,12 @@ template <typename T> std::string toString(vec<T, 4> A) {
6771
}
6872

6973
template <typename T = void>
70-
typename std::enable_if<!is_vec<T>::value, std::string>::type toString(T A) {
74+
typename std::enable_if<!is_vec<T>::value && std::is_same<T, std::byte>::value, std::string>::type toString(T A) {
75+
return std::to_string((unsigned char)A);
76+
}
77+
78+
template <typename T = void>
79+
typename std::enable_if<!is_vec<T>::value && !std::is_same<T, std::byte>::value, std::string>::type toString(T A) {
7180
return std::to_string(A);
7281
}
7382

@@ -156,6 +165,8 @@ int main() {
156165
return 1;
157166
if (test<cl::sycl::cl_bool>(Stride))
158167
return 1;
168+
if (test<std::byte>(Stride))
169+
return 1;
159170
}
160171

161172
std::cout << "Test passed.\n";

0 commit comments

Comments
 (0)