[PATCH 04/11 v3] libstdc++: Make use of __builtin_bit_cast
Jonathan Wakely
jwakely@redhat.com
Fri Jun 25 11:23:46 GMT 2021
On Thu, 24 Jun 2021 at 15:02, Matthias Kretz wrote:
>
> For -ffast-math there was a missing using namespace __proposed left. The
> attached patch resolves the issue.
OK for trunk, please push (after adding yourself to the "Write After
Approval" section of MAINTAINERS as per
https://gcc.gnu.org/gitwrite.html as your first commit).
Thanks!
> From: Matthias Kretz <m.kretz@gsi.de>
>
> The __bit_cast function was a hack to achieve what __builtin_bit_cast
> can do, therefore use __builtin_bit_cast if possible. However,
> __builtin_bit_cast cannot be used to cast from/to fixed_size_simd, since
> it isn't trivially copyable (in the language sense — in principle it
> is). Therefore add __proposed::simd_bit_cast to enable the use case
> required in the test framework.
>
> Signed-off-by: Matthias Kretz <m.kretz@gsi.de>
>
> libstdc++-v3/ChangeLog:
>
> * include/experimental/bits/simd.h (__bit_cast): Implement via
> __builtin_bit_cast #if available.
> (__proposed::simd_bit_cast): Add overloads for simd and
> simd_mask, which use __builtin_bit_cast (or __bit_cast #if not
> available), which return an object of the requested type with
> the same bits as the argument.
> * include/experimental/bits/simd_math.h: Use simd_bit_cast
> instead of __bit_cast to allow casts to fixed_size_simd.
> (copysign): Remove branch that was only required if __bit_cast
> cannot be constexpr.
> * testsuite/experimental/simd/tests/bits/test_values.h: Switch
> from __bit_cast to __proposed::simd_bit_cast since the former
> will not cast fixed_size objects anymore.
> ---
> libstdc++-v3/include/experimental/bits/simd.h | 57 ++++++++++++++++++-
> .../include/experimental/bits/simd_math.h | 37 ++++++------
> .../simd/tests/bits/test_values.h | 8 +--
> 3 files changed, 76 insertions(+), 26 deletions(-)
>
>
> --
> ──────────────────────────────────────────────────────────────────────────
> Dr. Matthias Kretz https://mattkretz.github.io
> GSI Helmholtz Centre for Heavy Ion Research https://gsi.de
> std::experimental::simd https://github.com/VcDevel/std-simd
> ──────────────────────────────────────────────────────────────────────────
More information about the Libstdc++
mailing list