Just general comment, we do not user alternate operator spellins, so all and/or needs to be &&/||.
On Wed, Oct 8, 2025 at 1:54 PM Matthias Kretz <[email protected]> wrote: > This set of patches implements C++26 [simd]. The 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. > > Still missing: [simd.loadstore], [simd.permute.dynamic], > [simd.permute.mask], > [simd.permute.memory]. > > [simd.math] is partially implemented. But I don't want to go any further > on > this without some feedback on the direction I took. > > I have an extensive set of unit tests at > https://github.com/GSI-HPC/simd/tree/ > rewrite. But I don't want to repeat what I did for > std::experimental::simd. So > I'll look into possibly keeping an external complete simd testsuite while > added some tests to libstdc++ later. > > The PR is split into multiple commits to hopefully make it easier to get > through the review. > > Matthias Kretz (11): > libstdc++: C++26 [simd] details > libstdc++: Implement C++26 [simd.iterator] > libstdc++: C++26 [simd] rebind, resize, permute, chunk, cat and > basic_mask > libstdc++: Implement C++26 [simd.mask.reductions] > libstdc++: Implement C++26 [simd.flags] and alignment(_v) > libstdc++: Implement C++26 [simd] basic_vec > libstdc++: Implement C++26 [simd.alg] > libstdc++: Implement C++26 [simd.bit] > libstdc++: Implement C++26 [simd.reductions] > libstdc++: Specialize basic_mask and basic_vec for complex value-types > libstdc++: First sketch for C++26 [simd.math] > > libstdc++-v3/include/bits/simd_alg.h | 76 + > libstdc++-v3/include/bits/simd_bit.h | 156 ++ > libstdc++-v3/include/bits/simd_complex.h | 1342 +++++++++++ > libstdc++-v3/include/bits/simd_details.h | 1443 +++++++++++ > libstdc++-v3/include/bits/simd_flags.h | 265 ++ > libstdc++-v3/include/bits/simd_iterator.h | 153 ++ > libstdc++-v3/include/bits/simd_mask.h | 1732 ++++++++++++++ > .../include/bits/simd_mask_reductions.h | 94 + > libstdc++-v3/include/bits/simd_math.h | 993 ++++++++ > libstdc++-v3/include/bits/simd_reductions.h | 112 + > libstdc++-v3/include/bits/simd_vec.h | 2130 +++++++++++++++++ > libstdc++-v3/include/bits/simd_x86.h | 953 ++++++++ > libstdc++-v3/include/bits/vec_ops.h | 592 +++++ > 13 files changed, 10041 insertions(+) > create mode 100644 libstdc++-v3/include/bits/simd_alg.h > create mode 100644 libstdc++-v3/include/bits/simd_bit.h > create mode 100644 libstdc++-v3/include/bits/simd_complex.h > create mode 100644 libstdc++-v3/include/bits/simd_details.h > create mode 100644 libstdc++-v3/include/bits/simd_flags.h > create mode 100644 libstdc++-v3/include/bits/simd_iterator.h > create mode 100644 libstdc++-v3/include/bits/simd_mask.h > create mode 100644 libstdc++-v3/include/bits/simd_mask_reductions.h > create mode 100644 libstdc++-v3/include/bits/simd_math.h > create mode 100644 libstdc++-v3/include/bits/simd_reductions.h > create mode 100644 libstdc++-v3/include/bits/simd_vec.h > create mode 100644 libstdc++-v3/include/bits/simd_x86.h > create mode 100644 libstdc++-v3/include/bits/vec_ops.h > > -- > ────────────────────────────────────────────────────────────────────────── > Dr. Matthias Kretz https://mattkretz.github.io > GSI Helmholtz Center for Heavy Ion Research https://gsi.de > std::simd > ────────────────────────────────────────────────────────────────────────── > > > > >
