On Thu, Jan 22, 2026 at 12:21 PM Matthias Kretz <[email protected]> wrote:

> I updated the PR at https://forge.sourceware.org/gcc/gcc-TEST/pulls/117.
>
> I rebased onto trunk and pushed two new commits since the last review.
>
> - The first commit implements all feedback:
> https://forge.sourceware.org/gcc/
> gcc-TEST/commit/33e4ce9a141123f4904d1256935101334d923df4
> <https://forge.sourceware.org/gcc/gcc-TEST/commit/33e4ce9a141123f4904d1256935101334d923df4>
>
> - The second commit adds tests to testsuite/26_numerics/simd/: https://
> forge.sourceware.org/gcc/gcc-TEST/commit/
> 9b5e2886911eb48f80e599897628654dad3d096f
>
> - I also force-pushed an update to bits/version.h, which I forgot to
> regenerate for the commit.
>
> Since the intent for the PR is to squash all commits, I did not add a
> complete
> change log to the commit implementing feedback.
>
> I noticed that I was using 'expandtabs' for the code. However, changing
> spaces
> to tabs in the PR now would make it harder to review changes. So I'd fix
> this
> at the end, once you're happy with the code, no?
>
> Wrt. GCC 16, I assume this is getting too late in the cycle?
>
> The tests are slightly modified from what I use in my tree. In my tree,
> however, every source file is compiled 5376 times. That's the
> cross-product of
> different -march flags, different value types, and different widths. For
> libstdc++ I instead do:
>
> template for (auto t : {char(), short(), unsigned(), 0l, 0ull,
>                         float(), double()})
>   template for (constexpr int n : {1, 3, 17})
>     // test simd::vec<decltype(t), n>
>
For the test combination, I wonder if we would lose that much of basic
coverage,
if we would instead test all types with single enabled size.
 template for (auto t : {char(), short(), unsigned(), 0l, 0ull,
                        float(), double()})
   //   test simd::vec<decltype(t), 3>
And then one size type for various disabled and enabled sizes:
  template for (constexpr int n : {1, 3, 17})
    // test simd::vec<decltype(t), n>

I am thinking about it in the context of timeout factor, where this test
fails for me
even with timeout 2.

>
> That's much less coverage, but already uses a lot of / too much RAM to
> compile. For -march, it uses whatever your dejagnu board has configured.
>
> Best,
>   Matthias
>
> On Montag, 27. Oktober 2025 12:40:56 Mitteleuropäische Normalzeit Matthias
> Kretz wrote:
> > Also at https://forge.sourceware.org/gcc/gcc-TEST/pulls/117
> >
> > ------------------ 8< -----------------
> >
> > This implementation differs a lot from the std::experimental
> > implementation. I tried my best to reduce the number of template
> > instantiations wrt. what std::experimental::simd does.
> >
> > A basic_vec/basic_mask that uses multiple registers is built as a tree
> > of smaller specializations, where the left branch always stores a
> > power-of-2 number of elements.
> >
> > Missing with this commit: [simd.permute.dynamic], [simd.permute.mask],
> > [simd.permute.memory], [simd.bit], [simd.math], and everything related
> > to making complex<T> vectorizable.
> >
> > Minimal unit tests will follow. (An extensive test suite that does not
> > easily integrate with the GCC test framework already exists.)
>
>
> --
> ──────────────────────────────────────────────────────────────────────────
>  Dr. Matthias Kretz                           https://mattkretz.github.io
>  GSI Helmholtz Center for Heavy Ion Research               https://gsi.de
>  std::simd
> ──────────────────────────────────────────────────────────────────────────
>

Reply via email to