[00/11] stdx::simd optimizations, corrections, and cleanups

Message ID 270527782.u9WJ3AIrlG@excalibur
Headers show
Series
  • stdx::simd optimizations, corrections, and cleanups
Related show

Message

Matthias Kretz June 8, 2021, 12:10 p.m.
The following patches mostly contain code cleanups and minor corrections. The 
major feature in this patchset is the last patch, which should make the use of 
stdx::simd much safer wrt. ODR violations involuntarily introduced by linking 
TUs that were compiled with different -m and floating-point flags.

Matthias Kretz (11):
  libstdc++: Improve copysign codegen
  libstdc++: Remove dead code
  libstdc++: Improve fixed_size codegen
  libstdc++: Make use of __builtin_bit_cast
  libstdc++: Remove incorrect fabs overload
  libstdc++: Minor simd_math cleanups
  libstdc++: Fix condition when AVX512F ldexp implementation is used
  libstdc++: Avoid raising fp exceptions in trunc, floor, and ceil
  libstdc++: Ensure unrolled loops inline the lambda
  libstdc++: Fix internal names: add missing underscores
  libstdc++: Fix ODR issues with different -m flags

 libstdc++-v3/include/experimental/bits/simd.h | 438 ++++++++++++------
 .../include/experimental/bits/simd_builtin.h  |  48 +-
 .../experimental/bits/simd_converter.h        |   2 +-
 .../include/experimental/bits/simd_detail.h   |  40 ++
 .../experimental/bits/simd_fixed_size.h       |  95 ++--
 .../include/experimental/bits/simd_math.h     | 107 ++---
 .../include/experimental/bits/simd_neon.h     |   4 +-
 .../include/experimental/bits/simd_ppc.h      |   4 +-
 .../include/experimental/bits/simd_scalar.h   |  71 ++-
 .../include/experimental/bits/simd_x86.h      |  33 +-
 .../simd/tests/bits/test_values.h             |   8 +-
 11 files changed, 540 insertions(+), 310 deletions(-)

Comments

Ilya Leoshkevich via Gcc-patches June 24, 2021, 1:42 p.m. | #1
On Tue, 8 Jun 2021 at 13:10, Matthias Kretz wrote:
>

> The following patches mostly contain code cleanups and minor corrections. The

> major feature in this patchset is the last patch, which should make the use of

> stdx::simd much safer wrt. ODR violations involuntarily introduced by linking

> TUs that were compiled with different -m and floating-point flags.

>

> Matthias Kretz (11):

>   libstdc++: Improve copysign codegen

>   libstdc++: Remove dead code

>   libstdc++: Improve fixed_size codegen

>   libstdc++: Make use of __builtin_bit_cast

>   libstdc++: Remove incorrect fabs overload

>   libstdc++: Minor simd_math cleanups

>   libstdc++: Fix condition when AVX512F ldexp implementation is used

>   libstdc++: Avoid raising fp exceptions in trunc, floor, and ceil

>   libstdc++: Ensure unrolled loops inline the lambda

>   libstdc++: Fix internal names: add missing underscores

>   libstdc++: Fix ODR issues with different -m flags


Thanks! I've pushed all except the bit_cast one (as discussed on IRC)
and the ODR one (which I'm still reviewing).