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

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

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