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
──────────────────────────────────────────────────────────────────────────

Reply via email to