[gcc r12-9639] libstdc++: Test that integral simd reductions are precise

Matthias Kretz mkretz@gcc.gnu.org
Tue May 23 10:02:39 GMT 2023


https://gcc.gnu.org/g:88cfa0807472946db6af345f2b7ac7e1626697e3

commit r12-9639-g88cfa0807472946db6af345f2b7ac7e1626697e3
Author: Matthias Kretz <m.kretz@gsi.de>
Date:   Tue Feb 21 10:43:13 2023 +0100

    libstdc++: Test that integral simd reductions are precise
    
    Signed-off-by: Matthias Kretz <m.kretz@gsi.de>
    
    libstdc++-v3/ChangeLog:
    
            * testsuite/experimental/simd/tests/reductions.cc: Introduce
            max_distance as the type-dependent max error.
    
    (cherry picked from commit 8fda668e0919af9ceda9435f02a1708b375b2913)

Diff:
---
 libstdc++-v3/testsuite/experimental/simd/tests/reductions.cc | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/libstdc++-v3/testsuite/experimental/simd/tests/reductions.cc b/libstdc++-v3/testsuite/experimental/simd/tests/reductions.cc
index f3fd1487cbf..00fba1b039c 100644
--- a/libstdc++-v3/testsuite/experimental/simd/tests/reductions.cc
+++ b/libstdc++-v3/testsuite/experimental/simd/tests/reductions.cc
@@ -114,6 +114,7 @@ template <typename V>
       T acc = x[0];
       for (size_t i = 1; i < V::size(); ++i)
 	acc += x[i];
-      ULP_COMPARE(reduce(x), acc, V::size() / 2).on_failure("x = ", x);
+      const T max_distance = std::is_integral_v<T> ? 0 : V::size() / 2;
+      ULP_COMPARE(reduce(x), acc, max_distance).on_failure("x = ", x);
     });
   }


More information about the Libstdc++-cvs mailing list