[PATCH v2 0/8] libstdc++: Sequence of improvements to <mdspan>.
Luc Grosheintz
luc.grosheintz@gmail.com
Sun Aug 3 20:57:22 GMT 2025
The combined effect of this sequence of change is:
* a reduction in the number of template instantiations, by
- avoiding needless dependency of IndexType,
- special formulas for low-rank extents,
- special formulas for (nearly) fully dynamic extents.
* improved code quality, by
- precomputing partial products of the static extents,
- special cases for low-rank extents,
- rewriting the condition E[i] == dynamic_extent in a more
optimizer friendly manner.
- effectively loop-unrolling extents::operator==.
While simplistic micro-benchmarking shows the effectiveness of these
changes, likely the stronger argument is presented in each commit:
a) each change removes needless complexity,
b) before/after examples of generated code show the effectiveness.
Luc Grosheintz (8):
libstdc++: Reduce template instantiations in <mdspan>.
libstdc++: Precompute products of static extents.
libstdc++: Improve low-rank layout_{left,right}::stride.
libstdc++: Improve fully dynamic extents in mdspan.
libstdc++: Improve nearly fully dynamic extents in mdspan.
libstdc++: Reduce indirection in extents::extent.
libstdc++: Improve extents::operator==.
libstdc++: Replace numeric_limit with __int_traits in mdspan.
libstdc++-v3/include/std/mdspan | 282 +++++++++++++-----
.../mdspan/extents/class_mandates_neg.cc | 3 +
2 files changed, 208 insertions(+), 77 deletions(-)
--
2.50.0
More information about the Libstdc++
mailing list