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