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




Reply via email to