On Mon, Feb 23, 2026 at 8:55 AM Matthias Kretz <[email protected]> wrote:
> Tomasz Kaminski [Monday, 23 February 2026 08:13:08 CET]: > > On Fri, Feb 20, 2026 at 11:30 AM Matthias Kretz <[email protected]> > > wrote: > > > How could/should I test this change? I have a test that compiles > > > > I think we are good with tests that only check if the result is correct, > > i.e. elements have correct values. > > That's part of the simd::cat tests. Do you think I should add tests that > test > this function directly? > > […] > > > > + template <int _N0, int _N1, int _N2, int... _Ns, __vec_builtin _TV0, > > > __vec_builtin _TV1, > > > + __vec_builtin _TV2, __vec_builtin... _TVs> > > > + requires (__has_single_bit(unsigned(_N0))) && (_N0 >= (_N1 + _N2)) > > > + [[__gnu__::__always_inline__]] > > > + constexpr __vec_builtin_type<__vec_value_type<_TV0>, > > > + __bit_ceil(unsigned(_N0 + _N1 + (_N2 + > > > ... + > > > _Ns)))> > > > + __vec_concat_sized(const _TV0& __a, const _TV1& __b, const _TV2& > __c, > > > const _TVs&... __rest) > > > > I do not think that this should be a separate overload and another if > > constexpr branch > > In the default implementation. > > That's what I initially did. It was horrible because I need to extract the > first element and the remaining pack from __rest... to do so. I could make > the > function take 3 arguments + pack, but then I'd need an overload for the > 2-arg > case, which would the duplicate the implementation. > What I could do is call a 3-arg + pack function/lambda from the > constexpr-if > branch, but personally I find the overload simpler (and hopefully cheaper > to > compile). > I think you are already using pack indexing in the implementation of simd_mask, so I do not see a problem here: if (sizeof...(rest) > 0) and _N0 > __Ns...[0]. > > - Matthias > > -- > ────────────────────────────────────────────────────────────────────────── > Dr. Matthias Kretz https://mattkretz.github.io > GSI Helmholtz Center for Heavy Ion Research https://gsi.de > std::simd > ────────────────────────────────────────────────────────────────────────── >
