[PATCH v3 0/3] std-simd-complex

Matthias Kretz via Sourceware Forge forge-bot+mkretz@forge-stage.sourceware.org
Tue Jun 2 10:44:50 GMT 2026


Hi gcc-patches mailing list,
Matthias Kretz via Sourceware Forge <forge-bot+mkretz@forge-stage.sourceware.org> has requested that the following forgejo pull request
be published on the mailing list.

Created on: 2026-03-21 13:52:32+00:00
Latest update: 2026-06-02 10:44:52+00:00
Changes: 25 changed files, 3601 additions, 120 deletions
Head revision: mkretz/gcc ref std-simd-complex commit b851112b9a0923bdf3706c0a5e0f20366ffcca5b
Base revision: gcc/gcc-TEST ref trunk commit 2ba702c966e3772d3d4e29e4b25beb7ef4dabf73 r17-638-g2ba702c966e377
Merge base: 2ba702c966e3772d3d4e29e4b25beb7ef4dabf73
Full diff url: https://forge.sourceware.org/gcc/gcc-TEST/pulls/145.diff
Discussion:  https://forge.sourceware.org/gcc/gcc-TEST/pulls/145
Requested Reviewers:

This patch set
- refactors std::simd's ABI tags to completely drop `_ScalarAbi<N>`
- adds complex to the vectorizable types
- implements [simd.bit]

Tested on x86_64-linux-gnu, also with unix/-m32/-march=i686


Changed files:
- A: libstdc++-v3/include/bits/simd_bit.h
- A: libstdc++-v3/include/bits/simd_complex.h
- A: libstdc++-v3/include/bits/simd_math.h
- A: libstdc++-v3/testsuite/std/simd/complex_init.h
- A: libstdc++-v3/testsuite/std/simd/simd_bit.cc
- A: libstdc++-v3/testsuite/std/simd/simd_bit_expensive.cc
- M: libstdc++-v3/include/Makefile.am
- M: libstdc++-v3/include/Makefile.in
- M: libstdc++-v3/include/bits/simd_details.h
- M: libstdc++-v3/include/bits/simd_loadstore.h
- M: libstdc++-v3/include/bits/simd_mask.h
- M: libstdc++-v3/include/bits/simd_mask_reductions.h
- M: libstdc++-v3/include/bits/simd_vec.h
- M: libstdc++-v3/include/bits/simd_x86.h
- M: libstdc++-v3/include/bits/vec_ops.h
- M: libstdc++-v3/include/bits/version.def
- M: libstdc++-v3/include/bits/version.h
- M: libstdc++-v3/include/std/simd
- M: libstdc++-v3/testsuite/std/simd/arithmetic.cc
- M: libstdc++-v3/testsuite/std/simd/create_tests.h
- M: libstdc++-v3/testsuite/std/simd/mask2.cc
- M: libstdc++-v3/testsuite/std/simd/stores.cc
- M: libstdc++-v3/testsuite/std/simd/test_setup.h
- M: libstdc++-v3/testsuite/std/simd/traits_common.cc
- M: libstdc++-v3/testsuite/std/simd/traits_impl.cc


Matthias Kretz (3):
  libstdc++: Refactor _ScalarAbi<N> into _Abi<N, N>
  libstdc++: Add std::complex to the [simd] vectorizable types
  libstdc++: Fix [simd.bit] constraints and implementation

 libstdc++-v3/include/Makefile.am              |    3 +
 libstdc++-v3/include/Makefile.in              |    3 +
 libstdc++-v3/include/bits/simd_bit.h          |  208 ++
 libstdc++-v3/include/bits/simd_complex.h      | 2321 +++++++++++++++++
 libstdc++-v3/include/bits/simd_details.h      |  218 +-
 libstdc++-v3/include/bits/simd_loadstore.h    |    4 +
 libstdc++-v3/include/bits/simd_mask.h         |  200 +-
 .../include/bits/simd_mask_reductions.h       |    2 +-
 libstdc++-v3/include/bits/simd_math.h         |  125 +
 libstdc++-v3/include/bits/simd_vec.h          |   25 +-
 libstdc++-v3/include/bits/simd_x86.h          |   46 +
 libstdc++-v3/include/bits/vec_ops.h           |   64 +-
 libstdc++-v3/include/bits/version.def         |   11 +
 libstdc++-v3/include/bits/version.h           |    9 +
 libstdc++-v3/include/std/simd                 |    6 +
 libstdc++-v3/testsuite/std/simd/arithmetic.cc |    3 +-
 .../testsuite/std/simd/complex_init.h         |   17 +
 .../testsuite/std/simd/create_tests.h         |    6 +-
 libstdc++-v3/testsuite/std/simd/mask2.cc      |    3 +-
 libstdc++-v3/testsuite/std/simd/simd_bit.cc   |  203 ++
 .../testsuite/std/simd/simd_bit_expensive.cc  |    7 +
 libstdc++-v3/testsuite/std/simd/stores.cc     |    4 +-
 libstdc++-v3/testsuite/std/simd/test_setup.h  |   45 +-
 .../testsuite/std/simd/traits_common.cc       |  129 +
 .../testsuite/std/simd/traits_impl.cc         |   59 +-
 25 files changed, 3601 insertions(+), 120 deletions(-)
 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_math.h
 create mode 100644 libstdc++-v3/testsuite/std/simd/complex_init.h
 create mode 100644 libstdc++-v3/testsuite/std/simd/simd_bit.cc
 create mode 100644 libstdc++-v3/testsuite/std/simd/simd_bit_expensive.cc

Range-diff against v2:
1:  b5bab8901212 = 1:  b5bab8901212 libstdc++: Refactor _ScalarAbi<N> into _Abi<N, N>
2:  db5398e40d7d = 2:  db5398e40d7d libstdc++: Add std::complex to the [simd] vectorizable types
-:  ------------ > 3:  b851112b9a09 libstdc++: Fix [simd.bit] constraints and implementation
-- 
2.54.0



More information about the Libstdc++ mailing list