On Sun, Nov 16, 2025 at 8:24 PM Luc Grosheintz <[email protected]>
wrote:
> Hi Tomasz,
>
> I've finished submdspan for the padded layouts. Essentially,
> it can reuse everything that's already here. There's a few
> small changes.
>
> Do you want to first review v1; or should a immediately
> replace it with v2?
>
I haven't yet started doing a review, and I am not sure if I will have
time for it this week, so feel free to post v2.
>
> Thank you,
> Luc
>
>
> On 11/14/25 15:09, Luc Grosheintz wrote:
> > This sequence of 6 patches implements submdspan for layout_left,
> > layout_right and layout_stride.
> >
> > The first commit is preparatory (move code, generalize code
> > and fix some formatting issues). Then, each commit implements:
> >
> > - submdspan_canonicalize_slices,
> > - submdspan_extents (with review comments on previous patch),
> > - submdspan_mapping: layout_left, layout_right, layout_stride.
> >
> > There's one deviation related to checking:
> >
> > 0 <= slice_begin[k] <= slice_end[k] <= exts.extent(k)
> >
> > explained in detail in the corresponding commit message.
> >
> > The check that if slice_begin[k] == exts.extent(k) when computing the
> > offset, adds a "chunk of code" that's not needed and blocks certain
> > optimizations. The corresponding commit message has more details.
> >
> > Luc Grosheintz (6):
> > libstdc++: Prepare mdspan-related code for submdspan.
> > libstdc++: Implement submdspan_canonicalize_slices. [PR110352]
> > libstdc++: Implement submdspan_extents. [PR110352]
> > libstdc++: Implement submdspan and submdspan_mapping for layout_left.
> > [PR110352]
> > libstdc++: Implement submdspan_mapping for layout_right. [PR110352]
> > libstdc++: Implement submdspan_mapping for layout_stride. [PR110352]
> >
> > libstdc++-v3/include/std/mdspan | 841 +++++++++++++++++-
> > libstdc++-v3/src/c++23/std.cc.in | 6 +-
> > .../testsuite/23_containers/mdspan/int_like.h | 34 +-
> > .../padded_traits.h => layout_traits.h} | 65 +-
> > .../23_containers/mdspan/layouts/ctors.cc | 2 +-
> > .../23_containers/mdspan/layouts/mapping.cc | 2 +-
> > .../23_containers/mdspan/layouts/padded.cc | 2 +-
> > .../mdspan/layouts/padded_neg.cc | 2 +-
> > .../mdspan/submdspan/submdspan.cc | 371 ++++++++
> > .../submdspan_canonicalize_slices.cc | 212 +++++
> > .../submdspan_canonicalize_slices_neg.cc | 208 +++++
> > .../mdspan/submdspan/submdspan_extents.cc | 169 ++++
> > .../mdspan/submdspan/submdspan_extents_neg.cc | 48 +
> > .../mdspan/submdspan/submdspan_mapping.cc | 160 ++++
> > .../mdspan/submdspan/submdspan_neg.cc | 120 +++
> > 15 files changed, 2194 insertions(+), 48 deletions(-)
> > rename
> libstdc++-v3/testsuite/23_containers/mdspan/{layouts/padded_traits.h =>
> layout_traits.h} (70%)
> > create mode 100644
> libstdc++-v3/testsuite/23_containers/mdspan/submdspan/submdspan.cc
> > create mode 100644
> libstdc++-v3/testsuite/23_containers/mdspan/submdspan/submdspan_canonicalize_slices.cc
> > create mode 100644
> libstdc++-v3/testsuite/23_containers/mdspan/submdspan/submdspan_canonicalize_slices_neg.cc
> > create mode 100644
> libstdc++-v3/testsuite/23_containers/mdspan/submdspan/submdspan_extents.cc
> > create mode 100644
> libstdc++-v3/testsuite/23_containers/mdspan/submdspan/submdspan_extents_neg.cc
> > create mode 100644
> libstdc++-v3/testsuite/23_containers/mdspan/submdspan/submdspan_mapping.cc
> > create mode 100644
> libstdc++-v3/testsuite/23_containers/mdspan/submdspan/submdspan_neg.cc
> >
>
>