@@ -21,6 +21,14 @@ using namespace sycl::ext::intel::experimental::esimd;
21
21
using namespace sycl ::ext::intel::experimental;
22
22
using namespace cl ::sycl;
23
23
24
+ template <class T > void prn (T *arr, int size, const char *title) {
25
+ std::cout << title << " : " ;
26
+ for (int i = 0 ; i < size; ++i) {
27
+ std::cout << " " << arr[i];
28
+ }
29
+ std::cout << " \n " ;
30
+ }
31
+
24
32
int main (void ) {
25
33
constexpr unsigned VL = 16 ;
26
34
constexpr unsigned FACTOR = 2 ;
@@ -42,10 +50,11 @@ int main(void) {
42
50
constexpr int VAL2 = 3 ;
43
51
44
52
for (int i = 0 ; i < Size; ++i) {
45
- A[i] = i % 2 + VAL1; // 1 2 1 2 ...
46
- B[i] = i % 2 + VAL2; // 3 4 3 4 ...
47
- // mask out first half of sub-vector:
48
- M[i] = (i % SUB_VL) >= (SUB_VL / 2 ) ? 1 : 0 ; // 0 0 1 1 0 0 1 1 ...
53
+ A[i] = i % 2 + VAL1; // 1212 ...
54
+ B[i] = i % 2 + VAL2; // 3434 ...
55
+ // mask out first half of sub-vector, alternating '1' and '2' as 'enabled'
56
+ // bit representation in a mask element:
57
+ M[i] = (i % SUB_VL) >= (SUB_VL / 2 ) ? (i % SUB_VL - 1 ) : 0 ; // 00120012 ...
49
58
C[i] = VAL0;
50
59
}
51
60
@@ -57,7 +66,7 @@ int main(void) {
57
66
simd_mask<SUB_VL> m (M + i * VL);
58
67
// va: 1212121212121212
59
68
// vb: 3434343434343434
60
- // m: 0011001100110011
69
+ // m: 0012001200120012
61
70
// va.sel.sel: 1111
62
71
// vb.sel.sel: 4444
63
72
// vc: 1144
@@ -74,15 +83,16 @@ int main(void) {
74
83
sycl::free (A, q);
75
84
sycl::free (B, q);
76
85
sycl::free (C, q);
86
+ sycl::free (M, q);
77
87
return 1 ;
78
88
}
79
89
80
90
int err_cnt = 0 ;
81
91
82
- for ( int i = 0 ; i < Size; ++i) {
83
- std::cout << " " << C[i] ;
84
- }
85
- std::cout << " \n " ;
92
+ prn (A, Size, " A " );
93
+ prn (B, Size, " B " ) ;
94
+ prn (M, Size, " M " );
95
+ prn (C, Size, " C " ) ;
86
96
87
97
for (int i = 0 ; i < Size; ++i) {
88
98
int j = i % VL;
@@ -105,6 +115,7 @@ int main(void) {
105
115
sycl::free (A, q);
106
116
sycl::free (B, q);
107
117
sycl::free (C, q);
118
+ sycl::free (M, q);
108
119
std::cout << (err_cnt > 0 ? " FAILED\n " : " Passed\n " );
109
120
return err_cnt > 0 ? 1 : 0 ;
110
121
}
0 commit comments