[0/7] Work on PR108030 and several simd bugfixes and testsuite improvements

Message ID 3238840.44csPzL39Z@minbar
Headers
Series Work on PR108030 and several simd bugfixes and testsuite improvements |

Message

Matthias Kretz Feb. 15, 2023, 8:48 p.m. UTC
  As suggested in PR108030, I used __attribute__ syntax to annotate lambdas 
as always_inline. In few cases the lambda was meant to be a function 
boundary and the attribute was omitted.

PR108030 mentions a few more functions as problematic. But ideally these 
should not be inline in some fixed_size_simd cases. This needs further 
verification.

This fix is not simply an optimization. If the user hits this bug then 
using simd makes the code significantly slower than without using simd. 
That defeats the whole purpose of the type.

While doing verification I found a few more issues and implemented the use 
of PCH to speed up the test suite.

Matthias Kretz (7):
  libstdc++: Ensure __builtin_constant_p isn't lost on the way
  libstdc++: Annotate most lambdas with always_inline
  libstdc++: Document timeout and timeout-factor of simd tests
  libstdc++: Use a PCH to speed up check-simd
  libstdc++: printf format string fix in testsuite
  libstdc++: Fix incorrect __builtin_is_constant_evaluated calls
  libstdc++: Fix incorrect function call in -ffast-math optimization

 libstdc++-v3/include/experimental/bits/simd.h | 245 ++++++------
 .../include/experimental/bits/simd_builtin.h  | 351 ++++++++++--------
 .../experimental/bits/simd_converter.h        |  22 +-
 .../include/experimental/bits/simd_detail.h   |   3 +
 .../experimental/bits/simd_fixed_size.h       | 265 ++++++-------
 .../include/experimental/bits/simd_math.h     |  56 +--
 .../include/experimental/bits/simd_neon.h     |  14 +-
 .../include/experimental/bits/simd_x86.h      | 143 +++----
 .../testsuite/experimental/simd/README.md     |  10 +-
 .../experimental/simd/generate_makefile.sh    |  24 +-
 .../testsuite/experimental/simd/tests/abs.cc  |   4 +-
 .../experimental/simd/tests/algorithms.cc     |   3 +-
 .../simd/tests/bits/conversions.h             |  25 +-
 .../experimental/simd/tests/bits/main.h       |  87 +++++
 .../experimental/simd/tests/bits/make_vec.h   |  10 +
 .../simd/tests/bits/mathreference.h           |   3 +
 .../simd/tests/bits/test_values.h             |   6 +
 .../experimental/simd/tests/bits/verify.h     |  66 +---
 .../experimental/simd/tests/broadcast.cc      |   3 +-
 .../experimental/simd/tests/casts.cc          |   4 +-
 .../experimental/simd/tests/fpclassify.cc     |   4 +-
 .../experimental/simd/tests/frexp.cc          |   4 +-
 .../experimental/simd/tests/generator.cc      |   3 +-
 .../experimental/simd/tests/hypot3_fma.cc     |   4 +-
 .../simd/tests/integer_operators.cc           |   5 +-
 .../simd/tests/ldexp_scalbn_scalbln_modf.cc   |   4 +-
 .../experimental/simd/tests/loadstore.cc      |   4 +-
 .../experimental/simd/tests/logarithm.cc      |   5 +-
 .../experimental/simd/tests/mask_broadcast.cc |   3 +-
 .../simd/tests/mask_conversions.cc            |   2 +-
 .../simd/tests/mask_implicit_cvt.cc           |   3 +-
 .../experimental/simd/tests/mask_loadstore.cc |  29 +-
 .../simd/tests/mask_operator_cvt.cc           |   3 +-
 .../experimental/simd/tests/mask_operators.cc |   3 +-
 .../simd/tests/mask_reductions.cc             |  30 +-
 .../experimental/simd/tests/math_1arg.cc      |   3 +-
 .../experimental/simd/tests/math_2arg.cc      |   4 +-
 .../experimental/simd/tests/operator_cvt.cc   |   3 +-
 .../experimental/simd/tests/operators.cc      |  14 +-
 .../experimental/simd/tests/reductions.cc     |   4 +-
 .../experimental/simd/tests/remqo.cc          |   4 +-
 .../testsuite/experimental/simd/tests/simd.cc |   2 +-
 .../experimental/simd/tests/sincos.cc         |   6 +-
 .../experimental/simd/tests/split_concat.cc   |   4 +-
 .../experimental/simd/tests/splits.cc         |   2 +-
 .../experimental/simd/tests/trigonometric.cc  |   4 +-
 .../simd/tests/trunc_ceil_floor.cc            |   3 +-
 .../experimental/simd/tests/where.cc          |   4 +-
 48 files changed, 772 insertions(+), 735 deletions(-)
 create mode 100644 libstdc++-v3/testsuite/experimental/simd/tests/bits/
main.h