11
11
#define SYCL_SIMPLE_SWIZZLES
12
12
#include < CL/sycl.hpp>
13
13
14
- void check_vectors (cl::sycl::int4 a, cl::sycl::int4 b, cl::sycl::int4 c,
15
- cl::sycl::int4 gold) {
16
- cl::sycl::int4 result = a * (cl::sycl::int4)b.y () + c;
14
+ void check_vectors (sycl::int4 a, sycl::int4 b, sycl::int4 c, sycl::int4 gold) {
15
+ sycl::int4 result = a * (sycl::int4)b.y () + c;
17
16
assert ((int )result.x () == (int )gold.x ());
18
17
assert ((int )result.y () == (int )gold.y ());
19
18
assert ((int )result.z () == (int )gold.z ());
20
19
assert ((int )result.w () == (int )gold.w ());
21
20
}
22
21
23
22
template <typename From, typename To> void check_convert () {
24
- cl:: sycl::vec<From, 4 > vec{1 , 2 , 3 , 4 };
25
- cl:: sycl::vec<To, 4 > result = vec.template convert <To>();
23
+ sycl::vec<From, 4 > vec{1 , 2 , 3 , 4 };
24
+ sycl::vec<To, 4 > result = vec.template convert <To>();
26
25
assert ((int )result.x () == (int )vec.x ());
27
26
assert ((int )result.y () == (int )vec.y ());
28
27
assert ((int )result.z () == (int )vec.z ());
@@ -31,27 +30,32 @@ template <typename From, typename To> void check_convert() {
31
30
32
31
template <typename From, typename To> void check_signed_unsigned_convert_to () {
33
32
check_convert<From, To>();
34
- check_convert<From, cl:: sycl::detail::make_unsigned_t <To>>();
35
- check_convert<cl:: sycl::detail::make_unsigned_t <From>, To>();
36
- check_convert<cl:: sycl::detail::make_unsigned_t <From>,
37
- cl:: sycl::detail::make_unsigned_t <To>>();
33
+ check_convert<From, sycl::detail::make_unsigned_t <To>>();
34
+ check_convert<sycl::detail::make_unsigned_t <From>, To>();
35
+ check_convert<sycl::detail::make_unsigned_t <From>,
36
+ sycl::detail::make_unsigned_t <To>>();
38
37
}
39
38
40
39
template <typename From> void check_convert_from () {
41
40
check_signed_unsigned_convert_to<From, int8_t >();
42
41
check_signed_unsigned_convert_to<From, int16_t >();
43
42
check_signed_unsigned_convert_to<From, int32_t >();
44
43
check_signed_unsigned_convert_to<From, int64_t >();
44
+ check_signed_unsigned_convert_to<From, char >();
45
+ check_signed_unsigned_convert_to<From, short >();
46
+ check_signed_unsigned_convert_to<From, int >();
47
+ check_signed_unsigned_convert_to<From, long >();
48
+ check_signed_unsigned_convert_to<From, long long >();
45
49
check_signed_unsigned_convert_to<From, half>();
46
50
check_signed_unsigned_convert_to<From, float >();
47
51
check_signed_unsigned_convert_to<From, double >();
48
52
}
49
53
50
54
int main () {
51
- cl:: sycl::int4 a = {1 , 2 , 3 , 4 };
52
- const cl:: sycl::int4 b = {10 , 20 , 30 , 40 };
53
- const cl:: sycl::int4 gold = {21 , 42 , 90 , 120 };
54
- const cl:: sycl::int2 a_xy = a.xy ();
55
+ sycl::int4 a = {1 , 2 , 3 , 4 };
56
+ const sycl::int4 b = {10 , 20 , 30 , 40 };
57
+ const sycl::int4 gold = {21 , 42 , 90 , 120 };
58
+ const sycl::int2 a_xy = a.xy ();
55
59
check_vectors (a, b, {1 , 2 , 30 , 40 }, gold);
56
60
check_vectors (a, b, {a.x (), a.y (), b.z (), b.w ()}, gold);
57
61
check_vectors (a, b, {a.x (), 2 , b.z (), 40 }, gold);
@@ -60,11 +64,11 @@ int main() {
60
64
check_vectors (a, b, {a.xy (), b.zw ()}, gold);
61
65
62
66
// Constructing vector from a scalar
63
- cl:: sycl::vec<int , 1 > vec_from_one_elem (1 );
67
+ sycl::vec<int , 1 > vec_from_one_elem (1 );
64
68
65
69
// implicit conversion
66
- cl:: sycl::vec<unsigned char , 2 > vec_2 (1 , 2 );
67
- cl:: sycl::vec<unsigned char , 4 > vec_4 (0 , vec_2, 3 );
70
+ sycl::vec<unsigned char , 2 > vec_2 (1 , 2 );
71
+ sycl::vec<unsigned char , 4 > vec_4 (0 , vec_2, 3 );
68
72
69
73
assert (vec_4.get_count () == 4 );
70
74
assert (static_cast <unsigned char >(vec_4.x ()) == static_cast <unsigned char >(0 ));
@@ -74,10 +78,10 @@ int main() {
74
78
75
79
// explicit conversion
76
80
int64_t (vec_2.x ());
77
- cl:: sycl::int4 (vec_2.x ());
81
+ sycl::int4 (vec_2.x ());
78
82
79
83
// Check broadcasting operator=
80
- cl:: sycl::vec<float , 4 > b_vec (1.0 );
84
+ sycl::vec<float , 4 > b_vec (1.0 );
81
85
b_vec = 0.5 ;
82
86
assert (static_cast <float >(b_vec.x ()) == static_cast <float >(0.5 ));
83
87
assert (static_cast <float >(b_vec.y ()) == static_cast <float >(0.5 ));
@@ -87,33 +91,37 @@ int main() {
87
91
// Check that vector with 'unsigned long long' elements has enough bits to
88
92
// store value.
89
93
unsigned long long ull_ref = 1ull - 2ull ;
90
- auto ull_vec = cl:: sycl::vec<unsigned long long , 1 >(ull_ref);
91
- unsigned long long ull_val = ull_vec.template swizzle <cl:: sycl::elem::s0>();
94
+ auto ull_vec = sycl::vec<unsigned long long , 1 >(ull_ref);
95
+ unsigned long long ull_val = ull_vec.template swizzle <sycl::elem::s0>();
92
96
assert (ull_val == ull_ref);
93
97
94
98
// Check that the function as() in swizzle vec class is working correctly
95
- cl::sycl::vec<int8_t , 2 > inputVec = cl::sycl::vec<int8_t , 2 >(0 , 1 );
96
- auto asVec =
97
- inputVec.template swizzle <cl::sycl::elem::s0, cl::sycl::elem::s1>()
98
- .template as <cl::sycl::vec<int16_t , 1 >>();
99
+ sycl::vec<int8_t , 2 > inputVec = sycl::vec<int8_t , 2 >(0 , 1 );
100
+ auto asVec = inputVec.template swizzle <sycl::elem::s0, sycl::elem::s1>()
101
+ .template as <sycl::vec<int16_t , 1 >>();
99
102
100
103
// Check that [u]long[n] type aliases match vec<[unsigned] long, n> types.
101
- assert ((std::is_same<cl:: sycl::vec<long , 2 >, cl:: sycl::long2>::value));
102
- assert ((std::is_same<cl:: sycl::vec<long , 3 >, cl:: sycl::long3>::value));
103
- assert ((std::is_same<cl:: sycl::vec<long , 4 >, cl:: sycl::long4>::value));
104
- assert ((std::is_same<cl:: sycl::vec<long , 8 >, cl:: sycl::long8>::value));
105
- assert ((std::is_same<cl:: sycl::vec<long , 16 >, cl:: sycl::long16>::value));
106
- assert ((std::is_same<cl:: sycl::vec<unsigned long , 2 >, cl:: sycl::ulong2>::value));
107
- assert ((std::is_same<cl:: sycl::vec<unsigned long , 3 >, cl:: sycl::ulong3>::value));
108
- assert ((std::is_same<cl:: sycl::vec<unsigned long , 4 >, cl:: sycl::ulong4>::value));
109
- assert ((std::is_same<cl:: sycl::vec<unsigned long , 8 >, cl:: sycl::ulong8>::value));
110
- assert ((std::is_same<cl:: sycl::vec<unsigned long , 16 >, cl:: sycl::ulong16>::value));
104
+ assert ((std::is_same<sycl::vec<long , 2 >, sycl::long2>::value));
105
+ assert ((std::is_same<sycl::vec<long , 3 >, sycl::long3>::value));
106
+ assert ((std::is_same<sycl::vec<long , 4 >, sycl::long4>::value));
107
+ assert ((std::is_same<sycl::vec<long , 8 >, sycl::long8>::value));
108
+ assert ((std::is_same<sycl::vec<long , 16 >, sycl::long16>::value));
109
+ assert ((std::is_same<sycl::vec<unsigned long , 2 >, sycl::ulong2>::value));
110
+ assert ((std::is_same<sycl::vec<unsigned long , 3 >, sycl::ulong3>::value));
111
+ assert ((std::is_same<sycl::vec<unsigned long , 4 >, sycl::ulong4>::value));
112
+ assert ((std::is_same<sycl::vec<unsigned long , 8 >, sycl::ulong8>::value));
113
+ assert ((std::is_same<sycl::vec<unsigned long , 16 >, sycl::ulong16>::value));
111
114
112
115
// Check convert() from and to various types.
113
116
check_convert_from<int8_t >();
114
117
check_convert_from<int16_t >();
115
118
check_convert_from<int32_t >();
116
119
check_convert_from<int64_t >();
120
+ check_convert_from<char >();
121
+ check_convert_from<short >();
122
+ check_convert_from<int >();
123
+ check_convert_from<long >();
124
+ check_convert_from<long long >();
117
125
check_convert_from<half>();
118
126
check_convert_from<float >();
119
127
check_convert_from<double >();
0 commit comments