[PATCH] libstdc++: Add missing constexpr to simd
Matthias Kretz
m.kretz@gsi.de
Mon May 22 20:27:09 GMT 2023
On Monday, 22 May 2023 18:25:15 CEST Jonathan Wakely wrote:
> I note that using if (not __builtin_constant_evaluated()) will fail if
> compiled with -fno-operator-names, which is why we don't use 'not', 'and',
> etc. elsewhere in libstdc++. I don't know if (or why) anybody uses that
> option though, so I don't think you need to hange anything in stdx::simd.
Ah, I just recently convinced myself that "operator-names" are more readable
(=> easier to maintain). But OTOH a mix isn't necessarily better. I'm fine
with keeping it consistent.
> > * subscripting vector builtins is not allowed in constant expressions
>
> Is that just because nobody made it work (yet)?
That is a good question. I guess I should open a PR.
> * if the implementation needs/uses memcpy
>
> > * if the implementation would otherwise call SIMD intrinsics/builtins
>
> The indentation looks off here and in the _M_set member function following
> it:
Yes. I had to put an #if between an else and an if. Looks like this:
else
#ifdef _GLIBCXX_SIMD_USE_ALIASING_LOADS
if (not __builtin_is_constant_evaluated())
return reinterpret_cast<const __may_alias<_Tp>*>(this)[__i];
else
#endif
if constexpr (__is_scalar_abi<_Abi0>())
Should the `if` be aligned to the `else` instead?
> Are the copyright years on
> testsuite/experimental/simd/pr109261_constexpr_simd.cc correct, or just
> copy&paste?
Right, copy&paste. Should I simply remove the complete header?
- Matthias
--
──────────────────────────────────────────────────────────────────────────
Dr. Matthias Kretz https://mattkretz.github.io
GSI Helmholtz Centre for Heavy Ion Research https://gsi.de
stdₓ::simd
──────────────────────────────────────────────────────────────────────────
More information about the Libstdc++
mailing list