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

Commit 4b57f77

Browse files
authored
[SYCL] Disable Signbit issue for NAN (#653)
Disabled test cases impacted by the fact that Clang and MSVC compilers have different behavior for sign bit of NAN/-NAN. Signed-off-by: jinge90 <[email protected]>
1 parent 72ad1bb commit 4b57f77

File tree

5 files changed

+17
-39
lines changed

5 files changed

+17
-39
lines changed

SYCL/DeviceLib/built-ins/vector_relational.cpp

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -339,26 +339,24 @@ int main() {
339339

340340
// signbit
341341
{
342-
s::cl_int4 r{0};
342+
s::cl_int3 r{0};
343343
{
344-
s::buffer<s::cl_int4, 1> BufR(&r, s::range<1>(1));
344+
s::buffer<s::cl_int3, 1> BufR(&r, s::range<1>(1));
345345
s::queue myQueue;
346346
myQueue.submit([&](s::handler &cgh) {
347347
auto AccR = BufR.get_access<s::access::mode::write>(cgh);
348-
cgh.single_task<class signbitF4>([=]() {
349-
AccR[0] = s::signbit(s::cl_float4{0.5f, -12.0f, NAN, INFINITY});
348+
cgh.single_task<class signbitF3>([=]() {
349+
AccR[0] = s::signbit(s::cl_float3{0.5f, -12.0f, INFINITY});
350350
});
351351
});
352352
}
353353
s::cl_int r1 = r.x();
354354
s::cl_int r2 = r.y();
355355
s::cl_int r3 = r.z();
356-
s::cl_int r4 = r.w();
357356

358357
assert(r1 == 0);
359358
assert(r2 == -1);
360359
assert(r3 == 0);
361-
assert(r4 == 0);
362360
}
363361

364362
// any.

SYCL/DeviceLib/cmath_fp64_test.cpp

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
// FIXME unsupported on windows (opencl) until fix of libdevice fails
2-
// UNSUPPORTED: windows && opencl
31
// RUN: %clangxx -fsycl %s -o %t.out
42
// RUN: %HOST_RUN_PLACEHOLDER %t.out
53
// RUN: %CPU_RUN_PLACEHOLDER %t.out
@@ -15,12 +13,12 @@ namespace s = cl::sycl;
1513
constexpr s::access::mode sycl_read = s::access::mode::read;
1614
constexpr s::access::mode sycl_write = s::access::mode::write;
1715

18-
#define TEST_NUM 63
16+
#define TEST_NUM 61
1917

2018
double ref[TEST_NUM] = {
2119
1, 0, 0, 0, 0, 0, 0, 1, 1, 0.5, 0, 2, 0, 0, 1, 0, 2, 0, 0, 0, 0,
2220
0, 1, 0, 1, 2, 0, 1, 2, 5, 0, 0, 0, 0, 0.5, 0.5, NAN, NAN, 2, 0, 0, 0,
23-
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
21+
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
2422

2523
double refIptr = 1;
2624

@@ -97,9 +95,6 @@ template <class T> void device_cmath_test(s::queue &deviceQueue) {
9795

9896
res_access[i++] = !(std::signbit(infinity) == 0);
9997
res_access[i++] = !(std::signbit(minus_infinity) != 0);
100-
res_access[i++] = !(std::signbit(nan) == 0);
101-
res_access[i++] = !(std::signbit(minus_nan) != 0);
102-
10398
res_access[i++] = !(std::isunordered(minus_nan, nan) != 0);
10499
res_access[i++] = !(std::isunordered(minus_infinity, infinity) == 0);
105100
res_access[i++] = !(std::isgreater(minus_infinity, infinity) == 0);

SYCL/DeviceLib/cmath_test.cpp

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
// FIXME unsupported on windows (opencl) until fix of libdevice fails
2-
// UNSUPPORTED: windows && opencl
31
// RUN: %clangxx -fsycl -fno-builtin %s -o %t.out
42
// RUN: %HOST_RUN_PLACEHOLDER %t.out
53
// RUN: %CPU_RUN_PLACEHOLDER %t.out
@@ -15,12 +13,12 @@ namespace s = cl::sycl;
1513
constexpr s::access::mode sycl_read = s::access::mode::read;
1614
constexpr s::access::mode sycl_write = s::access::mode::write;
1715

18-
#define TEST_NUM 61
16+
#define TEST_NUM 59
1917

20-
float ref[TEST_NUM] = {1, 0, 0, 0, 0, 0, 0, 1, 1, 0.5, 0, 0, 1, 0, 2, 0,
21-
0, 0, 0, 0, 1, 0, 1, 2, 0, 1, 2, 5, 0, 0, 0, 0,
22-
0.5, 0.5, NAN, NAN, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
23-
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
18+
float ref[TEST_NUM] = {1, 0, 0, 0, 0, 0, 0, 1, 1, 0.5, 0, 0, 1, 0, 2,
19+
0, 0, 0, 0, 0, 1, 0, 1, 2, 0, 1, 2, 5, 0, 0,
20+
0, 0, 0.5, 0.5, NAN, NAN, 2, 0, 0, 0, 0, 0, 0, 0, 0,
21+
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
2422

2523
float refIptr = 1;
2624

@@ -90,9 +88,6 @@ template <class T> void device_cmath_test_1(s::queue &deviceQueue) {
9088

9189
res_access[i++] = !(std::signbit(infinity) == 0);
9290
res_access[i++] = !(std::signbit(minus_infinity) != 0);
93-
res_access[i++] = !(std::signbit(nan) == 0);
94-
res_access[i++] = !(std::signbit(minus_nan) != 0);
95-
9691
res_access[i++] = !(std::isunordered(minus_nan, nan) != 0);
9792
res_access[i++] = !(std::isunordered(minus_infinity, infinity) == 0);
9893
res_access[i++] = !(std::isgreater(minus_infinity, infinity) == 0);

SYCL/DeviceLib/math_fp64_test.cpp

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
// FIXME unsupported on windows (opencl) until fix of libdevice fails
2-
// UNSUPPORTED: windows && opencl
31
// RUN: %clangxx -fsycl %s -o %t.out
42
// RUN: %HOST_RUN_PLACEHOLDER %t.out
53
// RUN: %CPU_RUN_PLACEHOLDER %t.out
@@ -15,12 +13,12 @@ namespace s = cl::sycl;
1513
constexpr s::access::mode sycl_read = s::access::mode::read;
1614
constexpr s::access::mode sycl_write = s::access::mode::write;
1715

18-
#define TEST_NUM 63
16+
#define TEST_NUM 61
1917

2018
double ref_val[TEST_NUM] = {
2119
1, 0, 0, 0, 0, 0, 0, 1, 1, 0.5, 0, 2, 0, 0, 1, 0, 2, 0, 0, 0, 0,
2220
0, 1, 0, 1, 2, 0, 1, 2, 5, 0, 0, 0, 0, 0.5, 0.5, NAN, NAN, 2, 0, 0, 0,
23-
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
21+
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
2422

2523
double refIptr = 1;
2624

@@ -98,9 +96,6 @@ void device_math_test(s::queue &deviceQueue) {
9896

9997
res_access[i++] = !(signbit(infinity) == 0);
10098
res_access[i++] = !(signbit(minus_infinity) != 0);
101-
res_access[i++] = !(signbit(nan) == 0);
102-
res_access[i++] = !(signbit(minus_nan) != 0);
103-
10499
res_access[i++] = !(isunordered(minus_nan, nan) != 0);
105100
res_access[i++] = !(isunordered(minus_infinity, infinity) == 0);
106101
res_access[i++] = !(isgreater(minus_infinity, infinity) == 0);

SYCL/DeviceLib/math_test.cpp

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
// FIXME unsupported on windows (opencl) until fix of libdevice fails
2-
// UNSUPPORTED: windows && opencl
31
// RUN: %clangxx -fsycl %s -o %t.out
42
// RUN: %HOST_RUN_PLACEHOLDER %t.out
53
// RUN: %CPU_RUN_PLACEHOLDER %t.out
@@ -15,12 +13,12 @@ namespace s = cl::sycl;
1513
constexpr s::access::mode sycl_read = s::access::mode::read;
1614
constexpr s::access::mode sycl_write = s::access::mode::write;
1715

18-
#define TEST_NUM 61
16+
#define TEST_NUM 59
1917

2018
float ref_val[TEST_NUM] = {
21-
1, 0, 0, 0, 0, 0, 0, 1, 1, 0.5, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 1,
22-
0, 1, 2, 0, 1, 2, 5, 0, 0, 0, 0, 0.5, 0.5, NAN, NAN, 2, 0, 0, 0, 0, 0,
23-
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
19+
1, 0, 0, 0, 0, 0, 0, 1, 1, 0.5, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0,
20+
1, 0, 1, 2, 0, 1, 2, 5, 0, 0, 0, 0, 0.5, 0.5, NAN, NAN, 2, 0, 0, 0,
21+
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
2422

2523
float refIptr = 1;
2624

@@ -90,9 +88,6 @@ void device_math_test(s::queue &deviceQueue) {
9088

9189
res_access[i++] = !(signbit(infinity) == 0);
9290
res_access[i++] = !(signbit(minus_infinity) != 0);
93-
res_access[i++] = !(signbit(nan) == 0);
94-
res_access[i++] = !(signbit(minus_nan) != 0);
95-
9691
res_access[i++] = !(isunordered(minus_nan, nan) != 0);
9792
res_access[i++] = !(isunordered(minus_infinity, infinity) == 0);
9893
res_access[i++] = !(isgreater(minus_infinity, infinity) == 0);

0 commit comments

Comments
 (0)