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

Commit 82717ca

Browse files
authored
[SYCL] Add test for std::byte (#496)
1 parent 8abffe5 commit 82717ca

File tree

1 file changed

+22
-8
lines changed

1 file changed

+22
-8
lines changed

SYCL/Basic/group_async_copy.cpp

Lines changed: 22 additions & 8 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> class TypeHelper;
17+
18+
template <typename T>
19+
using KernelName = class TypeHelper<typename std::conditional<
20+
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] = static_cast<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] = static_cast<T>(0);
3539
}
3640

3741
template <typename T> struct is_vec : std::false_type {};
@@ -48,9 +52,8 @@ template <typename T> bool checkEqual(vec<T, 4> A, size_t B) {
4852
}
4953

5054
template <typename T>
51-
typename std::enable_if<!is_vec<T>::value, bool>::type checkEqual(T A,
52-
size_t B) {
53-
T TB = B;
55+
typename std::enable_if_t<!is_vec<T>::value, bool> checkEqual(T A, size_t B) {
56+
T TB = static_cast<T>(B);
5457
return A == TB;
5558
}
5659

@@ -67,7 +70,16 @@ template <typename T> std::string toString(vec<T, 4> A) {
6770
}
6871

6972
template <typename T = void>
70-
typename std::enable_if<!is_vec<T>::value, std::string>::type toString(T A) {
73+
typename std::enable_if_t<
74+
!is_vec<T>::value && std::is_same<T, std::byte>::value, std::string>
75+
toString(T A) {
76+
return std::to_string((unsigned char)A);
77+
}
78+
79+
template <typename T = void>
80+
typename std::enable_if_t<
81+
!is_vec<T>::value && !std::is_same<T, std::byte>::value, std::string>
82+
toString(T A) {
7183
return std::to_string(A);
7284
}
7385

@@ -156,6 +168,8 @@ int main() {
156168
return 1;
157169
if (test<cl::sycl::cl_bool>(Stride))
158170
return 1;
171+
if (test<std::byte>(Stride))
172+
return 1;
159173
}
160174

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

0 commit comments

Comments
 (0)