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
2
2
// RUN: %GPU_RUN_PLACEHOLDER %t.run
3
3
// RUN: %CPU_RUN_PLACEHOLDER %t.run
4
4
// RUN: %ACC_RUN_PLACEHOLDER %t.run
13
13
14
14
using namespace cl ::sycl;
15
15
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>;
17
21
18
22
// Define the number of work items to enqueue.
19
23
const size_t NElems = 32 ;
@@ -24,14 +28,14 @@ template <typename T> void initInputBuffer(buffer<T, 1> &Buf, size_t Stride) {
24
28
auto Acc = Buf.template get_access <access::mode::write>();
25
29
for (size_t I = 0 ; I < Buf.get_count (); I += WorkGroupSize) {
26
30
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 ) );
28
32
}
29
33
}
30
34
31
35
template <typename T> void initOutputBuffer (buffer<T, 1 > &Buf) {
32
36
auto Acc = Buf.template get_access <access::mode::write>();
33
37
for (size_t I = 0 ; I < Buf.get_count (); I++)
34
- Acc[I] = 0 ;
38
+ Acc[I] = static_cast <T>( 0 ) ;
35
39
}
36
40
37
41
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) {
48
52
}
49
53
50
54
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);
54
57
return A == TB;
55
58
}
56
59
@@ -67,7 +70,16 @@ template <typename T> std::string toString(vec<T, 4> A) {
67
70
}
68
71
69
72
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) {
71
83
return std::to_string (A);
72
84
}
73
85
@@ -156,6 +168,8 @@ int main() {
156
168
return 1 ;
157
169
if (test<cl::sycl::cl_bool>(Stride))
158
170
return 1 ;
171
+ if (test<std::byte>(Stride))
172
+ return 1 ;
159
173
}
160
174
161
175
std::cout << " Test passed.\n " ;
0 commit comments