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

Commit 769c31a

Browse files
committed
alternate 'enabled' mask element value - 1,2
Signed-off-by: Konstantin S Bobrovsky <[email protected]>
1 parent dc9caa8 commit 769c31a

File tree

1 file changed

+20
-9
lines changed

1 file changed

+20
-9
lines changed

SYCL/ESIMD/api/esimd_merge.cpp

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,14 @@ using namespace sycl::ext::intel::experimental::esimd;
2121
using namespace sycl::ext::intel::experimental;
2222
using namespace cl::sycl;
2323

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+
2432
int main(void) {
2533
constexpr unsigned VL = 16;
2634
constexpr unsigned FACTOR = 2;
@@ -42,10 +50,11 @@ int main(void) {
4250
constexpr int VAL2 = 3;
4351

4452
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 ...
4958
C[i] = VAL0;
5059
}
5160

@@ -57,7 +66,7 @@ int main(void) {
5766
simd_mask<SUB_VL> m(M + i * VL);
5867
// va: 1212121212121212
5968
// vb: 3434343434343434
60-
// m: 0011001100110011
69+
// m: 0012001200120012
6170
// va.sel.sel: 1111
6271
// vb.sel.sel: 4444
6372
// vc: 1144
@@ -74,15 +83,16 @@ int main(void) {
7483
sycl::free(A, q);
7584
sycl::free(B, q);
7685
sycl::free(C, q);
86+
sycl::free(M, q);
7787
return 1;
7888
}
7989

8090
int err_cnt = 0;
8191

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");
8696

8797
for (int i = 0; i < Size; ++i) {
8898
int j = i % VL;
@@ -105,6 +115,7 @@ int main(void) {
105115
sycl::free(A, q);
106116
sycl::free(B, q);
107117
sycl::free(C, q);
118+
sycl::free(M, q);
108119
std::cout << (err_cnt > 0 ? "FAILED\n" : "Passed\n");
109120
return err_cnt > 0 ? 1 : 0;
110121
}

0 commit comments

Comments
 (0)