From 666dc887c4d384a05dd54a230390ebafb874310a Mon Sep 17 00:00:00 2001 From: "Cai, Justin" Date: Mon, 3 Jun 2024 17:56:31 -0700 Subject: [PATCH 1/4] [SYCL] Fix acos edge case --- libdevice/fallback-complex-fp64.cpp | 4 ++-- sycl/test-e2e/Regression/acos.cpp | 36 +++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 sycl/test-e2e/Regression/acos.cpp diff --git a/libdevice/fallback-complex-fp64.cpp b/libdevice/fallback-complex-fp64.cpp index 5ca69c0100962..5c4bc67924998 100644 --- a/libdevice/fallback-complex-fp64.cpp +++ b/libdevice/fallback-complex-fp64.cpp @@ -311,8 +311,8 @@ double __complex__ __devicelib_cacos(double __complex__ z) { return CMPLX(z_real, -z_imag); return CMPLX(z_real, z_real); } - if (__spirv_IsInf(z_real)) - return CMPLX(__pi / 2.0, -z_real); + if (__spirv_IsInf(z_imag)) + return CMPLX(__pi / 2.0, -z_imag); if (z_real == 0 && (z_imag == 0 || __spirv_IsNan(z_imag))) return CMPLX(__pi / 2.0, -z_imag); double __complex__ w = diff --git a/sycl/test-e2e/Regression/acos.cpp b/sycl/test-e2e/Regression/acos.cpp new file mode 100644 index 0000000000000..9b7d52b6b9886 --- /dev/null +++ b/sycl/test-e2e/Regression/acos.cpp @@ -0,0 +1,36 @@ +// RUN: %{build} -o %t.out +// RUN: %{run} %t.out +#include +#include +#include + +using namespace sycl; +using T = std::complex; + +int main() { + queue q; + const double pi = std::atan2(+0., -0.); + T data[][2] = {{{-2, -INFINITY}, {pi / 2, INFINITY}}, + {{-0., INFINITY}, {pi / 2, -INFINITY}}}; + int N = std::size(data); + auto *p = malloc_shared(N, q); + + q.single_task([=] { + for (int i = 0; i < N; ++i) { + p[i] = std::acos(data[i][0]); + } + }).wait(); + + int fails = 0; + for (int i = 0; i < N; ++i) { + auto actual = p[i]; + auto expected = data[i][1]; + if (expected != actual) { + std::cout << i << " fail:" << "expected = " << expected + << ", actual = " << actual << "\n"; + ++fails; + } + } + + return fails; +} From db34f57419b18603952f2820a53708eff930a9a8 Mon Sep 17 00:00:00 2001 From: "Cai, Justin" Date: Tue, 4 Jun 2024 10:41:25 -0700 Subject: [PATCH 2/4] Add requires aspect-fp64 to test --- sycl/test-e2e/Regression/acos.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/sycl/test-e2e/Regression/acos.cpp b/sycl/test-e2e/Regression/acos.cpp index 9b7d52b6b9886..93d60992ed093 100644 --- a/sycl/test-e2e/Regression/acos.cpp +++ b/sycl/test-e2e/Regression/acos.cpp @@ -1,3 +1,4 @@ +// REQUIRES: aspect-fp64 // RUN: %{build} -o %t.out // RUN: %{run} %t.out #include From b614fd26e630958c19df3a31f6380486547cd781 Mon Sep 17 00:00:00 2001 From: "Cai, Justin" Date: Tue, 4 Jun 2024 18:02:14 +0000 Subject: [PATCH 3/4] formatting --- sycl/test-e2e/Regression/acos.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sycl/test-e2e/Regression/acos.cpp b/sycl/test-e2e/Regression/acos.cpp index 93d60992ed093..0656041070723 100644 --- a/sycl/test-e2e/Regression/acos.cpp +++ b/sycl/test-e2e/Regression/acos.cpp @@ -27,8 +27,8 @@ int main() { auto actual = p[i]; auto expected = data[i][1]; if (expected != actual) { - std::cout << i << " fail:" << "expected = " << expected - << ", actual = " << actual << "\n"; + std::cout << i << " fail:" + << "expected = " << expected << ", actual = " << actual << "\n"; ++fails; } } From 522ee604762575964001a4015806167273413ca4 Mon Sep 17 00:00:00 2001 From: "Cai, Justin" Date: Fri, 14 Jun 2024 13:37:48 -0700 Subject: [PATCH 4/4] Add unsupport cuda and hip --- sycl/test-e2e/Regression/acos.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sycl/test-e2e/Regression/acos.cpp b/sycl/test-e2e/Regression/acos.cpp index 0656041070723..59cb130be0756 100644 --- a/sycl/test-e2e/Regression/acos.cpp +++ b/sycl/test-e2e/Regression/acos.cpp @@ -1,4 +1,6 @@ // REQUIRES: aspect-fp64 +// UNSUPPORTED: cuda || hip + // RUN: %{build} -o %t.out // RUN: %{run} %t.out #include