Skip to content

Commit be47ae7

Browse files
dm-vodopyanovbb-sycl
authored andcommitted
[SYCL] Add test for relational functions which support sycl::marray (intel#1617)
Impl: intel/llvm#8427
1 parent f7b34bf commit be47ae7

File tree

1 file changed

+58
-0
lines changed

1 file changed

+58
-0
lines changed
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
// RUN: %clangxx -fsycl -fsycl-targets=%sycl_triple %s -o %t.out
2+
// RUN: %CPU_RUN_PLACEHOLDER %t.out
3+
// RUN: %GPU_RUN_PLACEHOLDER %t.out
4+
// RUN: %ACC_RUN_PLACEHOLDER %t.out
5+
6+
#include <CL/sycl.hpp>
7+
8+
#define TEST(FUNC, TYPE, EXPECTED, N, ...) \
9+
{ \
10+
{ \
11+
TYPE result[N]; \
12+
{ \
13+
sycl::buffer<TYPE> b(result, sycl::range{N}); \
14+
deviceQueue.submit([&](sycl::handler &cgh) { \
15+
sycl::accessor res_access{b, cgh}; \
16+
cgh.single_task([=]() { \
17+
sycl::marray<TYPE, N> res = FUNC(__VA_ARGS__); \
18+
for (int i = 0; i < N; i++) \
19+
res_access[i] = res[i]; \
20+
}); \
21+
}); \
22+
} \
23+
for (int i = 0; i < N; i++) \
24+
assert(result[i] == EXPECTED[i]); \
25+
} \
26+
}
27+
28+
#define EXPECTED(TYPE, ...) ((TYPE[]){__VA_ARGS__})
29+
30+
int main() {
31+
sycl::queue deviceQueue;
32+
33+
sycl::marray<float, 2> ma1{1.0, 2.0};
34+
sycl::marray<float, 2> ma2{1.0, 2.0};
35+
sycl::marray<float, 2> ma3{2.0, 1.0};
36+
sycl::marray<float, 2> ma4{2.0, 2.0};
37+
sycl::marray<float, 3> ma5{2.0, 2.0, 1.0};
38+
sycl::marray<float, 3> ma6{1.0, 5.0, 8.0};
39+
sycl::marray<bool, 3> c(1, 0, 1);
40+
41+
TEST(sycl::isequal, bool, EXPECTED(bool, 1, 1), 2, ma1, ma2);
42+
TEST(sycl::isnotequal, bool, EXPECTED(bool, 0, 0), 2, ma1, ma2);
43+
TEST(sycl::isgreater, bool, EXPECTED(bool, 0, 1), 2, ma1, ma3);
44+
TEST(sycl::isgreaterequal, bool, EXPECTED(bool, 0, 1), 2, ma1, ma4);
45+
TEST(sycl::isless, bool, EXPECTED(bool, 0, 1), 2, ma3, ma1);
46+
TEST(sycl::islessequal, bool, EXPECTED(bool, 0, 1), 2, ma4, ma1);
47+
TEST(sycl::islessgreater, bool, EXPECTED(bool, 0, 0), 2, ma1, ma2);
48+
TEST(sycl::isfinite, bool, EXPECTED(bool, 1, 1), 2, ma1);
49+
TEST(sycl::isinf, bool, EXPECTED(bool, 0, 0), 2, ma1);
50+
TEST(sycl::isnan, bool, EXPECTED(bool, 0, 0), 2, ma1);
51+
TEST(sycl::isnormal, bool, EXPECTED(bool, 1, 1), 2, ma1);
52+
TEST(sycl::isordered, bool, EXPECTED(bool, 1, 1), 2, ma1, ma2);
53+
TEST(sycl::isunordered, bool, EXPECTED(bool, 0, 0), 2, ma1, ma2);
54+
TEST(sycl::signbit, bool, EXPECTED(bool, 0, 0), 2, ma1);
55+
TEST(sycl::select, float, EXPECTED(float, 1.0, 2.0, 8.0), 3, ma5, ma6, c);
56+
57+
return 0;
58+
}

0 commit comments

Comments
 (0)